From 65583b1564eda2171c927120ed8cda01ab1c9007 Mon Sep 17 00:00:00 2001 From: opti1337 Date: Wed, 21 Jan 2026 22:39:08 +0600 Subject: [PATCH] channels --- client/app/composables/use-preferences.ts | 4 +- .../middleware/02.user-preferences.global.ts | 6 +- server/dto/channel.dto.ts | 14 + server/package.json | 7 +- server/plugins/socket.ts | 1 + server/prisma.config.ts | 13 + server/prisma/client.ts | 10 +- server/prisma/generated/client/browser.ts | 39 + server/prisma/generated/client/client.d.ts | 1 + server/prisma/generated/client/client.js | 5 + server/prisma/generated/client/client.ts | 61 + .../generated/client/commonInputTypes.ts | 298 + server/prisma/generated/client/default.d.ts | 1 + server/prisma/generated/client/default.js | 5 + server/prisma/generated/client/edge.d.ts | 1 + server/prisma/generated/client/edge.js | 165 + server/prisma/generated/client/enums.ts | 15 + .../prisma/generated/client/index-browser.js | 196 + server/prisma/generated/client/index.d.ts | 6981 +++++++++++++++++ server/prisma/generated/client/index.js | 165 + .../prisma/generated/client/internal/class.ts | 220 + .../client/internal/prismaNamespace.ts | 1000 +++ .../client/internal/prismaNamespaceBrowser.ts | 128 + server/prisma/generated/client/models.ts | 15 + .../prisma/generated/client/models/Channel.ts | 1412 ++++ .../prisma/generated/client/models/Session.ts | 1267 +++ server/prisma/generated/client/models/User.ts | 1597 ++++ .../client/models/UserPreferences.ts | 1228 +++ server/prisma/generated/client/package.json | 144 + .../generated/client/query_compiler_bg.js | 2 + .../generated/client/query_compiler_bg.wasm | Bin 0 -> 1747444 bytes .../client/query_compiler_bg.wasm-base64.js | 2 + .../generated/client/runtime/client.d.ts | 3317 ++++++++ .../prisma/generated/client/runtime/client.js | 86 + .../client/runtime/index-browser.d.ts | 87 + .../generated/client/runtime/index-browser.js | 6 + .../client/runtime/wasm-compiler-edge.js | 76 + server/prisma/generated/client/schema.prisma | 45 + .../client/wasm-edge-light-loader.mjs | 5 + .../generated/client/wasm-worker-loader.mjs | 5 + .../20260113070142_channels/migration.sql | 30 + server/prisma/schema.prisma | 20 +- server/prisma/seed.ts | 23 + server/routes/user.ts | 2 +- server/socket/channel.ts | 449 ++ server/socket/webrtc.ts | 23 +- server/tsconfig.json | 12 +- server/types/{webrtc.ts => socket.ts} | 29 +- server/utils/socket-to-client.ts | 2 +- server/yarn.lock | 825 +- 50 files changed, 19946 insertions(+), 99 deletions(-) create mode 100644 server/dto/channel.dto.ts create mode 100644 server/prisma.config.ts create mode 100644 server/prisma/generated/client/browser.ts create mode 100644 server/prisma/generated/client/client.d.ts create mode 100644 server/prisma/generated/client/client.js create mode 100644 server/prisma/generated/client/client.ts create mode 100644 server/prisma/generated/client/commonInputTypes.ts create mode 100644 server/prisma/generated/client/default.d.ts create mode 100644 server/prisma/generated/client/default.js create mode 100644 server/prisma/generated/client/edge.d.ts create mode 100644 server/prisma/generated/client/edge.js create mode 100644 server/prisma/generated/client/enums.ts create mode 100644 server/prisma/generated/client/index-browser.js create mode 100644 server/prisma/generated/client/index.d.ts create mode 100644 server/prisma/generated/client/index.js create mode 100644 server/prisma/generated/client/internal/class.ts create mode 100644 server/prisma/generated/client/internal/prismaNamespace.ts create mode 100644 server/prisma/generated/client/internal/prismaNamespaceBrowser.ts create mode 100644 server/prisma/generated/client/models.ts create mode 100644 server/prisma/generated/client/models/Channel.ts create mode 100644 server/prisma/generated/client/models/Session.ts create mode 100644 server/prisma/generated/client/models/User.ts create mode 100644 server/prisma/generated/client/models/UserPreferences.ts create mode 100644 server/prisma/generated/client/package.json create mode 100644 server/prisma/generated/client/query_compiler_bg.js create mode 100644 server/prisma/generated/client/query_compiler_bg.wasm create mode 100644 server/prisma/generated/client/query_compiler_bg.wasm-base64.js create mode 100644 server/prisma/generated/client/runtime/client.d.ts create mode 100644 server/prisma/generated/client/runtime/client.js create mode 100644 server/prisma/generated/client/runtime/index-browser.d.ts create mode 100644 server/prisma/generated/client/runtime/index-browser.js create mode 100644 server/prisma/generated/client/runtime/wasm-compiler-edge.js create mode 100644 server/prisma/generated/client/schema.prisma create mode 100644 server/prisma/generated/client/wasm-edge-light-loader.mjs create mode 100644 server/prisma/generated/client/wasm-worker-loader.mjs create mode 100644 server/prisma/migrations/20260113070142_channels/migration.sql create mode 100644 server/prisma/seed.ts create mode 100644 server/socket/channel.ts rename server/types/{webrtc.ts => socket.ts} (82%) diff --git a/client/app/composables/use-preferences.ts b/client/app/composables/use-preferences.ts index 75ba3f7..725ea1c 100644 --- a/client/app/composables/use-preferences.ts +++ b/client/app/composables/use-preferences.ts @@ -10,7 +10,7 @@ export interface SyncedPreferences { export const usePreferences = createGlobalState(() => { const { videoInputs, audioInputs, audioOutputs } = useDevices() - const synced = ref(false) + const fetched = ref(false) const inputDeviceId = useLocalStorage('INPUT_DEVICE_ID', 'default') const outputDeviceId = useLocalStorage('OUTPUT_DEVICE_ID', 'default') @@ -53,7 +53,7 @@ export const usePreferences = createGlobalState(() => { ) return { - synced, + fetched, inputDeviceId, outputDeviceId, autoGainControl, diff --git a/client/app/middleware/02.user-preferences.global.ts b/client/app/middleware/02.user-preferences.global.ts index b5e0dc3..527b8b6 100644 --- a/client/app/middleware/02.user-preferences.global.ts +++ b/client/app/middleware/02.user-preferences.global.ts @@ -7,9 +7,9 @@ export default defineNuxtRouteMiddleware(async () => { if (!me.value) return - const { synced, toggleInputHotkey, toggleOutputHotkey } = usePreferences() + const { fetched, toggleInputHotkey, toggleOutputHotkey } = usePreferences() - if (synced.value) + if (fetched.value) return try { @@ -20,7 +20,7 @@ export default defineNuxtRouteMiddleware(async () => { toggleInputHotkey.value = preferences.toggleInputHotkey ?? toggleInputHotkey.value toggleOutputHotkey.value = preferences.toggleOutputHotkey ?? toggleOutputHotkey.value - synced.value = true + fetched.value = true } catch {} }) diff --git a/server/dto/channel.dto.ts b/server/dto/channel.dto.ts new file mode 100644 index 0000000..b7c4cca --- /dev/null +++ b/server/dto/channel.dto.ts @@ -0,0 +1,14 @@ +// dto/channel.dto.ts +import type { Prisma } from '../prisma/generated/client' + +export const channelPublicSelect = { + id: true, + name: true, + owner_id: true, + persistent: true, + maxClients: true, +} satisfies Prisma.ChannelSelect + +export type ChannelPublicDTO = Prisma.ChannelGetPayload<{ + select: typeof channelPublicSelect +}> diff --git a/server/package.json b/server/package.json index 646b9b8..c5728a6 100644 --- a/server/package.json +++ b/server/package.json @@ -2,7 +2,7 @@ "name": "server", "scripts": { "start": "ts-node --transpile-only server.ts", - "db:deploy": "npx prisma migrate deploy && npx prisma generate" + "db:deploy": "npx prisma migrate deploy && npx prisma db seed && npx prisma generate" }, "type": "module", "packageManager": "yarn@4.10.3", @@ -11,7 +11,8 @@ "@fastify/cookie": "^11.0.2", "@fastify/cors": "^11.1.0", "@lucia-auth/adapter-prisma": "^4.0.1", - "@prisma/client": "^6.17.0", + "@prisma/adapter-better-sqlite3": "^7.2.0", + "@prisma/client": "7", "bcrypt": "^6.0.0", "consola": "^3.4.2", "dotenv": "^17.2.3", @@ -19,7 +20,7 @@ "fastify-plugin": "^5.1.0", "lucia": "^3.2.2", "mediasoup": "^3.19.3", - "prisma": "^6.17.0", + "prisma": "7", "socket.io": "^4.8.1", "ws": "^8.18.3", "zod": "^4.1.12" diff --git a/server/plugins/socket.ts b/server/plugins/socket.ts index e69362f..fe96591 100644 --- a/server/plugins/socket.ts +++ b/server/plugins/socket.ts @@ -24,6 +24,7 @@ export default fp>( fastify.ready(() => { registerWebrtcSocket(fastify.io, fastify.mediasoupRouter) + registerChannelSocket(fastify.io, fastify.mediasoupRouter) }) }, { name: 'socket-io', dependencies: ['mediasoup-worker', 'mediasoup-router'] }, diff --git a/server/prisma.config.ts b/server/prisma.config.ts new file mode 100644 index 0000000..1996478 --- /dev/null +++ b/server/prisma.config.ts @@ -0,0 +1,13 @@ +import { defineConfig, env } from 'prisma/config' +import 'dotenv/config' + +export default defineConfig({ + schema: './prisma/schema.prisma', + migrations: { + path: './prisma/migrations', + seed: 'ts-node ./prisma/seed.ts', + }, + datasource: { + url: env('DATABASE_URL'), + }, +}) diff --git a/server/prisma/client.ts b/server/prisma/client.ts index aaf0383..57435ae 100644 --- a/server/prisma/client.ts +++ b/server/prisma/client.ts @@ -1,6 +1,14 @@ -import { PrismaClient } from '@prisma/client' +import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3' +import { env } from 'prisma/config' +import { PrismaClient } from './generated/client/index.js' +import 'dotenv/config' const client = new PrismaClient({ + adapter: new PrismaBetterSqlite3({ + url: env('DATABASE_URL'), + }, { + timestampFormat: 'unixepoch-ms', + }), log: ['query', 'error', 'warn'], }) diff --git a/server/prisma/generated/client/browser.ts b/server/prisma/generated/client/browser.ts new file mode 100644 index 0000000..a69f60c --- /dev/null +++ b/server/prisma/generated/client/browser.ts @@ -0,0 +1,39 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file should be your main import to use Prisma-related types and utilities in a browser. + * Use it to get access to models, enums, and input types. + * + * This file does not contain a `PrismaClient` class, nor several other helpers that are intended as server-side only. + * See `client.ts` for the standard, server-side entry point. + * + * 🟢 You can import this file directly. + */ + +import * as Prisma from './internal/prismaNamespaceBrowser.ts' +export { Prisma } +export * as $Enums from './enums.ts' +export * from './enums.ts'; +/** + * Model User + * + */ +export type User = Prisma.UserModel +/** + * Model Session + * + */ +export type Session = Prisma.SessionModel +/** + * Model UserPreferences + * + */ +export type UserPreferences = Prisma.UserPreferencesModel +/** + * Model Channel + * + */ +export type Channel = Prisma.ChannelModel diff --git a/server/prisma/generated/client/client.d.ts b/server/prisma/generated/client/client.d.ts new file mode 100644 index 0000000..bc20c6c --- /dev/null +++ b/server/prisma/generated/client/client.d.ts @@ -0,0 +1 @@ +export * from "./index" \ No newline at end of file diff --git a/server/prisma/generated/client/client.js b/server/prisma/generated/client/client.js new file mode 100644 index 0000000..6ac8a81 --- /dev/null +++ b/server/prisma/generated/client/client.js @@ -0,0 +1,5 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file +module.exports = { ...require('.') } \ No newline at end of file diff --git a/server/prisma/generated/client/client.ts b/server/prisma/generated/client/client.ts new file mode 100644 index 0000000..046cdcb --- /dev/null +++ b/server/prisma/generated/client/client.ts @@ -0,0 +1,61 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file should be your main import to use Prisma. Through it you get access to all the models, enums, and input types. + * If you're looking for something you can import in the client-side of your application, please refer to the `browser.ts` file instead. + * + * 🟢 You can import this file directly. + */ + +import * as process from 'node:process' +import * as path from 'node:path' +import { fileURLToPath } from 'node:url' +globalThis['__dirname'] = path.dirname(fileURLToPath(import.meta.url)) + +import * as runtime from "@prisma/client/runtime/client" +import * as $Enums from "./enums.ts" +import * as $Class from "./internal/class.ts" +import * as Prisma from "./internal/prismaNamespace.ts" + +export * as $Enums from './enums.ts' +export * from "./enums.ts" +/** + * ## Prisma Client + * + * Type-safe database client for TypeScript + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + * + * Read more in our [docs](https://pris.ly/d/client). + */ +export const PrismaClient = $Class.getPrismaClientClass() +export type PrismaClient = $Class.PrismaClient +export { Prisma } + +/** + * Model User + * + */ +export type User = Prisma.UserModel +/** + * Model Session + * + */ +export type Session = Prisma.SessionModel +/** + * Model UserPreferences + * + */ +export type UserPreferences = Prisma.UserPreferencesModel +/** + * Model Channel + * + */ +export type Channel = Prisma.ChannelModel diff --git a/server/prisma/generated/client/commonInputTypes.ts b/server/prisma/generated/client/commonInputTypes.ts new file mode 100644 index 0000000..57e1473 --- /dev/null +++ b/server/prisma/generated/client/commonInputTypes.ts @@ -0,0 +1,298 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports various common sort, input & filter types that are not directly linked to a particular model. + * + * 🟢 You can import this file directly. + */ + +import type * as runtime from "@prisma/client/runtime/client" +import * as $Enums from "./enums.ts" +import type * as Prisma from "./internal/prismaNamespace.ts" + + +export type StringFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] + notIn?: string[] + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringFilter<$PrismaModel> | string +} + +export type DateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] + notIn?: Date[] | string[] + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string +} + +export type StringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] + notIn?: string[] + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedStringFilter<$PrismaModel> + _max?: Prisma.NestedStringFilter<$PrismaModel> +} + +export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] + notIn?: Date[] | string[] + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeFilter<$PrismaModel> +} + +export type StringNullableFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | null + notIn?: string[] | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null +} + +export type SortOrderInput = { + sort: Prisma.SortOrder + nulls?: Prisma.NullsOrder +} + +export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | null + notIn?: string[] | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedStringNullableFilter<$PrismaModel> + _max?: Prisma.NestedStringNullableFilter<$PrismaModel> +} + +export type IntNullableFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null +} + +export type BoolFilter<$PrismaModel = never> = { + equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> + not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean +} + +export type IntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _avg?: Prisma.NestedFloatNullableFilter<$PrismaModel> + _sum?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedIntNullableFilter<$PrismaModel> + _max?: Prisma.NestedIntNullableFilter<$PrismaModel> +} + +export type BoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> + not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedBoolFilter<$PrismaModel> + _max?: Prisma.NestedBoolFilter<$PrismaModel> +} + +export type NestedStringFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] + notIn?: string[] + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringFilter<$PrismaModel> | string +} + +export type NestedDateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] + notIn?: Date[] | string[] + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string +} + +export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] + notIn?: string[] + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedStringFilter<$PrismaModel> + _max?: Prisma.NestedStringFilter<$PrismaModel> +} + +export type NestedIntFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> + in?: number[] + notIn?: number[] + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntFilter<$PrismaModel> | number +} + +export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] + notIn?: Date[] | string[] + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeFilter<$PrismaModel> +} + +export type NestedStringNullableFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | null + notIn?: string[] | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null +} + +export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | null + notIn?: string[] | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedStringNullableFilter<$PrismaModel> + _max?: Prisma.NestedStringNullableFilter<$PrismaModel> +} + +export type NestedIntNullableFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null +} + +export type NestedBoolFilter<$PrismaModel = never> = { + equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> + not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean +} + +export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _avg?: Prisma.NestedFloatNullableFilter<$PrismaModel> + _sum?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedIntNullableFilter<$PrismaModel> + _max?: Prisma.NestedIntNullableFilter<$PrismaModel> +} + +export type NestedFloatNullableFilter<$PrismaModel = never> = { + equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> + lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> + gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> + gte?: number | Prisma.FloatFieldRefInput<$PrismaModel> + not?: Prisma.NestedFloatNullableFilter<$PrismaModel> | number | null +} + +export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> + not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedBoolFilter<$PrismaModel> + _max?: Prisma.NestedBoolFilter<$PrismaModel> +} + + diff --git a/server/prisma/generated/client/default.d.ts b/server/prisma/generated/client/default.d.ts new file mode 100644 index 0000000..bc20c6c --- /dev/null +++ b/server/prisma/generated/client/default.d.ts @@ -0,0 +1 @@ +export * from "./index" \ No newline at end of file diff --git a/server/prisma/generated/client/default.js b/server/prisma/generated/client/default.js new file mode 100644 index 0000000..eb55675 --- /dev/null +++ b/server/prisma/generated/client/default.js @@ -0,0 +1,5 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file +module.exports = { ...require('#main-entry-point') } \ No newline at end of file diff --git a/server/prisma/generated/client/edge.d.ts b/server/prisma/generated/client/edge.d.ts new file mode 100644 index 0000000..274b8fa --- /dev/null +++ b/server/prisma/generated/client/edge.d.ts @@ -0,0 +1 @@ +export * from "./default" \ No newline at end of file diff --git a/server/prisma/generated/client/edge.js b/server/prisma/generated/client/edge.js new file mode 100644 index 0000000..2b75d81 --- /dev/null +++ b/server/prisma/generated/client/edge.js @@ -0,0 +1,165 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file + +Object.defineProperty(exports, "__esModule", { value: true }); + +const { + PrismaClientKnownRequestError, + PrismaClientUnknownRequestError, + PrismaClientRustPanicError, + PrismaClientInitializationError, + PrismaClientValidationError, + getPrismaClient, + sqltag, + empty, + join, + raw, + skip, + Decimal, + Debug, + DbNull, + JsonNull, + AnyNull, + NullTypes, + makeStrictEnum, + Extensions, + warnOnce, + defineDmmfProperty, + Public, + getRuntime, + createParam, +} = require('./runtime/wasm-compiler-edge.js') + + +const Prisma = {} + +exports.Prisma = Prisma +exports.$Enums = {} + +/** + * Prisma Client JS version: 7.2.0 + * Query Engine version: 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + */ +Prisma.prismaVersion = { + client: "7.2.0", + engine: "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" +} + +Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError; +Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError +Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError +Prisma.PrismaClientInitializationError = PrismaClientInitializationError +Prisma.PrismaClientValidationError = PrismaClientValidationError +Prisma.Decimal = Decimal + +/** + * Re-export of sql-template-tag + */ +Prisma.sql = sqltag +Prisma.empty = empty +Prisma.join = join +Prisma.raw = raw +Prisma.validator = Public.validator + +/** +* Extensions +*/ +Prisma.getExtensionContext = Extensions.getExtensionContext +Prisma.defineExtension = Extensions.defineExtension + +/** + * Shorthand utilities for JSON filtering + */ +Prisma.DbNull = DbNull +Prisma.JsonNull = JsonNull +Prisma.AnyNull = AnyNull + +Prisma.NullTypes = NullTypes + + + + + +/** + * Enums + */ +exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ + Serializable: 'Serializable' +}); + +exports.Prisma.UserScalarFieldEnum = { + id: 'id', + username: 'username', + password: 'password', + displayName: 'displayName', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +}; + +exports.Prisma.SessionScalarFieldEnum = { + id: 'id', + userId: 'userId', + expiresAt: 'expiresAt' +}; + +exports.Prisma.UserPreferencesScalarFieldEnum = { + userId: 'userId', + toggleInputHotkey: 'toggleInputHotkey', + toggleOutputHotkey: 'toggleOutputHotkey' +}; + +exports.Prisma.ChannelScalarFieldEnum = { + id: 'id', + name: 'name', + maxClients: 'maxClients', + persistent: 'persistent', + owner_id: 'owner_id' +}; + +exports.Prisma.SortOrder = { + asc: 'asc', + desc: 'desc' +}; + +exports.Prisma.NullsOrder = { + first: 'first', + last: 'last' +}; + + +exports.Prisma.ModelName = { + User: 'User', + Session: 'Session', + UserPreferences: 'UserPreferences', + Channel: 'Channel' +}; +/** + * Create the Client + */ +const config = { + "previewFeatures": [], + "clientVersion": "7.2.0", + "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", + "activeProvider": "sqlite", + "inlineSchema": "datasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\nmodel User {\n id String @id @default(cuid())\n username String @unique\n password String\n displayName String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n Session Session[]\n UserPreferences UserPreferences?\n channels Channel[]\n}\n\nmodel Session {\n id String @id\n userId String\n expiresAt DateTime\n user User @relation(references: [id], fields: [userId], onDelete: Cascade)\n\n @@index([userId])\n}\n\nmodel UserPreferences {\n userId String @id\n toggleInputHotkey String? @default(\"\")\n toggleOutputHotkey String? @default(\"\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\nmodel Channel {\n id String @id\n name String\n maxClients Int?\n persistent Boolean @default(false)\n owner_id String?\n owner User? @relation(fields: [owner_id], references: [id], onDelete: Cascade)\n}\n" +} + +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"Session\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"UserPreferences\",\"kind\":\"object\",\"type\":\"UserPreferences\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"channels\",\"kind\":\"object\",\"type\":\"Channel\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":null},\"UserPreferences\":{\"fields\":[{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleInputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleOutputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserPreferences\"}],\"dbName\":null},\"Channel\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"maxClients\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"persistent\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"owner_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +defineDmmfProperty(exports.Prisma, config.runtimeDataModel) +config.compilerWasm = { + getRuntime: async () => require('./query_compiler_bg.js'), + getQueryCompilerWasmModule: async () => { + const loader = (await import('#wasm-compiler-loader')).default + const compiler = (await loader).default + return compiler + } +} +if (typeof globalThis !== 'undefined' && globalThis['DEBUG'] || (typeof process !== 'undefined' && process.env && process.env.DEBUG) || undefined) { + Debug.enable(typeof globalThis !== 'undefined' && globalThis['DEBUG'] || (typeof process !== 'undefined' && process.env && process.env.DEBUG) || undefined) +} + +const PrismaClient = getPrismaClient(config) +exports.PrismaClient = PrismaClient +Object.assign(exports, Prisma) diff --git a/server/prisma/generated/client/enums.ts b/server/prisma/generated/client/enums.ts new file mode 100644 index 0000000..043572d --- /dev/null +++ b/server/prisma/generated/client/enums.ts @@ -0,0 +1,15 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* +* This file exports all enum related types from the schema. +* +* 🟢 You can import this file directly. +*/ + + + +// This file is empty because there are no enums in the schema. +export {} diff --git a/server/prisma/generated/client/index-browser.js b/server/prisma/generated/client/index-browser.js new file mode 100644 index 0000000..7bbd6b3 --- /dev/null +++ b/server/prisma/generated/client/index-browser.js @@ -0,0 +1,196 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file + +Object.defineProperty(exports, "__esModule", { value: true }); + +const { + Decimal, + DbNull, + JsonNull, + AnyNull, + NullTypes, + makeStrictEnum, + Public, + getRuntime, + skip +} = require('./runtime/index-browser.js') + + +const Prisma = {} + +exports.Prisma = Prisma +exports.$Enums = {} + +/** + * Prisma Client JS version: 7.2.0 + * Query Engine version: 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + */ +Prisma.prismaVersion = { + client: "7.2.0", + engine: "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" +} + +Prisma.PrismaClientKnownRequestError = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`PrismaClientKnownRequestError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)}; +Prisma.PrismaClientUnknownRequestError = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`PrismaClientUnknownRequestError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.PrismaClientRustPanicError = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`PrismaClientRustPanicError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.PrismaClientInitializationError = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`PrismaClientInitializationError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.PrismaClientValidationError = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`PrismaClientValidationError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.Decimal = Decimal + +/** + * Re-export of sql-template-tag + */ +Prisma.sql = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`sqltag is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.empty = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`empty is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.join = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`join is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.raw = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`raw is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.validator = Public.validator + +/** +* Extensions +*/ +Prisma.getExtensionContext = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`Extensions.getExtensionContext is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} +Prisma.defineExtension = () => { + const runtimeName = getRuntime().prettyName; + throw new Error(`Extensions.defineExtension is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}). +In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`, +)} + +/** + * Shorthand utilities for JSON filtering + */ +Prisma.DbNull = DbNull +Prisma.JsonNull = JsonNull +Prisma.AnyNull = AnyNull + +Prisma.NullTypes = NullTypes + + + +/** + * Enums + */ + +exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ + Serializable: 'Serializable' +}); + +exports.Prisma.UserScalarFieldEnum = { + id: 'id', + username: 'username', + password: 'password', + displayName: 'displayName', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +}; + +exports.Prisma.SessionScalarFieldEnum = { + id: 'id', + userId: 'userId', + expiresAt: 'expiresAt' +}; + +exports.Prisma.UserPreferencesScalarFieldEnum = { + userId: 'userId', + toggleInputHotkey: 'toggleInputHotkey', + toggleOutputHotkey: 'toggleOutputHotkey' +}; + +exports.Prisma.ChannelScalarFieldEnum = { + id: 'id', + name: 'name', + maxClients: 'maxClients', + persistent: 'persistent', + owner_id: 'owner_id' +}; + +exports.Prisma.SortOrder = { + asc: 'asc', + desc: 'desc' +}; + +exports.Prisma.NullsOrder = { + first: 'first', + last: 'last' +}; + + +exports.Prisma.ModelName = { + User: 'User', + Session: 'Session', + UserPreferences: 'UserPreferences', + Channel: 'Channel' +}; + +/** + * This is a stub Prisma Client that will error at runtime if called. + */ +class PrismaClient { + constructor() { + return new Proxy(this, { + get(target, prop) { + let message + const runtime = getRuntime() + if (runtime.isEdge) { + message = `PrismaClient is not configured to run in ${runtime.prettyName}. In order to run Prisma Client on edge runtime, either: +- Use Prisma Accelerate: https://pris.ly/d/accelerate +- Use Driver Adapters: https://pris.ly/d/driver-adapters +`; + } else { + message = 'PrismaClient is unable to run in this browser environment, or has been bundled for the browser (running in `' + runtime.prettyName + '`).' + } + + message += ` +If this is unexpected, please open an issue: https://pris.ly/prisma-prisma-bug-report` + + throw new Error(message) + } + }) + } +} + +exports.PrismaClient = PrismaClient + +Object.assign(exports, Prisma) diff --git a/server/prisma/generated/client/index.d.ts b/server/prisma/generated/client/index.d.ts new file mode 100644 index 0000000..be20c33 --- /dev/null +++ b/server/prisma/generated/client/index.d.ts @@ -0,0 +1,6981 @@ + +/** + * Client +**/ + +import * as runtime from './runtime/client.js'; +import $Types = runtime.Types // general types +import $Public = runtime.Types.Public +import $Utils = runtime.Types.Utils +import $Extensions = runtime.Types.Extensions +import $Result = runtime.Types.Result + +export type PrismaPromise = $Public.PrismaPromise + + +/** + * Model User + * + */ +export type User = $Result.DefaultSelection +/** + * Model Session + * + */ +export type Session = $Result.DefaultSelection +/** + * Model UserPreferences + * + */ +export type UserPreferences = $Result.DefaultSelection +/** + * Model Channel + * + */ +export type Channel = $Result.DefaultSelection + +/** + * ## Prisma Client ʲˢ + * + * Type-safe database client for TypeScript & Node.js + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + * + * + * Read more in our [docs](https://pris.ly/d/client). + */ +export class PrismaClient< + ClientOptions extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions, + const U = 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array ? Prisma.GetEvents : never : never, + ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs +> { + [K: symbol]: { types: Prisma.TypeMap['other'] } + + /** + * ## Prisma Client ʲˢ + * + * Type-safe database client for TypeScript & Node.js + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + * + * + * Read more in our [docs](https://pris.ly/d/client). + */ + + constructor(optionsArg ?: Prisma.Subset); + $on(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient; + + /** + * Connect with the database + */ + $connect(): $Utils.JsPromise; + + /** + * Disconnect from the database + */ + $disconnect(): $Utils.JsPromise; + +/** + * Executes a prepared raw query and returns the number of affected rows. + * @example + * ``` + * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $executeRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Executes a raw query and returns the number of affected rows. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com') + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $executeRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a prepared raw query and returns the `SELECT` data. + * @example + * ``` + * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $queryRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a raw query and returns the `SELECT` data. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com') + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $queryRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + + /** + * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole. + * @example + * ``` + * const [george, bob, alice] = await prisma.$transaction([ + * prisma.user.create({ data: { name: 'George' } }), + * prisma.user.create({ data: { name: 'Bob' } }), + * prisma.user.create({ data: { name: 'Alice' } }), + * ]) + * ``` + * + * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions). + */ + $transaction

[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise> + + $transaction(fn: (prisma: Omit) => $Utils.JsPromise, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise + + $extends: $Extensions.ExtendsHook<"extends", Prisma.TypeMapCb, ExtArgs, $Utils.Call, { + extArgs: ExtArgs + }>> + + /** + * `prisma.user`: Exposes CRUD operations for the **User** model. + * Example usage: + * ```ts + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + */ + get user(): Prisma.UserDelegate; + + /** + * `prisma.session`: Exposes CRUD operations for the **Session** model. + * Example usage: + * ```ts + * // Fetch zero or more Sessions + * const sessions = await prisma.session.findMany() + * ``` + */ + get session(): Prisma.SessionDelegate; + + /** + * `prisma.userPreferences`: Exposes CRUD operations for the **UserPreferences** model. + * Example usage: + * ```ts + * // Fetch zero or more UserPreferences + * const userPreferences = await prisma.userPreferences.findMany() + * ``` + */ + get userPreferences(): Prisma.UserPreferencesDelegate; + + /** + * `prisma.channel`: Exposes CRUD operations for the **Channel** model. + * Example usage: + * ```ts + * // Fetch zero or more Channels + * const channels = await prisma.channel.findMany() + * ``` + */ + get channel(): Prisma.ChannelDelegate; +} + +export namespace Prisma { + export import DMMF = runtime.DMMF + + export type PrismaPromise = $Public.PrismaPromise + + /** + * Validator + */ + export import validator = runtime.Public.validator + + /** + * Prisma Errors + */ + export import PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError + export import PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError + export import PrismaClientRustPanicError = runtime.PrismaClientRustPanicError + export import PrismaClientInitializationError = runtime.PrismaClientInitializationError + export import PrismaClientValidationError = runtime.PrismaClientValidationError + + /** + * Re-export of sql-template-tag + */ + export import sql = runtime.sqltag + export import empty = runtime.empty + export import join = runtime.join + export import raw = runtime.raw + export import Sql = runtime.Sql + + + + /** + * Decimal.js + */ + export import Decimal = runtime.Decimal + + export type DecimalJsLike = runtime.DecimalJsLike + + /** + * Extensions + */ + export import Extension = $Extensions.UserArgs + export import getExtensionContext = runtime.Extensions.getExtensionContext + export import Args = $Public.Args + export import Payload = $Public.Payload + export import Result = $Public.Result + export import Exact = $Public.Exact + + /** + * Prisma Client JS version: 7.2.0 + * Query Engine version: 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + */ + export type PrismaVersion = { + client: string + engine: string + } + + export const prismaVersion: PrismaVersion + + /** + * Utility Types + */ + + + export import Bytes = runtime.Bytes + export import JsonObject = runtime.JsonObject + export import JsonArray = runtime.JsonArray + export import JsonValue = runtime.JsonValue + export import InputJsonObject = runtime.InputJsonObject + export import InputJsonArray = runtime.InputJsonArray + export import InputJsonValue = runtime.InputJsonValue + + /** + * Types of the values used to represent different kinds of `null` values when working with JSON fields. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + namespace NullTypes { + /** + * Type of `Prisma.DbNull`. + * + * You cannot use other instances of this class. Please use the `Prisma.DbNull` value. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + class DbNull { + private DbNull: never + private constructor() + } + + /** + * Type of `Prisma.JsonNull`. + * + * You cannot use other instances of this class. Please use the `Prisma.JsonNull` value. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + class JsonNull { + private JsonNull: never + private constructor() + } + + /** + * Type of `Prisma.AnyNull`. + * + * You cannot use other instances of this class. Please use the `Prisma.AnyNull` value. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + class AnyNull { + private AnyNull: never + private constructor() + } + } + + /** + * Helper for filtering JSON entries that have `null` on the database (empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + export const DbNull: NullTypes.DbNull + + /** + * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + export const JsonNull: NullTypes.JsonNull + + /** + * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ + export const AnyNull: NullTypes.AnyNull + + type SelectAndInclude = { + select: any + include: any + } + + type SelectAndOmit = { + select: any + omit: any + } + + /** + * Get the type of the value, that the Promise holds. + */ + export type PromiseType> = T extends PromiseLike ? U : T; + + /** + * Get the return type of a function which returns a Promise. + */ + export type PromiseReturnType $Utils.JsPromise> = PromiseType> + + /** + * From T, pick a set of properties whose keys are in the union K + */ + type Prisma__Pick = { + [P in K]: T[P]; + }; + + + export type Enumerable = T | Array; + + export type RequiredKeys = { + [K in keyof T]-?: {} extends Prisma__Pick ? never : K + }[keyof T] + + export type TruthyKeys = keyof { + [K in keyof T as T[K] extends false | undefined | null ? never : K]: K + } + + export type TrueKeys = TruthyKeys>> + + /** + * Subset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection + */ + export type Subset = { + [key in keyof T]: key extends keyof U ? T[key] : never; + }; + + /** + * SelectSubset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection. + * Additionally, it validates, if both select and include are present. If the case, it errors. + */ + export type SelectSubset = { + [key in keyof T]: key extends keyof U ? T[key] : never + } & + (T extends SelectAndInclude + ? 'Please either choose `select` or `include`.' + : T extends SelectAndOmit + ? 'Please either choose `select` or `omit`.' + : {}) + + /** + * Subset + Intersection + * @desc From `T` pick properties that exist in `U` and intersect `K` + */ + export type SubsetIntersection = { + [key in keyof T]: key extends keyof U ? T[key] : never + } & + K + + type Without = { [P in Exclude]?: never }; + + /** + * XOR is needed to have a real mutually exclusive union type + * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types + */ + type XOR = + T extends object ? + U extends object ? + (Without & U) | (Without & T) + : U : T + + + /** + * Is T a Record? + */ + type IsObject = T extends Array + ? False + : T extends Date + ? False + : T extends Uint8Array + ? False + : T extends BigInt + ? False + : T extends object + ? True + : False + + + /** + * If it's T[], return T + */ + export type UnEnumerate = T extends Array ? U : T + + /** + * From ts-toolbelt + */ + + type __Either = Omit & + { + // Merge all but K + [P in K]: Prisma__Pick // With K possibilities + }[K] + + type EitherStrict = Strict<__Either> + + type EitherLoose = ComputeRaw<__Either> + + type _Either< + O extends object, + K extends Key, + strict extends Boolean + > = { + 1: EitherStrict + 0: EitherLoose + }[strict] + + type Either< + O extends object, + K extends Key, + strict extends Boolean = 1 + > = O extends unknown ? _Either : never + + export type Union = any + + type PatchUndefined = { + [K in keyof O]: O[K] extends undefined ? At : O[K] + } & {} + + /** Helper Types for "Merge" **/ + export type IntersectOf = ( + U extends unknown ? (k: U) => void : never + ) extends (k: infer I) => void + ? I + : never + + export type Overwrite = { + [K in keyof O]: K extends keyof O1 ? O1[K] : O[K]; + } & {}; + + type _Merge = IntersectOf; + }>>; + + type Key = string | number | symbol; + type AtBasic = K extends keyof O ? O[K] : never; + type AtStrict = O[K & keyof O]; + type AtLoose = O extends unknown ? AtStrict : never; + export type At = { + 1: AtStrict; + 0: AtLoose; + }[strict]; + + export type ComputeRaw = A extends Function ? A : { + [K in keyof A]: A[K]; + } & {}; + + export type OptionalFlat = { + [K in keyof O]?: O[K]; + } & {}; + + type _Record = { + [P in K]: T; + }; + + // cause typescript not to expand types and preserve names + type NoExpand = T extends unknown ? T : never; + + // this type assumes the passed object is entirely optional + type AtLeast = NoExpand< + O extends unknown + ? | (K extends keyof O ? { [P in K]: O[P] } & O : O) + | {[P in keyof O as P extends K ? P : never]-?: O[P]} & O + : never>; + + type _Strict = U extends unknown ? U & OptionalFlat<_Record, keyof U>, never>> : never; + + export type Strict = ComputeRaw<_Strict>; + /** End Helper Types for "Merge" **/ + + export type Merge = ComputeRaw<_Merge>>; + + /** + A [[Boolean]] + */ + export type Boolean = True | False + + // /** + // 1 + // */ + export type True = 1 + + /** + 0 + */ + export type False = 0 + + export type Not = { + 0: 1 + 1: 0 + }[B] + + export type Extends = [A1] extends [never] + ? 0 // anything `never` is false + : A1 extends A2 + ? 1 + : 0 + + export type Has = Not< + Extends, U1> + > + + export type Or = { + 0: { + 0: 0 + 1: 1 + } + 1: { + 0: 1 + 1: 1 + } + }[B1][B2] + + export type Keys = U extends unknown ? keyof U : never + + type Cast = A extends B ? A : B; + + export const type: unique symbol; + + + + /** + * Used by group by + */ + + export type GetScalarType = O extends object ? { + [P in keyof T]: P extends keyof O + ? O[P] + : never + } : never + + type FieldPaths< + T, + U = Omit + > = IsObject extends True ? U : T + + type GetHavingFields = { + [K in keyof T]: Or< + Or, Extends<'AND', K>>, + Extends<'NOT', K> + > extends True + ? // infer is only needed to not hit TS limit + // based on the brilliant idea of Pierre-Antoine Mills + // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437 + T[K] extends infer TK + ? GetHavingFields extends object ? Merge> : never> + : never + : {} extends FieldPaths + ? never + : K + }[keyof T] + + /** + * Convert tuple to union + */ + type _TupleToUnion = T extends (infer E)[] ? E : never + type TupleToUnion = _TupleToUnion + type MaybeTupleToUnion = T extends any[] ? TupleToUnion : T + + /** + * Like `Pick`, but additionally can also accept an array of keys + */ + type PickEnumerable | keyof T> = Prisma__Pick> + + /** + * Exclude all keys with underscores + */ + type ExcludeUnderscoreKeys = T extends `_${string}` ? never : T + + + export type FieldRef = runtime.FieldRef + + type FieldRefInputType = Model extends never ? never : FieldRef + + + export const ModelName: { + User: 'User', + Session: 'Session', + UserPreferences: 'UserPreferences', + Channel: 'Channel' + }; + + export type ModelName = (typeof ModelName)[keyof typeof ModelName] + + + + interface TypeMapCb extends $Utils.Fn<{extArgs: $Extensions.InternalArgs }, $Utils.Record> { + returns: Prisma.TypeMap + } + + export type TypeMap = { + globalOmitOptions: { + omit: GlobalOmitOptions + } + meta: { + modelProps: "user" | "session" | "userPreferences" | "channel" + txIsolationLevel: Prisma.TransactionIsolationLevel + } + model: { + User: { + payload: Prisma.$UserPayload + fields: Prisma.UserFieldRefs + operations: { + findUnique: { + args: Prisma.UserFindUniqueArgs + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.UserFindUniqueOrThrowArgs + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.UserFindFirstArgs + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.UserFindFirstOrThrowArgs + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.UserFindManyArgs + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.UserCreateArgs + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.UserCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.UserCreateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + delete: { + args: Prisma.UserDeleteArgs + result: $Utils.PayloadToResult + } + update: { + args: Prisma.UserUpdateArgs + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.UserDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.UserUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.UserUpdateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + upsert: { + args: Prisma.UserUpsertArgs + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.UserAggregateArgs + result: $Utils.Optional + } + groupBy: { + args: Prisma.UserGroupByArgs + result: $Utils.Optional[] + } + count: { + args: Prisma.UserCountArgs + result: $Utils.Optional | number + } + } + } + Session: { + payload: Prisma.$SessionPayload + fields: Prisma.SessionFieldRefs + operations: { + findUnique: { + args: Prisma.SessionFindUniqueArgs + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.SessionFindUniqueOrThrowArgs + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.SessionFindFirstArgs + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.SessionFindFirstOrThrowArgs + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.SessionFindManyArgs + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.SessionCreateArgs + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.SessionCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.SessionCreateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + delete: { + args: Prisma.SessionDeleteArgs + result: $Utils.PayloadToResult + } + update: { + args: Prisma.SessionUpdateArgs + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.SessionDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.SessionUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.SessionUpdateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + upsert: { + args: Prisma.SessionUpsertArgs + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.SessionAggregateArgs + result: $Utils.Optional + } + groupBy: { + args: Prisma.SessionGroupByArgs + result: $Utils.Optional[] + } + count: { + args: Prisma.SessionCountArgs + result: $Utils.Optional | number + } + } + } + UserPreferences: { + payload: Prisma.$UserPreferencesPayload + fields: Prisma.UserPreferencesFieldRefs + operations: { + findUnique: { + args: Prisma.UserPreferencesFindUniqueArgs + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.UserPreferencesFindUniqueOrThrowArgs + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.UserPreferencesFindFirstArgs + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.UserPreferencesFindFirstOrThrowArgs + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.UserPreferencesFindManyArgs + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.UserPreferencesCreateArgs + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.UserPreferencesCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.UserPreferencesCreateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + delete: { + args: Prisma.UserPreferencesDeleteArgs + result: $Utils.PayloadToResult + } + update: { + args: Prisma.UserPreferencesUpdateArgs + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.UserPreferencesDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.UserPreferencesUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.UserPreferencesUpdateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + upsert: { + args: Prisma.UserPreferencesUpsertArgs + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.UserPreferencesAggregateArgs + result: $Utils.Optional + } + groupBy: { + args: Prisma.UserPreferencesGroupByArgs + result: $Utils.Optional[] + } + count: { + args: Prisma.UserPreferencesCountArgs + result: $Utils.Optional | number + } + } + } + Channel: { + payload: Prisma.$ChannelPayload + fields: Prisma.ChannelFieldRefs + operations: { + findUnique: { + args: Prisma.ChannelFindUniqueArgs + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.ChannelFindUniqueOrThrowArgs + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.ChannelFindFirstArgs + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.ChannelFindFirstOrThrowArgs + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.ChannelFindManyArgs + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.ChannelCreateArgs + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.ChannelCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.ChannelCreateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + delete: { + args: Prisma.ChannelDeleteArgs + result: $Utils.PayloadToResult + } + update: { + args: Prisma.ChannelUpdateArgs + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.ChannelDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.ChannelUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.ChannelUpdateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + upsert: { + args: Prisma.ChannelUpsertArgs + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.ChannelAggregateArgs + result: $Utils.Optional + } + groupBy: { + args: Prisma.ChannelGroupByArgs + result: $Utils.Optional[] + } + count: { + args: Prisma.ChannelCountArgs + result: $Utils.Optional | number + } + } + } + } + } & { + other: { + payload: any + operations: { + $executeRaw: { + args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]], + result: any + } + $executeRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + $queryRaw: { + args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]], + result: any + } + $queryRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + } + } + } + export const defineExtension: $Extensions.ExtendsHook<"define", Prisma.TypeMapCb, $Extensions.DefaultArgs> + export type DefaultPrismaClient = PrismaClient + export type ErrorFormat = 'pretty' | 'colorless' | 'minimal' + export interface PrismaClientOptions { + /** + * @default "colorless" + */ + errorFormat?: ErrorFormat + /** + * @example + * ``` + * // Shorthand for `emit: 'stdout'` + * log: ['query', 'info', 'warn', 'error'] + * + * // Emit as events only + * log: [ + * { emit: 'event', level: 'query' }, + * { emit: 'event', level: 'info' }, + * { emit: 'event', level: 'warn' } + * { emit: 'event', level: 'error' } + * ] + * + * / Emit as events and log to stdout + * og: [ + * { emit: 'stdout', level: 'query' }, + * { emit: 'stdout', level: 'info' }, + * { emit: 'stdout', level: 'warn' } + * { emit: 'stdout', level: 'error' } + * + * ``` + * Read more in our [docs](https://pris.ly/d/logging). + */ + log?: (LogLevel | LogDefinition)[] + /** + * The default values for transactionOptions + * maxWait ?= 2000 + * timeout ?= 5000 + */ + transactionOptions?: { + maxWait?: number + timeout?: number + isolationLevel?: Prisma.TransactionIsolationLevel + } + /** + * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-planetscale` + */ + adapter?: runtime.SqlDriverAdapterFactory + /** + * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database. + */ + accelerateUrl?: string + /** + * Global configuration for omitting model fields by default. + * + * @example + * ``` + * const prisma = new PrismaClient({ + * omit: { + * user: { + * password: true + * } + * } + * }) + * ``` + */ + omit?: Prisma.GlobalOmitConfig + /** + * SQL commenter plugins that add metadata to SQL queries as comments. + * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/ + * + * @example + * ``` + * const prisma = new PrismaClient({ + * adapter, + * comments: [ + * traceContext(), + * queryInsights(), + * ], + * }) + * ``` + */ + comments?: runtime.SqlCommenterPlugin[] + } + export type GlobalOmitConfig = { + user?: UserOmit + session?: SessionOmit + userPreferences?: UserPreferencesOmit + channel?: ChannelOmit + } + + /* Types for Logging */ + export type LogLevel = 'info' | 'query' | 'warn' | 'error' + export type LogDefinition = { + level: LogLevel + emit: 'stdout' | 'event' + } + + export type CheckIsLogLevel = T extends LogLevel ? T : never; + + export type GetLogType = CheckIsLogLevel< + T extends LogDefinition ? T['level'] : T + >; + + export type GetEvents = T extends Array + ? GetLogType + : never; + + export type QueryEvent = { + timestamp: Date + query: string + params: string + duration: number + target: string + } + + export type LogEvent = { + timestamp: Date + message: string + target: string + } + /* End Types for Logging */ + + + export type PrismaAction = + | 'findUnique' + | 'findUniqueOrThrow' + | 'findMany' + | 'findFirst' + | 'findFirstOrThrow' + | 'create' + | 'createMany' + | 'createManyAndReturn' + | 'update' + | 'updateMany' + | 'updateManyAndReturn' + | 'upsert' + | 'delete' + | 'deleteMany' + | 'executeRaw' + | 'queryRaw' + | 'aggregate' + | 'count' + | 'runCommandRaw' + | 'findRaw' + | 'groupBy' + + // tested in getLogLevel.test.ts + export function getLogLevel(log: Array): LogLevel | undefined; + + /** + * `PrismaClient` proxy available in interactive transactions. + */ + export type TransactionClient = Omit + + export type Datasource = { + url?: string + } + + /** + * Count Types + */ + + + /** + * Count Type UserCountOutputType + */ + + export type UserCountOutputType = { + Session: number + channels: number + } + + export type UserCountOutputTypeSelect = { + Session?: boolean | UserCountOutputTypeCountSessionArgs + channels?: boolean | UserCountOutputTypeCountChannelsArgs + } + + // Custom InputTypes + /** + * UserCountOutputType without action + */ + export type UserCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the UserCountOutputType + */ + select?: UserCountOutputTypeSelect | null + } + + /** + * UserCountOutputType without action + */ + export type UserCountOutputTypeCountSessionArgs = { + where?: SessionWhereInput + } + + /** + * UserCountOutputType without action + */ + export type UserCountOutputTypeCountChannelsArgs = { + where?: ChannelWhereInput + } + + + /** + * Models + */ + + /** + * Model User + */ + + export type AggregateUser = { + _count: UserCountAggregateOutputType | null + _min: UserMinAggregateOutputType | null + _max: UserMaxAggregateOutputType | null + } + + export type UserMinAggregateOutputType = { + id: string | null + username: string | null + password: string | null + displayName: string | null + createdAt: Date | null + updatedAt: Date | null + } + + export type UserMaxAggregateOutputType = { + id: string | null + username: string | null + password: string | null + displayName: string | null + createdAt: Date | null + updatedAt: Date | null + } + + export type UserCountAggregateOutputType = { + id: number + username: number + password: number + displayName: number + createdAt: number + updatedAt: number + _all: number + } + + + export type UserMinAggregateInputType = { + id?: true + username?: true + password?: true + displayName?: true + createdAt?: true + updatedAt?: true + } + + export type UserMaxAggregateInputType = { + id?: true + username?: true + password?: true + displayName?: true + createdAt?: true + updatedAt?: true + } + + export type UserCountAggregateInputType = { + id?: true + username?: true + password?: true + displayName?: true + createdAt?: true + updatedAt?: true + _all?: true + } + + export type UserAggregateArgs = { + /** + * Filter which User to aggregate. + */ + where?: UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: UserOrderByWithRelationInput | UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned Users + **/ + _count?: true | UserCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: UserMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: UserMaxAggregateInputType + } + + export type GetUserAggregateType = { + [P in keyof T & keyof AggregateUser]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type UserGroupByArgs = { + where?: UserWhereInput + orderBy?: UserOrderByWithAggregationInput | UserOrderByWithAggregationInput[] + by: UserScalarFieldEnum[] | UserScalarFieldEnum + having?: UserScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: UserCountAggregateInputType | true + _min?: UserMinAggregateInputType + _max?: UserMaxAggregateInputType + } + + export type UserGroupByOutputType = { + id: string + username: string + password: string + displayName: string + createdAt: Date + updatedAt: Date + _count: UserCountAggregateOutputType | null + _min: UserMinAggregateOutputType | null + _max: UserMaxAggregateOutputType | null + } + + type GetUserGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof UserGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type UserSelect = $Extensions.GetSelect<{ + id?: boolean + username?: boolean + password?: boolean + displayName?: boolean + createdAt?: boolean + updatedAt?: boolean + Session?: boolean | User$SessionArgs + UserPreferences?: boolean | User$UserPreferencesArgs + channels?: boolean | User$channelsArgs + _count?: boolean | UserCountOutputTypeDefaultArgs + }, ExtArgs["result"]["user"]> + + export type UserSelectCreateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + username?: boolean + password?: boolean + displayName?: boolean + createdAt?: boolean + updatedAt?: boolean + }, ExtArgs["result"]["user"]> + + export type UserSelectUpdateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + username?: boolean + password?: boolean + displayName?: boolean + createdAt?: boolean + updatedAt?: boolean + }, ExtArgs["result"]["user"]> + + export type UserSelectScalar = { + id?: boolean + username?: boolean + password?: boolean + displayName?: boolean + createdAt?: boolean + updatedAt?: boolean + } + + export type UserOmit = $Extensions.GetOmit<"id" | "username" | "password" | "displayName" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]> + export type UserInclude = { + Session?: boolean | User$SessionArgs + UserPreferences?: boolean | User$UserPreferencesArgs + channels?: boolean | User$channelsArgs + _count?: boolean | UserCountOutputTypeDefaultArgs + } + export type UserIncludeCreateManyAndReturn = {} + export type UserIncludeUpdateManyAndReturn = {} + + export type $UserPayload = { + name: "User" + objects: { + Session: Prisma.$SessionPayload[] + UserPreferences: Prisma.$UserPreferencesPayload | null + channels: Prisma.$ChannelPayload[] + } + scalars: $Extensions.GetPayloadResult<{ + id: string + username: string + password: string + displayName: string + createdAt: Date + updatedAt: Date + }, ExtArgs["result"]["user"]> + composites: {} + } + + type UserGetPayload = $Result.GetResult + + type UserCountArgs = + Omit & { + select?: UserCountAggregateInputType | true + } + + export interface UserDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['User'], meta: { name: 'User' } } + /** + * Find zero or one User that matches the filter. + * @param {UserFindUniqueArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: SelectSubset>): Prisma__UserClient<$Result.GetResult, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one User that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {UserFindUniqueOrThrowArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: SelectSubset>): Prisma__UserClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first User that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserFindFirstArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: SelectSubset>): Prisma__UserClient<$Result.GetResult, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first User that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserFindFirstOrThrowArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: SelectSubset>): Prisma__UserClient<$Result.GetResult, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Users that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Users + * const users = await prisma.user.findMany() + * + * // Get first 10 Users + * const users = await prisma.user.findMany({ take: 10 }) + * + * // Only select the `id` + * const userWithIdOnly = await prisma.user.findMany({ select: { id: true } }) + * + */ + findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions>> + + /** + * Create a User. + * @param {UserCreateArgs} args - Arguments to create a User. + * @example + * // Create one User + * const User = await prisma.user.create({ + * data: { + * // ... data to create a User + * } + * }) + * + */ + create(args: SelectSubset>): Prisma__UserClient<$Result.GetResult, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Users. + * @param {UserCreateManyArgs} args - Arguments to create many Users. + * @example + * // Create many Users + * const user = await prisma.user.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Users and returns the data saved in the database. + * @param {UserCreateManyAndReturnArgs} args - Arguments to create many Users. + * @example + * // Create many Users + * const user = await prisma.user.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Users and only return the `id` + * const userWithIdOnly = await prisma.user.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a User. + * @param {UserDeleteArgs} args - Arguments to delete one User. + * @example + * // Delete one User + * const User = await prisma.user.delete({ + * where: { + * // ... filter to delete one User + * } + * }) + * + */ + delete(args: SelectSubset>): Prisma__UserClient<$Result.GetResult, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one User. + * @param {UserUpdateArgs} args - Arguments to update one User. + * @example + * // Update one User + * const user = await prisma.user.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: SelectSubset>): Prisma__UserClient<$Result.GetResult, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Users. + * @param {UserDeleteManyArgs} args - Arguments to filter Users to delete. + * @example + * // Delete a few Users + * const { count } = await prisma.user.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Users. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Users + * const user = await prisma.user.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Users and returns the data updated in the database. + * @param {UserUpdateManyAndReturnArgs} args - Arguments to update many Users. + * @example + * // Update many Users + * const user = await prisma.user.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Users and only return the `id` + * const userWithIdOnly = await prisma.user.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one User. + * @param {UserUpsertArgs} args - Arguments to update or create a User. + * @example + * // Update or create a User + * const user = await prisma.user.upsert({ + * create: { + * // ... data to create a User + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the User we want to update + * } + * }) + */ + upsert(args: SelectSubset>): Prisma__UserClient<$Result.GetResult, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Users. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserCountArgs} args - Arguments to filter Users to count. + * @example + * // Count the number of Users + * const count = await prisma.user.count({ + * where: { + * // ... the filter for the Users we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a User. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by User. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends UserGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: UserGroupByArgs['orderBy'] } + : { orderBy?: UserGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetUserGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the User model + */ + readonly fields: UserFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for User. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__UserClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + Session = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions> | Null> + UserPreferences = {}>(args?: Subset>): Prisma__UserPreferencesClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + channels = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions> | Null> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise + } + + + + + /** + * Fields of the User model + */ + interface UserFieldRefs { + readonly id: FieldRef<"User", 'String'> + readonly username: FieldRef<"User", 'String'> + readonly password: FieldRef<"User", 'String'> + readonly displayName: FieldRef<"User", 'String'> + readonly createdAt: FieldRef<"User", 'DateTime'> + readonly updatedAt: FieldRef<"User", 'DateTime'> + } + + + // Custom InputTypes + /** + * User findUnique + */ + export type UserFindUniqueArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + /** + * Filter, which User to fetch. + */ + where: UserWhereUniqueInput + } + + /** + * User findUniqueOrThrow + */ + export type UserFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + /** + * Filter, which User to fetch. + */ + where: UserWhereUniqueInput + } + + /** + * User findFirst + */ + export type UserFindFirstArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + /** + * Filter, which User to fetch. + */ + where?: UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: UserOrderByWithRelationInput | UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Users. + */ + cursor?: UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Users. + */ + distinct?: UserScalarFieldEnum | UserScalarFieldEnum[] + } + + /** + * User findFirstOrThrow + */ + export type UserFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + /** + * Filter, which User to fetch. + */ + where?: UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: UserOrderByWithRelationInput | UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Users. + */ + cursor?: UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Users. + */ + distinct?: UserScalarFieldEnum | UserScalarFieldEnum[] + } + + /** + * User findMany + */ + export type UserFindManyArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + /** + * Filter, which Users to fetch. + */ + where?: UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: UserOrderByWithRelationInput | UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing Users. + */ + cursor?: UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + distinct?: UserScalarFieldEnum | UserScalarFieldEnum[] + } + + /** + * User create + */ + export type UserCreateArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + /** + * The data needed to create a User. + */ + data: XOR + } + + /** + * User createMany + */ + export type UserCreateManyArgs = { + /** + * The data used to create many Users. + */ + data: UserCreateManyInput | UserCreateManyInput[] + } + + /** + * User createManyAndReturn + */ + export type UserCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelectCreateManyAndReturn | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * The data used to create many Users. + */ + data: UserCreateManyInput | UserCreateManyInput[] + } + + /** + * User update + */ + export type UserUpdateArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + /** + * The data needed to update a User. + */ + data: XOR + /** + * Choose, which User to update. + */ + where: UserWhereUniqueInput + } + + /** + * User updateMany + */ + export type UserUpdateManyArgs = { + /** + * The data used to update Users. + */ + data: XOR + /** + * Filter which Users to update + */ + where?: UserWhereInput + /** + * Limit how many Users to update. + */ + limit?: number + } + + /** + * User updateManyAndReturn + */ + export type UserUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * The data used to update Users. + */ + data: XOR + /** + * Filter which Users to update + */ + where?: UserWhereInput + /** + * Limit how many Users to update. + */ + limit?: number + } + + /** + * User upsert + */ + export type UserUpsertArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + /** + * The filter to search for the User to update in case it exists. + */ + where: UserWhereUniqueInput + /** + * In case the User found by the `where` argument doesn't exist, create a new User with this data. + */ + create: XOR + /** + * In case the User was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + /** + * User delete + */ + export type UserDeleteArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + /** + * Filter which User to delete. + */ + where: UserWhereUniqueInput + } + + /** + * User deleteMany + */ + export type UserDeleteManyArgs = { + /** + * Filter which Users to delete + */ + where?: UserWhereInput + /** + * Limit how many Users to delete. + */ + limit?: number + } + + /** + * User.Session + */ + export type User$SessionArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + where?: SessionWhereInput + orderBy?: SessionOrderByWithRelationInput | SessionOrderByWithRelationInput[] + cursor?: SessionWhereUniqueInput + take?: number + skip?: number + distinct?: SessionScalarFieldEnum | SessionScalarFieldEnum[] + } + + /** + * User.UserPreferences + */ + export type User$UserPreferencesArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + where?: UserPreferencesWhereInput + } + + /** + * User.channels + */ + export type User$channelsArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + where?: ChannelWhereInput + orderBy?: ChannelOrderByWithRelationInput | ChannelOrderByWithRelationInput[] + cursor?: ChannelWhereUniqueInput + take?: number + skip?: number + distinct?: ChannelScalarFieldEnum | ChannelScalarFieldEnum[] + } + + /** + * User without action + */ + export type UserDefaultArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + } + + + /** + * Model Session + */ + + export type AggregateSession = { + _count: SessionCountAggregateOutputType | null + _min: SessionMinAggregateOutputType | null + _max: SessionMaxAggregateOutputType | null + } + + export type SessionMinAggregateOutputType = { + id: string | null + userId: string | null + expiresAt: Date | null + } + + export type SessionMaxAggregateOutputType = { + id: string | null + userId: string | null + expiresAt: Date | null + } + + export type SessionCountAggregateOutputType = { + id: number + userId: number + expiresAt: number + _all: number + } + + + export type SessionMinAggregateInputType = { + id?: true + userId?: true + expiresAt?: true + } + + export type SessionMaxAggregateInputType = { + id?: true + userId?: true + expiresAt?: true + } + + export type SessionCountAggregateInputType = { + id?: true + userId?: true + expiresAt?: true + _all?: true + } + + export type SessionAggregateArgs = { + /** + * Filter which Session to aggregate. + */ + where?: SessionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Sessions to fetch. + */ + orderBy?: SessionOrderByWithRelationInput | SessionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: SessionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Sessions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Sessions. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned Sessions + **/ + _count?: true | SessionCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: SessionMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: SessionMaxAggregateInputType + } + + export type GetSessionAggregateType = { + [P in keyof T & keyof AggregateSession]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type SessionGroupByArgs = { + where?: SessionWhereInput + orderBy?: SessionOrderByWithAggregationInput | SessionOrderByWithAggregationInput[] + by: SessionScalarFieldEnum[] | SessionScalarFieldEnum + having?: SessionScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: SessionCountAggregateInputType | true + _min?: SessionMinAggregateInputType + _max?: SessionMaxAggregateInputType + } + + export type SessionGroupByOutputType = { + id: string + userId: string + expiresAt: Date + _count: SessionCountAggregateOutputType | null + _min: SessionMinAggregateOutputType | null + _max: SessionMaxAggregateOutputType | null + } + + type GetSessionGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof SessionGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type SessionSelect = $Extensions.GetSelect<{ + id?: boolean + userId?: boolean + expiresAt?: boolean + user?: boolean | UserDefaultArgs + }, ExtArgs["result"]["session"]> + + export type SessionSelectCreateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + userId?: boolean + expiresAt?: boolean + user?: boolean | UserDefaultArgs + }, ExtArgs["result"]["session"]> + + export type SessionSelectUpdateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + userId?: boolean + expiresAt?: boolean + user?: boolean | UserDefaultArgs + }, ExtArgs["result"]["session"]> + + export type SessionSelectScalar = { + id?: boolean + userId?: boolean + expiresAt?: boolean + } + + export type SessionOmit = $Extensions.GetOmit<"id" | "userId" | "expiresAt", ExtArgs["result"]["session"]> + export type SessionInclude = { + user?: boolean | UserDefaultArgs + } + export type SessionIncludeCreateManyAndReturn = { + user?: boolean | UserDefaultArgs + } + export type SessionIncludeUpdateManyAndReturn = { + user?: boolean | UserDefaultArgs + } + + export type $SessionPayload = { + name: "Session" + objects: { + user: Prisma.$UserPayload + } + scalars: $Extensions.GetPayloadResult<{ + id: string + userId: string + expiresAt: Date + }, ExtArgs["result"]["session"]> + composites: {} + } + + type SessionGetPayload = $Result.GetResult + + type SessionCountArgs = + Omit & { + select?: SessionCountAggregateInputType | true + } + + export interface SessionDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['Session'], meta: { name: 'Session' } } + /** + * Find zero or one Session that matches the filter. + * @param {SessionFindUniqueArgs} args - Arguments to find a Session + * @example + * // Get one Session + * const session = await prisma.session.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: SelectSubset>): Prisma__SessionClient<$Result.GetResult, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one Session that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {SessionFindUniqueOrThrowArgs} args - Arguments to find a Session + * @example + * // Get one Session + * const session = await prisma.session.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: SelectSubset>): Prisma__SessionClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Session that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionFindFirstArgs} args - Arguments to find a Session + * @example + * // Get one Session + * const session = await prisma.session.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: SelectSubset>): Prisma__SessionClient<$Result.GetResult, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Session that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionFindFirstOrThrowArgs} args - Arguments to find a Session + * @example + * // Get one Session + * const session = await prisma.session.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: SelectSubset>): Prisma__SessionClient<$Result.GetResult, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Sessions that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Sessions + * const sessions = await prisma.session.findMany() + * + * // Get first 10 Sessions + * const sessions = await prisma.session.findMany({ take: 10 }) + * + * // Only select the `id` + * const sessionWithIdOnly = await prisma.session.findMany({ select: { id: true } }) + * + */ + findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions>> + + /** + * Create a Session. + * @param {SessionCreateArgs} args - Arguments to create a Session. + * @example + * // Create one Session + * const Session = await prisma.session.create({ + * data: { + * // ... data to create a Session + * } + * }) + * + */ + create(args: SelectSubset>): Prisma__SessionClient<$Result.GetResult, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Sessions. + * @param {SessionCreateManyArgs} args - Arguments to create many Sessions. + * @example + * // Create many Sessions + * const session = await prisma.session.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Sessions and returns the data saved in the database. + * @param {SessionCreateManyAndReturnArgs} args - Arguments to create many Sessions. + * @example + * // Create many Sessions + * const session = await prisma.session.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Sessions and only return the `id` + * const sessionWithIdOnly = await prisma.session.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a Session. + * @param {SessionDeleteArgs} args - Arguments to delete one Session. + * @example + * // Delete one Session + * const Session = await prisma.session.delete({ + * where: { + * // ... filter to delete one Session + * } + * }) + * + */ + delete(args: SelectSubset>): Prisma__SessionClient<$Result.GetResult, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one Session. + * @param {SessionUpdateArgs} args - Arguments to update one Session. + * @example + * // Update one Session + * const session = await prisma.session.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: SelectSubset>): Prisma__SessionClient<$Result.GetResult, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Sessions. + * @param {SessionDeleteManyArgs} args - Arguments to filter Sessions to delete. + * @example + * // Delete a few Sessions + * const { count } = await prisma.session.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Sessions. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Sessions + * const session = await prisma.session.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Sessions and returns the data updated in the database. + * @param {SessionUpdateManyAndReturnArgs} args - Arguments to update many Sessions. + * @example + * // Update many Sessions + * const session = await prisma.session.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Sessions and only return the `id` + * const sessionWithIdOnly = await prisma.session.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one Session. + * @param {SessionUpsertArgs} args - Arguments to update or create a Session. + * @example + * // Update or create a Session + * const session = await prisma.session.upsert({ + * create: { + * // ... data to create a Session + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Session we want to update + * } + * }) + */ + upsert(args: SelectSubset>): Prisma__SessionClient<$Result.GetResult, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Sessions. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionCountArgs} args - Arguments to filter Sessions to count. + * @example + * // Count the number of Sessions + * const count = await prisma.session.count({ + * where: { + * // ... the filter for the Sessions we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Session. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Session. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends SessionGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: SessionGroupByArgs['orderBy'] } + : { orderBy?: SessionGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetSessionGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the Session model + */ + readonly fields: SessionFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for Session. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__SessionClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + user = {}>(args?: Subset>): Prisma__UserClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise + } + + + + + /** + * Fields of the Session model + */ + interface SessionFieldRefs { + readonly id: FieldRef<"Session", 'String'> + readonly userId: FieldRef<"Session", 'String'> + readonly expiresAt: FieldRef<"Session", 'DateTime'> + } + + + // Custom InputTypes + /** + * Session findUnique + */ + export type SessionFindUniqueArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + /** + * Filter, which Session to fetch. + */ + where: SessionWhereUniqueInput + } + + /** + * Session findUniqueOrThrow + */ + export type SessionFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + /** + * Filter, which Session to fetch. + */ + where: SessionWhereUniqueInput + } + + /** + * Session findFirst + */ + export type SessionFindFirstArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + /** + * Filter, which Session to fetch. + */ + where?: SessionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Sessions to fetch. + */ + orderBy?: SessionOrderByWithRelationInput | SessionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Sessions. + */ + cursor?: SessionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Sessions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Sessions. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Sessions. + */ + distinct?: SessionScalarFieldEnum | SessionScalarFieldEnum[] + } + + /** + * Session findFirstOrThrow + */ + export type SessionFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + /** + * Filter, which Session to fetch. + */ + where?: SessionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Sessions to fetch. + */ + orderBy?: SessionOrderByWithRelationInput | SessionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Sessions. + */ + cursor?: SessionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Sessions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Sessions. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Sessions. + */ + distinct?: SessionScalarFieldEnum | SessionScalarFieldEnum[] + } + + /** + * Session findMany + */ + export type SessionFindManyArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + /** + * Filter, which Sessions to fetch. + */ + where?: SessionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Sessions to fetch. + */ + orderBy?: SessionOrderByWithRelationInput | SessionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing Sessions. + */ + cursor?: SessionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Sessions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Sessions. + */ + skip?: number + distinct?: SessionScalarFieldEnum | SessionScalarFieldEnum[] + } + + /** + * Session create + */ + export type SessionCreateArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + /** + * The data needed to create a Session. + */ + data: XOR + } + + /** + * Session createMany + */ + export type SessionCreateManyArgs = { + /** + * The data used to create many Sessions. + */ + data: SessionCreateManyInput | SessionCreateManyInput[] + } + + /** + * Session createManyAndReturn + */ + export type SessionCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelectCreateManyAndReturn | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * The data used to create many Sessions. + */ + data: SessionCreateManyInput | SessionCreateManyInput[] + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionIncludeCreateManyAndReturn | null + } + + /** + * Session update + */ + export type SessionUpdateArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + /** + * The data needed to update a Session. + */ + data: XOR + /** + * Choose, which Session to update. + */ + where: SessionWhereUniqueInput + } + + /** + * Session updateMany + */ + export type SessionUpdateManyArgs = { + /** + * The data used to update Sessions. + */ + data: XOR + /** + * Filter which Sessions to update + */ + where?: SessionWhereInput + /** + * Limit how many Sessions to update. + */ + limit?: number + } + + /** + * Session updateManyAndReturn + */ + export type SessionUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * The data used to update Sessions. + */ + data: XOR + /** + * Filter which Sessions to update + */ + where?: SessionWhereInput + /** + * Limit how many Sessions to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionIncludeUpdateManyAndReturn | null + } + + /** + * Session upsert + */ + export type SessionUpsertArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + /** + * The filter to search for the Session to update in case it exists. + */ + where: SessionWhereUniqueInput + /** + * In case the Session found by the `where` argument doesn't exist, create a new Session with this data. + */ + create: XOR + /** + * In case the Session was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + /** + * Session delete + */ + export type SessionDeleteArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + /** + * Filter which Session to delete. + */ + where: SessionWhereUniqueInput + } + + /** + * Session deleteMany + */ + export type SessionDeleteManyArgs = { + /** + * Filter which Sessions to delete + */ + where?: SessionWhereInput + /** + * Limit how many Sessions to delete. + */ + limit?: number + } + + /** + * Session without action + */ + export type SessionDefaultArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: SessionInclude | null + } + + + /** + * Model UserPreferences + */ + + export type AggregateUserPreferences = { + _count: UserPreferencesCountAggregateOutputType | null + _min: UserPreferencesMinAggregateOutputType | null + _max: UserPreferencesMaxAggregateOutputType | null + } + + export type UserPreferencesMinAggregateOutputType = { + userId: string | null + toggleInputHotkey: string | null + toggleOutputHotkey: string | null + } + + export type UserPreferencesMaxAggregateOutputType = { + userId: string | null + toggleInputHotkey: string | null + toggleOutputHotkey: string | null + } + + export type UserPreferencesCountAggregateOutputType = { + userId: number + toggleInputHotkey: number + toggleOutputHotkey: number + _all: number + } + + + export type UserPreferencesMinAggregateInputType = { + userId?: true + toggleInputHotkey?: true + toggleOutputHotkey?: true + } + + export type UserPreferencesMaxAggregateInputType = { + userId?: true + toggleInputHotkey?: true + toggleOutputHotkey?: true + } + + export type UserPreferencesCountAggregateInputType = { + userId?: true + toggleInputHotkey?: true + toggleOutputHotkey?: true + _all?: true + } + + export type UserPreferencesAggregateArgs = { + /** + * Filter which UserPreferences to aggregate. + */ + where?: UserPreferencesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserPreferences to fetch. + */ + orderBy?: UserPreferencesOrderByWithRelationInput | UserPreferencesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: UserPreferencesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserPreferences from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` UserPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned UserPreferences + **/ + _count?: true | UserPreferencesCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: UserPreferencesMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: UserPreferencesMaxAggregateInputType + } + + export type GetUserPreferencesAggregateType = { + [P in keyof T & keyof AggregateUserPreferences]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type UserPreferencesGroupByArgs = { + where?: UserPreferencesWhereInput + orderBy?: UserPreferencesOrderByWithAggregationInput | UserPreferencesOrderByWithAggregationInput[] + by: UserPreferencesScalarFieldEnum[] | UserPreferencesScalarFieldEnum + having?: UserPreferencesScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: UserPreferencesCountAggregateInputType | true + _min?: UserPreferencesMinAggregateInputType + _max?: UserPreferencesMaxAggregateInputType + } + + export type UserPreferencesGroupByOutputType = { + userId: string + toggleInputHotkey: string | null + toggleOutputHotkey: string | null + _count: UserPreferencesCountAggregateOutputType | null + _min: UserPreferencesMinAggregateOutputType | null + _max: UserPreferencesMaxAggregateOutputType | null + } + + type GetUserPreferencesGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof UserPreferencesGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type UserPreferencesSelect = $Extensions.GetSelect<{ + userId?: boolean + toggleInputHotkey?: boolean + toggleOutputHotkey?: boolean + user?: boolean | UserDefaultArgs + }, ExtArgs["result"]["userPreferences"]> + + export type UserPreferencesSelectCreateManyAndReturn = $Extensions.GetSelect<{ + userId?: boolean + toggleInputHotkey?: boolean + toggleOutputHotkey?: boolean + user?: boolean | UserDefaultArgs + }, ExtArgs["result"]["userPreferences"]> + + export type UserPreferencesSelectUpdateManyAndReturn = $Extensions.GetSelect<{ + userId?: boolean + toggleInputHotkey?: boolean + toggleOutputHotkey?: boolean + user?: boolean | UserDefaultArgs + }, ExtArgs["result"]["userPreferences"]> + + export type UserPreferencesSelectScalar = { + userId?: boolean + toggleInputHotkey?: boolean + toggleOutputHotkey?: boolean + } + + export type UserPreferencesOmit = $Extensions.GetOmit<"userId" | "toggleInputHotkey" | "toggleOutputHotkey", ExtArgs["result"]["userPreferences"]> + export type UserPreferencesInclude = { + user?: boolean | UserDefaultArgs + } + export type UserPreferencesIncludeCreateManyAndReturn = { + user?: boolean | UserDefaultArgs + } + export type UserPreferencesIncludeUpdateManyAndReturn = { + user?: boolean | UserDefaultArgs + } + + export type $UserPreferencesPayload = { + name: "UserPreferences" + objects: { + user: Prisma.$UserPayload + } + scalars: $Extensions.GetPayloadResult<{ + userId: string + toggleInputHotkey: string | null + toggleOutputHotkey: string | null + }, ExtArgs["result"]["userPreferences"]> + composites: {} + } + + type UserPreferencesGetPayload = $Result.GetResult + + type UserPreferencesCountArgs = + Omit & { + select?: UserPreferencesCountAggregateInputType | true + } + + export interface UserPreferencesDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['UserPreferences'], meta: { name: 'UserPreferences' } } + /** + * Find zero or one UserPreferences that matches the filter. + * @param {UserPreferencesFindUniqueArgs} args - Arguments to find a UserPreferences + * @example + * // Get one UserPreferences + * const userPreferences = await prisma.userPreferences.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: SelectSubset>): Prisma__UserPreferencesClient<$Result.GetResult, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one UserPreferences that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {UserPreferencesFindUniqueOrThrowArgs} args - Arguments to find a UserPreferences + * @example + * // Get one UserPreferences + * const userPreferences = await prisma.userPreferences.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: SelectSubset>): Prisma__UserPreferencesClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first UserPreferences that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesFindFirstArgs} args - Arguments to find a UserPreferences + * @example + * // Get one UserPreferences + * const userPreferences = await prisma.userPreferences.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: SelectSubset>): Prisma__UserPreferencesClient<$Result.GetResult, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first UserPreferences that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesFindFirstOrThrowArgs} args - Arguments to find a UserPreferences + * @example + * // Get one UserPreferences + * const userPreferences = await prisma.userPreferences.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: SelectSubset>): Prisma__UserPreferencesClient<$Result.GetResult, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more UserPreferences that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all UserPreferences + * const userPreferences = await prisma.userPreferences.findMany() + * + * // Get first 10 UserPreferences + * const userPreferences = await prisma.userPreferences.findMany({ take: 10 }) + * + * // Only select the `userId` + * const userPreferencesWithUserIdOnly = await prisma.userPreferences.findMany({ select: { userId: true } }) + * + */ + findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions>> + + /** + * Create a UserPreferences. + * @param {UserPreferencesCreateArgs} args - Arguments to create a UserPreferences. + * @example + * // Create one UserPreferences + * const UserPreferences = await prisma.userPreferences.create({ + * data: { + * // ... data to create a UserPreferences + * } + * }) + * + */ + create(args: SelectSubset>): Prisma__UserPreferencesClient<$Result.GetResult, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many UserPreferences. + * @param {UserPreferencesCreateManyArgs} args - Arguments to create many UserPreferences. + * @example + * // Create many UserPreferences + * const userPreferences = await prisma.userPreferences.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Create many UserPreferences and returns the data saved in the database. + * @param {UserPreferencesCreateManyAndReturnArgs} args - Arguments to create many UserPreferences. + * @example + * // Create many UserPreferences + * const userPreferences = await prisma.userPreferences.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many UserPreferences and only return the `userId` + * const userPreferencesWithUserIdOnly = await prisma.userPreferences.createManyAndReturn({ + * select: { userId: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a UserPreferences. + * @param {UserPreferencesDeleteArgs} args - Arguments to delete one UserPreferences. + * @example + * // Delete one UserPreferences + * const UserPreferences = await prisma.userPreferences.delete({ + * where: { + * // ... filter to delete one UserPreferences + * } + * }) + * + */ + delete(args: SelectSubset>): Prisma__UserPreferencesClient<$Result.GetResult, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one UserPreferences. + * @param {UserPreferencesUpdateArgs} args - Arguments to update one UserPreferences. + * @example + * // Update one UserPreferences + * const userPreferences = await prisma.userPreferences.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: SelectSubset>): Prisma__UserPreferencesClient<$Result.GetResult, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more UserPreferences. + * @param {UserPreferencesDeleteManyArgs} args - Arguments to filter UserPreferences to delete. + * @example + * // Delete a few UserPreferences + * const { count } = await prisma.userPreferences.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more UserPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many UserPreferences + * const userPreferences = await prisma.userPreferences.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more UserPreferences and returns the data updated in the database. + * @param {UserPreferencesUpdateManyAndReturnArgs} args - Arguments to update many UserPreferences. + * @example + * // Update many UserPreferences + * const userPreferences = await prisma.userPreferences.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more UserPreferences and only return the `userId` + * const userPreferencesWithUserIdOnly = await prisma.userPreferences.updateManyAndReturn({ + * select: { userId: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one UserPreferences. + * @param {UserPreferencesUpsertArgs} args - Arguments to update or create a UserPreferences. + * @example + * // Update or create a UserPreferences + * const userPreferences = await prisma.userPreferences.upsert({ + * create: { + * // ... data to create a UserPreferences + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the UserPreferences we want to update + * } + * }) + */ + upsert(args: SelectSubset>): Prisma__UserPreferencesClient<$Result.GetResult, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of UserPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesCountArgs} args - Arguments to filter UserPreferences to count. + * @example + * // Count the number of UserPreferences + * const count = await prisma.userPreferences.count({ + * where: { + * // ... the filter for the UserPreferences we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a UserPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by UserPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends UserPreferencesGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: UserPreferencesGroupByArgs['orderBy'] } + : { orderBy?: UserPreferencesGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetUserPreferencesGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the UserPreferences model + */ + readonly fields: UserPreferencesFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for UserPreferences. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__UserPreferencesClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + user = {}>(args?: Subset>): Prisma__UserClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise + } + + + + + /** + * Fields of the UserPreferences model + */ + interface UserPreferencesFieldRefs { + readonly userId: FieldRef<"UserPreferences", 'String'> + readonly toggleInputHotkey: FieldRef<"UserPreferences", 'String'> + readonly toggleOutputHotkey: FieldRef<"UserPreferences", 'String'> + } + + + // Custom InputTypes + /** + * UserPreferences findUnique + */ + export type UserPreferencesFindUniqueArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where: UserPreferencesWhereUniqueInput + } + + /** + * UserPreferences findUniqueOrThrow + */ + export type UserPreferencesFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where: UserPreferencesWhereUniqueInput + } + + /** + * UserPreferences findFirst + */ + export type UserPreferencesFindFirstArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where?: UserPreferencesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserPreferences to fetch. + */ + orderBy?: UserPreferencesOrderByWithRelationInput | UserPreferencesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for UserPreferences. + */ + cursor?: UserPreferencesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserPreferences from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` UserPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserPreferences. + */ + distinct?: UserPreferencesScalarFieldEnum | UserPreferencesScalarFieldEnum[] + } + + /** + * UserPreferences findFirstOrThrow + */ + export type UserPreferencesFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where?: UserPreferencesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserPreferences to fetch. + */ + orderBy?: UserPreferencesOrderByWithRelationInput | UserPreferencesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for UserPreferences. + */ + cursor?: UserPreferencesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserPreferences from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` UserPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserPreferences. + */ + distinct?: UserPreferencesScalarFieldEnum | UserPreferencesScalarFieldEnum[] + } + + /** + * UserPreferences findMany + */ + export type UserPreferencesFindManyArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where?: UserPreferencesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserPreferences to fetch. + */ + orderBy?: UserPreferencesOrderByWithRelationInput | UserPreferencesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing UserPreferences. + */ + cursor?: UserPreferencesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserPreferences from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` UserPreferences. + */ + skip?: number + distinct?: UserPreferencesScalarFieldEnum | UserPreferencesScalarFieldEnum[] + } + + /** + * UserPreferences create + */ + export type UserPreferencesCreateArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + /** + * The data needed to create a UserPreferences. + */ + data: XOR + } + + /** + * UserPreferences createMany + */ + export type UserPreferencesCreateManyArgs = { + /** + * The data used to create many UserPreferences. + */ + data: UserPreferencesCreateManyInput | UserPreferencesCreateManyInput[] + } + + /** + * UserPreferences createManyAndReturn + */ + export type UserPreferencesCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelectCreateManyAndReturn | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * The data used to create many UserPreferences. + */ + data: UserPreferencesCreateManyInput | UserPreferencesCreateManyInput[] + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesIncludeCreateManyAndReturn | null + } + + /** + * UserPreferences update + */ + export type UserPreferencesUpdateArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + /** + * The data needed to update a UserPreferences. + */ + data: XOR + /** + * Choose, which UserPreferences to update. + */ + where: UserPreferencesWhereUniqueInput + } + + /** + * UserPreferences updateMany + */ + export type UserPreferencesUpdateManyArgs = { + /** + * The data used to update UserPreferences. + */ + data: XOR + /** + * Filter which UserPreferences to update + */ + where?: UserPreferencesWhereInput + /** + * Limit how many UserPreferences to update. + */ + limit?: number + } + + /** + * UserPreferences updateManyAndReturn + */ + export type UserPreferencesUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * The data used to update UserPreferences. + */ + data: XOR + /** + * Filter which UserPreferences to update + */ + where?: UserPreferencesWhereInput + /** + * Limit how many UserPreferences to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesIncludeUpdateManyAndReturn | null + } + + /** + * UserPreferences upsert + */ + export type UserPreferencesUpsertArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + /** + * The filter to search for the UserPreferences to update in case it exists. + */ + where: UserPreferencesWhereUniqueInput + /** + * In case the UserPreferences found by the `where` argument doesn't exist, create a new UserPreferences with this data. + */ + create: XOR + /** + * In case the UserPreferences was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + /** + * UserPreferences delete + */ + export type UserPreferencesDeleteArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + /** + * Filter which UserPreferences to delete. + */ + where: UserPreferencesWhereUniqueInput + } + + /** + * UserPreferences deleteMany + */ + export type UserPreferencesDeleteManyArgs = { + /** + * Filter which UserPreferences to delete + */ + where?: UserPreferencesWhereInput + /** + * Limit how many UserPreferences to delete. + */ + limit?: number + } + + /** + * UserPreferences without action + */ + export type UserPreferencesDefaultArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserPreferencesInclude | null + } + + + /** + * Model Channel + */ + + export type AggregateChannel = { + _count: ChannelCountAggregateOutputType | null + _avg: ChannelAvgAggregateOutputType | null + _sum: ChannelSumAggregateOutputType | null + _min: ChannelMinAggregateOutputType | null + _max: ChannelMaxAggregateOutputType | null + } + + export type ChannelAvgAggregateOutputType = { + maxClients: number | null + } + + export type ChannelSumAggregateOutputType = { + maxClients: number | null + } + + export type ChannelMinAggregateOutputType = { + id: string | null + name: string | null + maxClients: number | null + persistent: boolean | null + owner_id: string | null + } + + export type ChannelMaxAggregateOutputType = { + id: string | null + name: string | null + maxClients: number | null + persistent: boolean | null + owner_id: string | null + } + + export type ChannelCountAggregateOutputType = { + id: number + name: number + maxClients: number + persistent: number + owner_id: number + _all: number + } + + + export type ChannelAvgAggregateInputType = { + maxClients?: true + } + + export type ChannelSumAggregateInputType = { + maxClients?: true + } + + export type ChannelMinAggregateInputType = { + id?: true + name?: true + maxClients?: true + persistent?: true + owner_id?: true + } + + export type ChannelMaxAggregateInputType = { + id?: true + name?: true + maxClients?: true + persistent?: true + owner_id?: true + } + + export type ChannelCountAggregateInputType = { + id?: true + name?: true + maxClients?: true + persistent?: true + owner_id?: true + _all?: true + } + + export type ChannelAggregateArgs = { + /** + * Filter which Channel to aggregate. + */ + where?: ChannelWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Channels to fetch. + */ + orderBy?: ChannelOrderByWithRelationInput | ChannelOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: ChannelWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Channels from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Channels. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned Channels + **/ + _count?: true | ChannelCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: ChannelAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: ChannelSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: ChannelMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: ChannelMaxAggregateInputType + } + + export type GetChannelAggregateType = { + [P in keyof T & keyof AggregateChannel]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type ChannelGroupByArgs = { + where?: ChannelWhereInput + orderBy?: ChannelOrderByWithAggregationInput | ChannelOrderByWithAggregationInput[] + by: ChannelScalarFieldEnum[] | ChannelScalarFieldEnum + having?: ChannelScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: ChannelCountAggregateInputType | true + _avg?: ChannelAvgAggregateInputType + _sum?: ChannelSumAggregateInputType + _min?: ChannelMinAggregateInputType + _max?: ChannelMaxAggregateInputType + } + + export type ChannelGroupByOutputType = { + id: string + name: string + maxClients: number | null + persistent: boolean + owner_id: string | null + _count: ChannelCountAggregateOutputType | null + _avg: ChannelAvgAggregateOutputType | null + _sum: ChannelSumAggregateOutputType | null + _min: ChannelMinAggregateOutputType | null + _max: ChannelMaxAggregateOutputType | null + } + + type GetChannelGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof ChannelGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type ChannelSelect = $Extensions.GetSelect<{ + id?: boolean + name?: boolean + maxClients?: boolean + persistent?: boolean + owner_id?: boolean + owner?: boolean | Channel$ownerArgs + }, ExtArgs["result"]["channel"]> + + export type ChannelSelectCreateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + name?: boolean + maxClients?: boolean + persistent?: boolean + owner_id?: boolean + owner?: boolean | Channel$ownerArgs + }, ExtArgs["result"]["channel"]> + + export type ChannelSelectUpdateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + name?: boolean + maxClients?: boolean + persistent?: boolean + owner_id?: boolean + owner?: boolean | Channel$ownerArgs + }, ExtArgs["result"]["channel"]> + + export type ChannelSelectScalar = { + id?: boolean + name?: boolean + maxClients?: boolean + persistent?: boolean + owner_id?: boolean + } + + export type ChannelOmit = $Extensions.GetOmit<"id" | "name" | "maxClients" | "persistent" | "owner_id", ExtArgs["result"]["channel"]> + export type ChannelInclude = { + owner?: boolean | Channel$ownerArgs + } + export type ChannelIncludeCreateManyAndReturn = { + owner?: boolean | Channel$ownerArgs + } + export type ChannelIncludeUpdateManyAndReturn = { + owner?: boolean | Channel$ownerArgs + } + + export type $ChannelPayload = { + name: "Channel" + objects: { + owner: Prisma.$UserPayload | null + } + scalars: $Extensions.GetPayloadResult<{ + id: string + name: string + maxClients: number | null + persistent: boolean + owner_id: string | null + }, ExtArgs["result"]["channel"]> + composites: {} + } + + type ChannelGetPayload = $Result.GetResult + + type ChannelCountArgs = + Omit & { + select?: ChannelCountAggregateInputType | true + } + + export interface ChannelDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['Channel'], meta: { name: 'Channel' } } + /** + * Find zero or one Channel that matches the filter. + * @param {ChannelFindUniqueArgs} args - Arguments to find a Channel + * @example + * // Get one Channel + * const channel = await prisma.channel.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: SelectSubset>): Prisma__ChannelClient<$Result.GetResult, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one Channel that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {ChannelFindUniqueOrThrowArgs} args - Arguments to find a Channel + * @example + * // Get one Channel + * const channel = await prisma.channel.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: SelectSubset>): Prisma__ChannelClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Channel that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelFindFirstArgs} args - Arguments to find a Channel + * @example + * // Get one Channel + * const channel = await prisma.channel.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: SelectSubset>): Prisma__ChannelClient<$Result.GetResult, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Channel that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelFindFirstOrThrowArgs} args - Arguments to find a Channel + * @example + * // Get one Channel + * const channel = await prisma.channel.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: SelectSubset>): Prisma__ChannelClient<$Result.GetResult, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Channels that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Channels + * const channels = await prisma.channel.findMany() + * + * // Get first 10 Channels + * const channels = await prisma.channel.findMany({ take: 10 }) + * + * // Only select the `id` + * const channelWithIdOnly = await prisma.channel.findMany({ select: { id: true } }) + * + */ + findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions>> + + /** + * Create a Channel. + * @param {ChannelCreateArgs} args - Arguments to create a Channel. + * @example + * // Create one Channel + * const Channel = await prisma.channel.create({ + * data: { + * // ... data to create a Channel + * } + * }) + * + */ + create(args: SelectSubset>): Prisma__ChannelClient<$Result.GetResult, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Channels. + * @param {ChannelCreateManyArgs} args - Arguments to create many Channels. + * @example + * // Create many Channels + * const channel = await prisma.channel.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Channels and returns the data saved in the database. + * @param {ChannelCreateManyAndReturnArgs} args - Arguments to create many Channels. + * @example + * // Create many Channels + * const channel = await prisma.channel.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Channels and only return the `id` + * const channelWithIdOnly = await prisma.channel.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a Channel. + * @param {ChannelDeleteArgs} args - Arguments to delete one Channel. + * @example + * // Delete one Channel + * const Channel = await prisma.channel.delete({ + * where: { + * // ... filter to delete one Channel + * } + * }) + * + */ + delete(args: SelectSubset>): Prisma__ChannelClient<$Result.GetResult, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one Channel. + * @param {ChannelUpdateArgs} args - Arguments to update one Channel. + * @example + * // Update one Channel + * const channel = await prisma.channel.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: SelectSubset>): Prisma__ChannelClient<$Result.GetResult, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Channels. + * @param {ChannelDeleteManyArgs} args - Arguments to filter Channels to delete. + * @example + * // Delete a few Channels + * const { count } = await prisma.channel.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Channels. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Channels + * const channel = await prisma.channel.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Channels and returns the data updated in the database. + * @param {ChannelUpdateManyAndReturnArgs} args - Arguments to update many Channels. + * @example + * // Update many Channels + * const channel = await prisma.channel.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Channels and only return the `id` + * const channelWithIdOnly = await prisma.channel.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one Channel. + * @param {ChannelUpsertArgs} args - Arguments to update or create a Channel. + * @example + * // Update or create a Channel + * const channel = await prisma.channel.upsert({ + * create: { + * // ... data to create a Channel + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Channel we want to update + * } + * }) + */ + upsert(args: SelectSubset>): Prisma__ChannelClient<$Result.GetResult, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Channels. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelCountArgs} args - Arguments to filter Channels to count. + * @example + * // Count the number of Channels + * const count = await prisma.channel.count({ + * where: { + * // ... the filter for the Channels we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Channel. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Channel. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends ChannelGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: ChannelGroupByArgs['orderBy'] } + : { orderBy?: ChannelGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetChannelGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the Channel model + */ + readonly fields: ChannelFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for Channel. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__ChannelClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + owner = {}>(args?: Subset>): Prisma__UserClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise + } + + + + + /** + * Fields of the Channel model + */ + interface ChannelFieldRefs { + readonly id: FieldRef<"Channel", 'String'> + readonly name: FieldRef<"Channel", 'String'> + readonly maxClients: FieldRef<"Channel", 'Int'> + readonly persistent: FieldRef<"Channel", 'Boolean'> + readonly owner_id: FieldRef<"Channel", 'String'> + } + + + // Custom InputTypes + /** + * Channel findUnique + */ + export type ChannelFindUniqueArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + /** + * Filter, which Channel to fetch. + */ + where: ChannelWhereUniqueInput + } + + /** + * Channel findUniqueOrThrow + */ + export type ChannelFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + /** + * Filter, which Channel to fetch. + */ + where: ChannelWhereUniqueInput + } + + /** + * Channel findFirst + */ + export type ChannelFindFirstArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + /** + * Filter, which Channel to fetch. + */ + where?: ChannelWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Channels to fetch. + */ + orderBy?: ChannelOrderByWithRelationInput | ChannelOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Channels. + */ + cursor?: ChannelWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Channels from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Channels. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Channels. + */ + distinct?: ChannelScalarFieldEnum | ChannelScalarFieldEnum[] + } + + /** + * Channel findFirstOrThrow + */ + export type ChannelFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + /** + * Filter, which Channel to fetch. + */ + where?: ChannelWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Channels to fetch. + */ + orderBy?: ChannelOrderByWithRelationInput | ChannelOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Channels. + */ + cursor?: ChannelWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Channels from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Channels. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Channels. + */ + distinct?: ChannelScalarFieldEnum | ChannelScalarFieldEnum[] + } + + /** + * Channel findMany + */ + export type ChannelFindManyArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + /** + * Filter, which Channels to fetch. + */ + where?: ChannelWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Channels to fetch. + */ + orderBy?: ChannelOrderByWithRelationInput | ChannelOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing Channels. + */ + cursor?: ChannelWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Channels from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Channels. + */ + skip?: number + distinct?: ChannelScalarFieldEnum | ChannelScalarFieldEnum[] + } + + /** + * Channel create + */ + export type ChannelCreateArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + /** + * The data needed to create a Channel. + */ + data: XOR + } + + /** + * Channel createMany + */ + export type ChannelCreateManyArgs = { + /** + * The data used to create many Channels. + */ + data: ChannelCreateManyInput | ChannelCreateManyInput[] + } + + /** + * Channel createManyAndReturn + */ + export type ChannelCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelectCreateManyAndReturn | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * The data used to create many Channels. + */ + data: ChannelCreateManyInput | ChannelCreateManyInput[] + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelIncludeCreateManyAndReturn | null + } + + /** + * Channel update + */ + export type ChannelUpdateArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + /** + * The data needed to update a Channel. + */ + data: XOR + /** + * Choose, which Channel to update. + */ + where: ChannelWhereUniqueInput + } + + /** + * Channel updateMany + */ + export type ChannelUpdateManyArgs = { + /** + * The data used to update Channels. + */ + data: XOR + /** + * Filter which Channels to update + */ + where?: ChannelWhereInput + /** + * Limit how many Channels to update. + */ + limit?: number + } + + /** + * Channel updateManyAndReturn + */ + export type ChannelUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * The data used to update Channels. + */ + data: XOR + /** + * Filter which Channels to update + */ + where?: ChannelWhereInput + /** + * Limit how many Channels to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelIncludeUpdateManyAndReturn | null + } + + /** + * Channel upsert + */ + export type ChannelUpsertArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + /** + * The filter to search for the Channel to update in case it exists. + */ + where: ChannelWhereUniqueInput + /** + * In case the Channel found by the `where` argument doesn't exist, create a new Channel with this data. + */ + create: XOR + /** + * In case the Channel was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + /** + * Channel delete + */ + export type ChannelDeleteArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + /** + * Filter which Channel to delete. + */ + where: ChannelWhereUniqueInput + } + + /** + * Channel deleteMany + */ + export type ChannelDeleteManyArgs = { + /** + * Filter which Channels to delete + */ + where?: ChannelWhereInput + /** + * Limit how many Channels to delete. + */ + limit?: number + } + + /** + * Channel.owner + */ + export type Channel$ownerArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserInclude | null + where?: UserWhereInput + } + + /** + * Channel without action + */ + export type ChannelDefaultArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: ChannelInclude | null + } + + + /** + * Enums + */ + + export const TransactionIsolationLevel: { + Serializable: 'Serializable' + }; + + export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + + + export const UserScalarFieldEnum: { + id: 'id', + username: 'username', + password: 'password', + displayName: 'displayName', + createdAt: 'createdAt', + updatedAt: 'updatedAt' + }; + + export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] + + + export const SessionScalarFieldEnum: { + id: 'id', + userId: 'userId', + expiresAt: 'expiresAt' + }; + + export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum] + + + export const UserPreferencesScalarFieldEnum: { + userId: 'userId', + toggleInputHotkey: 'toggleInputHotkey', + toggleOutputHotkey: 'toggleOutputHotkey' + }; + + export type UserPreferencesScalarFieldEnum = (typeof UserPreferencesScalarFieldEnum)[keyof typeof UserPreferencesScalarFieldEnum] + + + export const ChannelScalarFieldEnum: { + id: 'id', + name: 'name', + maxClients: 'maxClients', + persistent: 'persistent', + owner_id: 'owner_id' + }; + + export type ChannelScalarFieldEnum = (typeof ChannelScalarFieldEnum)[keyof typeof ChannelScalarFieldEnum] + + + export const SortOrder: { + asc: 'asc', + desc: 'desc' + }; + + export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] + + + export const NullsOrder: { + first: 'first', + last: 'last' + }; + + export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + + + /** + * Field references + */ + + + /** + * Reference to a field of type 'String' + */ + export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'> + + + + /** + * Reference to a field of type 'DateTime' + */ + export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'> + + + + /** + * Reference to a field of type 'Int' + */ + export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'> + + + + /** + * Reference to a field of type 'Boolean' + */ + export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'> + + + + /** + * Reference to a field of type 'Float' + */ + export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'> + + /** + * Deep Input Types + */ + + + export type UserWhereInput = { + AND?: UserWhereInput | UserWhereInput[] + OR?: UserWhereInput[] + NOT?: UserWhereInput | UserWhereInput[] + id?: StringFilter<"User"> | string + username?: StringFilter<"User"> | string + password?: StringFilter<"User"> | string + displayName?: StringFilter<"User"> | string + createdAt?: DateTimeFilter<"User"> | Date | string + updatedAt?: DateTimeFilter<"User"> | Date | string + Session?: SessionListRelationFilter + UserPreferences?: XOR | null + channels?: ChannelListRelationFilter + } + + export type UserOrderByWithRelationInput = { + id?: SortOrder + username?: SortOrder + password?: SortOrder + displayName?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + Session?: SessionOrderByRelationAggregateInput + UserPreferences?: UserPreferencesOrderByWithRelationInput + channels?: ChannelOrderByRelationAggregateInput + } + + export type UserWhereUniqueInput = Prisma.AtLeast<{ + id?: string + username?: string + AND?: UserWhereInput | UserWhereInput[] + OR?: UserWhereInput[] + NOT?: UserWhereInput | UserWhereInput[] + password?: StringFilter<"User"> | string + displayName?: StringFilter<"User"> | string + createdAt?: DateTimeFilter<"User"> | Date | string + updatedAt?: DateTimeFilter<"User"> | Date | string + Session?: SessionListRelationFilter + UserPreferences?: XOR | null + channels?: ChannelListRelationFilter + }, "id" | "username"> + + export type UserOrderByWithAggregationInput = { + id?: SortOrder + username?: SortOrder + password?: SortOrder + displayName?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + _count?: UserCountOrderByAggregateInput + _max?: UserMaxOrderByAggregateInput + _min?: UserMinOrderByAggregateInput + } + + export type UserScalarWhereWithAggregatesInput = { + AND?: UserScalarWhereWithAggregatesInput | UserScalarWhereWithAggregatesInput[] + OR?: UserScalarWhereWithAggregatesInput[] + NOT?: UserScalarWhereWithAggregatesInput | UserScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"User"> | string + username?: StringWithAggregatesFilter<"User"> | string + password?: StringWithAggregatesFilter<"User"> | string + displayName?: StringWithAggregatesFilter<"User"> | string + createdAt?: DateTimeWithAggregatesFilter<"User"> | Date | string + updatedAt?: DateTimeWithAggregatesFilter<"User"> | Date | string + } + + export type SessionWhereInput = { + AND?: SessionWhereInput | SessionWhereInput[] + OR?: SessionWhereInput[] + NOT?: SessionWhereInput | SessionWhereInput[] + id?: StringFilter<"Session"> | string + userId?: StringFilter<"Session"> | string + expiresAt?: DateTimeFilter<"Session"> | Date | string + user?: XOR + } + + export type SessionOrderByWithRelationInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + user?: UserOrderByWithRelationInput + } + + export type SessionWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: SessionWhereInput | SessionWhereInput[] + OR?: SessionWhereInput[] + NOT?: SessionWhereInput | SessionWhereInput[] + userId?: StringFilter<"Session"> | string + expiresAt?: DateTimeFilter<"Session"> | Date | string + user?: XOR + }, "id"> + + export type SessionOrderByWithAggregationInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + _count?: SessionCountOrderByAggregateInput + _max?: SessionMaxOrderByAggregateInput + _min?: SessionMinOrderByAggregateInput + } + + export type SessionScalarWhereWithAggregatesInput = { + AND?: SessionScalarWhereWithAggregatesInput | SessionScalarWhereWithAggregatesInput[] + OR?: SessionScalarWhereWithAggregatesInput[] + NOT?: SessionScalarWhereWithAggregatesInput | SessionScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"Session"> | string + userId?: StringWithAggregatesFilter<"Session"> | string + expiresAt?: DateTimeWithAggregatesFilter<"Session"> | Date | string + } + + export type UserPreferencesWhereInput = { + AND?: UserPreferencesWhereInput | UserPreferencesWhereInput[] + OR?: UserPreferencesWhereInput[] + NOT?: UserPreferencesWhereInput | UserPreferencesWhereInput[] + userId?: StringFilter<"UserPreferences"> | string + toggleInputHotkey?: StringNullableFilter<"UserPreferences"> | string | null + toggleOutputHotkey?: StringNullableFilter<"UserPreferences"> | string | null + user?: XOR + } + + export type UserPreferencesOrderByWithRelationInput = { + userId?: SortOrder + toggleInputHotkey?: SortOrderInput | SortOrder + toggleOutputHotkey?: SortOrderInput | SortOrder + user?: UserOrderByWithRelationInput + } + + export type UserPreferencesWhereUniqueInput = Prisma.AtLeast<{ + userId?: string + AND?: UserPreferencesWhereInput | UserPreferencesWhereInput[] + OR?: UserPreferencesWhereInput[] + NOT?: UserPreferencesWhereInput | UserPreferencesWhereInput[] + toggleInputHotkey?: StringNullableFilter<"UserPreferences"> | string | null + toggleOutputHotkey?: StringNullableFilter<"UserPreferences"> | string | null + user?: XOR + }, "userId"> + + export type UserPreferencesOrderByWithAggregationInput = { + userId?: SortOrder + toggleInputHotkey?: SortOrderInput | SortOrder + toggleOutputHotkey?: SortOrderInput | SortOrder + _count?: UserPreferencesCountOrderByAggregateInput + _max?: UserPreferencesMaxOrderByAggregateInput + _min?: UserPreferencesMinOrderByAggregateInput + } + + export type UserPreferencesScalarWhereWithAggregatesInput = { + AND?: UserPreferencesScalarWhereWithAggregatesInput | UserPreferencesScalarWhereWithAggregatesInput[] + OR?: UserPreferencesScalarWhereWithAggregatesInput[] + NOT?: UserPreferencesScalarWhereWithAggregatesInput | UserPreferencesScalarWhereWithAggregatesInput[] + userId?: StringWithAggregatesFilter<"UserPreferences"> | string + toggleInputHotkey?: StringNullableWithAggregatesFilter<"UserPreferences"> | string | null + toggleOutputHotkey?: StringNullableWithAggregatesFilter<"UserPreferences"> | string | null + } + + export type ChannelWhereInput = { + AND?: ChannelWhereInput | ChannelWhereInput[] + OR?: ChannelWhereInput[] + NOT?: ChannelWhereInput | ChannelWhereInput[] + id?: StringFilter<"Channel"> | string + name?: StringFilter<"Channel"> | string + maxClients?: IntNullableFilter<"Channel"> | number | null + persistent?: BoolFilter<"Channel"> | boolean + owner_id?: StringNullableFilter<"Channel"> | string | null + owner?: XOR | null + } + + export type ChannelOrderByWithRelationInput = { + id?: SortOrder + name?: SortOrder + maxClients?: SortOrderInput | SortOrder + persistent?: SortOrder + owner_id?: SortOrderInput | SortOrder + owner?: UserOrderByWithRelationInput + } + + export type ChannelWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: ChannelWhereInput | ChannelWhereInput[] + OR?: ChannelWhereInput[] + NOT?: ChannelWhereInput | ChannelWhereInput[] + name?: StringFilter<"Channel"> | string + maxClients?: IntNullableFilter<"Channel"> | number | null + persistent?: BoolFilter<"Channel"> | boolean + owner_id?: StringNullableFilter<"Channel"> | string | null + owner?: XOR | null + }, "id"> + + export type ChannelOrderByWithAggregationInput = { + id?: SortOrder + name?: SortOrder + maxClients?: SortOrderInput | SortOrder + persistent?: SortOrder + owner_id?: SortOrderInput | SortOrder + _count?: ChannelCountOrderByAggregateInput + _avg?: ChannelAvgOrderByAggregateInput + _max?: ChannelMaxOrderByAggregateInput + _min?: ChannelMinOrderByAggregateInput + _sum?: ChannelSumOrderByAggregateInput + } + + export type ChannelScalarWhereWithAggregatesInput = { + AND?: ChannelScalarWhereWithAggregatesInput | ChannelScalarWhereWithAggregatesInput[] + OR?: ChannelScalarWhereWithAggregatesInput[] + NOT?: ChannelScalarWhereWithAggregatesInput | ChannelScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"Channel"> | string + name?: StringWithAggregatesFilter<"Channel"> | string + maxClients?: IntNullableWithAggregatesFilter<"Channel"> | number | null + persistent?: BoolWithAggregatesFilter<"Channel"> | boolean + owner_id?: StringNullableWithAggregatesFilter<"Channel"> | string | null + } + + export type UserCreateInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: SessionCreateNestedManyWithoutUserInput + UserPreferences?: UserPreferencesCreateNestedOneWithoutUserInput + channels?: ChannelCreateNestedManyWithoutOwnerInput + } + + export type UserUncheckedCreateInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: SessionUncheckedCreateNestedManyWithoutUserInput + UserPreferences?: UserPreferencesUncheckedCreateNestedOneWithoutUserInput + channels?: ChannelUncheckedCreateNestedManyWithoutOwnerInput + } + + export type UserUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + Session?: SessionUpdateManyWithoutUserNestedInput + UserPreferences?: UserPreferencesUpdateOneWithoutUserNestedInput + channels?: ChannelUpdateManyWithoutOwnerNestedInput + } + + export type UserUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + Session?: SessionUncheckedUpdateManyWithoutUserNestedInput + UserPreferences?: UserPreferencesUncheckedUpdateOneWithoutUserNestedInput + channels?: ChannelUncheckedUpdateManyWithoutOwnerNestedInput + } + + export type UserCreateManyInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + } + + export type UserUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type UserUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type SessionCreateInput = { + id: string + expiresAt: Date | string + user: UserCreateNestedOneWithoutSessionInput + } + + export type SessionUncheckedCreateInput = { + id: string + userId: string + expiresAt: Date | string + } + + export type SessionUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + user?: UserUpdateOneRequiredWithoutSessionNestedInput + } + + export type SessionUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type SessionCreateManyInput = { + id: string + userId: string + expiresAt: Date | string + } + + export type SessionUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type SessionUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type UserPreferencesCreateInput = { + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null + user: UserCreateNestedOneWithoutUserPreferencesInput + } + + export type UserPreferencesUncheckedCreateInput = { + userId: string + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null + } + + export type UserPreferencesUpdateInput = { + toggleInputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + user?: UserUpdateOneRequiredWithoutUserPreferencesNestedInput + } + + export type UserPreferencesUncheckedUpdateInput = { + userId?: StringFieldUpdateOperationsInput | string + toggleInputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type UserPreferencesCreateManyInput = { + userId: string + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null + } + + export type UserPreferencesUpdateManyMutationInput = { + toggleInputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type UserPreferencesUncheckedUpdateManyInput = { + userId?: StringFieldUpdateOperationsInput | string + toggleInputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type ChannelCreateInput = { + id: string + name: string + maxClients?: number | null + persistent?: boolean + owner?: UserCreateNestedOneWithoutChannelsInput + } + + export type ChannelUncheckedCreateInput = { + id: string + name: string + maxClients?: number | null + persistent?: boolean + owner_id?: string | null + } + + export type ChannelUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + name?: StringFieldUpdateOperationsInput | string + maxClients?: NullableIntFieldUpdateOperationsInput | number | null + persistent?: BoolFieldUpdateOperationsInput | boolean + owner?: UserUpdateOneWithoutChannelsNestedInput + } + + export type ChannelUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + name?: StringFieldUpdateOperationsInput | string + maxClients?: NullableIntFieldUpdateOperationsInput | number | null + persistent?: BoolFieldUpdateOperationsInput | boolean + owner_id?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type ChannelCreateManyInput = { + id: string + name: string + maxClients?: number | null + persistent?: boolean + owner_id?: string | null + } + + export type ChannelUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + name?: StringFieldUpdateOperationsInput | string + maxClients?: NullableIntFieldUpdateOperationsInput | number | null + persistent?: BoolFieldUpdateOperationsInput | boolean + } + + export type ChannelUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + name?: StringFieldUpdateOperationsInput | string + maxClients?: NullableIntFieldUpdateOperationsInput | number | null + persistent?: BoolFieldUpdateOperationsInput | boolean + owner_id?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type StringFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] + notIn?: string[] + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringFilter<$PrismaModel> | string + } + + export type DateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] + notIn?: Date[] | string[] + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeFilter<$PrismaModel> | Date | string + } + + export type SessionListRelationFilter = { + every?: SessionWhereInput + some?: SessionWhereInput + none?: SessionWhereInput + } + + export type UserPreferencesNullableScalarRelationFilter = { + is?: UserPreferencesWhereInput | null + isNot?: UserPreferencesWhereInput | null + } + + export type ChannelListRelationFilter = { + every?: ChannelWhereInput + some?: ChannelWhereInput + none?: ChannelWhereInput + } + + export type SessionOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type ChannelOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type UserCountOrderByAggregateInput = { + id?: SortOrder + username?: SortOrder + password?: SortOrder + displayName?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + } + + export type UserMaxOrderByAggregateInput = { + id?: SortOrder + username?: SortOrder + password?: SortOrder + displayName?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + } + + export type UserMinOrderByAggregateInput = { + id?: SortOrder + username?: SortOrder + password?: SortOrder + displayName?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + } + + export type StringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] + notIn?: string[] + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedStringFilter<$PrismaModel> + _max?: NestedStringFilter<$PrismaModel> + } + + export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] + notIn?: Date[] | string[] + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedDateTimeFilter<$PrismaModel> + _max?: NestedDateTimeFilter<$PrismaModel> + } + + export type UserScalarRelationFilter = { + is?: UserWhereInput + isNot?: UserWhereInput + } + + export type SessionCountOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + } + + export type SessionMaxOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + } + + export type SessionMinOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + } + + export type StringNullableFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | null + notIn?: string[] | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringNullableFilter<$PrismaModel> | string | null + } + + export type SortOrderInput = { + sort: SortOrder + nulls?: NullsOrder + } + + export type UserPreferencesCountOrderByAggregateInput = { + userId?: SortOrder + toggleInputHotkey?: SortOrder + toggleOutputHotkey?: SortOrder + } + + export type UserPreferencesMaxOrderByAggregateInput = { + userId?: SortOrder + toggleInputHotkey?: SortOrder + toggleOutputHotkey?: SortOrder + } + + export type UserPreferencesMinOrderByAggregateInput = { + userId?: SortOrder + toggleInputHotkey?: SortOrder + toggleOutputHotkey?: SortOrder + } + + export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | null + notIn?: string[] | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedStringNullableFilter<$PrismaModel> + _max?: NestedStringNullableFilter<$PrismaModel> + } + + export type IntNullableFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableFilter<$PrismaModel> | number | null + } + + export type BoolFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolFilter<$PrismaModel> | boolean + } + + export type UserNullableScalarRelationFilter = { + is?: UserWhereInput | null + isNot?: UserWhereInput | null + } + + export type ChannelCountOrderByAggregateInput = { + id?: SortOrder + name?: SortOrder + maxClients?: SortOrder + persistent?: SortOrder + owner_id?: SortOrder + } + + export type ChannelAvgOrderByAggregateInput = { + maxClients?: SortOrder + } + + export type ChannelMaxOrderByAggregateInput = { + id?: SortOrder + name?: SortOrder + maxClients?: SortOrder + persistent?: SortOrder + owner_id?: SortOrder + } + + export type ChannelMinOrderByAggregateInput = { + id?: SortOrder + name?: SortOrder + maxClients?: SortOrder + persistent?: SortOrder + owner_id?: SortOrder + } + + export type ChannelSumOrderByAggregateInput = { + maxClients?: SortOrder + } + + export type IntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null + _count?: NestedIntNullableFilter<$PrismaModel> + _avg?: NestedFloatNullableFilter<$PrismaModel> + _sum?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedIntNullableFilter<$PrismaModel> + _max?: NestedIntNullableFilter<$PrismaModel> + } + + export type BoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedBoolFilter<$PrismaModel> + _max?: NestedBoolFilter<$PrismaModel> + } + + export type SessionCreateNestedManyWithoutUserInput = { + create?: XOR | SessionCreateWithoutUserInput[] | SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: SessionCreateOrConnectWithoutUserInput | SessionCreateOrConnectWithoutUserInput[] + createMany?: SessionCreateManyUserInputEnvelope + connect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + } + + export type UserPreferencesCreateNestedOneWithoutUserInput = { + create?: XOR + connectOrCreate?: UserPreferencesCreateOrConnectWithoutUserInput + connect?: UserPreferencesWhereUniqueInput + } + + export type ChannelCreateNestedManyWithoutOwnerInput = { + create?: XOR | ChannelCreateWithoutOwnerInput[] | ChannelUncheckedCreateWithoutOwnerInput[] + connectOrCreate?: ChannelCreateOrConnectWithoutOwnerInput | ChannelCreateOrConnectWithoutOwnerInput[] + createMany?: ChannelCreateManyOwnerInputEnvelope + connect?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + } + + export type SessionUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | SessionCreateWithoutUserInput[] | SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: SessionCreateOrConnectWithoutUserInput | SessionCreateOrConnectWithoutUserInput[] + createMany?: SessionCreateManyUserInputEnvelope + connect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + } + + export type UserPreferencesUncheckedCreateNestedOneWithoutUserInput = { + create?: XOR + connectOrCreate?: UserPreferencesCreateOrConnectWithoutUserInput + connect?: UserPreferencesWhereUniqueInput + } + + export type ChannelUncheckedCreateNestedManyWithoutOwnerInput = { + create?: XOR | ChannelCreateWithoutOwnerInput[] | ChannelUncheckedCreateWithoutOwnerInput[] + connectOrCreate?: ChannelCreateOrConnectWithoutOwnerInput | ChannelCreateOrConnectWithoutOwnerInput[] + createMany?: ChannelCreateManyOwnerInputEnvelope + connect?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + } + + export type StringFieldUpdateOperationsInput = { + set?: string + } + + export type DateTimeFieldUpdateOperationsInput = { + set?: Date | string + } + + export type SessionUpdateManyWithoutUserNestedInput = { + create?: XOR | SessionCreateWithoutUserInput[] | SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: SessionCreateOrConnectWithoutUserInput | SessionCreateOrConnectWithoutUserInput[] + upsert?: SessionUpsertWithWhereUniqueWithoutUserInput | SessionUpsertWithWhereUniqueWithoutUserInput[] + createMany?: SessionCreateManyUserInputEnvelope + set?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + disconnect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + delete?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + connect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + update?: SessionUpdateWithWhereUniqueWithoutUserInput | SessionUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: SessionUpdateManyWithWhereWithoutUserInput | SessionUpdateManyWithWhereWithoutUserInput[] + deleteMany?: SessionScalarWhereInput | SessionScalarWhereInput[] + } + + export type UserPreferencesUpdateOneWithoutUserNestedInput = { + create?: XOR + connectOrCreate?: UserPreferencesCreateOrConnectWithoutUserInput + upsert?: UserPreferencesUpsertWithoutUserInput + disconnect?: UserPreferencesWhereInput | boolean + delete?: UserPreferencesWhereInput | boolean + connect?: UserPreferencesWhereUniqueInput + update?: XOR, UserPreferencesUncheckedUpdateWithoutUserInput> + } + + export type ChannelUpdateManyWithoutOwnerNestedInput = { + create?: XOR | ChannelCreateWithoutOwnerInput[] | ChannelUncheckedCreateWithoutOwnerInput[] + connectOrCreate?: ChannelCreateOrConnectWithoutOwnerInput | ChannelCreateOrConnectWithoutOwnerInput[] + upsert?: ChannelUpsertWithWhereUniqueWithoutOwnerInput | ChannelUpsertWithWhereUniqueWithoutOwnerInput[] + createMany?: ChannelCreateManyOwnerInputEnvelope + set?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + disconnect?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + delete?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + connect?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + update?: ChannelUpdateWithWhereUniqueWithoutOwnerInput | ChannelUpdateWithWhereUniqueWithoutOwnerInput[] + updateMany?: ChannelUpdateManyWithWhereWithoutOwnerInput | ChannelUpdateManyWithWhereWithoutOwnerInput[] + deleteMany?: ChannelScalarWhereInput | ChannelScalarWhereInput[] + } + + export type SessionUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | SessionCreateWithoutUserInput[] | SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: SessionCreateOrConnectWithoutUserInput | SessionCreateOrConnectWithoutUserInput[] + upsert?: SessionUpsertWithWhereUniqueWithoutUserInput | SessionUpsertWithWhereUniqueWithoutUserInput[] + createMany?: SessionCreateManyUserInputEnvelope + set?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + disconnect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + delete?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + connect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + update?: SessionUpdateWithWhereUniqueWithoutUserInput | SessionUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: SessionUpdateManyWithWhereWithoutUserInput | SessionUpdateManyWithWhereWithoutUserInput[] + deleteMany?: SessionScalarWhereInput | SessionScalarWhereInput[] + } + + export type UserPreferencesUncheckedUpdateOneWithoutUserNestedInput = { + create?: XOR + connectOrCreate?: UserPreferencesCreateOrConnectWithoutUserInput + upsert?: UserPreferencesUpsertWithoutUserInput + disconnect?: UserPreferencesWhereInput | boolean + delete?: UserPreferencesWhereInput | boolean + connect?: UserPreferencesWhereUniqueInput + update?: XOR, UserPreferencesUncheckedUpdateWithoutUserInput> + } + + export type ChannelUncheckedUpdateManyWithoutOwnerNestedInput = { + create?: XOR | ChannelCreateWithoutOwnerInput[] | ChannelUncheckedCreateWithoutOwnerInput[] + connectOrCreate?: ChannelCreateOrConnectWithoutOwnerInput | ChannelCreateOrConnectWithoutOwnerInput[] + upsert?: ChannelUpsertWithWhereUniqueWithoutOwnerInput | ChannelUpsertWithWhereUniqueWithoutOwnerInput[] + createMany?: ChannelCreateManyOwnerInputEnvelope + set?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + disconnect?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + delete?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + connect?: ChannelWhereUniqueInput | ChannelWhereUniqueInput[] + update?: ChannelUpdateWithWhereUniqueWithoutOwnerInput | ChannelUpdateWithWhereUniqueWithoutOwnerInput[] + updateMany?: ChannelUpdateManyWithWhereWithoutOwnerInput | ChannelUpdateManyWithWhereWithoutOwnerInput[] + deleteMany?: ChannelScalarWhereInput | ChannelScalarWhereInput[] + } + + export type UserCreateNestedOneWithoutSessionInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutSessionInput + connect?: UserWhereUniqueInput + } + + export type UserUpdateOneRequiredWithoutSessionNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutSessionInput + upsert?: UserUpsertWithoutSessionInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutSessionInput> + } + + export type UserCreateNestedOneWithoutUserPreferencesInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutUserPreferencesInput + connect?: UserWhereUniqueInput + } + + export type NullableStringFieldUpdateOperationsInput = { + set?: string | null + } + + export type UserUpdateOneRequiredWithoutUserPreferencesNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutUserPreferencesInput + upsert?: UserUpsertWithoutUserPreferencesInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutUserPreferencesInput> + } + + export type UserCreateNestedOneWithoutChannelsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutChannelsInput + connect?: UserWhereUniqueInput + } + + export type NullableIntFieldUpdateOperationsInput = { + set?: number | null + increment?: number + decrement?: number + multiply?: number + divide?: number + } + + export type BoolFieldUpdateOperationsInput = { + set?: boolean + } + + export type UserUpdateOneWithoutChannelsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutChannelsInput + upsert?: UserUpsertWithoutChannelsInput + disconnect?: UserWhereInput | boolean + delete?: UserWhereInput | boolean + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutChannelsInput> + } + + export type NestedStringFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] + notIn?: string[] + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringFilter<$PrismaModel> | string + } + + export type NestedDateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] + notIn?: Date[] | string[] + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeFilter<$PrismaModel> | Date | string + } + + export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] + notIn?: string[] + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedStringFilter<$PrismaModel> + _max?: NestedStringFilter<$PrismaModel> + } + + export type NestedIntFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> + in?: number[] + notIn?: number[] + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntFilter<$PrismaModel> | number + } + + export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] + notIn?: Date[] | string[] + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedDateTimeFilter<$PrismaModel> + _max?: NestedDateTimeFilter<$PrismaModel> + } + + export type NestedStringNullableFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | null + notIn?: string[] | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringNullableFilter<$PrismaModel> | string | null + } + + export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | null + notIn?: string[] | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedStringNullableFilter<$PrismaModel> + _max?: NestedStringNullableFilter<$PrismaModel> + } + + export type NestedIntNullableFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableFilter<$PrismaModel> | number | null + } + + export type NestedBoolFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolFilter<$PrismaModel> | boolean + } + + export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null + _count?: NestedIntNullableFilter<$PrismaModel> + _avg?: NestedFloatNullableFilter<$PrismaModel> + _sum?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedIntNullableFilter<$PrismaModel> + _max?: NestedIntNullableFilter<$PrismaModel> + } + + export type NestedFloatNullableFilter<$PrismaModel = never> = { + equals?: number | FloatFieldRefInput<$PrismaModel> | null + in?: number[] | null + notIn?: number[] | null + lt?: number | FloatFieldRefInput<$PrismaModel> + lte?: number | FloatFieldRefInput<$PrismaModel> + gt?: number | FloatFieldRefInput<$PrismaModel> + gte?: number | FloatFieldRefInput<$PrismaModel> + not?: NestedFloatNullableFilter<$PrismaModel> | number | null + } + + export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedBoolFilter<$PrismaModel> + _max?: NestedBoolFilter<$PrismaModel> + } + + export type SessionCreateWithoutUserInput = { + id: string + expiresAt: Date | string + } + + export type SessionUncheckedCreateWithoutUserInput = { + id: string + expiresAt: Date | string + } + + export type SessionCreateOrConnectWithoutUserInput = { + where: SessionWhereUniqueInput + create: XOR + } + + export type SessionCreateManyUserInputEnvelope = { + data: SessionCreateManyUserInput | SessionCreateManyUserInput[] + } + + export type UserPreferencesCreateWithoutUserInput = { + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null + } + + export type UserPreferencesUncheckedCreateWithoutUserInput = { + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null + } + + export type UserPreferencesCreateOrConnectWithoutUserInput = { + where: UserPreferencesWhereUniqueInput + create: XOR + } + + export type ChannelCreateWithoutOwnerInput = { + id: string + name: string + maxClients?: number | null + persistent?: boolean + } + + export type ChannelUncheckedCreateWithoutOwnerInput = { + id: string + name: string + maxClients?: number | null + persistent?: boolean + } + + export type ChannelCreateOrConnectWithoutOwnerInput = { + where: ChannelWhereUniqueInput + create: XOR + } + + export type ChannelCreateManyOwnerInputEnvelope = { + data: ChannelCreateManyOwnerInput | ChannelCreateManyOwnerInput[] + } + + export type SessionUpsertWithWhereUniqueWithoutUserInput = { + where: SessionWhereUniqueInput + update: XOR + create: XOR + } + + export type SessionUpdateWithWhereUniqueWithoutUserInput = { + where: SessionWhereUniqueInput + data: XOR + } + + export type SessionUpdateManyWithWhereWithoutUserInput = { + where: SessionScalarWhereInput + data: XOR + } + + export type SessionScalarWhereInput = { + AND?: SessionScalarWhereInput | SessionScalarWhereInput[] + OR?: SessionScalarWhereInput[] + NOT?: SessionScalarWhereInput | SessionScalarWhereInput[] + id?: StringFilter<"Session"> | string + userId?: StringFilter<"Session"> | string + expiresAt?: DateTimeFilter<"Session"> | Date | string + } + + export type UserPreferencesUpsertWithoutUserInput = { + update: XOR + create: XOR + where?: UserPreferencesWhereInput + } + + export type UserPreferencesUpdateToOneWithWhereWithoutUserInput = { + where?: UserPreferencesWhereInput + data: XOR + } + + export type UserPreferencesUpdateWithoutUserInput = { + toggleInputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type UserPreferencesUncheckedUpdateWithoutUserInput = { + toggleInputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type ChannelUpsertWithWhereUniqueWithoutOwnerInput = { + where: ChannelWhereUniqueInput + update: XOR + create: XOR + } + + export type ChannelUpdateWithWhereUniqueWithoutOwnerInput = { + where: ChannelWhereUniqueInput + data: XOR + } + + export type ChannelUpdateManyWithWhereWithoutOwnerInput = { + where: ChannelScalarWhereInput + data: XOR + } + + export type ChannelScalarWhereInput = { + AND?: ChannelScalarWhereInput | ChannelScalarWhereInput[] + OR?: ChannelScalarWhereInput[] + NOT?: ChannelScalarWhereInput | ChannelScalarWhereInput[] + id?: StringFilter<"Channel"> | string + name?: StringFilter<"Channel"> | string + maxClients?: IntNullableFilter<"Channel"> | number | null + persistent?: BoolFilter<"Channel"> | boolean + owner_id?: StringNullableFilter<"Channel"> | string | null + } + + export type UserCreateWithoutSessionInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + UserPreferences?: UserPreferencesCreateNestedOneWithoutUserInput + channels?: ChannelCreateNestedManyWithoutOwnerInput + } + + export type UserUncheckedCreateWithoutSessionInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + UserPreferences?: UserPreferencesUncheckedCreateNestedOneWithoutUserInput + channels?: ChannelUncheckedCreateNestedManyWithoutOwnerInput + } + + export type UserCreateOrConnectWithoutSessionInput = { + where: UserWhereUniqueInput + create: XOR + } + + export type UserUpsertWithoutSessionInput = { + update: XOR + create: XOR + where?: UserWhereInput + } + + export type UserUpdateToOneWithWhereWithoutSessionInput = { + where?: UserWhereInput + data: XOR + } + + export type UserUpdateWithoutSessionInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + UserPreferences?: UserPreferencesUpdateOneWithoutUserNestedInput + channels?: ChannelUpdateManyWithoutOwnerNestedInput + } + + export type UserUncheckedUpdateWithoutSessionInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + UserPreferences?: UserPreferencesUncheckedUpdateOneWithoutUserNestedInput + channels?: ChannelUncheckedUpdateManyWithoutOwnerNestedInput + } + + export type UserCreateWithoutUserPreferencesInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: SessionCreateNestedManyWithoutUserInput + channels?: ChannelCreateNestedManyWithoutOwnerInput + } + + export type UserUncheckedCreateWithoutUserPreferencesInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: SessionUncheckedCreateNestedManyWithoutUserInput + channels?: ChannelUncheckedCreateNestedManyWithoutOwnerInput + } + + export type UserCreateOrConnectWithoutUserPreferencesInput = { + where: UserWhereUniqueInput + create: XOR + } + + export type UserUpsertWithoutUserPreferencesInput = { + update: XOR + create: XOR + where?: UserWhereInput + } + + export type UserUpdateToOneWithWhereWithoutUserPreferencesInput = { + where?: UserWhereInput + data: XOR + } + + export type UserUpdateWithoutUserPreferencesInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + Session?: SessionUpdateManyWithoutUserNestedInput + channels?: ChannelUpdateManyWithoutOwnerNestedInput + } + + export type UserUncheckedUpdateWithoutUserPreferencesInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + Session?: SessionUncheckedUpdateManyWithoutUserNestedInput + channels?: ChannelUncheckedUpdateManyWithoutOwnerNestedInput + } + + export type UserCreateWithoutChannelsInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: SessionCreateNestedManyWithoutUserInput + UserPreferences?: UserPreferencesCreateNestedOneWithoutUserInput + } + + export type UserUncheckedCreateWithoutChannelsInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: SessionUncheckedCreateNestedManyWithoutUserInput + UserPreferences?: UserPreferencesUncheckedCreateNestedOneWithoutUserInput + } + + export type UserCreateOrConnectWithoutChannelsInput = { + where: UserWhereUniqueInput + create: XOR + } + + export type UserUpsertWithoutChannelsInput = { + update: XOR + create: XOR + where?: UserWhereInput + } + + export type UserUpdateToOneWithWhereWithoutChannelsInput = { + where?: UserWhereInput + data: XOR + } + + export type UserUpdateWithoutChannelsInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + Session?: SessionUpdateManyWithoutUserNestedInput + UserPreferences?: UserPreferencesUpdateOneWithoutUserNestedInput + } + + export type UserUncheckedUpdateWithoutChannelsInput = { + id?: StringFieldUpdateOperationsInput | string + username?: StringFieldUpdateOperationsInput | string + password?: StringFieldUpdateOperationsInput | string + displayName?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + Session?: SessionUncheckedUpdateManyWithoutUserNestedInput + UserPreferences?: UserPreferencesUncheckedUpdateOneWithoutUserNestedInput + } + + export type SessionCreateManyUserInput = { + id: string + expiresAt: Date | string + } + + export type ChannelCreateManyOwnerInput = { + id: string + name: string + maxClients?: number | null + persistent?: boolean + } + + export type SessionUpdateWithoutUserInput = { + id?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type SessionUncheckedUpdateWithoutUserInput = { + id?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type SessionUncheckedUpdateManyWithoutUserInput = { + id?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type ChannelUpdateWithoutOwnerInput = { + id?: StringFieldUpdateOperationsInput | string + name?: StringFieldUpdateOperationsInput | string + maxClients?: NullableIntFieldUpdateOperationsInput | number | null + persistent?: BoolFieldUpdateOperationsInput | boolean + } + + export type ChannelUncheckedUpdateWithoutOwnerInput = { + id?: StringFieldUpdateOperationsInput | string + name?: StringFieldUpdateOperationsInput | string + maxClients?: NullableIntFieldUpdateOperationsInput | number | null + persistent?: BoolFieldUpdateOperationsInput | boolean + } + + export type ChannelUncheckedUpdateManyWithoutOwnerInput = { + id?: StringFieldUpdateOperationsInput | string + name?: StringFieldUpdateOperationsInput | string + maxClients?: NullableIntFieldUpdateOperationsInput | number | null + persistent?: BoolFieldUpdateOperationsInput | boolean + } + + + + /** + * Batch Payload for updateMany & deleteMany & createMany + */ + + export type BatchPayload = { + count: number + } + + /** + * DMMF + */ + export const dmmf: runtime.BaseDMMF +} \ No newline at end of file diff --git a/server/prisma/generated/client/index.js b/server/prisma/generated/client/index.js new file mode 100644 index 0000000..c3359cc --- /dev/null +++ b/server/prisma/generated/client/index.js @@ -0,0 +1,165 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file + +Object.defineProperty(exports, "__esModule", { value: true }); + +const { + PrismaClientKnownRequestError, + PrismaClientUnknownRequestError, + PrismaClientRustPanicError, + PrismaClientInitializationError, + PrismaClientValidationError, + getPrismaClient, + sqltag, + empty, + join, + raw, + skip, + Decimal, + Debug, + DbNull, + JsonNull, + AnyNull, + NullTypes, + makeStrictEnum, + Extensions, + warnOnce, + defineDmmfProperty, + Public, + getRuntime, + createParam, +} = require('./runtime/client.js') + + +const Prisma = {} + +exports.Prisma = Prisma +exports.$Enums = {} + +/** + * Prisma Client JS version: 7.2.0 + * Query Engine version: 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + */ +Prisma.prismaVersion = { + client: "7.2.0", + engine: "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" +} + +Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError; +Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError +Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError +Prisma.PrismaClientInitializationError = PrismaClientInitializationError +Prisma.PrismaClientValidationError = PrismaClientValidationError +Prisma.Decimal = Decimal + +/** + * Re-export of sql-template-tag + */ +Prisma.sql = sqltag +Prisma.empty = empty +Prisma.join = join +Prisma.raw = raw +Prisma.validator = Public.validator + +/** +* Extensions +*/ +Prisma.getExtensionContext = Extensions.getExtensionContext +Prisma.defineExtension = Extensions.defineExtension + +/** + * Shorthand utilities for JSON filtering + */ +Prisma.DbNull = DbNull +Prisma.JsonNull = JsonNull +Prisma.AnyNull = AnyNull + +Prisma.NullTypes = NullTypes + + + + + const path = require('path') + +/** + * Enums + */ +exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ + Serializable: 'Serializable' +}); + +exports.Prisma.UserScalarFieldEnum = { + id: 'id', + username: 'username', + password: 'password', + displayName: 'displayName', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +}; + +exports.Prisma.SessionScalarFieldEnum = { + id: 'id', + userId: 'userId', + expiresAt: 'expiresAt' +}; + +exports.Prisma.UserPreferencesScalarFieldEnum = { + userId: 'userId', + toggleInputHotkey: 'toggleInputHotkey', + toggleOutputHotkey: 'toggleOutputHotkey' +}; + +exports.Prisma.ChannelScalarFieldEnum = { + id: 'id', + name: 'name', + maxClients: 'maxClients', + persistent: 'persistent', + owner_id: 'owner_id' +}; + +exports.Prisma.SortOrder = { + asc: 'asc', + desc: 'desc' +}; + +exports.Prisma.NullsOrder = { + first: 'first', + last: 'last' +}; + + +exports.Prisma.ModelName = { + User: 'User', + Session: 'Session', + UserPreferences: 'UserPreferences', + Channel: 'Channel' +}; +/** + * Create the Client + */ +const config = { + "previewFeatures": [], + "clientVersion": "7.2.0", + "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", + "activeProvider": "sqlite", + "inlineSchema": "datasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\nmodel User {\n id String @id @default(cuid())\n username String @unique\n password String\n displayName String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n Session Session[]\n UserPreferences UserPreferences?\n channels Channel[]\n}\n\nmodel Session {\n id String @id\n userId String\n expiresAt DateTime\n user User @relation(references: [id], fields: [userId], onDelete: Cascade)\n\n @@index([userId])\n}\n\nmodel UserPreferences {\n userId String @id\n toggleInputHotkey String? @default(\"\")\n toggleOutputHotkey String? @default(\"\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\nmodel Channel {\n id String @id\n name String\n maxClients Int?\n persistent Boolean @default(false)\n owner_id String?\n owner User? @relation(fields: [owner_id], references: [id], onDelete: Cascade)\n}\n" +} + +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"Session\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"UserPreferences\",\"kind\":\"object\",\"type\":\"UserPreferences\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"channels\",\"kind\":\"object\",\"type\":\"Channel\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":null},\"UserPreferences\":{\"fields\":[{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleInputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleOutputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserPreferences\"}],\"dbName\":null},\"Channel\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"maxClients\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"persistent\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"owner_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +defineDmmfProperty(exports.Prisma, config.runtimeDataModel) +config.compilerWasm = { + getRuntime: async () => require('./query_compiler_bg.js'), + getQueryCompilerWasmModule: async () => { + const { Buffer } = require('node:buffer') + const { wasm } = require('./query_compiler_bg.wasm-base64.js') + const queryCompilerWasmFileBytes = Buffer.from(wasm, 'base64') + + return new WebAssembly.Module(queryCompilerWasmFileBytes) + } + } + +const PrismaClient = getPrismaClient(config) +exports.PrismaClient = PrismaClient +Object.assign(exports, Prisma) diff --git a/server/prisma/generated/client/internal/class.ts b/server/prisma/generated/client/internal/class.ts new file mode 100644 index 0000000..3a37d32 --- /dev/null +++ b/server/prisma/generated/client/internal/class.ts @@ -0,0 +1,220 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * WARNING: This is an internal file that is subject to change! + * + * 🛑 Under no circumstances should you import this file directly! 🛑 + * + * Please import the `PrismaClient` class from the `client.ts` file instead. + */ + +import * as runtime from "@prisma/client/runtime/client" +import type * as Prisma from "./prismaNamespace.ts" + + +const config: runtime.GetPrismaClientConfig = { + "previewFeatures": [], + "clientVersion": "7.2.0", + "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", + "activeProvider": "sqlite", + "inlineSchema": "datasource db {\n provider = \"sqlite\"\n // url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./generated/client\"\n}\n\nmodel User {\n id String @id @default(cuid())\n username String @unique\n password String\n displayName String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n Session Session[]\n UserPreferences UserPreferences?\n channels Channel[]\n}\n\nmodel Session {\n id String @id\n userId String\n expiresAt DateTime\n user User @relation(references: [id], fields: [userId], onDelete: Cascade)\n\n @@index([userId])\n}\n\nmodel UserPreferences {\n userId String @id\n toggleInputHotkey String? @default(\"\")\n toggleOutputHotkey String? @default(\"\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\nmodel Channel {\n id String @id @default(cuid())\n name String\n maxClients Int?\n persistent Boolean @default(false)\n owner_id String?\n owner User? @relation(fields: [owner_id], references: [id], onDelete: Cascade)\n}\n", + "runtimeDataModel": { + "models": {}, + "enums": {}, + "types": {} + } +} + +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"Session\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"UserPreferences\",\"kind\":\"object\",\"type\":\"UserPreferences\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"channels\",\"kind\":\"object\",\"type\":\"Channel\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":null},\"UserPreferences\":{\"fields\":[{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleInputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleOutputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserPreferences\"}],\"dbName\":null},\"Channel\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"maxClients\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"persistent\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"owner_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") + +async function decodeBase64AsWasm(wasmBase64: string): Promise { + const { Buffer } = await import('node:buffer') + const wasmArray = Buffer.from(wasmBase64, 'base64') + return new WebAssembly.Module(wasmArray) +} + +config.compilerWasm = { + getRuntime: async () => await import("@prisma/client/runtime/query_compiler_bg.sqlite.mjs"), + + getQueryCompilerWasmModule: async () => { + const { wasm } = await import("@prisma/client/runtime/query_compiler_bg.sqlite.wasm-base64.mjs") + return await decodeBase64AsWasm(wasm) + } +} + + + +export type LogOptions = + 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array ? Prisma.GetEvents : never : never + +export interface PrismaClientConstructor { + /** + * ## Prisma Client + * + * Type-safe database client for TypeScript + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + * + * Read more in our [docs](https://pris.ly/d/client). + */ + + new < + Options extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions, + LogOpts extends LogOptions = LogOptions, + OmitOpts extends Prisma.PrismaClientOptions['omit'] = Options extends { omit: infer U } ? U : Prisma.PrismaClientOptions['omit'], + ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs + >(options: Prisma.Subset ): PrismaClient +} + +/** + * ## Prisma Client + * + * Type-safe database client for TypeScript + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + * + * Read more in our [docs](https://pris.ly/d/client). + */ + +export interface PrismaClient< + in LogOpts extends Prisma.LogLevel = never, + in out OmitOpts extends Prisma.PrismaClientOptions['omit'] = undefined, + in out ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs +> { + [K: symbol]: { types: Prisma.TypeMap['other'] } + + $on(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient; + + /** + * Connect with the database + */ + $connect(): runtime.Types.Utils.JsPromise; + + /** + * Disconnect from the database + */ + $disconnect(): runtime.Types.Utils.JsPromise; + +/** + * Executes a prepared raw query and returns the number of affected rows. + * @example + * ``` + * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $executeRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Executes a raw query and returns the number of affected rows. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com') + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $executeRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a prepared raw query and returns the `SELECT` data. + * @example + * ``` + * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $queryRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a raw query and returns the `SELECT` data. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com') + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $queryRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + + /** + * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole. + * @example + * ``` + * const [george, bob, alice] = await prisma.$transaction([ + * prisma.user.create({ data: { name: 'George' } }), + * prisma.user.create({ data: { name: 'Bob' } }), + * prisma.user.create({ data: { name: 'Alice' } }), + * ]) + * ``` + * + * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions). + */ + $transaction

[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise> + + $transaction(fn: (prisma: Omit) => runtime.Types.Utils.JsPromise, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise + + $extends: runtime.Types.Extensions.ExtendsHook<"extends", Prisma.TypeMapCb, ExtArgs, runtime.Types.Utils.Call, { + extArgs: ExtArgs + }>> + + /** + * `prisma.user`: Exposes CRUD operations for the **User** model. + * Example usage: + * ```ts + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + */ + get user(): Prisma.UserDelegate; + + /** + * `prisma.session`: Exposes CRUD operations for the **Session** model. + * Example usage: + * ```ts + * // Fetch zero or more Sessions + * const sessions = await prisma.session.findMany() + * ``` + */ + get session(): Prisma.SessionDelegate; + + /** + * `prisma.userPreferences`: Exposes CRUD operations for the **UserPreferences** model. + * Example usage: + * ```ts + * // Fetch zero or more UserPreferences + * const userPreferences = await prisma.userPreferences.findMany() + * ``` + */ + get userPreferences(): Prisma.UserPreferencesDelegate; + + /** + * `prisma.channel`: Exposes CRUD operations for the **Channel** model. + * Example usage: + * ```ts + * // Fetch zero or more Channels + * const channels = await prisma.channel.findMany() + * ``` + */ + get channel(): Prisma.ChannelDelegate; +} + +export function getPrismaClientClass(): PrismaClientConstructor { + return runtime.getPrismaClient(config) as unknown as PrismaClientConstructor +} diff --git a/server/prisma/generated/client/internal/prismaNamespace.ts b/server/prisma/generated/client/internal/prismaNamespace.ts new file mode 100644 index 0000000..ee6deea --- /dev/null +++ b/server/prisma/generated/client/internal/prismaNamespace.ts @@ -0,0 +1,1000 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * WARNING: This is an internal file that is subject to change! + * + * 🛑 Under no circumstances should you import this file directly! 🛑 + * + * All exports from this file are wrapped under a `Prisma` namespace object in the client.ts file. + * While this enables partial backward compatibility, it is not part of the stable public API. + * + * If you are looking for your Models, Enums, and Input Types, please import them from the respective + * model files in the `model` directory! + */ + +import * as runtime from "@prisma/client/runtime/client" +import type * as Prisma from "../models.ts" +import { type PrismaClient } from "./class.ts" + +export type * from '../models.ts' + +export type DMMF = typeof runtime.DMMF + +export type PrismaPromise = runtime.Types.Public.PrismaPromise + +/** + * Prisma Errors + */ + +export const PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError +export type PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError + +export const PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError +export type PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError + +export const PrismaClientRustPanicError = runtime.PrismaClientRustPanicError +export type PrismaClientRustPanicError = runtime.PrismaClientRustPanicError + +export const PrismaClientInitializationError = runtime.PrismaClientInitializationError +export type PrismaClientInitializationError = runtime.PrismaClientInitializationError + +export const PrismaClientValidationError = runtime.PrismaClientValidationError +export type PrismaClientValidationError = runtime.PrismaClientValidationError + +/** + * Re-export of sql-template-tag + */ +export const sql = runtime.sqltag +export const empty = runtime.empty +export const join = runtime.join +export const raw = runtime.raw +export const Sql = runtime.Sql +export type Sql = runtime.Sql + + + +/** + * Decimal.js + */ +export const Decimal = runtime.Decimal +export type Decimal = runtime.Decimal + +export type DecimalJsLike = runtime.DecimalJsLike + +/** +* Extensions +*/ +export type Extension = runtime.Types.Extensions.UserArgs +export const getExtensionContext = runtime.Extensions.getExtensionContext +export type Args = runtime.Types.Public.Args +export type Payload = runtime.Types.Public.Payload +export type Result = runtime.Types.Public.Result +export type Exact = runtime.Types.Public.Exact + +export type PrismaVersion = { + client: string + engine: string +} + +/** + * Prisma Client JS version: 7.2.0 + * Query Engine version: 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + */ +export const prismaVersion: PrismaVersion = { + client: "7.2.0", + engine: "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" +} + +/** + * Utility Types + */ + +export type Bytes = runtime.Bytes +export type JsonObject = runtime.JsonObject +export type JsonArray = runtime.JsonArray +export type JsonValue = runtime.JsonValue +export type InputJsonObject = runtime.InputJsonObject +export type InputJsonArray = runtime.InputJsonArray +export type InputJsonValue = runtime.InputJsonValue + + +export const NullTypes = { + DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull), + JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull), + AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull), +} +/** + * Helper for filtering JSON entries that have `null` on the database (empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const DbNull = runtime.DbNull + +/** + * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const JsonNull = runtime.JsonNull + +/** + * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const AnyNull = runtime.AnyNull + + +type SelectAndInclude = { + select: any + include: any +} + +type SelectAndOmit = { + select: any + omit: any +} + +/** + * From T, pick a set of properties whose keys are in the union K + */ +type Prisma__Pick = { + [P in K]: T[P]; +}; + +export type Enumerable = T | Array; + +/** + * Subset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection + */ +export type Subset = { + [key in keyof T]: key extends keyof U ? T[key] : never; +}; + +/** + * SelectSubset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection. + * Additionally, it validates, if both select and include are present. If the case, it errors. + */ +export type SelectSubset = { + [key in keyof T]: key extends keyof U ? T[key] : never +} & + (T extends SelectAndInclude + ? 'Please either choose `select` or `include`.' + : T extends SelectAndOmit + ? 'Please either choose `select` or `omit`.' + : {}) + +/** + * Subset + Intersection + * @desc From `T` pick properties that exist in `U` and intersect `K` + */ +export type SubsetIntersection = { + [key in keyof T]: key extends keyof U ? T[key] : never +} & + K + +type Without = { [P in Exclude]?: never }; + +/** + * XOR is needed to have a real mutually exclusive union type + * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types + */ +export type XOR = + T extends object ? + U extends object ? + (Without & U) | (Without & T) + : U : T + + +/** + * Is T a Record? + */ +type IsObject = T extends Array +? False +: T extends Date +? False +: T extends Uint8Array +? False +: T extends BigInt +? False +: T extends object +? True +: False + + +/** + * If it's T[], return T + */ +export type UnEnumerate = T extends Array ? U : T + +/** + * From ts-toolbelt + */ + +type __Either = Omit & + { + // Merge all but K + [P in K]: Prisma__Pick // With K possibilities + }[K] + +type EitherStrict = Strict<__Either> + +type EitherLoose = ComputeRaw<__Either> + +type _Either< + O extends object, + K extends Key, + strict extends Boolean +> = { + 1: EitherStrict + 0: EitherLoose +}[strict] + +export type Either< + O extends object, + K extends Key, + strict extends Boolean = 1 +> = O extends unknown ? _Either : never + +export type Union = any + +export type PatchUndefined = { + [K in keyof O]: O[K] extends undefined ? At : O[K] +} & {} + +/** Helper Types for "Merge" **/ +export type IntersectOf = ( + U extends unknown ? (k: U) => void : never +) extends (k: infer I) => void + ? I + : never + +export type Overwrite = { + [K in keyof O]: K extends keyof O1 ? O1[K] : O[K]; +} & {}; + +type _Merge = IntersectOf; +}>>; + +type Key = string | number | symbol; +type AtStrict = O[K & keyof O]; +type AtLoose = O extends unknown ? AtStrict : never; +export type At = { + 1: AtStrict; + 0: AtLoose; +}[strict]; + +export type ComputeRaw = A extends Function ? A : { + [K in keyof A]: A[K]; +} & {}; + +export type OptionalFlat = { + [K in keyof O]?: O[K]; +} & {}; + +type _Record = { + [P in K]: T; +}; + +// cause typescript not to expand types and preserve names +type NoExpand = T extends unknown ? T : never; + +// this type assumes the passed object is entirely optional +export type AtLeast = NoExpand< + O extends unknown + ? | (K extends keyof O ? { [P in K]: O[P] } & O : O) + | {[P in keyof O as P extends K ? P : never]-?: O[P]} & O + : never>; + +type _Strict = U extends unknown ? U & OptionalFlat<_Record, keyof U>, never>> : never; + +export type Strict = ComputeRaw<_Strict>; +/** End Helper Types for "Merge" **/ + +export type Merge = ComputeRaw<_Merge>>; + +export type Boolean = True | False + +export type True = 1 + +export type False = 0 + +export type Not = { + 0: 1 + 1: 0 +}[B] + +export type Extends = [A1] extends [never] + ? 0 // anything `never` is false + : A1 extends A2 + ? 1 + : 0 + +export type Has = Not< + Extends, U1> +> + +export type Or = { + 0: { + 0: 0 + 1: 1 + } + 1: { + 0: 1 + 1: 1 + } +}[B1][B2] + +export type Keys = U extends unknown ? keyof U : never + +export type GetScalarType = O extends object ? { + [P in keyof T]: P extends keyof O + ? O[P] + : never +} : never + +type FieldPaths< + T, + U = Omit +> = IsObject extends True ? U : T + +export type GetHavingFields = { + [K in keyof T]: Or< + Or, Extends<'AND', K>>, + Extends<'NOT', K> + > extends True + ? // infer is only needed to not hit TS limit + // based on the brilliant idea of Pierre-Antoine Mills + // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437 + T[K] extends infer TK + ? GetHavingFields extends object ? Merge> : never> + : never + : {} extends FieldPaths + ? never + : K +}[keyof T] + +/** + * Convert tuple to union + */ +type _TupleToUnion = T extends (infer E)[] ? E : never +type TupleToUnion = _TupleToUnion +export type MaybeTupleToUnion = T extends any[] ? TupleToUnion : T + +/** + * Like `Pick`, but additionally can also accept an array of keys + */ +export type PickEnumerable | keyof T> = Prisma__Pick> + +/** + * Exclude all keys with underscores + */ +export type ExcludeUnderscoreKeys = T extends `_${string}` ? never : T + + +export type FieldRef = runtime.FieldRef + +type FieldRefInputType = Model extends never ? never : FieldRef + + +export const ModelName = { + User: 'User', + Session: 'Session', + UserPreferences: 'UserPreferences', + Channel: 'Channel' +} as const + +export type ModelName = (typeof ModelName)[keyof typeof ModelName] + + + +export interface TypeMapCb extends runtime.Types.Utils.Fn<{extArgs: runtime.Types.Extensions.InternalArgs }, runtime.Types.Utils.Record> { + returns: TypeMap +} + +export type TypeMap = { + globalOmitOptions: { + omit: GlobalOmitOptions + } + meta: { + modelProps: "user" | "session" | "userPreferences" | "channel" + txIsolationLevel: TransactionIsolationLevel + } + model: { + User: { + payload: Prisma.$UserPayload + fields: Prisma.UserFieldRefs + operations: { + findUnique: { + args: Prisma.UserFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.UserFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.UserFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.UserFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.UserFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.UserCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.UserCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.UserCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.UserDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.UserUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.UserDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.UserUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.UserUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.UserUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.UserAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.UserGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.UserCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + Session: { + payload: Prisma.$SessionPayload + fields: Prisma.SessionFieldRefs + operations: { + findUnique: { + args: Prisma.SessionFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.SessionFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.SessionFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.SessionFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.SessionFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.SessionCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.SessionCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.SessionCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.SessionDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.SessionUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.SessionDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.SessionUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.SessionUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.SessionUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.SessionAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.SessionGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.SessionCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + UserPreferences: { + payload: Prisma.$UserPreferencesPayload + fields: Prisma.UserPreferencesFieldRefs + operations: { + findUnique: { + args: Prisma.UserPreferencesFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.UserPreferencesFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.UserPreferencesFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.UserPreferencesFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.UserPreferencesFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.UserPreferencesCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.UserPreferencesCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.UserPreferencesCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.UserPreferencesDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.UserPreferencesUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.UserPreferencesDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.UserPreferencesUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.UserPreferencesUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.UserPreferencesUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.UserPreferencesAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.UserPreferencesGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.UserPreferencesCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + Channel: { + payload: Prisma.$ChannelPayload + fields: Prisma.ChannelFieldRefs + operations: { + findUnique: { + args: Prisma.ChannelFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.ChannelFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.ChannelFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.ChannelFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.ChannelFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.ChannelCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.ChannelCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.ChannelCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.ChannelDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.ChannelUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.ChannelDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.ChannelUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.ChannelUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.ChannelUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.ChannelAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.ChannelGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.ChannelCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + } +} & { + other: { + payload: any + operations: { + $executeRaw: { + args: [query: TemplateStringsArray | Sql, ...values: any[]], + result: any + } + $executeRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + $queryRaw: { + args: [query: TemplateStringsArray | Sql, ...values: any[]], + result: any + } + $queryRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + } + } +} + +/** + * Enums + */ + +export const TransactionIsolationLevel = runtime.makeStrictEnum({ + Serializable: 'Serializable' +} as const) + +export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + + +export const UserScalarFieldEnum = { + id: 'id', + username: 'username', + password: 'password', + displayName: 'displayName', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] + + +export const SessionScalarFieldEnum = { + id: 'id', + userId: 'userId', + expiresAt: 'expiresAt' +} as const + +export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum] + + +export const UserPreferencesScalarFieldEnum = { + userId: 'userId', + toggleInputHotkey: 'toggleInputHotkey', + toggleOutputHotkey: 'toggleOutputHotkey' +} as const + +export type UserPreferencesScalarFieldEnum = (typeof UserPreferencesScalarFieldEnum)[keyof typeof UserPreferencesScalarFieldEnum] + + +export const ChannelScalarFieldEnum = { + id: 'id', + name: 'name', + maxClients: 'maxClients', + persistent: 'persistent', + owner_id: 'owner_id' +} as const + +export type ChannelScalarFieldEnum = (typeof ChannelScalarFieldEnum)[keyof typeof ChannelScalarFieldEnum] + + +export const SortOrder = { + asc: 'asc', + desc: 'desc' +} as const + +export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] + + +export const NullsOrder = { + first: 'first', + last: 'last' +} as const + +export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + + + +/** + * Field references + */ + + +/** + * Reference to a field of type 'String' + */ +export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'> + + + +/** + * Reference to a field of type 'DateTime' + */ +export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'> + + + +/** + * Reference to a field of type 'Int' + */ +export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'> + + + +/** + * Reference to a field of type 'Boolean' + */ +export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'> + + + +/** + * Reference to a field of type 'Float' + */ +export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'> + + +/** + * Batch Payload for updateMany & deleteMany & createMany + */ +export type BatchPayload = { + count: number +} + +export const defineExtension = runtime.Extensions.defineExtension as unknown as runtime.Types.Extensions.ExtendsHook<"define", TypeMapCb, runtime.Types.Extensions.DefaultArgs> +export type DefaultPrismaClient = PrismaClient +export type ErrorFormat = 'pretty' | 'colorless' | 'minimal' +export type PrismaClientOptions = ({ + /** + * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-pg`. + */ + adapter: runtime.SqlDriverAdapterFactory + accelerateUrl?: never +} | { + /** + * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database. + */ + accelerateUrl: string + adapter?: never +}) & { + /** + * @default "colorless" + */ + errorFormat?: ErrorFormat + /** + * @example + * ``` + * // Shorthand for `emit: 'stdout'` + * log: ['query', 'info', 'warn', 'error'] + * + * // Emit as events only + * log: [ + * { emit: 'event', level: 'query' }, + * { emit: 'event', level: 'info' }, + * { emit: 'event', level: 'warn' } + * { emit: 'event', level: 'error' } + * ] + * + * / Emit as events and log to stdout + * og: [ + * { emit: 'stdout', level: 'query' }, + * { emit: 'stdout', level: 'info' }, + * { emit: 'stdout', level: 'warn' } + * { emit: 'stdout', level: 'error' } + * + * ``` + * Read more in our [docs](https://pris.ly/d/logging). + */ + log?: (LogLevel | LogDefinition)[] + /** + * The default values for transactionOptions + * maxWait ?= 2000 + * timeout ?= 5000 + */ + transactionOptions?: { + maxWait?: number + timeout?: number + isolationLevel?: TransactionIsolationLevel + } + /** + * Global configuration for omitting model fields by default. + * + * @example + * ``` + * const prisma = new PrismaClient({ + * omit: { + * user: { + * password: true + * } + * } + * }) + * ``` + */ + omit?: GlobalOmitConfig + /** + * SQL commenter plugins that add metadata to SQL queries as comments. + * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/ + * + * @example + * ``` + * const prisma = new PrismaClient({ + * adapter, + * comments: [ + * traceContext(), + * queryInsights(), + * ], + * }) + * ``` + */ + comments?: runtime.SqlCommenterPlugin[] +} +export type GlobalOmitConfig = { + user?: Prisma.UserOmit + session?: Prisma.SessionOmit + userPreferences?: Prisma.UserPreferencesOmit + channel?: Prisma.ChannelOmit +} + +/* Types for Logging */ +export type LogLevel = 'info' | 'query' | 'warn' | 'error' +export type LogDefinition = { + level: LogLevel + emit: 'stdout' | 'event' +} + +export type CheckIsLogLevel = T extends LogLevel ? T : never; + +export type GetLogType = CheckIsLogLevel< + T extends LogDefinition ? T['level'] : T +>; + +export type GetEvents = T extends Array + ? GetLogType + : never; + +export type QueryEvent = { + timestamp: Date + query: string + params: string + duration: number + target: string +} + +export type LogEvent = { + timestamp: Date + message: string + target: string +} +/* End Types for Logging */ + + +export type PrismaAction = + | 'findUnique' + | 'findUniqueOrThrow' + | 'findMany' + | 'findFirst' + | 'findFirstOrThrow' + | 'create' + | 'createMany' + | 'createManyAndReturn' + | 'update' + | 'updateMany' + | 'updateManyAndReturn' + | 'upsert' + | 'delete' + | 'deleteMany' + | 'executeRaw' + | 'queryRaw' + | 'aggregate' + | 'count' + | 'runCommandRaw' + | 'findRaw' + | 'groupBy' + +/** + * `PrismaClient` proxy available in interactive transactions. + */ +export type TransactionClient = Omit + diff --git a/server/prisma/generated/client/internal/prismaNamespaceBrowser.ts b/server/prisma/generated/client/internal/prismaNamespaceBrowser.ts new file mode 100644 index 0000000..6235592 --- /dev/null +++ b/server/prisma/generated/client/internal/prismaNamespaceBrowser.ts @@ -0,0 +1,128 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * WARNING: This is an internal file that is subject to change! + * + * 🛑 Under no circumstances should you import this file directly! 🛑 + * + * All exports from this file are wrapped under a `Prisma` namespace object in the browser.ts file. + * While this enables partial backward compatibility, it is not part of the stable public API. + * + * If you are looking for your Models, Enums, and Input Types, please import them from the respective + * model files in the `model` directory! + */ + +import * as runtime from "@prisma/client/runtime/index-browser" + +export type * from '../models.ts' +export type * from './prismaNamespace.ts' + +export const Decimal = runtime.Decimal + + +export const NullTypes = { + DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull), + JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull), + AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull), +} +/** + * Helper for filtering JSON entries that have `null` on the database (empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const DbNull = runtime.DbNull + +/** + * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const JsonNull = runtime.JsonNull + +/** + * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const AnyNull = runtime.AnyNull + + +export const ModelName = { + User: 'User', + Session: 'Session', + UserPreferences: 'UserPreferences', + Channel: 'Channel' +} as const + +export type ModelName = (typeof ModelName)[keyof typeof ModelName] + +/* + * Enums + */ + +export const TransactionIsolationLevel = { + Serializable: 'Serializable' +} as const + +export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + + +export const UserScalarFieldEnum = { + id: 'id', + username: 'username', + password: 'password', + displayName: 'displayName', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] + + +export const SessionScalarFieldEnum = { + id: 'id', + userId: 'userId', + expiresAt: 'expiresAt' +} as const + +export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum] + + +export const UserPreferencesScalarFieldEnum = { + userId: 'userId', + toggleInputHotkey: 'toggleInputHotkey', + toggleOutputHotkey: 'toggleOutputHotkey' +} as const + +export type UserPreferencesScalarFieldEnum = (typeof UserPreferencesScalarFieldEnum)[keyof typeof UserPreferencesScalarFieldEnum] + + +export const ChannelScalarFieldEnum = { + id: 'id', + name: 'name', + maxClients: 'maxClients', + persistent: 'persistent', + owner_id: 'owner_id' +} as const + +export type ChannelScalarFieldEnum = (typeof ChannelScalarFieldEnum)[keyof typeof ChannelScalarFieldEnum] + + +export const SortOrder = { + asc: 'asc', + desc: 'desc' +} as const + +export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] + + +export const NullsOrder = { + first: 'first', + last: 'last' +} as const + +export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + diff --git a/server/prisma/generated/client/models.ts b/server/prisma/generated/client/models.ts new file mode 100644 index 0000000..7398b56 --- /dev/null +++ b/server/prisma/generated/client/models.ts @@ -0,0 +1,15 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This is a barrel export file for all models and their related types. + * + * 🟢 You can import this file directly. + */ +export type * from './models/User.ts' +export type * from './models/Session.ts' +export type * from './models/UserPreferences.ts' +export type * from './models/Channel.ts' +export type * from './commonInputTypes.ts' \ No newline at end of file diff --git a/server/prisma/generated/client/models/Channel.ts b/server/prisma/generated/client/models/Channel.ts new file mode 100644 index 0000000..507489b --- /dev/null +++ b/server/prisma/generated/client/models/Channel.ts @@ -0,0 +1,1412 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `Channel` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums.ts" +import type * as Prisma from "../internal/prismaNamespace.ts" + +/** + * Model Channel + * + */ +export type ChannelModel = runtime.Types.Result.DefaultSelection + +export type AggregateChannel = { + _count: ChannelCountAggregateOutputType | null + _avg: ChannelAvgAggregateOutputType | null + _sum: ChannelSumAggregateOutputType | null + _min: ChannelMinAggregateOutputType | null + _max: ChannelMaxAggregateOutputType | null +} + +export type ChannelAvgAggregateOutputType = { + maxClients: number | null +} + +export type ChannelSumAggregateOutputType = { + maxClients: number | null +} + +export type ChannelMinAggregateOutputType = { + id: string | null + name: string | null + maxClients: number | null + persistent: boolean | null + owner_id: string | null +} + +export type ChannelMaxAggregateOutputType = { + id: string | null + name: string | null + maxClients: number | null + persistent: boolean | null + owner_id: string | null +} + +export type ChannelCountAggregateOutputType = { + id: number + name: number + maxClients: number + persistent: number + owner_id: number + _all: number +} + + +export type ChannelAvgAggregateInputType = { + maxClients?: true +} + +export type ChannelSumAggregateInputType = { + maxClients?: true +} + +export type ChannelMinAggregateInputType = { + id?: true + name?: true + maxClients?: true + persistent?: true + owner_id?: true +} + +export type ChannelMaxAggregateInputType = { + id?: true + name?: true + maxClients?: true + persistent?: true + owner_id?: true +} + +export type ChannelCountAggregateInputType = { + id?: true + name?: true + maxClients?: true + persistent?: true + owner_id?: true + _all?: true +} + +export type ChannelAggregateArgs = { + /** + * Filter which Channel to aggregate. + */ + where?: Prisma.ChannelWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Channels to fetch. + */ + orderBy?: Prisma.ChannelOrderByWithRelationInput | Prisma.ChannelOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.ChannelWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Channels from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Channels. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned Channels + **/ + _count?: true | ChannelCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: ChannelAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: ChannelSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: ChannelMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: ChannelMaxAggregateInputType +} + +export type GetChannelAggregateType = { + [P in keyof T & keyof AggregateChannel]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type ChannelGroupByArgs = { + where?: Prisma.ChannelWhereInput + orderBy?: Prisma.ChannelOrderByWithAggregationInput | Prisma.ChannelOrderByWithAggregationInput[] + by: Prisma.ChannelScalarFieldEnum[] | Prisma.ChannelScalarFieldEnum + having?: Prisma.ChannelScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: ChannelCountAggregateInputType | true + _avg?: ChannelAvgAggregateInputType + _sum?: ChannelSumAggregateInputType + _min?: ChannelMinAggregateInputType + _max?: ChannelMaxAggregateInputType +} + +export type ChannelGroupByOutputType = { + id: string + name: string + maxClients: number | null + persistent: boolean + owner_id: string | null + _count: ChannelCountAggregateOutputType | null + _avg: ChannelAvgAggregateOutputType | null + _sum: ChannelSumAggregateOutputType | null + _min: ChannelMinAggregateOutputType | null + _max: ChannelMaxAggregateOutputType | null +} + +type GetChannelGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof ChannelGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type ChannelWhereInput = { + AND?: Prisma.ChannelWhereInput | Prisma.ChannelWhereInput[] + OR?: Prisma.ChannelWhereInput[] + NOT?: Prisma.ChannelWhereInput | Prisma.ChannelWhereInput[] + id?: Prisma.StringFilter<"Channel"> | string + name?: Prisma.StringFilter<"Channel"> | string + maxClients?: Prisma.IntNullableFilter<"Channel"> | number | null + persistent?: Prisma.BoolFilter<"Channel"> | boolean + owner_id?: Prisma.StringNullableFilter<"Channel"> | string | null + owner?: Prisma.XOR | null +} + +export type ChannelOrderByWithRelationInput = { + id?: Prisma.SortOrder + name?: Prisma.SortOrder + maxClients?: Prisma.SortOrderInput | Prisma.SortOrder + persistent?: Prisma.SortOrder + owner_id?: Prisma.SortOrderInput | Prisma.SortOrder + owner?: Prisma.UserOrderByWithRelationInput +} + +export type ChannelWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: Prisma.ChannelWhereInput | Prisma.ChannelWhereInput[] + OR?: Prisma.ChannelWhereInput[] + NOT?: Prisma.ChannelWhereInput | Prisma.ChannelWhereInput[] + name?: Prisma.StringFilter<"Channel"> | string + maxClients?: Prisma.IntNullableFilter<"Channel"> | number | null + persistent?: Prisma.BoolFilter<"Channel"> | boolean + owner_id?: Prisma.StringNullableFilter<"Channel"> | string | null + owner?: Prisma.XOR | null +}, "id"> + +export type ChannelOrderByWithAggregationInput = { + id?: Prisma.SortOrder + name?: Prisma.SortOrder + maxClients?: Prisma.SortOrderInput | Prisma.SortOrder + persistent?: Prisma.SortOrder + owner_id?: Prisma.SortOrderInput | Prisma.SortOrder + _count?: Prisma.ChannelCountOrderByAggregateInput + _avg?: Prisma.ChannelAvgOrderByAggregateInput + _max?: Prisma.ChannelMaxOrderByAggregateInput + _min?: Prisma.ChannelMinOrderByAggregateInput + _sum?: Prisma.ChannelSumOrderByAggregateInput +} + +export type ChannelScalarWhereWithAggregatesInput = { + AND?: Prisma.ChannelScalarWhereWithAggregatesInput | Prisma.ChannelScalarWhereWithAggregatesInput[] + OR?: Prisma.ChannelScalarWhereWithAggregatesInput[] + NOT?: Prisma.ChannelScalarWhereWithAggregatesInput | Prisma.ChannelScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"Channel"> | string + name?: Prisma.StringWithAggregatesFilter<"Channel"> | string + maxClients?: Prisma.IntNullableWithAggregatesFilter<"Channel"> | number | null + persistent?: Prisma.BoolWithAggregatesFilter<"Channel"> | boolean + owner_id?: Prisma.StringNullableWithAggregatesFilter<"Channel"> | string | null +} + +export type ChannelCreateInput = { + id?: string + name: string + maxClients?: number | null + persistent?: boolean + owner?: Prisma.UserCreateNestedOneWithoutChannelsInput +} + +export type ChannelUncheckedCreateInput = { + id?: string + name: string + maxClients?: number | null + persistent?: boolean + owner_id?: string | null +} + +export type ChannelUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + maxClients?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + persistent?: Prisma.BoolFieldUpdateOperationsInput | boolean + owner?: Prisma.UserUpdateOneWithoutChannelsNestedInput +} + +export type ChannelUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + maxClients?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + persistent?: Prisma.BoolFieldUpdateOperationsInput | boolean + owner_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + +export type ChannelCreateManyInput = { + id?: string + name: string + maxClients?: number | null + persistent?: boolean + owner_id?: string | null +} + +export type ChannelUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + maxClients?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + persistent?: Prisma.BoolFieldUpdateOperationsInput | boolean +} + +export type ChannelUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + maxClients?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + persistent?: Prisma.BoolFieldUpdateOperationsInput | boolean + owner_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + +export type ChannelListRelationFilter = { + every?: Prisma.ChannelWhereInput + some?: Prisma.ChannelWhereInput + none?: Prisma.ChannelWhereInput +} + +export type ChannelOrderByRelationAggregateInput = { + _count?: Prisma.SortOrder +} + +export type ChannelCountOrderByAggregateInput = { + id?: Prisma.SortOrder + name?: Prisma.SortOrder + maxClients?: Prisma.SortOrder + persistent?: Prisma.SortOrder + owner_id?: Prisma.SortOrder +} + +export type ChannelAvgOrderByAggregateInput = { + maxClients?: Prisma.SortOrder +} + +export type ChannelMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + name?: Prisma.SortOrder + maxClients?: Prisma.SortOrder + persistent?: Prisma.SortOrder + owner_id?: Prisma.SortOrder +} + +export type ChannelMinOrderByAggregateInput = { + id?: Prisma.SortOrder + name?: Prisma.SortOrder + maxClients?: Prisma.SortOrder + persistent?: Prisma.SortOrder + owner_id?: Prisma.SortOrder +} + +export type ChannelSumOrderByAggregateInput = { + maxClients?: Prisma.SortOrder +} + +export type ChannelCreateNestedManyWithoutOwnerInput = { + create?: Prisma.XOR | Prisma.ChannelCreateWithoutOwnerInput[] | Prisma.ChannelUncheckedCreateWithoutOwnerInput[] + connectOrCreate?: Prisma.ChannelCreateOrConnectWithoutOwnerInput | Prisma.ChannelCreateOrConnectWithoutOwnerInput[] + createMany?: Prisma.ChannelCreateManyOwnerInputEnvelope + connect?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] +} + +export type ChannelUncheckedCreateNestedManyWithoutOwnerInput = { + create?: Prisma.XOR | Prisma.ChannelCreateWithoutOwnerInput[] | Prisma.ChannelUncheckedCreateWithoutOwnerInput[] + connectOrCreate?: Prisma.ChannelCreateOrConnectWithoutOwnerInput | Prisma.ChannelCreateOrConnectWithoutOwnerInput[] + createMany?: Prisma.ChannelCreateManyOwnerInputEnvelope + connect?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] +} + +export type ChannelUpdateManyWithoutOwnerNestedInput = { + create?: Prisma.XOR | Prisma.ChannelCreateWithoutOwnerInput[] | Prisma.ChannelUncheckedCreateWithoutOwnerInput[] + connectOrCreate?: Prisma.ChannelCreateOrConnectWithoutOwnerInput | Prisma.ChannelCreateOrConnectWithoutOwnerInput[] + upsert?: Prisma.ChannelUpsertWithWhereUniqueWithoutOwnerInput | Prisma.ChannelUpsertWithWhereUniqueWithoutOwnerInput[] + createMany?: Prisma.ChannelCreateManyOwnerInputEnvelope + set?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] + disconnect?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] + delete?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] + connect?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] + update?: Prisma.ChannelUpdateWithWhereUniqueWithoutOwnerInput | Prisma.ChannelUpdateWithWhereUniqueWithoutOwnerInput[] + updateMany?: Prisma.ChannelUpdateManyWithWhereWithoutOwnerInput | Prisma.ChannelUpdateManyWithWhereWithoutOwnerInput[] + deleteMany?: Prisma.ChannelScalarWhereInput | Prisma.ChannelScalarWhereInput[] +} + +export type ChannelUncheckedUpdateManyWithoutOwnerNestedInput = { + create?: Prisma.XOR | Prisma.ChannelCreateWithoutOwnerInput[] | Prisma.ChannelUncheckedCreateWithoutOwnerInput[] + connectOrCreate?: Prisma.ChannelCreateOrConnectWithoutOwnerInput | Prisma.ChannelCreateOrConnectWithoutOwnerInput[] + upsert?: Prisma.ChannelUpsertWithWhereUniqueWithoutOwnerInput | Prisma.ChannelUpsertWithWhereUniqueWithoutOwnerInput[] + createMany?: Prisma.ChannelCreateManyOwnerInputEnvelope + set?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] + disconnect?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] + delete?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] + connect?: Prisma.ChannelWhereUniqueInput | Prisma.ChannelWhereUniqueInput[] + update?: Prisma.ChannelUpdateWithWhereUniqueWithoutOwnerInput | Prisma.ChannelUpdateWithWhereUniqueWithoutOwnerInput[] + updateMany?: Prisma.ChannelUpdateManyWithWhereWithoutOwnerInput | Prisma.ChannelUpdateManyWithWhereWithoutOwnerInput[] + deleteMany?: Prisma.ChannelScalarWhereInput | Prisma.ChannelScalarWhereInput[] +} + +export type NullableIntFieldUpdateOperationsInput = { + set?: number | null + increment?: number + decrement?: number + multiply?: number + divide?: number +} + +export type BoolFieldUpdateOperationsInput = { + set?: boolean +} + +export type ChannelCreateWithoutOwnerInput = { + id?: string + name: string + maxClients?: number | null + persistent?: boolean +} + +export type ChannelUncheckedCreateWithoutOwnerInput = { + id?: string + name: string + maxClients?: number | null + persistent?: boolean +} + +export type ChannelCreateOrConnectWithoutOwnerInput = { + where: Prisma.ChannelWhereUniqueInput + create: Prisma.XOR +} + +export type ChannelCreateManyOwnerInputEnvelope = { + data: Prisma.ChannelCreateManyOwnerInput | Prisma.ChannelCreateManyOwnerInput[] +} + +export type ChannelUpsertWithWhereUniqueWithoutOwnerInput = { + where: Prisma.ChannelWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type ChannelUpdateWithWhereUniqueWithoutOwnerInput = { + where: Prisma.ChannelWhereUniqueInput + data: Prisma.XOR +} + +export type ChannelUpdateManyWithWhereWithoutOwnerInput = { + where: Prisma.ChannelScalarWhereInput + data: Prisma.XOR +} + +export type ChannelScalarWhereInput = { + AND?: Prisma.ChannelScalarWhereInput | Prisma.ChannelScalarWhereInput[] + OR?: Prisma.ChannelScalarWhereInput[] + NOT?: Prisma.ChannelScalarWhereInput | Prisma.ChannelScalarWhereInput[] + id?: Prisma.StringFilter<"Channel"> | string + name?: Prisma.StringFilter<"Channel"> | string + maxClients?: Prisma.IntNullableFilter<"Channel"> | number | null + persistent?: Prisma.BoolFilter<"Channel"> | boolean + owner_id?: Prisma.StringNullableFilter<"Channel"> | string | null +} + +export type ChannelCreateManyOwnerInput = { + id?: string + name: string + maxClients?: number | null + persistent?: boolean +} + +export type ChannelUpdateWithoutOwnerInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + maxClients?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + persistent?: Prisma.BoolFieldUpdateOperationsInput | boolean +} + +export type ChannelUncheckedUpdateWithoutOwnerInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + maxClients?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + persistent?: Prisma.BoolFieldUpdateOperationsInput | boolean +} + +export type ChannelUncheckedUpdateManyWithoutOwnerInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + maxClients?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + persistent?: Prisma.BoolFieldUpdateOperationsInput | boolean +} + + + +export type ChannelSelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + name?: boolean + maxClients?: boolean + persistent?: boolean + owner_id?: boolean + owner?: boolean | Prisma.Channel$ownerArgs +}, ExtArgs["result"]["channel"]> + +export type ChannelSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + name?: boolean + maxClients?: boolean + persistent?: boolean + owner_id?: boolean + owner?: boolean | Prisma.Channel$ownerArgs +}, ExtArgs["result"]["channel"]> + +export type ChannelSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + name?: boolean + maxClients?: boolean + persistent?: boolean + owner_id?: boolean + owner?: boolean | Prisma.Channel$ownerArgs +}, ExtArgs["result"]["channel"]> + +export type ChannelSelectScalar = { + id?: boolean + name?: boolean + maxClients?: boolean + persistent?: boolean + owner_id?: boolean +} + +export type ChannelOmit = runtime.Types.Extensions.GetOmit<"id" | "name" | "maxClients" | "persistent" | "owner_id", ExtArgs["result"]["channel"]> +export type ChannelInclude = { + owner?: boolean | Prisma.Channel$ownerArgs +} +export type ChannelIncludeCreateManyAndReturn = { + owner?: boolean | Prisma.Channel$ownerArgs +} +export type ChannelIncludeUpdateManyAndReturn = { + owner?: boolean | Prisma.Channel$ownerArgs +} + +export type $ChannelPayload = { + name: "Channel" + objects: { + owner: Prisma.$UserPayload | null + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + name: string + maxClients: number | null + persistent: boolean + owner_id: string | null + }, ExtArgs["result"]["channel"]> + composites: {} +} + +export type ChannelGetPayload = runtime.Types.Result.GetResult + +export type ChannelCountArgs = + Omit & { + select?: ChannelCountAggregateInputType | true + } + +export interface ChannelDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['Channel'], meta: { name: 'Channel' } } + /** + * Find zero or one Channel that matches the filter. + * @param {ChannelFindUniqueArgs} args - Arguments to find a Channel + * @example + * // Get one Channel + * const channel = await prisma.channel.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__ChannelClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one Channel that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {ChannelFindUniqueOrThrowArgs} args - Arguments to find a Channel + * @example + * // Get one Channel + * const channel = await prisma.channel.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__ChannelClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Channel that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelFindFirstArgs} args - Arguments to find a Channel + * @example + * // Get one Channel + * const channel = await prisma.channel.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__ChannelClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Channel that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelFindFirstOrThrowArgs} args - Arguments to find a Channel + * @example + * // Get one Channel + * const channel = await prisma.channel.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__ChannelClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Channels that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Channels + * const channels = await prisma.channel.findMany() + * + * // Get first 10 Channels + * const channels = await prisma.channel.findMany({ take: 10 }) + * + * // Only select the `id` + * const channelWithIdOnly = await prisma.channel.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a Channel. + * @param {ChannelCreateArgs} args - Arguments to create a Channel. + * @example + * // Create one Channel + * const Channel = await prisma.channel.create({ + * data: { + * // ... data to create a Channel + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__ChannelClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Channels. + * @param {ChannelCreateManyArgs} args - Arguments to create many Channels. + * @example + * // Create many Channels + * const channel = await prisma.channel.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Channels and returns the data saved in the database. + * @param {ChannelCreateManyAndReturnArgs} args - Arguments to create many Channels. + * @example + * // Create many Channels + * const channel = await prisma.channel.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Channels and only return the `id` + * const channelWithIdOnly = await prisma.channel.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a Channel. + * @param {ChannelDeleteArgs} args - Arguments to delete one Channel. + * @example + * // Delete one Channel + * const Channel = await prisma.channel.delete({ + * where: { + * // ... filter to delete one Channel + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__ChannelClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one Channel. + * @param {ChannelUpdateArgs} args - Arguments to update one Channel. + * @example + * // Update one Channel + * const channel = await prisma.channel.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__ChannelClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Channels. + * @param {ChannelDeleteManyArgs} args - Arguments to filter Channels to delete. + * @example + * // Delete a few Channels + * const { count } = await prisma.channel.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Channels. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Channels + * const channel = await prisma.channel.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Channels and returns the data updated in the database. + * @param {ChannelUpdateManyAndReturnArgs} args - Arguments to update many Channels. + * @example + * // Update many Channels + * const channel = await prisma.channel.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Channels and only return the `id` + * const channelWithIdOnly = await prisma.channel.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one Channel. + * @param {ChannelUpsertArgs} args - Arguments to update or create a Channel. + * @example + * // Update or create a Channel + * const channel = await prisma.channel.upsert({ + * create: { + * // ... data to create a Channel + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Channel we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__ChannelClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Channels. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelCountArgs} args - Arguments to filter Channels to count. + * @example + * // Count the number of Channels + * const count = await prisma.channel.count({ + * where: { + * // ... the filter for the Channels we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Channel. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by Channel. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ChannelGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends ChannelGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: ChannelGroupByArgs['orderBy'] } + : { orderBy?: ChannelGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetChannelGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the Channel model + */ +readonly fields: ChannelFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for Channel. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__ChannelClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + owner = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the Channel model + */ +export interface ChannelFieldRefs { + readonly id: Prisma.FieldRef<"Channel", 'String'> + readonly name: Prisma.FieldRef<"Channel", 'String'> + readonly maxClients: Prisma.FieldRef<"Channel", 'Int'> + readonly persistent: Prisma.FieldRef<"Channel", 'Boolean'> + readonly owner_id: Prisma.FieldRef<"Channel", 'String'> +} + + +// Custom InputTypes +/** + * Channel findUnique + */ +export type ChannelFindUniqueArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + /** + * Filter, which Channel to fetch. + */ + where: Prisma.ChannelWhereUniqueInput +} + +/** + * Channel findUniqueOrThrow + */ +export type ChannelFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + /** + * Filter, which Channel to fetch. + */ + where: Prisma.ChannelWhereUniqueInput +} + +/** + * Channel findFirst + */ +export type ChannelFindFirstArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + /** + * Filter, which Channel to fetch. + */ + where?: Prisma.ChannelWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Channels to fetch. + */ + orderBy?: Prisma.ChannelOrderByWithRelationInput | Prisma.ChannelOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Channels. + */ + cursor?: Prisma.ChannelWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Channels from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Channels. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Channels. + */ + distinct?: Prisma.ChannelScalarFieldEnum | Prisma.ChannelScalarFieldEnum[] +} + +/** + * Channel findFirstOrThrow + */ +export type ChannelFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + /** + * Filter, which Channel to fetch. + */ + where?: Prisma.ChannelWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Channels to fetch. + */ + orderBy?: Prisma.ChannelOrderByWithRelationInput | Prisma.ChannelOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Channels. + */ + cursor?: Prisma.ChannelWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Channels from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Channels. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Channels. + */ + distinct?: Prisma.ChannelScalarFieldEnum | Prisma.ChannelScalarFieldEnum[] +} + +/** + * Channel findMany + */ +export type ChannelFindManyArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + /** + * Filter, which Channels to fetch. + */ + where?: Prisma.ChannelWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Channels to fetch. + */ + orderBy?: Prisma.ChannelOrderByWithRelationInput | Prisma.ChannelOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing Channels. + */ + cursor?: Prisma.ChannelWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Channels from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Channels. + */ + skip?: number + distinct?: Prisma.ChannelScalarFieldEnum | Prisma.ChannelScalarFieldEnum[] +} + +/** + * Channel create + */ +export type ChannelCreateArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + /** + * The data needed to create a Channel. + */ + data: Prisma.XOR +} + +/** + * Channel createMany + */ +export type ChannelCreateManyArgs = { + /** + * The data used to create many Channels. + */ + data: Prisma.ChannelCreateManyInput | Prisma.ChannelCreateManyInput[] +} + +/** + * Channel createManyAndReturn + */ +export type ChannelCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelectCreateManyAndReturn | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * The data used to create many Channels. + */ + data: Prisma.ChannelCreateManyInput | Prisma.ChannelCreateManyInput[] + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelIncludeCreateManyAndReturn | null +} + +/** + * Channel update + */ +export type ChannelUpdateArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + /** + * The data needed to update a Channel. + */ + data: Prisma.XOR + /** + * Choose, which Channel to update. + */ + where: Prisma.ChannelWhereUniqueInput +} + +/** + * Channel updateMany + */ +export type ChannelUpdateManyArgs = { + /** + * The data used to update Channels. + */ + data: Prisma.XOR + /** + * Filter which Channels to update + */ + where?: Prisma.ChannelWhereInput + /** + * Limit how many Channels to update. + */ + limit?: number +} + +/** + * Channel updateManyAndReturn + */ +export type ChannelUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * The data used to update Channels. + */ + data: Prisma.XOR + /** + * Filter which Channels to update + */ + where?: Prisma.ChannelWhereInput + /** + * Limit how many Channels to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelIncludeUpdateManyAndReturn | null +} + +/** + * Channel upsert + */ +export type ChannelUpsertArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + /** + * The filter to search for the Channel to update in case it exists. + */ + where: Prisma.ChannelWhereUniqueInput + /** + * In case the Channel found by the `where` argument doesn't exist, create a new Channel with this data. + */ + create: Prisma.XOR + /** + * In case the Channel was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * Channel delete + */ +export type ChannelDeleteArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + /** + * Filter which Channel to delete. + */ + where: Prisma.ChannelWhereUniqueInput +} + +/** + * Channel deleteMany + */ +export type ChannelDeleteManyArgs = { + /** + * Filter which Channels to delete + */ + where?: Prisma.ChannelWhereInput + /** + * Limit how many Channels to delete. + */ + limit?: number +} + +/** + * Channel.owner + */ +export type Channel$ownerArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + where?: Prisma.UserWhereInput +} + +/** + * Channel without action + */ +export type ChannelDefaultArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null +} diff --git a/server/prisma/generated/client/models/Session.ts b/server/prisma/generated/client/models/Session.ts new file mode 100644 index 0000000..49e9f75 --- /dev/null +++ b/server/prisma/generated/client/models/Session.ts @@ -0,0 +1,1267 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `Session` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums.ts" +import type * as Prisma from "../internal/prismaNamespace.ts" + +/** + * Model Session + * + */ +export type SessionModel = runtime.Types.Result.DefaultSelection + +export type AggregateSession = { + _count: SessionCountAggregateOutputType | null + _min: SessionMinAggregateOutputType | null + _max: SessionMaxAggregateOutputType | null +} + +export type SessionMinAggregateOutputType = { + id: string | null + userId: string | null + expiresAt: Date | null +} + +export type SessionMaxAggregateOutputType = { + id: string | null + userId: string | null + expiresAt: Date | null +} + +export type SessionCountAggregateOutputType = { + id: number + userId: number + expiresAt: number + _all: number +} + + +export type SessionMinAggregateInputType = { + id?: true + userId?: true + expiresAt?: true +} + +export type SessionMaxAggregateInputType = { + id?: true + userId?: true + expiresAt?: true +} + +export type SessionCountAggregateInputType = { + id?: true + userId?: true + expiresAt?: true + _all?: true +} + +export type SessionAggregateArgs = { + /** + * Filter which Session to aggregate. + */ + where?: Prisma.SessionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Sessions to fetch. + */ + orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.SessionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Sessions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Sessions. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned Sessions + **/ + _count?: true | SessionCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: SessionMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: SessionMaxAggregateInputType +} + +export type GetSessionAggregateType = { + [P in keyof T & keyof AggregateSession]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type SessionGroupByArgs = { + where?: Prisma.SessionWhereInput + orderBy?: Prisma.SessionOrderByWithAggregationInput | Prisma.SessionOrderByWithAggregationInput[] + by: Prisma.SessionScalarFieldEnum[] | Prisma.SessionScalarFieldEnum + having?: Prisma.SessionScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: SessionCountAggregateInputType | true + _min?: SessionMinAggregateInputType + _max?: SessionMaxAggregateInputType +} + +export type SessionGroupByOutputType = { + id: string + userId: string + expiresAt: Date + _count: SessionCountAggregateOutputType | null + _min: SessionMinAggregateOutputType | null + _max: SessionMaxAggregateOutputType | null +} + +type GetSessionGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof SessionGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type SessionWhereInput = { + AND?: Prisma.SessionWhereInput | Prisma.SessionWhereInput[] + OR?: Prisma.SessionWhereInput[] + NOT?: Prisma.SessionWhereInput | Prisma.SessionWhereInput[] + id?: Prisma.StringFilter<"Session"> | string + userId?: Prisma.StringFilter<"Session"> | string + expiresAt?: Prisma.DateTimeFilter<"Session"> | Date | string + user?: Prisma.XOR +} + +export type SessionOrderByWithRelationInput = { + id?: Prisma.SortOrder + userId?: Prisma.SortOrder + expiresAt?: Prisma.SortOrder + user?: Prisma.UserOrderByWithRelationInput +} + +export type SessionWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: Prisma.SessionWhereInput | Prisma.SessionWhereInput[] + OR?: Prisma.SessionWhereInput[] + NOT?: Prisma.SessionWhereInput | Prisma.SessionWhereInput[] + userId?: Prisma.StringFilter<"Session"> | string + expiresAt?: Prisma.DateTimeFilter<"Session"> | Date | string + user?: Prisma.XOR +}, "id"> + +export type SessionOrderByWithAggregationInput = { + id?: Prisma.SortOrder + userId?: Prisma.SortOrder + expiresAt?: Prisma.SortOrder + _count?: Prisma.SessionCountOrderByAggregateInput + _max?: Prisma.SessionMaxOrderByAggregateInput + _min?: Prisma.SessionMinOrderByAggregateInput +} + +export type SessionScalarWhereWithAggregatesInput = { + AND?: Prisma.SessionScalarWhereWithAggregatesInput | Prisma.SessionScalarWhereWithAggregatesInput[] + OR?: Prisma.SessionScalarWhereWithAggregatesInput[] + NOT?: Prisma.SessionScalarWhereWithAggregatesInput | Prisma.SessionScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"Session"> | string + userId?: Prisma.StringWithAggregatesFilter<"Session"> | string + expiresAt?: Prisma.DateTimeWithAggregatesFilter<"Session"> | Date | string +} + +export type SessionCreateInput = { + id: string + expiresAt: Date | string + user: Prisma.UserCreateNestedOneWithoutSessionInput +} + +export type SessionUncheckedCreateInput = { + id: string + userId: string + expiresAt: Date | string +} + +export type SessionUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + user?: Prisma.UserUpdateOneRequiredWithoutSessionNestedInput +} + +export type SessionUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + userId?: Prisma.StringFieldUpdateOperationsInput | string + expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type SessionCreateManyInput = { + id: string + userId: string + expiresAt: Date | string +} + +export type SessionUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type SessionUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + userId?: Prisma.StringFieldUpdateOperationsInput | string + expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type SessionListRelationFilter = { + every?: Prisma.SessionWhereInput + some?: Prisma.SessionWhereInput + none?: Prisma.SessionWhereInput +} + +export type SessionOrderByRelationAggregateInput = { + _count?: Prisma.SortOrder +} + +export type SessionCountOrderByAggregateInput = { + id?: Prisma.SortOrder + userId?: Prisma.SortOrder + expiresAt?: Prisma.SortOrder +} + +export type SessionMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + userId?: Prisma.SortOrder + expiresAt?: Prisma.SortOrder +} + +export type SessionMinOrderByAggregateInput = { + id?: Prisma.SortOrder + userId?: Prisma.SortOrder + expiresAt?: Prisma.SortOrder +} + +export type SessionCreateNestedManyWithoutUserInput = { + create?: Prisma.XOR | Prisma.SessionCreateWithoutUserInput[] | Prisma.SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: Prisma.SessionCreateOrConnectWithoutUserInput | Prisma.SessionCreateOrConnectWithoutUserInput[] + createMany?: Prisma.SessionCreateManyUserInputEnvelope + connect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] +} + +export type SessionUncheckedCreateNestedManyWithoutUserInput = { + create?: Prisma.XOR | Prisma.SessionCreateWithoutUserInput[] | Prisma.SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: Prisma.SessionCreateOrConnectWithoutUserInput | Prisma.SessionCreateOrConnectWithoutUserInput[] + createMany?: Prisma.SessionCreateManyUserInputEnvelope + connect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] +} + +export type SessionUpdateManyWithoutUserNestedInput = { + create?: Prisma.XOR | Prisma.SessionCreateWithoutUserInput[] | Prisma.SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: Prisma.SessionCreateOrConnectWithoutUserInput | Prisma.SessionCreateOrConnectWithoutUserInput[] + upsert?: Prisma.SessionUpsertWithWhereUniqueWithoutUserInput | Prisma.SessionUpsertWithWhereUniqueWithoutUserInput[] + createMany?: Prisma.SessionCreateManyUserInputEnvelope + set?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] + disconnect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] + delete?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] + connect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] + update?: Prisma.SessionUpdateWithWhereUniqueWithoutUserInput | Prisma.SessionUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: Prisma.SessionUpdateManyWithWhereWithoutUserInput | Prisma.SessionUpdateManyWithWhereWithoutUserInput[] + deleteMany?: Prisma.SessionScalarWhereInput | Prisma.SessionScalarWhereInput[] +} + +export type SessionUncheckedUpdateManyWithoutUserNestedInput = { + create?: Prisma.XOR | Prisma.SessionCreateWithoutUserInput[] | Prisma.SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: Prisma.SessionCreateOrConnectWithoutUserInput | Prisma.SessionCreateOrConnectWithoutUserInput[] + upsert?: Prisma.SessionUpsertWithWhereUniqueWithoutUserInput | Prisma.SessionUpsertWithWhereUniqueWithoutUserInput[] + createMany?: Prisma.SessionCreateManyUserInputEnvelope + set?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] + disconnect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] + delete?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] + connect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] + update?: Prisma.SessionUpdateWithWhereUniqueWithoutUserInput | Prisma.SessionUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: Prisma.SessionUpdateManyWithWhereWithoutUserInput | Prisma.SessionUpdateManyWithWhereWithoutUserInput[] + deleteMany?: Prisma.SessionScalarWhereInput | Prisma.SessionScalarWhereInput[] +} + +export type SessionCreateWithoutUserInput = { + id: string + expiresAt: Date | string +} + +export type SessionUncheckedCreateWithoutUserInput = { + id: string + expiresAt: Date | string +} + +export type SessionCreateOrConnectWithoutUserInput = { + where: Prisma.SessionWhereUniqueInput + create: Prisma.XOR +} + +export type SessionCreateManyUserInputEnvelope = { + data: Prisma.SessionCreateManyUserInput | Prisma.SessionCreateManyUserInput[] +} + +export type SessionUpsertWithWhereUniqueWithoutUserInput = { + where: Prisma.SessionWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type SessionUpdateWithWhereUniqueWithoutUserInput = { + where: Prisma.SessionWhereUniqueInput + data: Prisma.XOR +} + +export type SessionUpdateManyWithWhereWithoutUserInput = { + where: Prisma.SessionScalarWhereInput + data: Prisma.XOR +} + +export type SessionScalarWhereInput = { + AND?: Prisma.SessionScalarWhereInput | Prisma.SessionScalarWhereInput[] + OR?: Prisma.SessionScalarWhereInput[] + NOT?: Prisma.SessionScalarWhereInput | Prisma.SessionScalarWhereInput[] + id?: Prisma.StringFilter<"Session"> | string + userId?: Prisma.StringFilter<"Session"> | string + expiresAt?: Prisma.DateTimeFilter<"Session"> | Date | string +} + +export type SessionCreateManyUserInput = { + id: string + expiresAt: Date | string +} + +export type SessionUpdateWithoutUserInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type SessionUncheckedUpdateWithoutUserInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type SessionUncheckedUpdateManyWithoutUserInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + + + +export type SessionSelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + userId?: boolean + expiresAt?: boolean + user?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["session"]> + +export type SessionSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + userId?: boolean + expiresAt?: boolean + user?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["session"]> + +export type SessionSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + userId?: boolean + expiresAt?: boolean + user?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["session"]> + +export type SessionSelectScalar = { + id?: boolean + userId?: boolean + expiresAt?: boolean +} + +export type SessionOmit = runtime.Types.Extensions.GetOmit<"id" | "userId" | "expiresAt", ExtArgs["result"]["session"]> +export type SessionInclude = { + user?: boolean | Prisma.UserDefaultArgs +} +export type SessionIncludeCreateManyAndReturn = { + user?: boolean | Prisma.UserDefaultArgs +} +export type SessionIncludeUpdateManyAndReturn = { + user?: boolean | Prisma.UserDefaultArgs +} + +export type $SessionPayload = { + name: "Session" + objects: { + user: Prisma.$UserPayload + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + userId: string + expiresAt: Date + }, ExtArgs["result"]["session"]> + composites: {} +} + +export type SessionGetPayload = runtime.Types.Result.GetResult + +export type SessionCountArgs = + Omit & { + select?: SessionCountAggregateInputType | true + } + +export interface SessionDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['Session'], meta: { name: 'Session' } } + /** + * Find zero or one Session that matches the filter. + * @param {SessionFindUniqueArgs} args - Arguments to find a Session + * @example + * // Get one Session + * const session = await prisma.session.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one Session that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {SessionFindUniqueOrThrowArgs} args - Arguments to find a Session + * @example + * // Get one Session + * const session = await prisma.session.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Session that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionFindFirstArgs} args - Arguments to find a Session + * @example + * // Get one Session + * const session = await prisma.session.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Session that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionFindFirstOrThrowArgs} args - Arguments to find a Session + * @example + * // Get one Session + * const session = await prisma.session.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Sessions that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Sessions + * const sessions = await prisma.session.findMany() + * + * // Get first 10 Sessions + * const sessions = await prisma.session.findMany({ take: 10 }) + * + * // Only select the `id` + * const sessionWithIdOnly = await prisma.session.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a Session. + * @param {SessionCreateArgs} args - Arguments to create a Session. + * @example + * // Create one Session + * const Session = await prisma.session.create({ + * data: { + * // ... data to create a Session + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Sessions. + * @param {SessionCreateManyArgs} args - Arguments to create many Sessions. + * @example + * // Create many Sessions + * const session = await prisma.session.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Sessions and returns the data saved in the database. + * @param {SessionCreateManyAndReturnArgs} args - Arguments to create many Sessions. + * @example + * // Create many Sessions + * const session = await prisma.session.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Sessions and only return the `id` + * const sessionWithIdOnly = await prisma.session.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a Session. + * @param {SessionDeleteArgs} args - Arguments to delete one Session. + * @example + * // Delete one Session + * const Session = await prisma.session.delete({ + * where: { + * // ... filter to delete one Session + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one Session. + * @param {SessionUpdateArgs} args - Arguments to update one Session. + * @example + * // Update one Session + * const session = await prisma.session.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Sessions. + * @param {SessionDeleteManyArgs} args - Arguments to filter Sessions to delete. + * @example + * // Delete a few Sessions + * const { count } = await prisma.session.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Sessions. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Sessions + * const session = await prisma.session.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Sessions and returns the data updated in the database. + * @param {SessionUpdateManyAndReturnArgs} args - Arguments to update many Sessions. + * @example + * // Update many Sessions + * const session = await prisma.session.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Sessions and only return the `id` + * const sessionWithIdOnly = await prisma.session.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one Session. + * @param {SessionUpsertArgs} args - Arguments to update or create a Session. + * @example + * // Update or create a Session + * const session = await prisma.session.upsert({ + * create: { + * // ... data to create a Session + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Session we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Sessions. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionCountArgs} args - Arguments to filter Sessions to count. + * @example + * // Count the number of Sessions + * const count = await prisma.session.count({ + * where: { + * // ... the filter for the Sessions we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Session. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by Session. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {SessionGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends SessionGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: SessionGroupByArgs['orderBy'] } + : { orderBy?: SessionGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetSessionGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the Session model + */ +readonly fields: SessionFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for Session. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__SessionClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + user = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the Session model + */ +export interface SessionFieldRefs { + readonly id: Prisma.FieldRef<"Session", 'String'> + readonly userId: Prisma.FieldRef<"Session", 'String'> + readonly expiresAt: Prisma.FieldRef<"Session", 'DateTime'> +} + + +// Custom InputTypes +/** + * Session findUnique + */ +export type SessionFindUniqueArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + /** + * Filter, which Session to fetch. + */ + where: Prisma.SessionWhereUniqueInput +} + +/** + * Session findUniqueOrThrow + */ +export type SessionFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + /** + * Filter, which Session to fetch. + */ + where: Prisma.SessionWhereUniqueInput +} + +/** + * Session findFirst + */ +export type SessionFindFirstArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + /** + * Filter, which Session to fetch. + */ + where?: Prisma.SessionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Sessions to fetch. + */ + orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Sessions. + */ + cursor?: Prisma.SessionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Sessions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Sessions. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Sessions. + */ + distinct?: Prisma.SessionScalarFieldEnum | Prisma.SessionScalarFieldEnum[] +} + +/** + * Session findFirstOrThrow + */ +export type SessionFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + /** + * Filter, which Session to fetch. + */ + where?: Prisma.SessionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Sessions to fetch. + */ + orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Sessions. + */ + cursor?: Prisma.SessionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Sessions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Sessions. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Sessions. + */ + distinct?: Prisma.SessionScalarFieldEnum | Prisma.SessionScalarFieldEnum[] +} + +/** + * Session findMany + */ +export type SessionFindManyArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + /** + * Filter, which Sessions to fetch. + */ + where?: Prisma.SessionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Sessions to fetch. + */ + orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing Sessions. + */ + cursor?: Prisma.SessionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Sessions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Sessions. + */ + skip?: number + distinct?: Prisma.SessionScalarFieldEnum | Prisma.SessionScalarFieldEnum[] +} + +/** + * Session create + */ +export type SessionCreateArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + /** + * The data needed to create a Session. + */ + data: Prisma.XOR +} + +/** + * Session createMany + */ +export type SessionCreateManyArgs = { + /** + * The data used to create many Sessions. + */ + data: Prisma.SessionCreateManyInput | Prisma.SessionCreateManyInput[] +} + +/** + * Session createManyAndReturn + */ +export type SessionCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelectCreateManyAndReturn | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * The data used to create many Sessions. + */ + data: Prisma.SessionCreateManyInput | Prisma.SessionCreateManyInput[] + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionIncludeCreateManyAndReturn | null +} + +/** + * Session update + */ +export type SessionUpdateArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + /** + * The data needed to update a Session. + */ + data: Prisma.XOR + /** + * Choose, which Session to update. + */ + where: Prisma.SessionWhereUniqueInput +} + +/** + * Session updateMany + */ +export type SessionUpdateManyArgs = { + /** + * The data used to update Sessions. + */ + data: Prisma.XOR + /** + * Filter which Sessions to update + */ + where?: Prisma.SessionWhereInput + /** + * Limit how many Sessions to update. + */ + limit?: number +} + +/** + * Session updateManyAndReturn + */ +export type SessionUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * The data used to update Sessions. + */ + data: Prisma.XOR + /** + * Filter which Sessions to update + */ + where?: Prisma.SessionWhereInput + /** + * Limit how many Sessions to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionIncludeUpdateManyAndReturn | null +} + +/** + * Session upsert + */ +export type SessionUpsertArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + /** + * The filter to search for the Session to update in case it exists. + */ + where: Prisma.SessionWhereUniqueInput + /** + * In case the Session found by the `where` argument doesn't exist, create a new Session with this data. + */ + create: Prisma.XOR + /** + * In case the Session was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * Session delete + */ +export type SessionDeleteArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + /** + * Filter which Session to delete. + */ + where: Prisma.SessionWhereUniqueInput +} + +/** + * Session deleteMany + */ +export type SessionDeleteManyArgs = { + /** + * Filter which Sessions to delete + */ + where?: Prisma.SessionWhereInput + /** + * Limit how many Sessions to delete. + */ + limit?: number +} + +/** + * Session without action + */ +export type SessionDefaultArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null +} diff --git a/server/prisma/generated/client/models/User.ts b/server/prisma/generated/client/models/User.ts new file mode 100644 index 0000000..69b4f0c --- /dev/null +++ b/server/prisma/generated/client/models/User.ts @@ -0,0 +1,1597 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `User` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums.ts" +import type * as Prisma from "../internal/prismaNamespace.ts" + +/** + * Model User + * + */ +export type UserModel = runtime.Types.Result.DefaultSelection + +export type AggregateUser = { + _count: UserCountAggregateOutputType | null + _min: UserMinAggregateOutputType | null + _max: UserMaxAggregateOutputType | null +} + +export type UserMinAggregateOutputType = { + id: string | null + username: string | null + password: string | null + displayName: string | null + createdAt: Date | null + updatedAt: Date | null +} + +export type UserMaxAggregateOutputType = { + id: string | null + username: string | null + password: string | null + displayName: string | null + createdAt: Date | null + updatedAt: Date | null +} + +export type UserCountAggregateOutputType = { + id: number + username: number + password: number + displayName: number + createdAt: number + updatedAt: number + _all: number +} + + +export type UserMinAggregateInputType = { + id?: true + username?: true + password?: true + displayName?: true + createdAt?: true + updatedAt?: true +} + +export type UserMaxAggregateInputType = { + id?: true + username?: true + password?: true + displayName?: true + createdAt?: true + updatedAt?: true +} + +export type UserCountAggregateInputType = { + id?: true + username?: true + password?: true + displayName?: true + createdAt?: true + updatedAt?: true + _all?: true +} + +export type UserAggregateArgs = { + /** + * Filter which User to aggregate. + */ + where?: Prisma.UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned Users + **/ + _count?: true | UserCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: UserMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: UserMaxAggregateInputType +} + +export type GetUserAggregateType = { + [P in keyof T & keyof AggregateUser]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type UserGroupByArgs = { + where?: Prisma.UserWhereInput + orderBy?: Prisma.UserOrderByWithAggregationInput | Prisma.UserOrderByWithAggregationInput[] + by: Prisma.UserScalarFieldEnum[] | Prisma.UserScalarFieldEnum + having?: Prisma.UserScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: UserCountAggregateInputType | true + _min?: UserMinAggregateInputType + _max?: UserMaxAggregateInputType +} + +export type UserGroupByOutputType = { + id: string + username: string + password: string + displayName: string + createdAt: Date + updatedAt: Date + _count: UserCountAggregateOutputType | null + _min: UserMinAggregateOutputType | null + _max: UserMaxAggregateOutputType | null +} + +type GetUserGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof UserGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type UserWhereInput = { + AND?: Prisma.UserWhereInput | Prisma.UserWhereInput[] + OR?: Prisma.UserWhereInput[] + NOT?: Prisma.UserWhereInput | Prisma.UserWhereInput[] + id?: Prisma.StringFilter<"User"> | string + username?: Prisma.StringFilter<"User"> | string + password?: Prisma.StringFilter<"User"> | string + displayName?: Prisma.StringFilter<"User"> | string + createdAt?: Prisma.DateTimeFilter<"User"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string + Session?: Prisma.SessionListRelationFilter + UserPreferences?: Prisma.XOR | null + channels?: Prisma.ChannelListRelationFilter +} + +export type UserOrderByWithRelationInput = { + id?: Prisma.SortOrder + username?: Prisma.SortOrder + password?: Prisma.SortOrder + displayName?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + Session?: Prisma.SessionOrderByRelationAggregateInput + UserPreferences?: Prisma.UserPreferencesOrderByWithRelationInput + channels?: Prisma.ChannelOrderByRelationAggregateInput +} + +export type UserWhereUniqueInput = Prisma.AtLeast<{ + id?: string + username?: string + AND?: Prisma.UserWhereInput | Prisma.UserWhereInput[] + OR?: Prisma.UserWhereInput[] + NOT?: Prisma.UserWhereInput | Prisma.UserWhereInput[] + password?: Prisma.StringFilter<"User"> | string + displayName?: Prisma.StringFilter<"User"> | string + createdAt?: Prisma.DateTimeFilter<"User"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string + Session?: Prisma.SessionListRelationFilter + UserPreferences?: Prisma.XOR | null + channels?: Prisma.ChannelListRelationFilter +}, "id" | "username"> + +export type UserOrderByWithAggregationInput = { + id?: Prisma.SortOrder + username?: Prisma.SortOrder + password?: Prisma.SortOrder + displayName?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + _count?: Prisma.UserCountOrderByAggregateInput + _max?: Prisma.UserMaxOrderByAggregateInput + _min?: Prisma.UserMinOrderByAggregateInput +} + +export type UserScalarWhereWithAggregatesInput = { + AND?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] + OR?: Prisma.UserScalarWhereWithAggregatesInput[] + NOT?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"User"> | string + username?: Prisma.StringWithAggregatesFilter<"User"> | string + password?: Prisma.StringWithAggregatesFilter<"User"> | string + displayName?: Prisma.StringWithAggregatesFilter<"User"> | string + createdAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string + updatedAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string +} + +export type UserCreateInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: Prisma.SessionCreateNestedManyWithoutUserInput + UserPreferences?: Prisma.UserPreferencesCreateNestedOneWithoutUserInput + channels?: Prisma.ChannelCreateNestedManyWithoutOwnerInput +} + +export type UserUncheckedCreateInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput + UserPreferences?: Prisma.UserPreferencesUncheckedCreateNestedOneWithoutUserInput + channels?: Prisma.ChannelUncheckedCreateNestedManyWithoutOwnerInput +} + +export type UserUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + Session?: Prisma.SessionUpdateManyWithoutUserNestedInput + UserPreferences?: Prisma.UserPreferencesUpdateOneWithoutUserNestedInput + channels?: Prisma.ChannelUpdateManyWithoutOwnerNestedInput +} + +export type UserUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + Session?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput + UserPreferences?: Prisma.UserPreferencesUncheckedUpdateOneWithoutUserNestedInput + channels?: Prisma.ChannelUncheckedUpdateManyWithoutOwnerNestedInput +} + +export type UserCreateManyInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string +} + +export type UserUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type UserUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type UserCountOrderByAggregateInput = { + id?: Prisma.SortOrder + username?: Prisma.SortOrder + password?: Prisma.SortOrder + displayName?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type UserMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + username?: Prisma.SortOrder + password?: Prisma.SortOrder + displayName?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type UserMinOrderByAggregateInput = { + id?: Prisma.SortOrder + username?: Prisma.SortOrder + password?: Prisma.SortOrder + displayName?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type UserScalarRelationFilter = { + is?: Prisma.UserWhereInput + isNot?: Prisma.UserWhereInput +} + +export type UserNullableScalarRelationFilter = { + is?: Prisma.UserWhereInput | null + isNot?: Prisma.UserWhereInput | null +} + +export type StringFieldUpdateOperationsInput = { + set?: string +} + +export type DateTimeFieldUpdateOperationsInput = { + set?: Date | string +} + +export type UserCreateNestedOneWithoutSessionInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutSessionInput + connect?: Prisma.UserWhereUniqueInput +} + +export type UserUpdateOneRequiredWithoutSessionNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutSessionInput + upsert?: Prisma.UserUpsertWithoutSessionInput + connect?: Prisma.UserWhereUniqueInput + update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutSessionInput> +} + +export type UserCreateNestedOneWithoutUserPreferencesInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutUserPreferencesInput + connect?: Prisma.UserWhereUniqueInput +} + +export type UserUpdateOneRequiredWithoutUserPreferencesNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutUserPreferencesInput + upsert?: Prisma.UserUpsertWithoutUserPreferencesInput + connect?: Prisma.UserWhereUniqueInput + update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutUserPreferencesInput> +} + +export type UserCreateNestedOneWithoutChannelsInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutChannelsInput + connect?: Prisma.UserWhereUniqueInput +} + +export type UserUpdateOneWithoutChannelsNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutChannelsInput + upsert?: Prisma.UserUpsertWithoutChannelsInput + disconnect?: Prisma.UserWhereInput | boolean + delete?: Prisma.UserWhereInput | boolean + connect?: Prisma.UserWhereUniqueInput + update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutChannelsInput> +} + +export type UserCreateWithoutSessionInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + UserPreferences?: Prisma.UserPreferencesCreateNestedOneWithoutUserInput + channels?: Prisma.ChannelCreateNestedManyWithoutOwnerInput +} + +export type UserUncheckedCreateWithoutSessionInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + UserPreferences?: Prisma.UserPreferencesUncheckedCreateNestedOneWithoutUserInput + channels?: Prisma.ChannelUncheckedCreateNestedManyWithoutOwnerInput +} + +export type UserCreateOrConnectWithoutSessionInput = { + where: Prisma.UserWhereUniqueInput + create: Prisma.XOR +} + +export type UserUpsertWithoutSessionInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.UserWhereInput +} + +export type UserUpdateToOneWithWhereWithoutSessionInput = { + where?: Prisma.UserWhereInput + data: Prisma.XOR +} + +export type UserUpdateWithoutSessionInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + UserPreferences?: Prisma.UserPreferencesUpdateOneWithoutUserNestedInput + channels?: Prisma.ChannelUpdateManyWithoutOwnerNestedInput +} + +export type UserUncheckedUpdateWithoutSessionInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + UserPreferences?: Prisma.UserPreferencesUncheckedUpdateOneWithoutUserNestedInput + channels?: Prisma.ChannelUncheckedUpdateManyWithoutOwnerNestedInput +} + +export type UserCreateWithoutUserPreferencesInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: Prisma.SessionCreateNestedManyWithoutUserInput + channels?: Prisma.ChannelCreateNestedManyWithoutOwnerInput +} + +export type UserUncheckedCreateWithoutUserPreferencesInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput + channels?: Prisma.ChannelUncheckedCreateNestedManyWithoutOwnerInput +} + +export type UserCreateOrConnectWithoutUserPreferencesInput = { + where: Prisma.UserWhereUniqueInput + create: Prisma.XOR +} + +export type UserUpsertWithoutUserPreferencesInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.UserWhereInput +} + +export type UserUpdateToOneWithWhereWithoutUserPreferencesInput = { + where?: Prisma.UserWhereInput + data: Prisma.XOR +} + +export type UserUpdateWithoutUserPreferencesInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + Session?: Prisma.SessionUpdateManyWithoutUserNestedInput + channels?: Prisma.ChannelUpdateManyWithoutOwnerNestedInput +} + +export type UserUncheckedUpdateWithoutUserPreferencesInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + Session?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput + channels?: Prisma.ChannelUncheckedUpdateManyWithoutOwnerNestedInput +} + +export type UserCreateWithoutChannelsInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: Prisma.SessionCreateNestedManyWithoutUserInput + UserPreferences?: Prisma.UserPreferencesCreateNestedOneWithoutUserInput +} + +export type UserUncheckedCreateWithoutChannelsInput = { + id?: string + username: string + password: string + displayName: string + createdAt?: Date | string + updatedAt?: Date | string + Session?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput + UserPreferences?: Prisma.UserPreferencesUncheckedCreateNestedOneWithoutUserInput +} + +export type UserCreateOrConnectWithoutChannelsInput = { + where: Prisma.UserWhereUniqueInput + create: Prisma.XOR +} + +export type UserUpsertWithoutChannelsInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.UserWhereInput +} + +export type UserUpdateToOneWithWhereWithoutChannelsInput = { + where?: Prisma.UserWhereInput + data: Prisma.XOR +} + +export type UserUpdateWithoutChannelsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + Session?: Prisma.SessionUpdateManyWithoutUserNestedInput + UserPreferences?: Prisma.UserPreferencesUpdateOneWithoutUserNestedInput +} + +export type UserUncheckedUpdateWithoutChannelsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + Session?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput + UserPreferences?: Prisma.UserPreferencesUncheckedUpdateOneWithoutUserNestedInput +} + + +/** + * Count Type UserCountOutputType + */ + +export type UserCountOutputType = { + Session: number + channels: number +} + +export type UserCountOutputTypeSelect = { + Session?: boolean | UserCountOutputTypeCountSessionArgs + channels?: boolean | UserCountOutputTypeCountChannelsArgs +} + +/** + * UserCountOutputType without action + */ +export type UserCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the UserCountOutputType + */ + select?: Prisma.UserCountOutputTypeSelect | null +} + +/** + * UserCountOutputType without action + */ +export type UserCountOutputTypeCountSessionArgs = { + where?: Prisma.SessionWhereInput +} + +/** + * UserCountOutputType without action + */ +export type UserCountOutputTypeCountChannelsArgs = { + where?: Prisma.ChannelWhereInput +} + + +export type UserSelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + username?: boolean + password?: boolean + displayName?: boolean + createdAt?: boolean + updatedAt?: boolean + Session?: boolean | Prisma.User$SessionArgs + UserPreferences?: boolean | Prisma.User$UserPreferencesArgs + channels?: boolean | Prisma.User$channelsArgs + _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs +}, ExtArgs["result"]["user"]> + +export type UserSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + username?: boolean + password?: boolean + displayName?: boolean + createdAt?: boolean + updatedAt?: boolean +}, ExtArgs["result"]["user"]> + +export type UserSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + username?: boolean + password?: boolean + displayName?: boolean + createdAt?: boolean + updatedAt?: boolean +}, ExtArgs["result"]["user"]> + +export type UserSelectScalar = { + id?: boolean + username?: boolean + password?: boolean + displayName?: boolean + createdAt?: boolean + updatedAt?: boolean +} + +export type UserOmit = runtime.Types.Extensions.GetOmit<"id" | "username" | "password" | "displayName" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]> +export type UserInclude = { + Session?: boolean | Prisma.User$SessionArgs + UserPreferences?: boolean | Prisma.User$UserPreferencesArgs + channels?: boolean | Prisma.User$channelsArgs + _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs +} +export type UserIncludeCreateManyAndReturn = {} +export type UserIncludeUpdateManyAndReturn = {} + +export type $UserPayload = { + name: "User" + objects: { + Session: Prisma.$SessionPayload[] + UserPreferences: Prisma.$UserPreferencesPayload | null + channels: Prisma.$ChannelPayload[] + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + username: string + password: string + displayName: string + createdAt: Date + updatedAt: Date + }, ExtArgs["result"]["user"]> + composites: {} +} + +export type UserGetPayload = runtime.Types.Result.GetResult + +export type UserCountArgs = + Omit & { + select?: UserCountAggregateInputType | true + } + +export interface UserDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['User'], meta: { name: 'User' } } + /** + * Find zero or one User that matches the filter. + * @param {UserFindUniqueArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one User that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {UserFindUniqueOrThrowArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first User that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserFindFirstArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first User that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserFindFirstOrThrowArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Users that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Users + * const users = await prisma.user.findMany() + * + * // Get first 10 Users + * const users = await prisma.user.findMany({ take: 10 }) + * + * // Only select the `id` + * const userWithIdOnly = await prisma.user.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a User. + * @param {UserCreateArgs} args - Arguments to create a User. + * @example + * // Create one User + * const User = await prisma.user.create({ + * data: { + * // ... data to create a User + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Users. + * @param {UserCreateManyArgs} args - Arguments to create many Users. + * @example + * // Create many Users + * const user = await prisma.user.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Users and returns the data saved in the database. + * @param {UserCreateManyAndReturnArgs} args - Arguments to create many Users. + * @example + * // Create many Users + * const user = await prisma.user.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Users and only return the `id` + * const userWithIdOnly = await prisma.user.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a User. + * @param {UserDeleteArgs} args - Arguments to delete one User. + * @example + * // Delete one User + * const User = await prisma.user.delete({ + * where: { + * // ... filter to delete one User + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one User. + * @param {UserUpdateArgs} args - Arguments to update one User. + * @example + * // Update one User + * const user = await prisma.user.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Users. + * @param {UserDeleteManyArgs} args - Arguments to filter Users to delete. + * @example + * // Delete a few Users + * const { count } = await prisma.user.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Users. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Users + * const user = await prisma.user.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Users and returns the data updated in the database. + * @param {UserUpdateManyAndReturnArgs} args - Arguments to update many Users. + * @example + * // Update many Users + * const user = await prisma.user.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Users and only return the `id` + * const userWithIdOnly = await prisma.user.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one User. + * @param {UserUpsertArgs} args - Arguments to update or create a User. + * @example + * // Update or create a User + * const user = await prisma.user.upsert({ + * create: { + * // ... data to create a User + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the User we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Users. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserCountArgs} args - Arguments to filter Users to count. + * @example + * // Count the number of Users + * const count = await prisma.user.count({ + * where: { + * // ... the filter for the Users we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a User. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by User. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends UserGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: UserGroupByArgs['orderBy'] } + : { orderBy?: UserGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetUserGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the User model + */ +readonly fields: UserFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for User. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__UserClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + Session = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + UserPreferences = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserPreferencesClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + channels = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the User model + */ +export interface UserFieldRefs { + readonly id: Prisma.FieldRef<"User", 'String'> + readonly username: Prisma.FieldRef<"User", 'String'> + readonly password: Prisma.FieldRef<"User", 'String'> + readonly displayName: Prisma.FieldRef<"User", 'String'> + readonly createdAt: Prisma.FieldRef<"User", 'DateTime'> + readonly updatedAt: Prisma.FieldRef<"User", 'DateTime'> +} + + +// Custom InputTypes +/** + * User findUnique + */ +export type UserFindUniqueArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which User to fetch. + */ + where: Prisma.UserWhereUniqueInput +} + +/** + * User findUniqueOrThrow + */ +export type UserFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which User to fetch. + */ + where: Prisma.UserWhereUniqueInput +} + +/** + * User findFirst + */ +export type UserFindFirstArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which User to fetch. + */ + where?: Prisma.UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Users. + */ + cursor?: Prisma.UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Users. + */ + distinct?: Prisma.UserScalarFieldEnum | Prisma.UserScalarFieldEnum[] +} + +/** + * User findFirstOrThrow + */ +export type UserFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which User to fetch. + */ + where?: Prisma.UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Users. + */ + cursor?: Prisma.UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Users. + */ + distinct?: Prisma.UserScalarFieldEnum | Prisma.UserScalarFieldEnum[] +} + +/** + * User findMany + */ +export type UserFindManyArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which Users to fetch. + */ + where?: Prisma.UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing Users. + */ + cursor?: Prisma.UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + distinct?: Prisma.UserScalarFieldEnum | Prisma.UserScalarFieldEnum[] +} + +/** + * User create + */ +export type UserCreateArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * The data needed to create a User. + */ + data: Prisma.XOR +} + +/** + * User createMany + */ +export type UserCreateManyArgs = { + /** + * The data used to create many Users. + */ + data: Prisma.UserCreateManyInput | Prisma.UserCreateManyInput[] +} + +/** + * User createManyAndReturn + */ +export type UserCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelectCreateManyAndReturn | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * The data used to create many Users. + */ + data: Prisma.UserCreateManyInput | Prisma.UserCreateManyInput[] +} + +/** + * User update + */ +export type UserUpdateArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * The data needed to update a User. + */ + data: Prisma.XOR + /** + * Choose, which User to update. + */ + where: Prisma.UserWhereUniqueInput +} + +/** + * User updateMany + */ +export type UserUpdateManyArgs = { + /** + * The data used to update Users. + */ + data: Prisma.XOR + /** + * Filter which Users to update + */ + where?: Prisma.UserWhereInput + /** + * Limit how many Users to update. + */ + limit?: number +} + +/** + * User updateManyAndReturn + */ +export type UserUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * The data used to update Users. + */ + data: Prisma.XOR + /** + * Filter which Users to update + */ + where?: Prisma.UserWhereInput + /** + * Limit how many Users to update. + */ + limit?: number +} + +/** + * User upsert + */ +export type UserUpsertArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * The filter to search for the User to update in case it exists. + */ + where: Prisma.UserWhereUniqueInput + /** + * In case the User found by the `where` argument doesn't exist, create a new User with this data. + */ + create: Prisma.XOR + /** + * In case the User was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * User delete + */ +export type UserDeleteArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter which User to delete. + */ + where: Prisma.UserWhereUniqueInput +} + +/** + * User deleteMany + */ +export type UserDeleteManyArgs = { + /** + * Filter which Users to delete + */ + where?: Prisma.UserWhereInput + /** + * Limit how many Users to delete. + */ + limit?: number +} + +/** + * User.Session + */ +export type User$SessionArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + where?: Prisma.SessionWhereInput + orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] + cursor?: Prisma.SessionWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.SessionScalarFieldEnum | Prisma.SessionScalarFieldEnum[] +} + +/** + * User.UserPreferences + */ +export type User$UserPreferencesArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + where?: Prisma.UserPreferencesWhereInput +} + +/** + * User.channels + */ +export type User$channelsArgs = { + /** + * Select specific fields to fetch from the Channel + */ + select?: Prisma.ChannelSelect | null + /** + * Omit specific fields from the Channel + */ + omit?: Prisma.ChannelOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ChannelInclude | null + where?: Prisma.ChannelWhereInput + orderBy?: Prisma.ChannelOrderByWithRelationInput | Prisma.ChannelOrderByWithRelationInput[] + cursor?: Prisma.ChannelWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.ChannelScalarFieldEnum | Prisma.ChannelScalarFieldEnum[] +} + +/** + * User without action + */ +export type UserDefaultArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null +} diff --git a/server/prisma/generated/client/models/UserPreferences.ts b/server/prisma/generated/client/models/UserPreferences.ts new file mode 100644 index 0000000..1d63c59 --- /dev/null +++ b/server/prisma/generated/client/models/UserPreferences.ts @@ -0,0 +1,1228 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `UserPreferences` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums.ts" +import type * as Prisma from "../internal/prismaNamespace.ts" + +/** + * Model UserPreferences + * + */ +export type UserPreferencesModel = runtime.Types.Result.DefaultSelection + +export type AggregateUserPreferences = { + _count: UserPreferencesCountAggregateOutputType | null + _min: UserPreferencesMinAggregateOutputType | null + _max: UserPreferencesMaxAggregateOutputType | null +} + +export type UserPreferencesMinAggregateOutputType = { + userId: string | null + toggleInputHotkey: string | null + toggleOutputHotkey: string | null +} + +export type UserPreferencesMaxAggregateOutputType = { + userId: string | null + toggleInputHotkey: string | null + toggleOutputHotkey: string | null +} + +export type UserPreferencesCountAggregateOutputType = { + userId: number + toggleInputHotkey: number + toggleOutputHotkey: number + _all: number +} + + +export type UserPreferencesMinAggregateInputType = { + userId?: true + toggleInputHotkey?: true + toggleOutputHotkey?: true +} + +export type UserPreferencesMaxAggregateInputType = { + userId?: true + toggleInputHotkey?: true + toggleOutputHotkey?: true +} + +export type UserPreferencesCountAggregateInputType = { + userId?: true + toggleInputHotkey?: true + toggleOutputHotkey?: true + _all?: true +} + +export type UserPreferencesAggregateArgs = { + /** + * Filter which UserPreferences to aggregate. + */ + where?: Prisma.UserPreferencesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserPreferences to fetch. + */ + orderBy?: Prisma.UserPreferencesOrderByWithRelationInput | Prisma.UserPreferencesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.UserPreferencesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserPreferences from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` UserPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned UserPreferences + **/ + _count?: true | UserPreferencesCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: UserPreferencesMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: UserPreferencesMaxAggregateInputType +} + +export type GetUserPreferencesAggregateType = { + [P in keyof T & keyof AggregateUserPreferences]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type UserPreferencesGroupByArgs = { + where?: Prisma.UserPreferencesWhereInput + orderBy?: Prisma.UserPreferencesOrderByWithAggregationInput | Prisma.UserPreferencesOrderByWithAggregationInput[] + by: Prisma.UserPreferencesScalarFieldEnum[] | Prisma.UserPreferencesScalarFieldEnum + having?: Prisma.UserPreferencesScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: UserPreferencesCountAggregateInputType | true + _min?: UserPreferencesMinAggregateInputType + _max?: UserPreferencesMaxAggregateInputType +} + +export type UserPreferencesGroupByOutputType = { + userId: string + toggleInputHotkey: string | null + toggleOutputHotkey: string | null + _count: UserPreferencesCountAggregateOutputType | null + _min: UserPreferencesMinAggregateOutputType | null + _max: UserPreferencesMaxAggregateOutputType | null +} + +type GetUserPreferencesGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof UserPreferencesGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type UserPreferencesWhereInput = { + AND?: Prisma.UserPreferencesWhereInput | Prisma.UserPreferencesWhereInput[] + OR?: Prisma.UserPreferencesWhereInput[] + NOT?: Prisma.UserPreferencesWhereInput | Prisma.UserPreferencesWhereInput[] + userId?: Prisma.StringFilter<"UserPreferences"> | string + toggleInputHotkey?: Prisma.StringNullableFilter<"UserPreferences"> | string | null + toggleOutputHotkey?: Prisma.StringNullableFilter<"UserPreferences"> | string | null + user?: Prisma.XOR +} + +export type UserPreferencesOrderByWithRelationInput = { + userId?: Prisma.SortOrder + toggleInputHotkey?: Prisma.SortOrderInput | Prisma.SortOrder + toggleOutputHotkey?: Prisma.SortOrderInput | Prisma.SortOrder + user?: Prisma.UserOrderByWithRelationInput +} + +export type UserPreferencesWhereUniqueInput = Prisma.AtLeast<{ + userId?: string + AND?: Prisma.UserPreferencesWhereInput | Prisma.UserPreferencesWhereInput[] + OR?: Prisma.UserPreferencesWhereInput[] + NOT?: Prisma.UserPreferencesWhereInput | Prisma.UserPreferencesWhereInput[] + toggleInputHotkey?: Prisma.StringNullableFilter<"UserPreferences"> | string | null + toggleOutputHotkey?: Prisma.StringNullableFilter<"UserPreferences"> | string | null + user?: Prisma.XOR +}, "userId"> + +export type UserPreferencesOrderByWithAggregationInput = { + userId?: Prisma.SortOrder + toggleInputHotkey?: Prisma.SortOrderInput | Prisma.SortOrder + toggleOutputHotkey?: Prisma.SortOrderInput | Prisma.SortOrder + _count?: Prisma.UserPreferencesCountOrderByAggregateInput + _max?: Prisma.UserPreferencesMaxOrderByAggregateInput + _min?: Prisma.UserPreferencesMinOrderByAggregateInput +} + +export type UserPreferencesScalarWhereWithAggregatesInput = { + AND?: Prisma.UserPreferencesScalarWhereWithAggregatesInput | Prisma.UserPreferencesScalarWhereWithAggregatesInput[] + OR?: Prisma.UserPreferencesScalarWhereWithAggregatesInput[] + NOT?: Prisma.UserPreferencesScalarWhereWithAggregatesInput | Prisma.UserPreferencesScalarWhereWithAggregatesInput[] + userId?: Prisma.StringWithAggregatesFilter<"UserPreferences"> | string + toggleInputHotkey?: Prisma.StringNullableWithAggregatesFilter<"UserPreferences"> | string | null + toggleOutputHotkey?: Prisma.StringNullableWithAggregatesFilter<"UserPreferences"> | string | null +} + +export type UserPreferencesCreateInput = { + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null + user: Prisma.UserCreateNestedOneWithoutUserPreferencesInput +} + +export type UserPreferencesUncheckedCreateInput = { + userId: string + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null +} + +export type UserPreferencesUpdateInput = { + toggleInputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + user?: Prisma.UserUpdateOneRequiredWithoutUserPreferencesNestedInput +} + +export type UserPreferencesUncheckedUpdateInput = { + userId?: Prisma.StringFieldUpdateOperationsInput | string + toggleInputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + +export type UserPreferencesCreateManyInput = { + userId: string + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null +} + +export type UserPreferencesUpdateManyMutationInput = { + toggleInputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + +export type UserPreferencesUncheckedUpdateManyInput = { + userId?: Prisma.StringFieldUpdateOperationsInput | string + toggleInputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + +export type UserPreferencesNullableScalarRelationFilter = { + is?: Prisma.UserPreferencesWhereInput | null + isNot?: Prisma.UserPreferencesWhereInput | null +} + +export type UserPreferencesCountOrderByAggregateInput = { + userId?: Prisma.SortOrder + toggleInputHotkey?: Prisma.SortOrder + toggleOutputHotkey?: Prisma.SortOrder +} + +export type UserPreferencesMaxOrderByAggregateInput = { + userId?: Prisma.SortOrder + toggleInputHotkey?: Prisma.SortOrder + toggleOutputHotkey?: Prisma.SortOrder +} + +export type UserPreferencesMinOrderByAggregateInput = { + userId?: Prisma.SortOrder + toggleInputHotkey?: Prisma.SortOrder + toggleOutputHotkey?: Prisma.SortOrder +} + +export type UserPreferencesCreateNestedOneWithoutUserInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserPreferencesCreateOrConnectWithoutUserInput + connect?: Prisma.UserPreferencesWhereUniqueInput +} + +export type UserPreferencesUncheckedCreateNestedOneWithoutUserInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserPreferencesCreateOrConnectWithoutUserInput + connect?: Prisma.UserPreferencesWhereUniqueInput +} + +export type UserPreferencesUpdateOneWithoutUserNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserPreferencesCreateOrConnectWithoutUserInput + upsert?: Prisma.UserPreferencesUpsertWithoutUserInput + disconnect?: Prisma.UserPreferencesWhereInput | boolean + delete?: Prisma.UserPreferencesWhereInput | boolean + connect?: Prisma.UserPreferencesWhereUniqueInput + update?: Prisma.XOR, Prisma.UserPreferencesUncheckedUpdateWithoutUserInput> +} + +export type UserPreferencesUncheckedUpdateOneWithoutUserNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserPreferencesCreateOrConnectWithoutUserInput + upsert?: Prisma.UserPreferencesUpsertWithoutUserInput + disconnect?: Prisma.UserPreferencesWhereInput | boolean + delete?: Prisma.UserPreferencesWhereInput | boolean + connect?: Prisma.UserPreferencesWhereUniqueInput + update?: Prisma.XOR, Prisma.UserPreferencesUncheckedUpdateWithoutUserInput> +} + +export type NullableStringFieldUpdateOperationsInput = { + set?: string | null +} + +export type UserPreferencesCreateWithoutUserInput = { + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null +} + +export type UserPreferencesUncheckedCreateWithoutUserInput = { + toggleInputHotkey?: string | null + toggleOutputHotkey?: string | null +} + +export type UserPreferencesCreateOrConnectWithoutUserInput = { + where: Prisma.UserPreferencesWhereUniqueInput + create: Prisma.XOR +} + +export type UserPreferencesUpsertWithoutUserInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.UserPreferencesWhereInput +} + +export type UserPreferencesUpdateToOneWithWhereWithoutUserInput = { + where?: Prisma.UserPreferencesWhereInput + data: Prisma.XOR +} + +export type UserPreferencesUpdateWithoutUserInput = { + toggleInputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + +export type UserPreferencesUncheckedUpdateWithoutUserInput = { + toggleInputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + toggleOutputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + + + +export type UserPreferencesSelect = runtime.Types.Extensions.GetSelect<{ + userId?: boolean + toggleInputHotkey?: boolean + toggleOutputHotkey?: boolean + user?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["userPreferences"]> + +export type UserPreferencesSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + userId?: boolean + toggleInputHotkey?: boolean + toggleOutputHotkey?: boolean + user?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["userPreferences"]> + +export type UserPreferencesSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + userId?: boolean + toggleInputHotkey?: boolean + toggleOutputHotkey?: boolean + user?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["userPreferences"]> + +export type UserPreferencesSelectScalar = { + userId?: boolean + toggleInputHotkey?: boolean + toggleOutputHotkey?: boolean +} + +export type UserPreferencesOmit = runtime.Types.Extensions.GetOmit<"userId" | "toggleInputHotkey" | "toggleOutputHotkey", ExtArgs["result"]["userPreferences"]> +export type UserPreferencesInclude = { + user?: boolean | Prisma.UserDefaultArgs +} +export type UserPreferencesIncludeCreateManyAndReturn = { + user?: boolean | Prisma.UserDefaultArgs +} +export type UserPreferencesIncludeUpdateManyAndReturn = { + user?: boolean | Prisma.UserDefaultArgs +} + +export type $UserPreferencesPayload = { + name: "UserPreferences" + objects: { + user: Prisma.$UserPayload + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + userId: string + toggleInputHotkey: string | null + toggleOutputHotkey: string | null + }, ExtArgs["result"]["userPreferences"]> + composites: {} +} + +export type UserPreferencesGetPayload = runtime.Types.Result.GetResult + +export type UserPreferencesCountArgs = + Omit & { + select?: UserPreferencesCountAggregateInputType | true + } + +export interface UserPreferencesDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['UserPreferences'], meta: { name: 'UserPreferences' } } + /** + * Find zero or one UserPreferences that matches the filter. + * @param {UserPreferencesFindUniqueArgs} args - Arguments to find a UserPreferences + * @example + * // Get one UserPreferences + * const userPreferences = await prisma.userPreferences.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__UserPreferencesClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one UserPreferences that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {UserPreferencesFindUniqueOrThrowArgs} args - Arguments to find a UserPreferences + * @example + * // Get one UserPreferences + * const userPreferences = await prisma.userPreferences.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__UserPreferencesClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first UserPreferences that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesFindFirstArgs} args - Arguments to find a UserPreferences + * @example + * // Get one UserPreferences + * const userPreferences = await prisma.userPreferences.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__UserPreferencesClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first UserPreferences that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesFindFirstOrThrowArgs} args - Arguments to find a UserPreferences + * @example + * // Get one UserPreferences + * const userPreferences = await prisma.userPreferences.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__UserPreferencesClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more UserPreferences that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all UserPreferences + * const userPreferences = await prisma.userPreferences.findMany() + * + * // Get first 10 UserPreferences + * const userPreferences = await prisma.userPreferences.findMany({ take: 10 }) + * + * // Only select the `userId` + * const userPreferencesWithUserIdOnly = await prisma.userPreferences.findMany({ select: { userId: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a UserPreferences. + * @param {UserPreferencesCreateArgs} args - Arguments to create a UserPreferences. + * @example + * // Create one UserPreferences + * const UserPreferences = await prisma.userPreferences.create({ + * data: { + * // ... data to create a UserPreferences + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__UserPreferencesClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many UserPreferences. + * @param {UserPreferencesCreateManyArgs} args - Arguments to create many UserPreferences. + * @example + * // Create many UserPreferences + * const userPreferences = await prisma.userPreferences.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many UserPreferences and returns the data saved in the database. + * @param {UserPreferencesCreateManyAndReturnArgs} args - Arguments to create many UserPreferences. + * @example + * // Create many UserPreferences + * const userPreferences = await prisma.userPreferences.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many UserPreferences and only return the `userId` + * const userPreferencesWithUserIdOnly = await prisma.userPreferences.createManyAndReturn({ + * select: { userId: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a UserPreferences. + * @param {UserPreferencesDeleteArgs} args - Arguments to delete one UserPreferences. + * @example + * // Delete one UserPreferences + * const UserPreferences = await prisma.userPreferences.delete({ + * where: { + * // ... filter to delete one UserPreferences + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__UserPreferencesClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one UserPreferences. + * @param {UserPreferencesUpdateArgs} args - Arguments to update one UserPreferences. + * @example + * // Update one UserPreferences + * const userPreferences = await prisma.userPreferences.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__UserPreferencesClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more UserPreferences. + * @param {UserPreferencesDeleteManyArgs} args - Arguments to filter UserPreferences to delete. + * @example + * // Delete a few UserPreferences + * const { count } = await prisma.userPreferences.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more UserPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many UserPreferences + * const userPreferences = await prisma.userPreferences.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more UserPreferences and returns the data updated in the database. + * @param {UserPreferencesUpdateManyAndReturnArgs} args - Arguments to update many UserPreferences. + * @example + * // Update many UserPreferences + * const userPreferences = await prisma.userPreferences.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more UserPreferences and only return the `userId` + * const userPreferencesWithUserIdOnly = await prisma.userPreferences.updateManyAndReturn({ + * select: { userId: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one UserPreferences. + * @param {UserPreferencesUpsertArgs} args - Arguments to update or create a UserPreferences. + * @example + * // Update or create a UserPreferences + * const userPreferences = await prisma.userPreferences.upsert({ + * create: { + * // ... data to create a UserPreferences + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the UserPreferences we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__UserPreferencesClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of UserPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesCountArgs} args - Arguments to filter UserPreferences to count. + * @example + * // Count the number of UserPreferences + * const count = await prisma.userPreferences.count({ + * where: { + * // ... the filter for the UserPreferences we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a UserPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by UserPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserPreferencesGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends UserPreferencesGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: UserPreferencesGroupByArgs['orderBy'] } + : { orderBy?: UserPreferencesGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetUserPreferencesGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the UserPreferences model + */ +readonly fields: UserPreferencesFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for UserPreferences. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__UserPreferencesClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + user = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the UserPreferences model + */ +export interface UserPreferencesFieldRefs { + readonly userId: Prisma.FieldRef<"UserPreferences", 'String'> + readonly toggleInputHotkey: Prisma.FieldRef<"UserPreferences", 'String'> + readonly toggleOutputHotkey: Prisma.FieldRef<"UserPreferences", 'String'> +} + + +// Custom InputTypes +/** + * UserPreferences findUnique + */ +export type UserPreferencesFindUniqueArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where: Prisma.UserPreferencesWhereUniqueInput +} + +/** + * UserPreferences findUniqueOrThrow + */ +export type UserPreferencesFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where: Prisma.UserPreferencesWhereUniqueInput +} + +/** + * UserPreferences findFirst + */ +export type UserPreferencesFindFirstArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where?: Prisma.UserPreferencesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserPreferences to fetch. + */ + orderBy?: Prisma.UserPreferencesOrderByWithRelationInput | Prisma.UserPreferencesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for UserPreferences. + */ + cursor?: Prisma.UserPreferencesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserPreferences from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` UserPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserPreferences. + */ + distinct?: Prisma.UserPreferencesScalarFieldEnum | Prisma.UserPreferencesScalarFieldEnum[] +} + +/** + * UserPreferences findFirstOrThrow + */ +export type UserPreferencesFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where?: Prisma.UserPreferencesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserPreferences to fetch. + */ + orderBy?: Prisma.UserPreferencesOrderByWithRelationInput | Prisma.UserPreferencesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for UserPreferences. + */ + cursor?: Prisma.UserPreferencesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserPreferences from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` UserPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserPreferences. + */ + distinct?: Prisma.UserPreferencesScalarFieldEnum | Prisma.UserPreferencesScalarFieldEnum[] +} + +/** + * UserPreferences findMany + */ +export type UserPreferencesFindManyArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + /** + * Filter, which UserPreferences to fetch. + */ + where?: Prisma.UserPreferencesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserPreferences to fetch. + */ + orderBy?: Prisma.UserPreferencesOrderByWithRelationInput | Prisma.UserPreferencesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing UserPreferences. + */ + cursor?: Prisma.UserPreferencesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserPreferences from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` UserPreferences. + */ + skip?: number + distinct?: Prisma.UserPreferencesScalarFieldEnum | Prisma.UserPreferencesScalarFieldEnum[] +} + +/** + * UserPreferences create + */ +export type UserPreferencesCreateArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + /** + * The data needed to create a UserPreferences. + */ + data: Prisma.XOR +} + +/** + * UserPreferences createMany + */ +export type UserPreferencesCreateManyArgs = { + /** + * The data used to create many UserPreferences. + */ + data: Prisma.UserPreferencesCreateManyInput | Prisma.UserPreferencesCreateManyInput[] +} + +/** + * UserPreferences createManyAndReturn + */ +export type UserPreferencesCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelectCreateManyAndReturn | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * The data used to create many UserPreferences. + */ + data: Prisma.UserPreferencesCreateManyInput | Prisma.UserPreferencesCreateManyInput[] + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesIncludeCreateManyAndReturn | null +} + +/** + * UserPreferences update + */ +export type UserPreferencesUpdateArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + /** + * The data needed to update a UserPreferences. + */ + data: Prisma.XOR + /** + * Choose, which UserPreferences to update. + */ + where: Prisma.UserPreferencesWhereUniqueInput +} + +/** + * UserPreferences updateMany + */ +export type UserPreferencesUpdateManyArgs = { + /** + * The data used to update UserPreferences. + */ + data: Prisma.XOR + /** + * Filter which UserPreferences to update + */ + where?: Prisma.UserPreferencesWhereInput + /** + * Limit how many UserPreferences to update. + */ + limit?: number +} + +/** + * UserPreferences updateManyAndReturn + */ +export type UserPreferencesUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * The data used to update UserPreferences. + */ + data: Prisma.XOR + /** + * Filter which UserPreferences to update + */ + where?: Prisma.UserPreferencesWhereInput + /** + * Limit how many UserPreferences to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesIncludeUpdateManyAndReturn | null +} + +/** + * UserPreferences upsert + */ +export type UserPreferencesUpsertArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + /** + * The filter to search for the UserPreferences to update in case it exists. + */ + where: Prisma.UserPreferencesWhereUniqueInput + /** + * In case the UserPreferences found by the `where` argument doesn't exist, create a new UserPreferences with this data. + */ + create: Prisma.XOR + /** + * In case the UserPreferences was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * UserPreferences delete + */ +export type UserPreferencesDeleteArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null + /** + * Filter which UserPreferences to delete. + */ + where: Prisma.UserPreferencesWhereUniqueInput +} + +/** + * UserPreferences deleteMany + */ +export type UserPreferencesDeleteManyArgs = { + /** + * Filter which UserPreferences to delete + */ + where?: Prisma.UserPreferencesWhereInput + /** + * Limit how many UserPreferences to delete. + */ + limit?: number +} + +/** + * UserPreferences without action + */ +export type UserPreferencesDefaultArgs = { + /** + * Select specific fields to fetch from the UserPreferences + */ + select?: Prisma.UserPreferencesSelect | null + /** + * Omit specific fields from the UserPreferences + */ + omit?: Prisma.UserPreferencesOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserPreferencesInclude | null +} diff --git a/server/prisma/generated/client/package.json b/server/prisma/generated/client/package.json new file mode 100644 index 0000000..6119dcc --- /dev/null +++ b/server/prisma/generated/client/package.json @@ -0,0 +1,144 @@ +{ + "name": "prisma-client-bc59e606b3f744a8b15c18a26f89a0eb5328cd0b7e5ee2c8265028eef68b0317", + "main": "index.js", + "types": "index.d.ts", + "browser": "default.js", + "exports": { + "./client": { + "require": { + "node": "./index.js", + "edge-light": "./edge.js", + "workerd": "./edge.js", + "worker": "./edge.js", + "browser": "./index-browser.js", + "default": "./index.js" + }, + "import": { + "node": "./index.js", + "edge-light": "./edge.js", + "workerd": "./edge.js", + "worker": "./edge.js", + "browser": "./index-browser.js", + "default": "./index.js" + }, + "default": "./index.js" + }, + "./package.json": "./package.json", + ".": { + "require": { + "node": "./index.js", + "edge-light": "./edge.js", + "workerd": "./edge.js", + "worker": "./edge.js", + "browser": "./index-browser.js", + "default": "./index.js" + }, + "import": { + "node": "./index.js", + "edge-light": "./edge.js", + "workerd": "./edge.js", + "worker": "./edge.js", + "browser": "./index-browser.js", + "default": "./index.js" + }, + "default": "./index.js" + }, + "./extension": { + "types": "./extension.d.ts", + "require": "./extension.js", + "import": "./extension.js", + "default": "./extension.js" + }, + "./index-browser": { + "types": "./index.d.ts", + "require": "./index-browser.js", + "import": "./index-browser.js", + "default": "./index-browser.js" + }, + "./index": { + "types": "./index.d.ts", + "require": "./index.js", + "import": "./index.js", + "default": "./index.js" + }, + "./edge": { + "types": "./edge.d.ts", + "require": "./edge.js", + "import": "./edge.js", + "default": "./edge.js" + }, + "./runtime/client": { + "types": "./runtime/client.d.ts", + "node": { + "require": "./runtime/client.js", + "default": "./runtime/client.js" + }, + "require": "./runtime/client.js", + "import": "./runtime/client.mjs", + "default": "./runtime/client.mjs" + }, + "./runtime/wasm-compiler-edge": { + "types": "./runtime/wasm-compiler-edge.d.ts", + "require": "./runtime/wasm-compiler-edge.js", + "import": "./runtime/wasm-compiler-edge.mjs", + "default": "./runtime/wasm-compiler-edge.mjs" + }, + "./runtime/index-browser": { + "types": "./runtime/index-browser.d.ts", + "require": "./runtime/index-browser.js", + "import": "./runtime/index-browser.mjs", + "default": "./runtime/index-browser.mjs" + }, + "./generator-build": { + "require": "./generator-build/index.js", + "import": "./generator-build/index.js", + "default": "./generator-build/index.js" + }, + "./sql": { + "require": { + "types": "./sql.d.ts", + "node": "./sql.js", + "default": "./sql.js" + }, + "import": { + "types": "./sql.d.ts", + "node": "./sql.mjs", + "default": "./sql.mjs" + }, + "default": "./sql.js" + }, + "./*": "./*" + }, + "version": "7.2.0", + "sideEffects": false, + "dependencies": { + "@prisma/client-runtime-utils": "7.2.0" + }, + "imports": { + "#wasm-compiler-loader": { + "edge-light": "./wasm-edge-light-loader.mjs", + "workerd": "./wasm-worker-loader.mjs", + "worker": "./wasm-worker-loader.mjs", + "default": "./wasm-worker-loader.mjs" + }, + "#main-entry-point": { + "require": { + "node": "./index.js", + "edge-light": "./edge.js", + "workerd": "./edge.js", + "worker": "./edge.js", + "browser": "./index-browser.js", + "default": "./index.js" + }, + "import": { + "node": "./index.js", + "edge-light": "./edge.js", + "workerd": "./edge.js", + "worker": "./edge.js", + "browser": "./index-browser.js", + "default": "./index.js" + }, + "default": "./index.js" + } + } +} \ No newline at end of file diff --git a/server/prisma/generated/client/query_compiler_bg.js b/server/prisma/generated/client/query_compiler_bg.js new file mode 100644 index 0000000..37aca08 --- /dev/null +++ b/server/prisma/generated/client/query_compiler_bg.js @@ -0,0 +1,2 @@ +"use strict";var h=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var D=(e,t)=>{for(var n in t)h(e,n,{get:t[n],enumerable:!0})},O=(e,t,n,_)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of M(t))!j.call(e,r)&&r!==n&&h(e,r,{get:()=>t[r],enumerable:!(_=T(t,r))||_.enumerable});return e};var B=e=>O(h({},"__esModule",{value:!0}),e);var xe={};D(xe,{QueryCompiler:()=>F,__wbg_Error_e83987f665cf5504:()=>q,__wbg_Number_bb48ca12f395cd08:()=>C,__wbg_String_8f0eb39a4a4c2f66:()=>k,__wbg___wbindgen_boolean_get_6d5a1ee65bab5f68:()=>W,__wbg___wbindgen_debug_string_df47ffb5e35e6763:()=>V,__wbg___wbindgen_in_bb933bd9e1b3bc0f:()=>z,__wbg___wbindgen_is_object_c818261d21f283a4:()=>L,__wbg___wbindgen_is_string_fbb76cb2940daafd:()=>P,__wbg___wbindgen_is_undefined_2d472862bd29a478:()=>Q,__wbg___wbindgen_jsval_loose_eq_b664b38a2f582147:()=>Y,__wbg___wbindgen_number_get_a20bf9b85341449d:()=>G,__wbg___wbindgen_string_get_e4f06c90489ad01b:()=>J,__wbg___wbindgen_throw_b855445ff6a94295:()=>X,__wbg_entries_e171b586f8f6bdbf:()=>H,__wbg_getTime_14776bfb48a1bff9:()=>K,__wbg_get_7bed016f185add81:()=>Z,__wbg_get_with_ref_key_1dc361bd10053bfe:()=>v,__wbg_instanceof_ArrayBuffer_70beb1189ca63b38:()=>ee,__wbg_instanceof_Uint8Array_20c8e73002f7af98:()=>te,__wbg_isSafeInteger_d216eda7911dde36:()=>ne,__wbg_length_69bca3cb64fc8748:()=>re,__wbg_length_cdd215e10d9dd507:()=>_e,__wbg_new_0_f9740686d739025c:()=>oe,__wbg_new_1acc0b6eea89d040:()=>ce,__wbg_new_5a79be3ab53b8aa5:()=>ie,__wbg_new_68651c719dcda04e:()=>se,__wbg_new_e17d9f43105b08be:()=>ue,__wbg_prototypesetcall_2a6620b6922694b2:()=>fe,__wbg_set_3f1d0b984ed272ed:()=>be,__wbg_set_907fb406c34a251d:()=>de,__wbg_set_c213c871859d6500:()=>ae,__wbg_set_message_82ae475bb413aa5c:()=>ge,__wbg_set_wasm:()=>N,__wbindgen_cast_2241b6af4c4b2941:()=>le,__wbindgen_cast_4625c577ab2ec9ee:()=>we,__wbindgen_cast_9ae0607507abb057:()=>pe,__wbindgen_cast_d6cd19b81560fd6e:()=>ye,__wbindgen_init_externref_table:()=>me});module.exports=B(xe);var A=()=>{};A.prototype=A;let o;function N(e){o=e}let p=null;function a(){return(p===null||p.byteLength===0)&&(p=new Uint8Array(o.memory.buffer)),p}let y=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});y.decode();const U=2146435072;let S=0;function R(e,t){return S+=t,S>=U&&(y=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),y.decode(),S=t),y.decode(a().subarray(e,e+t))}function m(e,t){return e=e>>>0,R(e,t)}let f=0;const g=new TextEncoder;"encodeInto"in g||(g.encodeInto=function(e,t){const n=g.encode(e);return t.set(n),{read:e.length,written:n.length}});function l(e,t,n){if(n===void 0){const i=g.encode(e),d=t(i.length,1)>>>0;return a().subarray(d,d+i.length).set(i),f=i.length,d}let _=e.length,r=t(_,1)>>>0;const s=a();let c=0;for(;c<_;c++){const i=e.charCodeAt(c);if(i>127)break;s[r+c]=i}if(c!==_){c!==0&&(e=e.slice(c)),r=n(r,_,_=c+e.length*3,1)>>>0;const i=a().subarray(r+c,r+_),d=g.encodeInto(e,i);c+=d.written,r=n(r,_,c,1)>>>0}return f=c,r}let b=null;function u(){return(b===null||b.buffer.detached===!0||b.buffer.detached===void 0&&b.buffer!==o.memory.buffer)&&(b=new DataView(o.memory.buffer)),b}function x(e){return e==null}function I(e){const t=typeof e;if(t=="number"||t=="boolean"||e==null)return`${e}`;if(t=="string")return`"${e}"`;if(t=="symbol"){const r=e.description;return r==null?"Symbol":`Symbol(${r})`}if(t=="function"){const r=e.name;return typeof r=="string"&&r.length>0?`Function(${r})`:"Function"}if(Array.isArray(e)){const r=e.length;let s="[";r>0&&(s+=I(e[0]));for(let c=1;c1)_=n[1];else return toString.call(e);if(_=="Object")try{return"Object("+JSON.stringify(e)+")"}catch{return"Object"}return e instanceof Error?`${e.name}: ${e.message} +${e.stack}`:_}function $(e,t){return e=e>>>0,a().subarray(e/1,e/1+t)}function w(e){const t=o.__wbindgen_externrefs.get(e);return o.__externref_table_dealloc(e),t}const E=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>o.__wbg_querycompiler_free(e>>>0,1));class F{__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,E.unregister(this),t}free(){const t=this.__destroy_into_raw();o.__wbg_querycompiler_free(t,0)}compileBatch(t){const n=l(t,o.__wbindgen_malloc,o.__wbindgen_realloc),_=f,r=o.querycompiler_compileBatch(this.__wbg_ptr,n,_);if(r[2])throw w(r[1]);return w(r[0])}constructor(t){const n=o.querycompiler_new(t);if(n[2])throw w(n[1]);return this.__wbg_ptr=n[0]>>>0,E.register(this,this.__wbg_ptr,this),this}compile(t){const n=l(t,o.__wbindgen_malloc,o.__wbindgen_realloc),_=f,r=o.querycompiler_compile(this.__wbg_ptr,n,_);if(r[2])throw w(r[1]);return w(r[0])}}Symbol.dispose&&(F.prototype[Symbol.dispose]=F.prototype.free);function q(e,t){return Error(m(e,t))}function C(e){return Number(e)}function k(e,t){const n=String(t),_=l(n,o.__wbindgen_malloc,o.__wbindgen_realloc),r=f;u().setInt32(e+4*1,r,!0),u().setInt32(e+4*0,_,!0)}function W(e){const t=e,n=typeof t=="boolean"?t:void 0;return x(n)?16777215:n?1:0}function V(e,t){const n=I(t),_=l(n,o.__wbindgen_malloc,o.__wbindgen_realloc),r=f;u().setInt32(e+4*1,r,!0),u().setInt32(e+4*0,_,!0)}function z(e,t){return e in t}function L(e){const t=e;return typeof t=="object"&&t!==null}function P(e){return typeof e=="string"}function Q(e){return e===void 0}function Y(e,t){return e==t}function G(e,t){const n=t,_=typeof n=="number"?n:void 0;u().setFloat64(e+8*1,x(_)?0:_,!0),u().setInt32(e+4*0,!x(_),!0)}function J(e,t){const n=t,_=typeof n=="string"?n:void 0;var r=x(_)?0:l(_,o.__wbindgen_malloc,o.__wbindgen_realloc),s=f;u().setInt32(e+4*1,s,!0),u().setInt32(e+4*0,r,!0)}function X(e,t){throw new Error(m(e,t))}function H(e){return Object.entries(e)}function K(e){return e.getTime()}function Z(e,t){return e[t>>>0]}function v(e,t){return e[t]}function ee(e){let t;try{t=e instanceof ArrayBuffer}catch{t=!1}return t}function te(e){let t;try{t=e instanceof Uint8Array}catch{t=!1}return t}function ne(e){return Number.isSafeInteger(e)}function re(e){return e.length}function _e(e){return e.length}function oe(){return new Date}function ce(){return new Object}function ie(e){return new Uint8Array(e)}function se(){return new Map}function ue(){return new Array}function fe(e,t,n){Uint8Array.prototype.set.call($(e,t),n)}function be(e,t,n){e[t]=n}function de(e,t,n){return e.set(t,n)}function ae(e,t,n){e[t>>>0]=n}function ge(e,t){global.PRISMA_WASM_PANIC_REGISTRY.set_message(m(e,t))}function le(e,t){return m(e,t)}function we(e){return BigInt.asUintN(64,e)}function pe(e){return e}function ye(e){return e}function me(){const e=o.__wbindgen_externrefs,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}0&&(module.exports={QueryCompiler,__wbg_Error_e83987f665cf5504,__wbg_Number_bb48ca12f395cd08,__wbg_String_8f0eb39a4a4c2f66,__wbg___wbindgen_boolean_get_6d5a1ee65bab5f68,__wbg___wbindgen_debug_string_df47ffb5e35e6763,__wbg___wbindgen_in_bb933bd9e1b3bc0f,__wbg___wbindgen_is_object_c818261d21f283a4,__wbg___wbindgen_is_string_fbb76cb2940daafd,__wbg___wbindgen_is_undefined_2d472862bd29a478,__wbg___wbindgen_jsval_loose_eq_b664b38a2f582147,__wbg___wbindgen_number_get_a20bf9b85341449d,__wbg___wbindgen_string_get_e4f06c90489ad01b,__wbg___wbindgen_throw_b855445ff6a94295,__wbg_entries_e171b586f8f6bdbf,__wbg_getTime_14776bfb48a1bff9,__wbg_get_7bed016f185add81,__wbg_get_with_ref_key_1dc361bd10053bfe,__wbg_instanceof_ArrayBuffer_70beb1189ca63b38,__wbg_instanceof_Uint8Array_20c8e73002f7af98,__wbg_isSafeInteger_d216eda7911dde36,__wbg_length_69bca3cb64fc8748,__wbg_length_cdd215e10d9dd507,__wbg_new_0_f9740686d739025c,__wbg_new_1acc0b6eea89d040,__wbg_new_5a79be3ab53b8aa5,__wbg_new_68651c719dcda04e,__wbg_new_e17d9f43105b08be,__wbg_prototypesetcall_2a6620b6922694b2,__wbg_set_3f1d0b984ed272ed,__wbg_set_907fb406c34a251d,__wbg_set_c213c871859d6500,__wbg_set_message_82ae475bb413aa5c,__wbg_set_wasm,__wbindgen_cast_2241b6af4c4b2941,__wbindgen_cast_4625c577ab2ec9ee,__wbindgen_cast_9ae0607507abb057,__wbindgen_cast_d6cd19b81560fd6e,__wbindgen_init_externref_table}); diff --git a/server/prisma/generated/client/query_compiler_bg.wasm b/server/prisma/generated/client/query_compiler_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..0b67901ffeb5ba9799f51c389f7ce467d5ce8c61 GIT binary patch literal 1747444 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

GaNT@ zM3Z6{7=C1FiCgr~ZP9%ehi>Lbl_P?K#GW5-C0ssV(3;bNo8U_~>&VhC`>~~Gxyf>A zcaC?~b39HP;){nkuA>dUqFvi&x!k~!^_#ca^2|b_wVBL@7PR;^nVeCyMU+7Dy(odK zJykixF>z~{AZ{E0XSABH4PE5oBjVmXe1JuhiZd6KABo#Si?8Cp6rAX-uRL4xOLI-t zlVcfiW#xidL6)M%wLB)QJm_8WsT(~xkGk=}G)GZMkh(Fo{KkiLL(59jCw{N%#)W%q zjm>vGYB#>D8&#iTsjq!a*OoE~K)CLtP^y+-#VvfDl*~arPo+7ozoX3dVO>}4`rUee zNZ0IC%I_!jyIr%Z64#&C^@x6_o+j5{*LAFGDeWwQJq|x{N55gq2spL1Ke~lTJSn3R zhi8RA^ECH3uW~vg19QUMGcX)d{z$=8D9P*oC7)z@ceFDp$6sT=Q?SHUA83w2f;{_t zy>U+`7b9({#*d-Cyfq2N!G5>rO85$L@$;zkh|(&&(d6-7w!3CQN=4qFwCGUD5o~7t zawaiRRw>to6XPyAml`H?Qyr_w%GlQFhCrbKQ4V%xH!AUG^5Og0a>yDl0G6xxJ{%Dl zr0xgx9g(&ZvW(Nkhe6FegHOo@gp%%C`)JNDPJxp-V%TB?xb5)gx#>W>&NR#K^C zi17k@kn|!(_r%Z$c-@N*KbUXdCK+^$ zP|WqgkK7F)(80b5p$49U*hcNJ_aXfbJ<>kFzarah%& z>eZf7At~9KDs30jo+{~6rad*bDylyuYq~}$AcHGq0Fg4CEVzWB97g_4RpwMJ1rZgq@y;du$`)xouvfTF zDtdtJLWT0=24B+{76=IO8asQXx`4UJ2;&9Sz>ET0^v~SkZ@24{IuhfXDK~zk!(qDn z?KPC1vDx>!#xJ_im`p>N#3dxP8!bNm4j!DbXj0`y46TYXS_SZcT}ObD>hh&-1$W49 zcyz;LU5OzXe&L8AF;ytnjcQY@c@#(>9{vi|P9-)l>Y0{X+qie-pA<40QUbOKeeViB z{c2!37Clq;?BrNkkYV#t0i=VI9tS%(Nuj!4oV;rVPO|Ot4*(~nksB-xCr@1+PV$=A zQ9#0eIC%n~h@VUgZDhFW2u@BF8#^wC&v$If>%|p45PB>YsR5ZSdtJVJ^FIT6oFh)s zOOKyP8ao--^{2&T|w!p4Jh1WC7&% ze+D?YKs2%!CqJ9mz^*?|_WksomxGfY2RkxCWp;b?me<@6GUBsWhm*W^37kBqARaim zsQ4T>c~(bolF}@<-vBbgcr{8#uV?A{%LofNd#}x2qIc2I=K<_uoLoh>xvRq%R2D7Dyz0COhstK!1ilE8k$#^=<2^w9;}Se;mdl4esdG%Ny7l;c{Bcy+%K zvksN8v!9~NAMw#kk9e{(;$xRPVz!?)E@&fOCYx=Jmw8n11NEJEd@45YwiiyWJsjqJ zSo5xOhjO8X+4pr!?@@WWdNUM-u{0VdKpv(m4 zAUmH3>6ItVuSCn-E<<)4wnB)`EO(F{Ovxfnn}RD}ZmHl{vrwSbJr5qX?&vHZ0A?$K z#KZ!#AaUyEToEL`WGs*#haj<0*0g&zBnvWV!P$lz@prWOYFhX9 zk`vQq%U#P(OkYtaFn%mhe1lm#Y_V+b+i~lxeIje+IoVX`-WYzgh)PQMTkJJNgeAPSqCo1|D>I?k1mz?;={U^F`&M=49P1x zpuSx)Z`N`!^qZl+5!qCier0B;ZM;{Hy&aY!O&-4 znHlQaC0mPkIVjiHnQnzCUak@~8L!tNG|(KYhI8%S>&I?vzcxKvZ5w z#Wt=YWz(tv<0azj-A-m)?cC{hF%w$gPM@Sb0t=B_&?ZWzDbW`^i6^p!8?5-cs7H~d zg_)}tPJs|#P39yAl>z0@XtCQs`cF5i_^>S*kkZ?ut!?BdZhW9ARbV+iE3(ix)s&3c z3#FQ}hQYu)5bKCb7_iLmh|cK?Y5@rccykzcT{?qHjG3KQ&k1DuvklQnUaLyQJ=ZEly)5E zBpF_*nDv_zzP0ir{g^?&mu(H~E5_XV^oYI7k|MjSWb3XV8f}u9LcL#zq>FCgAl1E1 zWLi}#e6746IKb6RO;O(oVKl?FNYX*VGJZWB>DlCvhYP=Yc1k-3`iDEK-I!Z#lV!zF zbd<}ComuwepdkhA^{EPL`0L={*Ve0QD?zjsgMkBH=4cvhgwn4Cgu>;vK$(zQpFSWt zFSiBcU%wVmCN8%H)^Yc10sZQ7TR>#>YXOz>a$A78_iF(y{Bm1h>3H9{U_+6MEEwy; zP0{H@jg`}2*fJF*XS;Gy>wxl}EGgHj-@~96R$MDe8UBTiwqmt=*VYR?c(MD|$TM0d ztDQ*FHN3y08)2&xt&7dp1vf|Sg=61f-L2*Rue0kZUDvcWV69z$H2ZyxU1!UPo2&iv z=?4kFs{L#cadX73vo*xcVY_~xp0~9JR88Ue&Q>f#cAYIGMupJtopr>1op5IzanXM7 ztRwd8e*gZTSean$`*p!D>e{w)@#}^sUP`b1y5a-bwO@C9FulINX)D+ZVl=ioJmn#_ z^4qf`)`Ksok~(C-Q>(%gF8=_VZ4|U1yu*=*?AePeTVs*D_>e29ycjR!wK|98^0Zk> z)^-+~6tuZ5D{a&U(@H$>wBJ2!q$DF{9N2 zIor}K*`!bSwK{c9DSe!!V2tvqtg^M$Cn<$g36|PZ%cY=34CSexP>_alR7VJABCnja zS8~Mbe()o{J(GBv0H*>0D{x085y%UHEp$z}Ey(gSmPPdiy-CBXQqY8#&rW9^Q(W^J zGj%hH_xQ&o$=m-U1_>;i_rte$kO1Hamys7`~YwU^bCt`*@I>j^Z@ej{w3 z3PC~TMo^`6O?WA3B}rHfevye$Z9Ah4l13)-=oEf6csjLL%2<5mi5|wnDokH!L#QU; zlsb$GXY$vzgB5!1f{s#l_T)$wHsqATq-sTsY%#EmvtgtQ#TFx{?pLWD3Q5T{TgQe) ze(Pf!u{Ny>$x?N{-J@{>K4v3^3mgMjO`uj-@Rmb)X8neEp_ZL(aZ zq7OgsYvIjID*CGRmAn*k#QbiamN-LALY2tO7IVS4sN_I0nnN83n=B0|QAc0e$9~7! z$=7yW^}`2HWmW1aYop#mnwn)Dw~nfpq2n;;{WS8k8jn)vuHoeQ)&iecHhE~OH`?T> zyVrg4v@oA(ydIN>|N9zFo^S1kX7beC>ppo9|Mi+YA_doQ@_cJQG?S<9UiZnP4%YRW zJXU5fc|SDZR(G#ExREc{3*1!3!c`KZX_gd590+N$13pc*O|GlolD92|U)7Gnb*f&O z%ne!G@_72R@3K$(rq-4htfYHavxktHyP4yV<19g{TyN6=&;+Cb=o$@xn4LFe&@ddv zdr%>~#WRpJgDrwmKzYX^^|aAnG?tL^+f$%;Bq8ZH7&F?1(T~L&H&ie~$ZKCkZ`|-P zuBAdQ6;p%9KC-|^Cb3$4j(9q{)WB)*13BWhZ!z;#R*txUs>v%W9lR3SFDpx&Bx2h@ z5xtV$7gQVp_yHOvSzNPW4`0(^TcY^&8a7!U1#K%1Dst=q-X=qq1sIS`kS46M5(Ai= zZVbRgraG5QWs<(*dg)U(>A!iHfcXwr<~e4m-|uZykqNF zR?&rcP@HUJ*7CVs`5fCZrnBa+4bs+0&BW_ptVxLvJZJ!tTcxtPWxtV6*|Bv;HGN2q z`-gcJR`lRy&Q8~iT##W7U9_{AQ0wXJlRsxX^BVV;>;OygEOojqk6==gx9`G}dwC8A zap-GcTpOQb=K7-9540!7dd~M@J>HMj%X;K)>%)4M37;O;qeAIcn*+C-giz~t&~g~; zWMf=lc^$v3V%ICaJfbg?Hh3`%Ns*OemmM#G*_{`1NgXbBFEmLN@E-Te2z|-?03$&f zU&JM4^KwJ<1bQ;z9Y}BRbjJ!S&L#`{;=dmtfs1p5 z9)H1t^c|}PfA#JD!$5<~l^cF`4W>85?2@>2?PuZqKx6IoX!pAV+Q0LLpIw9L4KcgM zW3M%hF$-jETo(zFjyzJEmQ1b{B30eaK*XL-fSt z<0bT?c4}99$3S(ZS-4C$>siHKODI`x5lXBF_6rGG$&hxFFvE}ALl)hXbhZnu5E6du zqM4Z_sVf1&4&nejcbgd`1$WdG%T6Z`bKS>#aZrv0b{wuMmE@92;maHJzzsEMZOE)0 zT5ou|Fl@Xb=mP!je<~Egk62ZL)O8+o^@gGgc2l;!hHrSfFl@Xb=)yGa>nbm9EEHio z->P;8yUuh`xuNKSow=*phw+A|3&X}6f-bNa|EEF`{JT}{Sb3cXUB02{f+U`5gXJOx zHy_DInZ+&K0@v*Mkp|FGpVS=rrYN0OR9M8saspFb%|kWE#!0g^wZ}$0)bEaz!l&Ij zeXPVTNcu}7T$a=~fs;!~eT!X*tZtA`H23qT@yJG3+CNy#=W)N`lH!?L2D@YZVR!UmusfQy$7V;{3P%lg+LAMa-AytndSJ)mUW47#6~J!(!mv{p zUc3P8*oaARGE_<7q2^t1#zZQyM!8Qy#p#kep81h05yv|Lnbclw4PR=X>hZ zv#YA5BdJ>t%a2oK0WGkw3C4DepE{5I`0d|&|MqX+#1l}*vg$DaE$lip5$UZOU&8%-S-zFFbrK+KX|$w} z?487+C`LXzV;lUo_-IxnE5GAZQLVW!ZOLU+zDplZmk6r0O2q_+b(G&QU1F!-u*71N z4rlGXP^^oM9oG8ubv!~u+@;f(hV95MSFz6G(-2`Q5fab@wf*Lxz)~qf?nSO z<#bgi^}YMe@xOVfrGxtB2i-w^9BgNGz7dwjRi%5)4KdwKDPE^SH{x5&6H14zMK--$_ByC%eXwtp`5Rzoa50?P)-l*?c73np5H%0d4zgzr6l8I z=LX72^6ByEtGGPX*xUJ0%HQXe7gN52@>^Ko?e&I>`3&W&b94kNXrep{7sPX zwIh)o1zb+o-5kwIa=qck@{G#Y-&p1d*Rsy~;8a$o9I>SGO*fXORI>cLpmNYlJoX{Y z>-QTubzLO~Zk$rdi6nDuYgF_1s`-wZ*ZGeBK=c15Z~p3=qcI7~9mH;_d>*k|D*x?` zud4ia zY?`fbmNsJkC+XfS~us9Em5Y-Cfyx z=l#YdDXg2*UD>0$VLOZ1lf&YLS@Vj;BXE-1=5(CLM-pcu&uiul7J=WQvg$yGx2Mz7H52X#7aHVU7+!K-S6 z+;qzOG$-2FGygfiCYN)feH#y4|r;+$T-JQU>zuqb3q!mca zN_t*O+jmqRqMsJWZ%hw%+}1AXS~V>()BEeL?&M1_-4UAV5NtLQFV#9&KDxTVNh4V! zTPP*(la5E{Nj8PBJo~+N??l za0U}bdlj^wVWD&n=YN)WbEuz9pg>j1ZZbvkIxRbt2p06q5ZB2}C=oB1|Hg(WAsWN) zw6rtcD$A_8CsrQQs*DV}JKA=?_`IBrwS$gXRsE>7?I6CYic)l}@?^=nP^E+Pj~#V4 z?d#Olv%Q^CJ5pkWSMduy@s_Z#0Vqn@Y^1u}!Ss&21Tng`+YYutpXN0X6)LHBNl%(Q z1-YUA*SqV;0?^&aF`OKsO0RjA#>wy4JnV0DTaKmL#tslbCrk0!SVL3A>8cGoauycP z*UU)~|ENEk;lT~Lc0S40@M?N%QEK06Qk(N>sBEg)(E*DAOJ_L0-D+^(w^HN}M%;kF z{3C*I&u)WvE_x(BNL4u!bHtM|*h!VlzuEyqn%U4jU5+~kLkMQa5tCmU`UUo4jpECh;wTe?|Sh zMg1+Ib$EoaUL8@Th8ahw`5T;VD_M!h0KrQjp8gCaU$HrZpgCo@5ftX>lW#x^>?~}C9fdZ3;?5e0RF(bYbI=^x6b30s(_A*R!%buw(VLEY%-Ji< zY?zkaPpcU_uRmhD!^az8sEps=U_y_E{}PfU zEV;7F&~>9#o_buIZZF5hWjF|_ld9V@G}rIrIde4fI@)&qcAc=10VVg1>n^zkXb>h_9IhDf zsQF(Y2a-|q_h8*@3<)TlqMuQ;IYr(S?J3IagsbSs z@``rf5PeJ!&}Wjr9hM=HzUeW-g%!iQvpiPX6aC~M1T!4SBtkhWzgD-ZU`(8RbfXw2 zy5!#M)ERWfxkv}`MNU(Q!m-rajDfQ(`D;sJVU)wS?>Eh8aiBv7(3A#@Ln@ySzm^8N zaq@PKc;|sVUMis}0CJ*DXG`~V@tBg=WSQ}SE;I!MvJrHjQoI}OC#Gw%{P)DKMGcZ- z0_Gb##v{hnPw^Bx^rzwD#s$Qvq<*A7Ex9IR`>ko77wD;@~ zyhY}o>FVW797;c>uY(8e?wd^~f1xU$AaRiHj<1?r?z~CwPnR989W6`M z+l5ivS*LQL+}Wt-XUkIg&>YJ`ww)NO9XuK%7^@v57Mrfi9Z)h|pMxgtSceUUFS5I` zYSPs1${5;(<=VMg-|nw;cBmY!be^ZWm&%=gtKa9#o#(4uEO%aDeX4ZO{C8oRcDCt0 znG}$|K+$i9p7z_LC;hhQL%0L#Hz84wm=7Bn5~$C`ruu4ugJ zU_Q|leUHS4n(8kbl9~>-(u{TgNYl;9bW`Jyofk0n6Rm)j_`OkBCk0~On1qUg?fJgC z;i|J7UzomLSk?mFnxI}4v}}NqZxp42x^Dn&$uIg=TiKzaNDcfAol~W1V8LIjfq8cw zsevz5^_|qsJ$iMaDmI$wa^5cY04CM6V38~+RZkWm?*#47cC^RVZm zfv*NW8~AR4m!z*r{`SiBXG|Ilra$u-y1o|qik!Q^6MIa&z%&Ej?e%B%{sw*<_-~IN zJN_K_b>QE?)A)Y+&%%j&v#}PG)|#cYpnY);ZeF*a%(cfG4b8@kM-`{TIG!`N@KG$& z3A|f4cMoUqXK~GLBWvtqry7}jvlw50jITfF9p^C$-BLNP9tSC`s`RGgG}kgHO$=e4B_FNIFpw*0PwlmMM`lZ=1CHQ# z$3-^lTx28hi0j5RxDRj!nI4pt)FrLD%*r-}N1jj#FU9JnIWu2atq7)0cFgWzbDC2I zrHXdr$trqs4NWm{QMm&@N-uX}!0)NO#+(Ak1RN=D*;t-|QZjBV<-|aTl{~yy#(sI= zdPdD!!|1xMEmQlPw-JrSds*-rg#M{FGv;M+1|M3`X?S_?_Bij0Kz3GfHb}=-usCfk zJbk&L$GGJ9&2~92IsNj$7vE_Q!mls!Y*%!;<e-f4I8L-2*k@W! zz|XfF`#;-q?0=!<*#G&KQ}31}Z?PnBP5dJls%jirWqv6*<2xJhc+C;_=b5ijb&&gC zLa;uf6r1br%bIskHePZ6V7Xnv3*b)s?pB;NQAuBB9wr?mg=gty*c{&DRFTW^W!!Yo z1UCk)Eah-Yy9>>Rt5!n7mSKP?0V6c;OF*Li(lF* z&;)PSbF|#Is6@-f-Z4K05S9Ic9RrF3tVKrI8B5{M0`AAW~u7%S5Woj3(KL^{QcjTWRAqjcUMPr8OBa0JN?arKa=dAT^1mDW&GorHXv+ zIj4{n6qD!9gTh3M9jk#urmN2kxVdMf+_7cwsDrz=MRr&7gQJTgHoPkz4{A>Css~me z*LCiwG2gWYWg?5e`oQp-g;2r*QinSxM{|Uc+W?oA z(T1S{-}SH)Q9}zJB}MW*Bs2!#M5Hb8coF&bf%J{0bliBZ3D5bojoIv5L6N)T)fVilpj z0V1U*LImUhYt5~KfL}JQA4j{njd8t&aY<*mU20MlCE^aLM{4`+1x4UMQ4!!eR|I$m zJMc%7k6)Iyx~32Gn@Rs$ACQBqrw^=dK6!_h0TL`Inm%_WAGyK>iUylvnLkvtT}r+M z1sZcUhai+_jzFWto?kRuFxsDJhDGdhHg9*v3wKW2ow3553wCGuf+F&OWeTx%G^yG8rC9aY-@FgdTVvWFW6e0 z0!>YY7DDGsbZ}HOQ|^0qChpl=mJ=vY?*Roq)Pj0%o%-j|RfDnrOpW=1zu=$U$=WmR zSI5C;q^n9EZ9tQ;NR~Hg>0!XRBbzW2G0S!ElMV0^MFGksxe11|9fmUqW8K)f%0k4& zW}fW1I-{?1?O028rnSsb4-QJP5wi)-PbS&fbiu}hd0vX`W=>OMRf@Eh;9co2hSGAP z8f!a^=eby9a8d^b`yDPXAhi%@7-en8bTtzFQUu&{gW$oN7QAc0+x8qIdTQ#b#Z&d% zSz(nRtQz!I5k_rQA*?b4)2+7}Fk!0$_&NP*!K637!fHZTU2p^t2x6ttR^Y#T%6lRb zK$q^@-g&(g1+RCZkAghlNpH;@+OGz8#T{m3<9e)iMl>~ttDT)HC#zb@d1g}-9H+sN z_;gbf9EHJg2wgmjg`NQ10Bq39fZv;pfA%8s?I%hx{C5>-h7*FBhMDWe*7vR6{w@N(7#rG0QK>GWt39aU;2&L$X`!zy(Ar) zcizK0-*neJ4^anv7D5qtn#Ub1AvbrYQJUNwr4&DPV|gpZ!0)Cn{M|k2FYLduobVG> zv`taVo+{m!uFo0|+^_S?*_(88q;ENJ{uT=SJ~vVPwDt>-zx;;y8VVBFjZiQu*62HF z#DcN<_)0Am+3npoL>aeFM0Vd+;{9@YScMn!ogXC7nmrvq#x>!Wxf}RdfMgty-0dLs zPC&BHE(y=PA;xZ1-vp@t;O+{154yX8+0VMWg4w-bQx1(z31RaT|E+%{-C%Ho1<0C> zTK~_Uc-=!4#fC3#+t-bEM0`gKR9m4wL-I$+e*<)`7l>|3KC;;q9_22qB!9Wp-U6TW zR;R3x^fK%5{GhbB72f*%wr*J;#o6R$h2pe%oP3SLHDDr}=~?6g;4AlM*I3YvgLRyp z*&MvB1TO51Pi?+YvlzVDnn|=RW_iz6;u^6Zihdz~y{ga1J(Fq`b(6=~ewKkS%O#!43M8-)-EWB>MvE0yurl9BMqYucMtK=l9Dgk%!hTU;<>&O6UF!(aM|-dU8rSCF8GrZ(QUh%uO`GVY}ix#DNSm+0T75eEttVjak3Ir8Zfe*R4ks-o};!E*H0=3omk$YoQA4Zc!)eETF?w zw8M%D5L4&>-eR8#TZywJi&&#{(Tqg9QVsX4?A;UoED(J~%hlv-Y!Az(1t;51#RR00 zzcP3)D6DOBcIrKZ$6UsMj=!IaMSdlpSZAogK|+kw;1Wj5@NIr^+T??t18i{G>{x7Q z%^W3om?+wv0f&Q-%Z5Ew&4nK%yXo{UzRnzTv!)Pmp^Xo9`#xy%vR7^ImYjo=Urihn z8S$@KB#FV;+k0gj@Wq9;uoPK0Xg37J7Vni>9d%vH6`WSIhX9yaN>S2`mGoD;KJX>+ zQ!`@c@5~H=7|FXhiid@kt$Vh<2H%3=1IOLGKf$CYAg5#%6R%5e6+=Uu^+RcOJ3+S9 ztisAwgIDD4sI6=a8lWse3l6OsrKVCD-dnf|ky{^?-_nA-lBvO!A0!@Aq8`YtWh zeV0%aU`cXf#o5G0f-&hGmuFdSpuLHWy>2DnxXgNrTTPOS7$O@_-Wy=+)`aL1+7Y2Z zWfw=c4B`2RS@tvR=QN)=_d6@68y;iX4#L{7r}Re8Wa6^JBrw}mG3lYOD|&ccw<-Ul z^#_HXj?Y8c3~ex(7R8+0B$fWNv72$7YUQd3h=*URahGOlsoveVr~I1xy468u4&!0~ zMm)$22^n0?lN@7&PB*Z;X7@26HujPBaps+|@rIU!MoUal?xV}em2L}p;H-poB-g0I z1w|pbd9$av!U^-;`dalcn?n^XD(K3i>HuGS}+%sAVhuMdh);|t{8ouHFqLEIoMs!4D!f2x4NngvJ03RKVT1fdU7{EKFGn&?;B{0W_$d0s6!=EhCEwndEg~ip4vb*!g=<5Qcn_jP7$LYVZH4{S(&lZf8kjT4VTKzy$XK@V zC$H8p7wSd=W1Ecngs!0{kU(#ED@cIUYCvwAx;RbXrg{HqJ>Vta;t93-+Atv4WNHxB z$}aOWXY+GvP#brI`}T8oPyxaXc|4ngO{V}jeA~}P;?E)^5ExW*n(i8@fCM%1#rsqT z8wU70J-~!BV)%)8`BdQL{nLKZd=p{Xjji;iUV>fo(l_;+iZEF*TR4qWrMYgY@F|i zcL>@k zi>JtA$_6UOU|M3Q464jpyPb?DJCMNH3CEjgn03|Ev=!}NDERoFyLq!Ca(yt&&{Ikh<}Kd=`?m}|_Fb*%Q3%e&)c z|A17>HVHX1$J>`Elom09co}jgro`U*F;x51 zeN~|nqpYnc{56weuI)y#ZQ&0#RQSN~r?lKi3$2n3Fy3RNrtoqj;Jywx>SQpXI%|KS zO_m1-r?M7e0EAklGuf!Doi2L;6q;6Z1fcuBnctWGVXscTn^#lYHW0$_vBI-QonC`o zF5He%(1n04jP^DUjfNQ=GXo+yQBC!dCz>p6J)@*+Zf4gfe>#}flBrF`gR7`IxItyd zM9;ECKlRScR>MT5t=Vv$hEvxlhD>MBEB@J;K}AXtg`6$@Iv{vacKA0i3ct7^Qdoe& z1`&1as%=h$3OPb6gGL$SQ%lULb3UTC@KwE6B1Yu>a~2DQ=?a$0(+>7!u=m;0NT z*0o$AqHkyU1TO{jm=v5Lx#E@kl=xziS##8#n?2L+mXw}l^flEKAEV0pYqi-1^{A=R z42L*7ivNcFD5gRRPuSwbD-(k&T}u)&{fKgS&=Zd%tV4r%!9Wn-F` zz$_JOrn&bb5%-nCFbV$gpiy6n~23ypeV;%`iXdU zZ6Y=suAhj<&>vPI;&E=TBw|$#5liWF>_|EWVn+ODm34{dR?9$Z2Eo@R<73|$83Rsu z>2o5Et*Sn8j3})pvRr-rOf4ZQ^P{j^w5&JwQ@&+lvmE{8=wT&Zxu{ep)4>Wu9^mjtvtj z7;HjEPN^=6l4Ai2gQp6k%nZ+y`SOK-Y!MM4I+N20ApthDF<=YWz3kjwCft(c~ zB4MmWM4SqUSoJy$`3yWF0u$HAK15t?v3Hqz%ZF3WJFMHt z_W6BT{EC9JO5hW%1cfa37@^)eXBB=@?^+!O)pC>H$LP@UGvf2BG2NKBVTV)x5yi&nWt$*p6M}=v>i~+OPV% z=P_pwbDk1@QuFf^M!aE9{5qES>RI^}Z0#}2zc=EibtYTu&RA{*$9;dJ)&e0JYC$pv zLkRVoc&Du%khAvl1T9Z|f>_7yEZCoInaEv~lSB`{#TPL;?Twpo;^MO1NSlH=S-Mx+wn^}U4b z@XnDEk+=Y>kyRhSgT|HioKr-^=hU(T4H6Q{8P;aKw2|WPX5&=4P9C*dHpWB6QnRwt zx$X4=xqxOKveHTH)18x5RX_+*Ir&y>mRw>wCq_3VMs(c8pT zpRyyk(}8{6R#ts$mqq^5*fQ?LdO9FRWN8~8bj7_C*h9%zH$xBb$yS!$j>g@}exv#- zUZpW5o*J+=8I+~T8er|>&l_~tp85XB7X#eKQx;qe?z`jN+4y_$b!ztCyZ+VNwU)tk z>8<;^>jaipawmJZ^lF-^E0+W=OuSo<0VCx+q<)}_FWblga2-g~y6&~R>)4>6A1o8@ zPw~6Psp^Zfk43LY$a_-H_NO)==2Z_>c{VBz?OxC%jHjTB@KY6D#&|w@mC`uYC-oxgJU`v2y?-)_J@RdoFY0+hF&zb$ z?y#%$`6_Ax?L-Z9VC|d^WU(QffTcETIz|N`=3ySSOed`bT*iaJf|T9J@mWDBbRBFo z$kde)t4z#htev3-XtJ2hT$%ENP|UJAVW-twQy%eK>aaDH-!RgkDL*9ZH-Hr00uJ?K zf?Z)CLGoKeG9(9*KfW@pcWiqM&p^7G_Kn#plHMLC;~?~tO%?8qaZe{gPWJB6Nx;+H zL4JZtx`QACfgasY-l@=)Y=K|B1gb>LrwMQlk2TIwU@$K%N~{CpO*-DZw)B-aYatY= zkj|$~4#FW;gRUmYA1f7B8Ny1N)I+p_y+s;S2%w$(XK-vJeq(o?Fmoh+bGMBL6(kyj zoq@Ej<|ey84AGUx#t@y;5kWUTxT`Zzeux<#yq)xCuGx8d4OBD|XymA-%J<2W!=aiZ zhl!dpK9GLSUZf}Dp|0AW5XOwecN)}N9X5Ne*E9GfLPvW}DWN8N>2QMx%t&6{NNI(C zPKDy^B3p(bYfSlGcZ=A=urfo4RW^XDjct z@98#qXDeB6o9-PU3pI3`;uRYWbGjS%b+=H9M&C`6uWzLTgQ|k$c;`q#w1uye%?H)0p*N)Bgy68aiZw%Hd%Ii0yV)ob@-kJvx4S)%BnL=|RV>vtCRIz! zEIs#34y=a%>D{=JZg)IvivmnV%n&RqUusLet*cwz!O$4V-{X0ORMeoa#NUMsj4FAO z4v~qD#R_gL;ku8&7nr2w0k+6H=s576cc7zflOGHxXxux8wlI2C}=Be2cXLYT74d!y~PU8-#dD?u-X05Q_Io zL~OeuzK3G7LRryR&XwreDE~cpdv_S@;nsO}eXCq7Avcgl5bfp3*kydA&E}x8lDGqK zN*V=rh*^L40(Xt2ssztr+J9rrW}=q8O^rx;N#eSFl1Evl$!=y07c7!bi#8U?N8U|i zEQf17M1iFqVsTUaklfLkcEPq4wPwl+!PhmB*pGL~-*wRc*e!7~UPe}XF4 zOuCK{uUE=Z-X>vD8){z9n0bKOC*jV1TeeWBE~R2(-b?o&?4wQ-Mz9fdmD`%w&=x!j z<|pnze^9HGkZXY%Hp>_Oi0DUbO;r$EV!Hx1sGK~aG_*0b>`gue9E6<+dp9X))=--* zbL=1|gA^xT^>>EY`bS?R-;i6vND#Ijo)R>m&|{s(2F8USvb{n~qv5oB(ei7O56NMorc^>VhkZFoX^P%e zl!WtiGzssn6WWTT{~v;UeD%w_tfMp9Fp{S zJNCq{!Nq~D1jNp_WS26rn&nBXgu+&GC=PjpBHevulOV{^64oC2O|xGVJ<> zId8c<=UF7IQl1Fl0{sbDT|0cc07(TsES?{52y93!@Eg?8We3@sAV9i*>87koDiJz> z6%Cu)1nF@SO&rDQy=aMzoYu2NN}bebqh3OLBX78+%E1ob16D^7+-enZl^ z)w7~%80tE5K<2lli?Wh*QEgGlrmT*xnbkU?3E730GBi!OAKH1@21+=SNM~?%I}VWDt-@)z{vhz{b~OnE=5NbyvI226Hvwo* z2NVH~OH|6#3ojHuWD#bC2VWglQ2;>fl@oP(G zq3vMF$-Q9=1tUaE#}fgHyCZ_jAcE~_+=Uo=L_jMCgaWiYrV^;^r}RVsUMC;7Zqs>D zu?(~X3-E6Z>0%+>Wgs2LKG$?|z$H}$Tu^EXRkbh-3Z$^DNCsQhCV_w!o*11C7?4MF zAvlugD=wl^#9mY z!6NDNd3I{z(>{mt$#;J`%3hZ3e-Ah86f9Rwx~!75`G==*12>s+ZRYR^?bi`I8uf#w z`#i`wWu{h(leVPJNV|}vlq8CiN%B_ltAhNw4qam)BL}Y85khb&xb7@lY1vYx?8F_6 z^5nm)Pcb*mdd@~CQMD~C^hZAPsVMu=>;i=aOl3#^k{d6`&QRDGvqyDfTXs0yK;0D7 zNSxi3=jcWbc!`ut!n>A4(6(34JDBtvQo}E{gZulXmAT!1IFtxL6AH^fx5%^=x&rMi z;D`A5W%#}T(7j#7l$vBP=bS<90kJ@G@YGTS4#{#%G#t=x?weu4ed&lMBaL_;gy)u8 z9Xe)?EdTA8FHPf=k^Xy%GzN-JoH@k`yJ)5)>*z#DTQfW!5tI$xvcbfB$K4%xkI_7} zjp;E-GQIzEK_e~cJZ_mI+#F+jjv#V}I)noRkx)v$K-bIw8!O>04$t`p5ZkZY@27G? zKCxa1`cB5LARULa7SB3%Xjh9y-@Z=y`mRo(w4mitkz*@RLfj)-y|QLOT8%}KMRr67Cnc=dA7^x=*Mq^F%ji_>qkOB&{3h?~zh+691d(zNU*iSC+DVjCA>wzOmOn zd52s=4xlZ$qiWevoC4*bw*o>p6Vh6lALzk#_Cd!q?^ahw;(IW6og~o0gjsuL{hOA6 zT7-T8?%)5UcMc2ARy}Vu*^L2{8dZ(TXLy7c&1cjszrSbOUDYN?zL&`0bfS_3BT``s{ zb%Flq5GTJ*LuFz&Z{Mc+COx|m%YOSdwh#j27Sr8MPCyr8m!_#O6Gcr$-q0Mlak`0k z>QBmY)PO{!qRW5`=AvaU&%92Q)0#^FZ?J+YO90r&-{DZaW97rbBCJ*eK?8B|iryWAe?y zLXHttTLIMOt^;hjLmsT(3I0i%Q3W+HftY_fIq~my}*w{5*gDcQkjAnOGebd zQ|Cua{E08|5zfV48L`z2Gq@4#T}RNEyx$VCiJJY1JDpbZgamR zI66TP;c)H*X}}^0%ZA3wXSg^)Ml^mQOclm%NtUsu7_i$rV$O*vxmT1x&p_fq;V^5) z?jG$evDnf$?7nbE8_;UmiQXMe*%4U(G3q6R#t@qzQDf~pO2vS2p z52elmVVvk-^@~jv#@SA*#DOwRsr@TcRrn-xZ-QH*D;>BwIslh4om?esZ@)^|;wYt` z4Vp-P4Fy1uDGLJ)$w(3I-+)0MRqiuEurPMK9)H|BjnxXhKh4e5rw zP*0(3Hnl+(%RGMr1i!=khb9TBBr~V$7O&T z*=TSv$r{1^LpSjh@%Ly+fdpL4+t0Hl1rl5?c2LTWJ6Dlu3U!NyC}pR(=b|x;8jQ@t zU~;5`zwwedrRc#m$*-qr)mH9lS<0BjYUDkr>y|*gtP?C{(C>3WX(N+c#9OR#;7=5w zrdtX!_{&>M!w<34J%ii7ydw%GU0>;Tk{9-quXw(@@6M{fGt^v}!WGtoo_dP)=!&CQ z1S3fkYNfbbsn!65Mc3gi$j05KcRCIdUWcfCcelMOf4({2GHu%s2wegYoWo1SrR;OR zjJv*;%x@JC9VO4;FEyG>hQz3ovp!s7{xj?4E2BQF}y$^qJv#baIHHIWapjy zE7RqN9|dT2fM!r$1!Rcp&|Nh}XcFDk$+Vg_RhxGecle6Y_I>R?%-->KTCHAstM(lX zQ!63><#e-S`Dte5_T%>nOWH_Iam8%%d(O@qklJ^OY$$uM3{O%j4dDru+JWH9<0?r= zXs3?AAE))3QYUy2vQ{C=LaR!%b{k$YjZ+<)gw00qI3n9#DdbjXGW^o&9E{YKVfi3C z!k%n1TjwP^*JhpdFe+qVzjgR=s1xi7 z10y)6kI)MpWH!NChVv^|hM@s|y7x&^hl*iA1p0dQ;b~`!OxhCZGlG1msnQZYLyi1TOYX9-&nwfjdtn42w)o z9(#Kq7pAP(v=<}756L2eQ^MpJD|(&dSa*q0dEwQEzO>-ybBz`>o!D?W0{h{))KU(K zsUyeYTuKysSwLg+Hr<9Wp|3!nr9?}(>2M|XdsZTlww(NlF!w#(_D;pi5iS?)5d2`P zTPdg#uUU5Jn1W~JIAgC7!7ebs>@fFSv4dOU4NwFa8Xw8Hjr3pJ7rWK@{WSWGOj!4$G^XyMo^D}l9DQP6@ ztQO;}a2;}R{Lcg!=%1RLXNf?_%q96Ol(|&Wt<@8DsHcilOOzwqRFkFx-gJVXlY7mc z+#3k9Tv{=ua#Fg+Kdl289B}^QJiJoE!L`1MPEw=`qu$8!bNcW9O3bnGtiPup$1pOV zG|^X_n_+~Abj+5v!E?d{8J&68>5a?yJ6hw)G3Oc|i0y2`O7bD>Hk^7!$VY0)uM-5F ze2`Oo(0`2eoT}a~(8_5mbJ94DGi^2Epf)28G5LPt0N0aeL>#j$Gp6k(CH~;y)G-7Nm3;`X(RRjC#h7 z62qp2_y(ZOulu6QIP979^WR613jD@c*djbx0;}z1UkHnTqA5hDr z52Z;TC4{<|^tl*;$;?`tz?wkm>7);CwxaZDKX=k6faf9vhRZH6+Gjyve9a1!j=83= zV+1WA!Paz*qYLO(lD3OA;F&RT zzF5zA#LaqUh2KP1@;DK)$!~NWO(ELsJU8Z)l_(muU^kYjYCY;RpAJW~h=`@18l=U0Y2-4z4FIfe zD^is;en)N$^E;Kxmq^}pOnCe0VMSeC;x}%^JSSCYEvpP0xL_96lmCH=Ym*bnH`Ic_ z`6FSw+{48w5B|O_@1S*RPVlbXCy$r&DM;>cesHiNr_6#P8khHSo%I3oJ%~yjn;4aY zXHX`lA(l<@C0IFSt-_&(dwD&nAPjm#PzKB$U8e$`hbC5P0)+<3@__PcPn<2QS~koi zRm(L#p%QQVL0^tr32iujbjV^&AroqoKCE-gr4LKmNFP>*B=XlWQZuIudhs|LcLQe% zfLN{@lPlS{)4HB+e4K@{YC71{jXA2K$eofNcgp<$qAWMy+z;U7zj|;H`JY!HBJG2i zOzC#I{#7iv7!g5`65hFPjh?#7=LJQzxr%VCuPPi}FWYvMhr^#=68=W*M+-O#abAM=tFNZOX->R4wth- zESwOGt$LYX{%R#9NuJUT*#H=U+*p^qpM2XH;NUL{P03;XJPNi|9a$c&dcF*!bQ4yk zQfI(=)n{6w+i=Q;kb9`v+J&bI{kxu%tu_y_{>>56g?k5Bx98*wW0Mjf<+99SGu*bQc#4wRD%i$UEet$jAspxE|wENSo8(9-GX$3JgsYGc ztDkIyJ7KqR1^euo{ zE<#>}N@fLb;WK8MIT-BGx=2pl_wG3+o^3BI@p}><*BSIulOH6-zLtEJ`x#d}#xyWL zW8r}z%6>z+gKUp>rU9L5r(2wdQOMROYI~m(-7ReD|DJ`@OC)YkbCn9Hl978Sj9@pD za!Y=h^OvO?lMkC=D?H&;Ju_@K;5T6c9Vl!_j%4YWA5!oq9;o6_GzSeRoUX$g<(CRM zq1~>e4|yS#`xtXQWR)h05=5$mcaXa(s7m*oqrAseq-}#N%ejgyU~^bVqi3A!6`MA-J)?O!;!q^31HszL$S zVF_W`Vtdmwm~1CZf%#k(Yk6} zDwPEI$Xk9x$@_&%T5#9jQzZ~b>g_7R(Og`tWl94Ecr0YHXU4`8E7=JG-PSr~_h}l5 zD3hv)GGEs0>ha1)H9evOn=Gj!ps}jVB4t$+?8Zjrk?^4~D$!`~pC254;EErdnYBhD zqk!W5u@H(~Mbba^bK~<@iGErxkE3pU#9X%xqX7Agu#@{?B6J~Dp^ew;wE6++Qt5eI z$^v-FIEog}<(;*6=SyKa?{I7D>a7I`wAd^0!LCL&)7BdMe|lMbxjP(TbkH{PV_Xpe z^@}Xt$*~K${l0}_9Vm4On~;rW_|mZLHPZy%{5Ne#oQ3*kE<7HR%-6DG;m3?3H;AD) z#yO3r{q?j?l~r`eAfa3LpnFoo9N}vNY~_?+w&iy6x3cR+3_P5H6}7UP^a~QfyHQ$XN6&2wP0Z1u`MRZPTA zlzer4r>ibzi!GK$mvlvQESPI|6E$1h$x$3yJXq3ER?`YCWQNtgM#uVXC8dfCXk;f@ z#UXG4ngi?ZQz!IN*W#h}m%0ehWLL!LCq$8VAIrAAwacL&S{-q{I>mLwF$C#=7~_CU*Fuaj#hn0Xg13oK#hBQZ98?e# z$M@igt7Yd~Zj0ARB03u)M`oLif&A^>1-zTem4G|m4Y99d1J+xEL^JLFpO1k@*)8`8 zz+i%H5ToO`p~p9?VuezkCLm4QsP_S;?w->Bm3D1_%sE&9FfH?h0fddd4nRgOrv}(- z!0)*M@>x*M4j>6BPY!ghFlR+Iy+V80tJx{DL(|K})v6g=%!QfT^-J5R4{l~mTe;QU zlx|W%;1{#cfiFs#A+TwG4v}{<0nZCQD40U`jKDVjg47n6#|plh|2dGwC6mgv2le6PloX_WHb(oae2hB{Sx93b zlwqWtmT(~HT&7}P+LjD99p(8sHYbl=_5&UVOth z{qJa-rFcL!`RyU#>8pAAceSu$VaUwzoUvd!b<7hzT+_J4H0SR+Hk`{oBU+6Icc!D( z&kUyn-MR^}2CxzO!%__`6ids52qmg%*AZp1k1wlo2SO@fj3eAkM*rJ82+hg^-FDXg zKbV670^pIY0+@^5?KWg-3}i@R{%<5>>vebr4mJNV0NKZ<^w^?1CrBTc67tPbhh`UN znI=1ulF$4I6Ryij=8#}Z9-!mK^>AY2OvEQ)4w2vJI)mVq0s0=46ySfig(qVjxgxj~87Yu(>It-f_>@DClHFM(>A)8NA+jBQuU#2&tY<34%Ee}zz>R+B=M<$y z4=Y2*q<{;VOsJFx(3iNCYnirA01JI2a#CrE3%cE`oK!QMB-RaDraCNfk^U2JAf z@64MBkyR;knrUeFKayQE!~EeSlD7`A`^m>?$aIO21q)jV1Mr1%QeMV zX`g7b!4`!QrkfEWi1%(gg4ErW2$A$}BxmfzT>lG#d{moc#Hi8DwhMFJCV~ywN#}oP zC~lm8K;4EwhoFed^`^Fjv$Ht7Xtu1-6p&remn#**Mz{ zB0=89(2&&Ns;J)YnRug9joys1SLLpJBCt!<#Ny#JLM|Vp0sY`QcparvaFnWMRYHa<*E>9b~o7Yc+{R4qh9zx<26Kh7eea@}xkc zmRm!df+R~0l|>5Lrz2WJIcj~owwan{oTwoGn^IR8>W1PmUe`5W>3Q!!akY#gp zno~%)ZM*gzMoq4V>ZqK}Jh6xc0?3ApUPxJllwqp^WThZ|VM3G5KF#gjCR)2TAXTy< zPfK@7aE!!1!KxeT6#MUCgxcK9_w%`HMjTxgy0kZ9m7+9b+%n+DAJy0M_ctkR3>69Q$4NrZ9COlz^Cb%){klglGC8G{) zDjhO6A|5O zEA`@d%c&`Q!iWOi>qgUYWddd(9OWOx5 z^r{ev6jXqe&m%w%2u zJri)!v<dbL3&len_BTM{8~N+o1IR|3hLg`x(mS4|hJNM~@S_I6jY(D{$f6@gO}C_3eU zne>fNp=|<1X3>hmS44Pn5)tL_?Z>0!bGD0e&UR7ex4gbkm-ok`8~qVJ*;W!K;m{CS z>6S9i|K)VO;k(jsZBEUn4dgf5jPS>^J{yzaKYCjCD!=Skla(XX&}`VYTjg(*)B+aD z@FBf@Q6-~L@)E&HsZwN)o~1M;u8hm`Jp(DLGRf}@rB|iHzIJARAG7a`C(viKDd!bl z0PHlCOPEY5&kwjcTJ(0@Ii-!{{=$H)HXN%1opl~DQ66bkx~AJ&VdD}W=J51ns(tKk27z9Ktz@iPxrx!X1$U~81E~;MS~^>;2hy#! ztDSw&@=#UurvWXn&rb{&@TAG-@JNDI?wC-V;>Lps^e{)2m~U?H|O6#d*H)iNHwM9BDX?QE0er5|E?L9AX1~dGV8PvbNJVIixal6Vr4PgW80`h3a0I z7{l8{6Qjt*r=J*MhM$r;_I|-7q5>lmuv<8w?n1l~csA7ej3^G?9rkdVoAx zQM@fX61nqE2{r@?-oKibokk^x!^C?p6SBm-Oo?-Prj)`ZK7;@vD1B1Pe$gCeT$?XQ z^=k;oQ{>CBKVKFRLwmcUlJ zi~AbDvsXf+ucT4n6~caX=kIOv6~A^;jr3Q)&-6loie?rvNxm$;GV0C~k653;yO3?q z&dJH3Y%oV|h+7Xe?Z9r0tp^8vSEdHXA2*t z=8Oio|#HEfv;H;>b8QjMQ#RXu4wKf94d{;U1#NNl>cl)RV5>jh8;iUxSu=2 zr=rBdUU0EDi_sDL+(SVI4!4$rH zV>DjkCvR12YG7l2SQ_y(>wqKiZnPbWJ5k{%ejMgrPrihw7T|pFFgR9b zAw}F)H_rZdPVcT1Zv4UL?Kp3HBS1Bj_Qf$(Q7e3Lj=NWRd!CwZH%rrIh88)+Li(&=>n3m+s=Ok~WA#FIFM8AZcXx%o; z%PO&{hn-s`lkmz=NqKoCiU>7?SoXDbLB!PG1)-$0^FWZk3wUQ%>jEsfq7?TWy#?;) zoe(s^FFP08s)L2v5K#(vk#^l@p%I6}stY-qeZFTZjJs-?|g>4 z8}fJl!hVH!Hr^UNu6Lf`?#BF`Keb=s9e5crXO$E-x2O_swV;wiIObJ0Z;l9wV`1Xv zXijAnn^I-@=19ntCbvc(v(oDSl)F^rpX4%I!ZH>^dK5^AVeyywL@)XUn1O*{iwDWD zNIhp;p$7HUu!r-1%;jlQ4N(Zil~Ol7e!Q1d1raP!4fGY-3KA9`%H@=t|2VlNAvHL zvs$Yo#jtgIt0Mx3Zj-m6!z*Tn6_Q({4h8tPjRF+gKmisEP=HLkDZnL8=M*YkM*${{ zP=H7&1$e~1PoWXpJcUJ)jW6iod6Yd*KOA~S*;PI4jY(!>#|pPDv>EOUs+?^8;*0@B4eJ7h+mQg7EEjc)jkYW z617HuP&-9o*11%zKwafs(OelHq0vq``w(4WA-T{PydHYYPogZgqkbz;RbwSa>;CLh z#>H8vD^FBFZP$g;{TNo^i6$Gph8XypqdU_UAZll)B|a+&4BbOT5}vK>q4RiRi|}wG zDRyxccu1@fMvM?8P*#HvmAS#Aek)!lIYw6u04&gmd6cuaGnR`1z*Ve1sA5K59Jlxw zcQH)8XIk-yzyhAB1z1kE$1_Ygw$`fnjv)rP7!Ht~EBWd+^=LZI%+<;$Z3rd5?&K!J z!PPHXod#Q#%ZDN5FFB1LPnJ-ERF1O`qitB;!_)cILby_$yhp#lwB+3^%hg22Wsq4; zU{-11&p1jdvJL|ndsHD%SQl%MbS#G!z{Z<#8b|+HV`hWztJ|OL#ia=jX9@00szNI{3{ML6HB8!O5`ReAWc9bhg4GSWp)7MTcf`c(EgtJ=xJ_$YrmX$GR^Ia zdgrU$?P+dbwqM~L#OjlJ=L_8JX>OmhU*R1%?idpzX*;S?njGIq-Y%+yNi3*jBIi{~ zlT*nAv$fkaw?DJeWaVevr7Hgm-24zU7BKC>x?yd|LGe@|1Z~4pmH7Ajh_=IYgz0h9 zMb5*E&~)Gl9*>hJ149&(yogHT6`-{>6R#R&Ybq#SY0B2nQ&5Y%I>ihZ)G6loI-YrT zirFowQ_O9`Gp3eB2CwGWcot0OUWI3IE>X_2q?!sG;#u=t2c88FGSXnKjc17$iDyZh z6wflg3arhn0rtjMnG55qkOq8J{9imxh8lm1JPUIzUGI3-mRn7?*VyoW8!FGK1hvWF zYDUS7%H&3~>ELZ5xGj2fu&te6feH==nN{liGW}Ryb|w^i8fSc(2q{Pkzb8#ht0b9o!P! z!KC+!j^PDH7}A5GuYW9CcgG+Q-i6%5v25K-zREH@!wmyc8~8jlobQfhb1~a$4J(HM zOqkh@W3>@njRJTiIyeR$$YjB%7$AF{z%rAAWtDkY+lcutatu7evb-*4YneGQsI3>J zHp`3-Lw``G>~{Ii{{Jy$Hdls*%YD_vF7*4V3CZa9RnL}lUp2Okls&*EYjB0H8pJR7 zs%OglG+*_HF^Qb7nv)nOf{~FO>s`scZ^p=Meswy(n#!*t5KoH&;fA;g9L8H}!Hwq> zW?T}mk)3dPr!ap2pP7FDzW1rkG@QbWC+9o!Rf^2!J-ioiC820s)EU&iIVw3o0r8ZC_;*nN(mN@hrK3p6 zby)Edtp6Z>c}WR{ze}zo)*UPfmzKM-hC50&`9*U1A=w++!FBM(r6J3bT5+DDSb0?O zV(!lWxiooHaK6;ta2pXlI216yOWCg}?O(`aIT`1oT4Tjg-n`BkifkF?F{PWvLYMx9ISNGF=M2`D68Fz^7FxPF-oO-e`Ff zOt~Q*q2QE_3&c-clh^kt)u&97%SUJG*y^L>(-GUssd_y^DSwltmB{CG**@$Gh`Mst z15>D>H!fG{-vv3>Gk(? zG=iHH9YXa--OgTx#Na;WEnvt2LBd)`t^E{`*C%1RDgxrM4uhdif{Tzs%+J1cXY^BjhO`4i{I+nhw1S=M4IC0^%$!WC7G1DR~URK&9`2z0g zDlpt4YYo0lnnv=XY>*YgDUOcgyOT^nSX3$!N?_{I02_~>3#nB^=n}kY5xGb``1stg znqNROA*(Na(xH|3>|9issd|%`U()Tcc3g@FhgHku*D}6J3+QLolJwu4x^u1`plZ-l z>T1U^O$IM4m%%z6+QkDxKt)*UK z*TrQV^wfaFhQs=_DdcaWhhDGzb+t~#?MkcMW?M;tG-z^rw{CiXQ#x>fxiCu8IS8oi z4Yxm2{KZ*q52_3^PlsdFLT`1?rNimfq5-eLKcqAZaCOEOoAP>wy^lrxWnL)Xd?qMw zpn@*}g;S_#z?!SmV4g~#`KzOf-QUX76 zH(>@Aj2lpS+^kL-{^g!=V|^hW-ufae9P_(oN@T z6iir<@~~-ADoX@WCJyn2ZtFDN{3SxXN&)c*x6lDcIrb6Ux*YrdS~IMS%K~kmNf$cT z)Bag1p>qy$7stMwYFEWR)e^9;f+FX7&-pbjU5wYB|5qRO_2y%>o&~TuF5u{HR#AhD zA8fIHyB!<_>hnYSRA4swEUwfaQlf7(GbMZlj&9^PXvlvbXFIgX2MkZyJ)+%Q7Hffr z;DlS_#jC*-4(g4&#m=?rX(#}qyH`xs)I57{Wp4{B84Y*o*cKQ*DqBU^Ldcw9SzXf1=9YwJKu#M7KMqyE`4KC6Nb?4WouhoUN71B$DBm!ndy(h)vu z=oEJKEd!nP7*O|6j@F=;fTd*N^L&DYSJp{wjt47ErPyzCa}i4K&p*~f|1}gi5xdhJ z^!GwJ&p&2Z?FQnHF`=%N`N#6%!#Gg)jNdiV^|y5+w}RxY4Yjgf{6Od1>`gvLO02g1 z(jizJg&>}RK5<7{S3)KovjMBH7hrD57kEL(hR1e3mVX^7a7S9P*Ks}C7rupbZ}Nv^ zsu#v`!Dd(clugOWXQ^ld2c~RF=C5+cmoWa~RCpZ%lvpmPT+%WLtddluHB=2Ax207B z1=Mr>sq0Tue@tZ$K3Ii)a&K)PoLH`Gw{)Wv6@aspgPxz3@$4f?BxV`V)_^Hro14ag zR%rBW;aV~PUL33m?+C2YyJ?a0tb(Cw+0ASaV>)0&)HPF)SA6WH&MQ8OS3KUKaj``I z7`jw8A(Bo0a7b`dZHLO8lB9;NC(0!IVKC$_;mp|eDi5G}-A?;lUc*ulMcQF~opPv? z@Ks64EaZUZt6kAM?5vDf`MMU>7((-$m4w7-pBC9F!5zfG=tfsLbH@_S`p|;a&u%f0 zR+n$K4b65*T6j{8$2yoebf2H(8@2B1YTS1|&W`DwY%I4CsDRy#*a*|~K^@1MQ3xXy z{gG92fJ!pp;h-?4iYgCfr7EwPq)0xpUM=kBHI<{vttU8vEm}wbn!0@e7@on55cq2H7u&m)T~S0utXWqSOJblNqfhi1CM68jZA7kNtYDeO1mHk2f2DgY zIrd|(BvNe4xTWMN+xMk@%ko`ucLjM=t#7Xs#i)6B3#fF)zj!)FID(Ttp&ri_-a5rw4&mn9d$3aNPB!!c@jNB2jd-l3t$}!C1Gr?w zqeVO+>BhB@?}Xs)kk6=wCEh1A81^*gGM1*Ew074gnjC`Fol?5 zpz&$L5VBlYNm7U&$0CTF7aS@b^)F1b?q9mkDG7LLA(D?DX4@1(%V>Hk7A=sFiPue_ zrse!~Q&xO+lVGIYBM*$dhtZwCH(}L&Ox2crwG+PDLwem+X-FRv*I8y~dx?I)r5O|> zhi0Y8xG8ePf%Yll;Q14m#AD#!`e!Y{V>rsv_=oWrf~N7$k;!a1j|uM>kLiC$JO)!-rvv#w#@s+0RyhpwxRvVxMS2>wiX1)drxM}! zsHzAWz!Df5=!v6;?1d$vzo#b!81~WAq9^k6y#BpLe5HeUI>hgP=U*7&6P0I(zhE=z z5dR!g;}CzL^aF+X*jgqH1LB{}2Qu#la;b>VMwncXobh;lT2%zZpR*U7Ai))Dh(A|A ze9T7>e;LQ0^@x9x*T2_@-@F9G?|@+^ zv1f+(cu8`^Cji6ndb)`CQ}%*G{3HH_sRH6p>UsA0qN+3L5&tl+f3Fc=D-BP_@%!KT z7l!zRKpMx#xoON&h)=>lkN6WmScpIF2N4keU_KB`OK%ollIb8_yOjNdI|j&U{s%mI zj}`HM)Ead7zu&(wTEKth)($4fgU)jJInbW|VP5z2B74i#a<8)+9&m3J%?5LQXX76) zco^<>Ro?TxrzCBjdpb($f9GEqC9!gt&-K4|yz(vbutqISDZ0id3Z@zP=yLauxrJ7^ ze`GKAyML-FiS(bw{nP)BpnNIrpG`&6Y!&wp>EqWj%|7ugOfzIj&oo02tY(^RDwt+8 zZ>Aa9bb+#?l{Y&mzp-N{cr?8|Yu-ksYYpDU*SXj33LIdboxyUZLFE1Bj%Gpb19PSn zs`v?4#hp3H?%qfBA7@sT8M;69yl85eTKK8f(s^`Qpx zVl(IB4)U7Om(}_hOfvagM|!}x#9#Uterq^PW5iPOcNndjU0Zn)4pGB3H_8NohQ zAlRt_!IBlY;I9Sm^w0P?1luh7QpjmY82C`SVYx3QykowU{&z&MEY>`&FC{4wESo#} z{k5bzTZ>>HdnN>n#{p`&WS?zP04H65Xd|Bm%*BJnT1DIut4|5$>&&t5oM8ra7Jv2Y*xhZvpTgj3wY#--$ST6yCUL@ z@cy&><_Z>Pdnj~06R_Aib?k{*Ta965Y2wPkYunaa<+o*)c15LbIg1Hv*)D9py;~+Z z{4q5)`ge5iE59n$Bh^FhliU{Xxp<^{dEWPuoY>Y&$lQ8);_G=YiGdBh6ke{;+oS63 zf*Zxfdj8_}wStm~gJK8X*axP?f66=X?7_6F{bDs{6292jTlyM1*BkA#Z|s`(E;aV7 z=fvrWg*myqZ%)R)k%Q#9os$=}uTjqz`;mh9l4Ynn`CNeMh3yxqG1IV%bMjzcW5;@< zefD#*v;9IfX6k;iF=g3YHndaEMQbDNoodY)&jl7R+27icZ{{=k?8o+k_J~@8*pvs0 z(RGo@6uL2Rgih*31D!gU@fjK>aiCgl6M^XqB4J_3CuVJ}V{vHElniw`@e7 zTM-TBm|O||r8P9i*Gj2=FJoJ0Rt|?y$LD};?PxzwT{jPnx-RY>x=!{A25{WEzC&+m zN^AwTqM1SMVP+oRzytXcE4gHt4U;j$ZEYVz8Tv1&o2VI{8K({tHGUySnJ`hG;MpY( z&1P+l*{W!2y6vkk+H<*5dp$oLdM*cQU(c1xe_79u{qy#`)9&`6OP~nidW-}D23{GyS3 z>#A-Qrgln9?n!!=&G9GIEiJcaZ2stRLPeouU(!n@YwY?7EoVfT}9x5J8KdD;I_6763y0yS;_V8UzXlY_$~8hywKKiiyayZ z9imZFxW}H#hu4patD6Ts=HzKr6SoRTwzjvaj{wMN{O^(f0eFjSFO)$>%26BzhF94` zKZ^m+`Cw71Mm*~S+A5i7*S--{jbFL4&8B^aFM#dTF zGG%0PZ5XUhj^BwgvbnuQJ$6AIFos|WO@x^VsB*H`tM33+hLv*{-Oyr4yaFN2)E2{K zn7R0zG&j^9R&zmfT4@v(kkf_B6hJT)`V^3JeDv{Pv+^h~fSg0DLN%9)otyqY_TE3r zuB@u}J!kLptIm(gPEtuKsid>dAwWesbn9(9vFUfs%AkKR0O|WKZ;T#qIL6}-{=lT4 zgXZ>N@ZLbXx;u@91}P*!fw@phq=U3lYLpV96isOAYJk{8EhRt+L89hrDUn-hpx@^^ z*V_A>Q&s7tLt4DP+kx6Y&f06uHP`&L=9+7+rg;ai3Qi0A>1Cqn<#3*O&fr|vBq4)m zuRs1rc>8bpBlm!IT3_DYTV%AmR?{Nj8oi(A^)jpJJiql>O$Q%df%5BV?x@-cjH2KmxT$d{HwKJ(l{zDDUKp8@iTKFB9B$j5oT4Cmwg)`#;8&n@JZ);xqK z_mc4>aP*0QgOB86pGln6b-**}rj{~uUEUZwyt0k&$@Xh1BHk+u&3H8JX=*M<=&gdH z@$T}b)X~Wx5%H_&jLboXgV08S`48vjprw=%Fq;RFeaujkNupC-w-9t^lIRL-VK@qo zDU(X*uGREp!*(h4z{RN?eWP++JW{q>Z6!ijROlk)=75mV)ethe3?V1G?!@bi5Cb)G zEJk!eOPAr~Y`67mr_=$ZDOibJYw^}7YSm^q!bpJ8Uc+y1rF zWl0+lvG7Hgz3P2xxq3gkQuRJ-^?paIqzxoqk^Pw#p|olxi`3rYn>BL&%|Om7d1c?h z65Q)8t8z}{OCZEdzeTaOh`j4TSmZZjfXst%(wdWk{eF26%6Jg8t<4?&B3_`~bcczr zJI&&mJH?yi(}M*qY?3JI7{gLvFCIOL+;kqD&j8x?vXB2@wC2I09Z?ip+O^15i^E^r zpV9ZG_t#bK9jnzk-)G%pE=lKEmCeMMsZl6)cWMc4MXeKtxXDzYM-eb5A71Ay@fwTa%-HW}ZP5-)R+E$8-%b<)UXa-8u=Q@f zHhL(ziw}KDN7<-Gbv$-wz)o+qPic+6s=7$uMYW`s$B@ga-4X!%A6YeOBXW;@!NaAJ zNZ=%Sl*1rGwaFLo)Fi*W4gY`&m)+#S&txFz1-n_9M;e3}X+<3cX_5Vjt3E((1gax; zAUVb+v1o4`(p2d?I0k=L*0X^e26wUGH%DoO3FHWtSiujzua6&QXEP{F{_9%xY?w|e zSZ6fa%3}Ed$V=<|X~rz&r+RT>J2?-=NVK3NzT`d-_E}A0BWFZj7wz)?$Xh^ZP2H^1 zO`4H$s~vzYv{g->CfyonF@&;1NP#MB3aqKMGJk~efS!{3XQ4J>gyAQIvw*wKs9XgUc-^58=Pyezccq&xf3WR8lC7&Xo&XbB_SMF$$ih>=K8L4Dn|LnuGQuP#vmAlH<3ZA*6#pwYY zC!c+d^I}!{{h7aI_yYaP273njRp`zgEl!l+l+~Hcg+jGv&8`6VX^6t(&_a}2MwG9}>czRRYP}zO3Vy43aJ7=Z65ejT z_ZYlJfUnN#U27v-ce9@tGgv)hDNa1Rh__$DVv(yYo5$MO=^nmBK}ZnpgqSmsUqjWN zd0vai;ZR*MYsaR3iJK^L5aJp!ZVPf{Q@7M`Re%Iz+uJW1xpO zrg|B+Skhy06)y)pSIx(st%m#9iX@hvtp?n`h?XL;)u7mFzO?HPNtCE9~U=vH?#{A5e3M;{Gvzoydtn@0Au6TG#Ny68B+l zBh`Wy(mOScHPX{GGVWXGwT7o(1syyS{l4Dl*OKf#kkvbAJ#4uTsE1y*s2RVQm#GpG zwwcA!BZ-T4T#1*)$1EJ!L_Y!WC7%&xiZ7&H(O7T8LCQ8j3-~4Hi-jTAIY{^mLd$@L zx1>>kqMz0Vvi_58De3NQ8qre=`CG#=uFsrk}W%zrJb+QDCuuwZU#z!R0 z;N99h6%8rq&T!%}+pP;}b%X?|9LswbTA}K5U8PFg7oH?-cA|kc*sI0 zvcWe^$PesEV>y9ZQ7Nj{^o%kOltd&I@=Xz7$l<;&dSJi9``@M~ZKZ#yQZ?%ch0cI~ zjZ&#X@SQ5#>;VAqm^nyq>2zn!t;9JT=55?Kwo#Cd!PDYxU2W%jGx_dTRjtfN?E3YP zG9&FUFgli-i$ArPl?@+esDa|!@tDENtvPHvz3d-2ooouK!G48SW#e~8Zjz@JV>Usw zC>2$O20ubIZb?9vD&?PN`f)fX9HD7@-#$FdHn^RUjB6Wn7zKun1~5 z9Y1c{$iW=P28ZD)X2V5&ez+`Y6Vf{$E^9*zHa1)sRwQu)4xct6Edo$BTqU5;PHNGX z<*GK!q^A-dyO&1|^jb=4u$8ZL2=hD+84*TfIkWEd`8Ehj_7aM3k+G>SSj)PI6p z*EjFvFz0+j19z7C02pHv{892WpOPA(2s7wcv8TGAcL)INJ48~{Nd9c2=u;x8s6TuS z3J>2vkNp1oy!e@|c_9@?_>%Hir3#pNPLcmob!8YBI-nKHfN%$gHO3O_?CbXc9Si`C z89*&^t8D~X20&R^2sn&hP>Aae-ynx0RdEP3oAd>+ubOAhfK5C^vJdSmK?MCl#*M(t z1JH+{1MA*`&rCThB~Y6tCoAp``{g9FwH|Sd%-7uAOq0wyw&W*IEBOWRosWFyxxEkt z1o++jbnI&;CfUz#!ec>2iBT@Qx4s22S7#vb+L?Xxw>XMCBF&6~^l|>WQ6`+JSZEnF~5hVjw!cmmR zzHF#36V_TbjOFqQ{Ll7uL-E4V{(5NEVp7V0P4Ix z1`VBl*ev#G;s1`7iO%DZ&SfjQMG;$=Qp~LWnI#{<<07C=7{=LSq|bs4ZvMZOtkN~O;7|WAYm<$QGNjF!?$h(^ICeN=q5FnYC;Zy>Sw$F;g=pynhcoL*lt4P zpnO@Dk`u$gSdZq9b$MsJhj%c2O-haX?}~g^hJVC(HU~1*=7%EZoySS2;%yVpJ3K$v zyu;F3Kkp0#qu|%YJEfd=mKz1~1$(35;cqfqlbp&Y|BS?g8ki+nIi726=H`N?QOj)#6Bn{8 zYSzP&`{mzchN~X3WFZ2nxNkjz?=iY;pBM5z2fZOTfEgCPzYEWLraw}eFVW>#fi4!9Y;uuV;SG(xw_-4a{uITN|$PrYOb4Na>Lm`nq1PG41Xl~n6N z+d!t0*u|#xwyM;e_ZiETYnU#h_xPV|;6XQ^gJiCPR!?1W4H><*s0#~jQ0h(2Evto$ zH#Si)S2XpZ2eoK{8-@JNI$fn8PK*6+tRs(QXCocT?moUNsy!HK?P9DJlH+MB*Nkj7 zoO>s#Tu-pJz$Yc@4ehLE%jP$mn-GpJ8z|TVyCTRZ~8Cvv+!fKQc|{+5)3^~WWF`h$xDFGF-iN# z)mu<-e!=1YS@s@mX*<|$g`p;a`7FTb+;oV6B@<2_DaTke9OJy|XEN?1oz}P&2KN(M z@UB>MeGh$dDfy_DTDu5ZCIm2%utJ&^GH$*Pv>gQH8n-cBwc5#K(2^wSYN#a2Rl@?3 z6=La@2*W$4>|Lm~8BWi^YwGscwpN@VZcp;T_2xE#2`E4~4GrzNR4+(_GI}RfEzQm9 zibOxb)s1uR9)HW(3?_18_J*^1!wd#cc1BAaIlP3LZ!=q=JQTp+CC=wQM~~Q_fyR{! zms@HjWt|G0AY*hf`PmV@WojV3~=G%(+Xo`4q8Qt8-|rnkEkXNxYiX~3@O@eOPQis-NkC&Q}ydYRmVdatjXMV z22@mxjHOAI{}h7B-nVeVVJTErfG1-83fOxrqF>HL!?sTdUvy{v+T8mq9TGwc6qX~3 z$u|uZd;B}b6S)H|pZvTT{a+ek=7D|g=00O~FV9#5JilANR}-FbQt>?T4W45?>xhZi zozm}RJrCIP_)|QW^b9rg`!DHtdxkoBKCk7@ntsQ%%k!kl>w7_(FDnZ476*_hPOSb( z#nRXJ75;OJ;OjzK-yL(5y2E3>jH7%oySAz!4oqrmXhEY;eWKLi!`JZP5XkWOt?y=0 z5T)D0tQOuaDI$UgulWcb^&1D0f7IrhjGyGrVW1U-%~~_vN#40dh@HU+3dWxt=2xbq zm~;%KFtSbIuFftxlDs`$}h8feiF^&dhT`ub?UZ0YZOp1V6@3_Tx z$Q6~V-8chUi(NPZ+e-(fl*mteA5idhG5M;eC;wVK76^Z}PE~+P!3<`)ZJv+2T%!Xz{t%CAc-oOBpMWpXyl;;H)>+oiX5fybb|`H(&}W0%E)az?F54K#Lo%7tj*UM#8IO znpO7<=&c^p!`BFO{W=0|0q4tbjG*-t<%z&ZAo2%L)Uuee7& zW-N;^kB{h4qOX{|Z<9rA%Y;Du@Lm|CocQ8+1zj(T367Yl`pE9f%sLW@edYH&HCzs&SgrRpObkJ5}|)A+jSInOpqG+?)y2s~wi= zbsQE8MHd}mFeHDsj+#l=z08t9{(`3&1aq+R4MD!sK9)VJU}jK#Fhx*^ep>f4Rjj&) zG7{&-94o8(fq4{`myD6J#D|)Hx3;yt`-XiskGD2wu}HD5giAHOxeMC9LPNTs$qH)k zKX>I>5yT^KF#Rh&3=yK#Bt%L{j$0!%UgXD2N6yaA&<7e;Ba7*Zj~?{j_Qw_dy$lB9 zYHNcjs-Ghilee+X)#;~lHaEyn ze~42kGn5BX*2Dve6Vx)oqZi@DqGr3`6UNS5$|?it5UqBtKa+Dk`fl#+Ll;pN-9wcLTj2 z4v>Mo4J1Y1(L~G!}+2hstFD6LYW*UA#qA)@}Cfgf@NG(Q56APF} zatG#vOE3&=ZqEFo053H>8*l95J#!6MP_9QIxVu}3e??I3y@;f8n}mPwh%}KY#Wf2}Ex5#GPbl*jv1)U{{kUF?|4^R6dbKP&%N;S*C7h&@IH z9!K$ZJqhA*7#@eE_rK+?1nEmM$}JNmejYFL>->lpnc*HSRsVS7N6adcf9#ZIkxRe) z2N*W8V)V+Kp%*`{S2A$qs6dHFZp}-ICp9RF)fV;cZ@0h* z%b70~5Qz^6rdJaus>#o_d3%`EHntoVO|Y7!cf{Th=@zWLKHV3DrWdr@K6EHXxMC-1 zuVii~P59Uc30}9u>hF1Rqh1goe1^+vvCY^e%5+nvIlmb|T9 zX#B%ywC=%@eAiRSflg%yb7rjOcW>%cZ!5eib0k}wTNUMp6Lt?rX^{J$<-1z)p&Rh; z5~oySS(^(UNfrqhBJ(;NE1H>6)JHGv;H78eUdr!`@Kl9XSUo<<)txgDQE`Vb>st)e zxrmpiIjfw-J2%D4TJqVoGLOf2p};fFy5*N~@LF;67V@M~qpF?J=_aWPSZcr=d{3F5 zr)v^Fz5+MP5r4`F&oSvV^A-*^r^F=lf;Gtu;Z2I;c4#(!`!?UG;J!lggrd7Mb!=sl zx0Br5GJ0VZMAk=zzE#{o{8I_n!vi{EUCwHv^>FT5Z~Q0O2jG|_2l%e^k5xNO6FS3> zx#&PTysvog$Y5NEif~gU0~$M`gL5(YV%uYGL6`=UXLX&#`Bde47SSwJS+@u1LN$4E zJ&&9=a#oK6#Qqw*pmAb={PAmj@X|I_jYfMp zvZo^FYcu(mCYos|wby&}+wHhK@t@mKayE371nHqw)>T?XVtuWV(1avOMJXPAD*{{< z-K;;iXeL2Gf(`> ze14M$3{T;u)^Mzdk6|paA>D&F_ykG4q^Cp zj%aP8wEqVv=<8`>!Dn<>1ovmiSi%C3o{ZqRuLGTGEs59e(4d6`x&^LP2uyZu zl_nQ$*jT<2QsE%|x0AYVFM)RIvkck5Wb!l(?^L!Kts2$Nsg3`E>K{ zctXhAvM+s0I(%?er+wfzbN(g&Ba;AfPR z&uw7+?TIZsT`ccUes^oSCi%M9`aDmcAYKi2XCnyznOB2bhUMF=|Ai3q-0C?~n1Kin?D9TE)EB zQ&jE4F!LYT$r(>k?XJR95t+jEmx^r`>30==x!7KZ&>$+K_g`AsRhX`InhMV<#6(b@ z)`G-`Zb0~DeFRmk;}YL)tJ5>q>W$s50MQPtd_k1S-f7B|6PAX&7_I}RpQG?>!uL=s z^PA8Odvmzetr2m2um!ak5s$TChKem5@O59Qc#=}HY6W(i=bE$IX*uO%O}dP+SclHq zzf>1-14U4(2;YX@07X7HFwr8^f?5EE-O)v(9AgTYl#cy8)r#{Z_cFfI6@HuZ{8qOG zMH3Ta=!&qA2x~*r5|;GeSPdoAW|NQxgi>X^-Voc(oU<5feW6+=O{pzKnr=+Ki~xnp z301V#q$j)#U^T~9E~$ckp9ThmKC7h%)wW3-&SCcVvoeEN$gH@p5;Q1S1cTWA>pZWK zOi0l}(pLk*p9E4y>gvWB%P~!oBd+cO3Y+64(&166hw&W4wKux4kWpb`T#x1VtIg2H)COi0w&@DU&*hd9f0wqZ;( z-%wkzyWPl1&tkq?G}El4AYi-&Af#di+G;?4nX3d0)C!dv%?fBgHkrKP(@UZ&StPY& zZY@IV>;|6I(f>hQa9Tb9m_I28PR0E%j`&|3!4m#8a|A|~7~|guN8rIUo)TZcnmxjj zA7rAK%o&CABrlmf)nFtAOPCNphPaa0C3nV@Bo`(XbBd=?_U!Pfc)541qKG0hTO@5c zWgZjglwKh#Wpv3nn?>iObsfHq45bCOxJirrDYCAPjMGt}brT8Re36XE#z0!keIeL2 zCX8Z*8zD3XG9iMEM{iQvJxP0Jx_Q|=1#CER`O436Bxb&3nqw}PhD;S`j4G~BN@Sr{ zK*ua%@{4RWkjP}BQqcYlkZb)3V$;MKvdJs!1|4s@=q~=muT+eaH=W)}K8A{1sx{Dl ztO(jM`Ggnr=NPpM%{w|l<>(>p$k4^1$rn;9Xa*!{T6>vUZ%9X{U2;~}?;{^=vE0Ua ztW3&ykD|w^Hbp<#*up1M3>4&kOxq5ne-;@N*>>~jL@AY7t`gg)xUNy1lO>&rPMl}S zPb3Jd1?$RZrWwU(bTMvki1vn2wb1}QL1)#|y8IQJYz|pSH?g>bQlnZohA98|R(A2N zC#LIL+Q|XA@$M5_0e6Uv48V{Qz;s?$z(1!e7VUW{z~SBTg03UG<9S`T?2b=2Gi_xc z1OSACb+;A%K_9QZt?>7{Cbtz9TT+TfX<@Qk)uI&mkops)NggmX>InOR1Hpm4qhM2P zVfqLhuum!g{uvp;6Y2p*uyya#dPDRX)-n@s)G1r(%(nCR7wJPTw4`%AD}L*>whei@ z(3n6M7tw>l@>a3gVt5$t0LlgVJj*XPQos^`6vWMZ{xKtk#gc}T;VHEtI~(w{!Fj4S z-|r+g`|qr?35|`n<|Y~#%}q+|ozeWHny%H-q*ugDtLcHChHA#jG;Lk-+ro!tRHV8C zI1*ec)?^-HX5l^g+%~W2@dkiEo@z)P}N;@~`XNn7h?e((G zXadWxGbC}wG?WF>hAV5vP)dggR5V0pGaBP|Dh|~Ov1-N(#gd;O2E)crCG7XSblF{a zl9 zz?$fhBY~}4Wp_(1eQfgml!XDBVBlvz;hM$4X}uAip4y;IrBqK`RgtkS=>C%TXKP%D zi_I25`N_cfJ3F(Mr=3(|i$q?zUC5?n#zTpYl3u(qYWiFs6HL&}=cq%n{SMgPY3=v> zUU-${(neTl+8_FRV6am4X+#vc2Zj|SjBBINyh~j~is8>oK4i*Hu|r@k!9S`f<~xFb z?iNs-4h4ooftTVYZ8zM1Y!5gw2MrRg@?x!lS^+m9k?!OD+< zl?cmhy?>nLd|rEA*KnWWp8a)J?1}7s;-5dAJ#&x{@=1^&XCvhALv>2*ZlJzX3rciuisDU8RLgVS9|_k_C3Mu z`u+3SGZv_xzmPq1dXJt@XU~y;{v$mPP+!qMKc(jfy)kfeFEQQ%I>GAAAh+QiceZ;3 z0ar}x$sd@=SuA#<)=u&JuEIrZS24P1Mkf|1d}dd2cB8)4{fojq)(Nv7y;)Yz53EuT zXEw0?Fcf!l9}SdbRRG+mAiU8P-Gf&FkQu?&uA5(8QL2h|EUV~_)(d5bFL6ZmzQX^p zuaK_$Dc$|&JJsckH?ZqVIy1p{ORRdzOcJ3+dl|tD6;xg0335uw#g_b#<~%oEbBiCz`RH~}@q5}h{UP}jw-I{u*Y-VK zd?b1Akl4C|h29Hi%3;wXKRF5SjUV_A+$@beK!PQq~s zb!v%DbVX)fwC7Y&#+Qo0IKx$p7x+CkTX+DWHa2#$pwN#vq%|0gUXMXnO8y3at}VgJ z#U&sI4gi=0#S7J{b`@#VB!M%sS}3B(LB}~pD#_6V^mn$}9!*+pvXLyg8$DgaqY+v9 zVP#nl+IXap;G(p4Qs>WoG{o7cV;kCD1C0#3n5N24f=D59M&4-Cefh(oMYcf@)r z3o~B;_^$A2 zDGn!2A|K7?^{5W3ofkCAx67ODEH6pdV@Em*0=%Wn(l@kidy1Y4JV8N!QILwQvQls- zON%7WF1i0+xT`fxq0Zw)@E;tZYldPqo{i{TCYx?Vge{6 zA{yw#O0mf#IU7|*RH7$&e-As~kOS|Ba|INd1S(;V;Nq0C>1E>bUe*5N>|J=TP0}t8 z2NgdP9NU(`!RCa1Y%rbHlp(+|xg3tysP@;o$`#?D;%94!thDYhHJ z@NsN89IsRD_mRusO8B7SXM$s785~q{5ij%BUkj=)mCs@6ym)ZZEj^}U=Z zYHX8F*p%CMqKhIi2vYlw98u^Z@b=*o1;S66CCVIsXe!zO|3 zg+qjwl<~d)1)=a&*K`XqKi)(3!(~5{r=q`nFNs=>q9U(%s6Q0ewx*RYHLxp65|C{o z8XkaVn7(_P0r%C)vU-_WW;PEYurq&Qz~Gj$&lbf!88Fq=>LQaWG941e<&~QUik#36 zVEsKKB95>;qrG~B4PrCdjHYCic?teLFTsg`vGqOK1VC78p>&K)+I~p&FBnZ854r3XXq)Q33Jbcw_j-W*GY(k)rh5LgD_`< zaH{BTOJ@4ei4(^JkFkPA&Wg`k@so^LZ_B0bh$%M9kJ!8VMhtIEFA*rq05x;06n{_n z);$4?lcqt{h2cCT{P&TEPrGFXn58c;05L4GcHfz|i*2KbWDI$%N(RM?H4$P?IX0Y` z85-e6X1Z50+nA|@Z2(0KQwxKzU)IxCIXUD@g#)V7{bfiW%D& z-6RCi+;H|+KSjmnTd^<#4@>ekV!qsqFj7lJA_$NWvcIvkoGNrNd!*giPv8Frz}K#8 z>N#!os4FOj^UmB-Ue!Z`st^u_bYtjjaXbvZj{KtYV=r9y(NLo ziLbs(1Fxh+-6d~iAw9gRlRhKB;bQ*O!(~e_08n(iylS{c$*q zn7nN9A9^@!^_hr4OhuWfW0K0=xiX0_NPReh@e45^w(72a-+q^PaBja3H+a!e`{nL)DDf-ZH&)`w zfuE*%+$PN2fShRpb4_u||8;*S#zz$B>Q&(R55vRY%kQU9y;J3j#vQGS_HMAa=_Wp* zszmfWO#P`IU|Ky)e@hP{L$U90z*fU(g1`;WTW<8umXdP2i2JjeVr>!U>j%mgia3!}ZcxqGXNrd4No{dC(B==nQ=bqEAr7P- zBzuLV5&w_VtvahR4L8>1z(awyNDbJ4ZILLfB*~H#!F!R}Rpn_UO9kYwv;Y_c6XMcL zkZR8id0jfNwpqY2A_<6dq{osm<4&NFeFl&7$(_Z9j?A4chx`ogMz-rHA2Cxr+?Na% z)At*bgJ}Nc|5Of&KQP!V@}II_Rf}<%wjvFuZ4A4SfU{&e;mvtMFtvo%U+xrCtNgf&ktL;P&j^NX#JTnUQRaH=z+on zvLWgWFbnlP%%aue31ZFnjgRpk!F%I8Fbs-Evb+>}WZ`PeUd!jDpUo}ihohQ&w64xw z0tcq*%`Z+6Bq0LSVQ7{aY`A1o4(GIh2N96}?gG8@-(k%Nu^u_tuy zK)qIEPiD~TRf6r(8lRy@I=9B~N zEXV3%fh-!^I6D2FHb%E&>l>4A%$;D{)3{28UU(7&Hb0Yhzb}fj+R1+J!-* z!e|&SJQ*4;N(>{_)GuXx{j8QV|ran|yCHiVV^Mb>yZ@arV$^&1ki^_XYsD2O%gX z2IP|qOrk6;U3qaC9`UqlLcHuZJwc<#7)Ft;w&godwlrvDJEd1>^W|iFHJ|j5t#8mv zDr~g+q2k@gjm7_j}UiQ)XqhQn5?a&d11?IQig!Y%)`q zp?t<6`hsL1Jsgtr!2&`>UAy~34CCyf3IR#PVnD5y-gMA z8}xQqS5I$r)97tduK;s7yGm!Y?1+F+a>Lo$6yV~}6FW9SXb-Q;**YYR_Hj;{c4 z=BtRpt{m_CGXiy71F6#L(iOk(6p6`KPUJnA}w#z5yxNaQ~#2Rc*AYyD^aknxRODb4rJVw)`JNdA?CP?m4QPCxI$p<*T6br(eQ2}34Ba$14w1%7fQ;)pYj`@yZ6BWA z9G-=y2Pk$jL#K5JgjkL9*=GTp{dItAYmadeiN#{uX}z1lw~#Tk{bGsp^vf6;zgHev zE0CSlgRYF-IwnlIe$fCr%xxds><;!X1kphi1o3P??JspEd!bUNREjih3%Y*8sy(aQ zIawb)+!CJ#xwG&*W}DCWuD~JL;68XV))81hF9X59mk`pFT(eF-SyE`k5z!noX32K( zl=xa#XpoLu1yW2OU_nRD44H@;N4y33CNE@{mHwr(27BZfnZD!EMMPR zhTL;T($p5-n|8Xbpbg~`?v|PJmyAb`>s8>ZY3{{X$8=?~ImK1zKB6)RqDft0E^Kx* zgY{H)dO7+0h{p~3#A_1?eiZ^8y&A>7qm1d38LOa2or?O-fO|oBT2~L@DQ^47mJHzj zg)x!}N-S~B?7wNfLt-XxvE$Mq6axl`lh1Dy5in?)XB*9^EOO(#t{{w1<=B1uyE;gT z7aC5Dt^VAY9Aa0qdb<$^D?<A zc1hI>7s6g&^+wfz!1QWk7d#Zvsw6F27BPU8VYRIQ*4N`{wYR&}XA#+KugfG$&L$Ze z@Ep5?JvF031Su=;V8Mfl1Fr{68Vmg2QAdFxOP8j0$8#xN zOx|__ZOxW#3xA>Uft}GnI3o`~W^D(|b^ZTYWKM@er-&l0)&}aFlUFGeBO;g9#_QIX zm?+e=!B&Cz8bUyp>x@I!*kP^|L%6+@PYx**>&oS3hng?AnsT2SBIB$(|4Gt#j=HJ0 z;RbkgV*FKMDBoBM|!B zQA|6O3!~;%s3EtZS3jkJ9&3b+^PK0!!0RFVqL!}R9q-{{o-phVPOo5-Dh@F>24myo z6%<=*b%(s9tz?ILPvOQvr;}rJdwyF5D{+6wd9TdP(zVfD_|y5 z;J-G`aTQc#?+vS3p{EiqBm@Jv>y$3~uhY!OPqe6P8MpU_4vqDTv zYory)0K1&{jE6FBFPQ6`(q$FS&je8}U~BH8tmI@?CyxR}fJuT`uGaDc zN)^J=^NpCzsq*&IAhQf|9BG?9oAk8(p0(ZvTLqOWfd0}q3^#SQ({v*WYO0ez0EA1p zr~8wI4O~sPTjR+))+%G8)@5br6$nG%AfgQW3cDW49<&v3Yj+&jd^jdz5Y`N=Y`G;8q_St88y}9(8-690moE|&#Majy&ZfIkdCPk!#!RM>v7qoN)F&L)l4S0 zge=9+H3@&{UyX!w-EJgI&@?3bZ<~a*GK%k_sR-|ydmKsetVnp~I+8GrCx_Q6lj^mR z@JyG40qfdH`0Uk?urSp}!ZjIfvY{4&=;<-SpClwi{In3uisj@}<1;2k*~$>Io2hY4 z*)B4!@?Ik<+)4VE-SO-B71J00rLk#Gq9zk@)@)Z!!S*aE$c#fwJWePo>j7B9L~Tl# z3Q}=02{)D-;~Av0L=|{gkKtcsm5eRO*^0CF3DuOLD+5(9PLQcHbwyjj<=3P36%7D! zmbXf(;4&WyIY-KE;$ecA)|@nSCx3-=$?F=xwidFA@d@7={Wu>eBwwurz@&=eROcS# zGX+d#%@i`K2Qirq&bF~IlbOyYF4>FO?1dE;Vv}QAGMp0Usw(X5uk^firw%b8dKYGEDRL>?EF<8kK)S2gMU%Mt}d>Ce!erlOp3#{(TT8O$vKqTtj z!JDVQqp3&Aohg!AqpjQ$AFSgF9`d3`OSw!sm~k`Gn%VfdAFc6rkulWtPIDDKGd0nK zmN`rE4o%d;%=X=Ee3#K+gCR5M-&OB^A@q*u>E~?hx_HkA20yQj<3U~hK#u7)jO3fS zWhCFkC5+_jxMhr9^54jr+Y|Nc6cjhwk>o)ukA!MooNuFD5gaZ}>rbKTKj=o$U9 zx@Y)VKFB|r(>(+*D`rJj_fY`PS72TiE1x9=O#S}{Nf{;K7VlsXk1v)0WAx#_Z^QV>FGI-@Aj(t*LUIW-Y+R)`A7kVZhQlC|0KW!iO)o4Tp8QEL!$m8Y7m zo>p~&V!IggX!{CT zOGti1KiwlMNmWf^>9JN+u>9MD%D=6=7hX}>yEXpZxV^&!A^BY=v3F|!o(_IFW>-3> zF161UG@9B+S`bRDXi?s~0`tVZnjx_v6PSRF&^%z3JHKSfD)Fc*yD=`lJ$^>b_bf!o zNzI~KLGE3Ah_@BgV|e$~T$cV^C!F1rYEcp+DRxg{18G%_TPC2lM)%t79`1nBkl@C? zL>gKP1@K4_rVYi(U-8+l!aW3oFe+eTXMFGOSlN_We6#b%uKELV!xyw2)}XMl^ey}i z-DBn%)Qp<3>~Z`B=|XK7g1rZL1Zt)!t8p>v*`1h3lLA&#(6vt&3CHYy1U$Vvh^q ziY~I})8RT7uCw7f6Rzl`cppJQFojrvzuHlZ@?xK5v^S0YF_&Xerzk1G4-n)*oZf@Z z;^D7EYkJ@xZ_~dxD6J$@I`F>7x~KF(qDYG;3kB`PY)spjRr-PIT4DI zy_>AyNZ((Oe|_ILw2~V@qmuoDCiWk<@GFQ zKgE*}oXX#S3+#tuc^OhTki(8ODKzE49W4~x#dClBk;+|U4Y8v}BKOz7!$M>^nP1tNsKA1nDr`%)tlNNqYVu_bG+9(xyX6CkwbAG`_*B6XclWS~h0Bk(i_u>5 zo#KHEY7Vi~k)AW{hUPVjPZq6V)>G}UV?Nc-V)Fwje%fNYuBV~2spJQdrI>+w+AuhA zMtE!URuFyq65&_wDEq6$tDu#AE2pg$Qb}d4=x4QcAXU`8?wffVDI1Jzs~ua=+4PY@ z2&4*T!mB0CqOxRzC8>M)MkI1+gn?yGgAK5?%yXv24VeLsKe4!yd;HYx&K5a>f)Zq3 zk55g9eG|MUmMf`O30g9s9yKW|GnN=u%RU4G)8aXAHYGJ8$@3)vM#R1*1otpj8Alnx zTox>3w1j=K3>9m=oDB9rzqY3(RxEl^v5LiDu$UkANne=_Akx(a9&yrR2wv;JZ$ZtpWi(v2o9W7Kw#E6oSf3$4EOavn_TFxm zuS+-AUzct&+cH3lna;T;`o2D}3_l}P;bQKkDvgeCz0*_HXv+=(fU@eDzN9CnS5O?v z=a`WhE1)_4SxoIGGkhE?q%8_#H8QjGd)Fi_$uR+Q+Ek?grNb^g6A_Vqzi6_#WRH}l zS0S99ES6PVJe?D*!c3{RRTYqeb_~u45}GbdOG{f!@*zX%)taO zjJ#TIi|&WQ`0;r@Jdb4=Fs}Lc)ql8jtsg#)#e7XIj$iAC^IcGtZ)+K07~xHwy+)wU zc7aOEtJghtt#zO1*8S|p=2Z8?%XN6-T7jDBBJInTqf zps5rTe5yloxbWUge!^VK)JFylALh;R<3C0?r?OR;sF0gea|pgj{t^eEW;(?d30*(< zWPyDmm$)QPSLediq@+;g|JyZqA~gtc2fR|MI});`q!zu;%4i;OTAQF* zGbL=^w(QJtHL*wtH&$XT`ST6DSVTtA^u7A? z;MQT~HYYBgVzx=anqwi!nj2HZxMqkYcZh|&kG8%2ROk#S{F&BXO*jmfdkBX?nUiug zCab)k{0-bx{P~F70?qr_wEUp9OiFKSX3fDvnwbzTQ)80AMJcj_3$^T;{#XivEGrzP z(MoYwB}>CfQ7{tp~SQl)r+xu25JM-LzlCnB;+6to}K_8)qP*_`yzHn(iC z5tw)D&nrBFrY#2Oh|q_FlK01p+K#7G9-Z0&cl%EgfnRdNa#Ax|ER|>kIDdBU?uhV( zk|S_|keR;+zhpz^oGK=2H3fI^c(UlRGOI)qJfBb+5)P6v7)~h8dzfwDH0I8**PM)u z%AI2;T^Z6@$0_O5js;!uf3ScOLrSSVw`2Aw|9cNj|yytF_u{y2#p%K-- zM}Kbj{l*0k1yNvOBgo_Z&H7_!McI6kA9Dwn%_kv%?h7yw>Fjhr8>J6nQ#hk{pi{;3 z-DUxeFN9oKVnP}C;w*NO^=s@6myZilaC%hNIbeDFI&FXhj#F@{>QwfOvfDuR7zDvY zO5HmO(O&m1A|&8QU0*fQA?iwH-*|vy&uVGw<-BnpDJtWPoxM`a#*fr5w?@OvN~>CX zfUAc5eNBhMC=-NED{E2JrwT7iX64OK3?$L0#*Ih!t2%7J|E|utlyxk{NmfTLW?>p)hbaPm>3&$%LbS4ejvYsyR4_0TceAPo1T6K{St8AYRPG!ntr=5CdGoFG9L>1=DfDQpufymK%P7IWT)E zTW+3&DPU#Uanh7FH*?ZdBICTqpMbwa(wtr81(LCB z)`hGwS{{|?0xD)5wx;d{m^1^fFjRra9n1%#v81R6URdrC&jp~A&2-iicvw+?G3-pQ zHBO94^3@w~Od($8anNvnkHD~cSv2u4fYa&?fZDjA4XPd>!O7P=- z%59@D9ze1;?{k;*{hB*E>m@WupF=*3bdB~yX|Z%1lB=ioQ(ZsRv!77t`#bB?wbamA z!+><~3MD+Ub%w(k*HVXpzA^dkFbD57R8eQs{&X!h*gHcx<<_K|__oV<9B^P`D-opBA=T}LaBrA4AJ(gY94SUvn+)~RlGC%O3jJLe{Ok-9VC1a6f@TI6LkLbT-;j?ySf zO?$(x4;xp)#j##oNQTqhM!G>mg8|0QVytpqQ9))zUr?HQ63n>J!-H9uGd&_}6AEB# zyxFObr-He41oP|iW~kN!x@IW0xQrZ`p`zN=%}@xT1&uXnQUa}zo1@GyFh_Cnn^(j{ zvKeQnPBYFJRY_zoqAkh>Fei&p>!G$VSqJ`A?O5g3F+sy$vh#U_(U44Zm_qgp9vKca z2@S(0lSQ$PY(Rkn7@US`x=L&s*ay>ysSf<994P)DLcL7pL-9ab?NnS@NzEeo#uWZ^ zXzcOOm^jm$5bhXC>#rCr!Q^dY4WsxP3m3CbnnfDVjAiUiK9tF9dWgSAvHHFt(|X2! z!Vu1t=d8UUwm0uK-8+R1IZfwC(i6;;^U#XsNhBdZ00VnnDp7JZKqII!pf5x^(kBD@ ze5Co%bq5*(H~F#vp_`zZ)6^)8kNEZof>8Du=;#atr4N=2V<1F{@x?S?7SItLHW!&j z__Hb7+g?mH++o>Z+0YuLi`hCgNlN1wvyQ|v$?>hSpH-Kn8Shz#lg{8}^0-Y~6tZI& zZ)zMND=()>l#Tej3*#V|1`><@EMO|CnJAF-mso_Ucaq!11fktea4)+KrOm7?A7Y=_ z&-xqssm%wyf|7dCFc=>oL4oI$n|L-Ejtc3k%cdN(BlUqGzYEyRJONCwU{aCLBrOF5 z4uI%A2P7~DSqTvIJzPM83t}p0#3o{(->d*Lq-`SgH-XyG7M{jA)hhX#?JM;l=5CY6pEU3tQ8kPrEV^GXkgkYhrOv%il&%utXC=WT`z z7TJ_kO_wun5OBQ7VbY2Nuwu91%0auU)j4x4jUia^`XDK?>E!ZBWY6?+RFz(SI;j=h zhY?b2J5g{Kv*L@}`Cw6wIu3(buAI-cqZd6`HP>Cur-=l_9q87`9YV)GkL%ki``gL| z^WQn@n{-9)1XtxzA`J`s587<;)N#h`9b7rcm?5&94ouV{H^!&REO>_Z&*wVFr!U|- z!TTYuXL zu(^N?T?nS+qeGny>4p{ctX4N&N+4k_L(J&OcZ%PUcokWKvvPza#24YX8caFW(4&la zhC$y){1CKwq?CMZ1C*jTBpz?k2gn<3R{(-GN5*1h>CWKeARRx?)YMWZOR6Mcm3Ux5 zJ%6aCEqAVE2Eh@yo%7L|zi`T#Nh58Y?6yjKiQkt!#1bO(;t6-5N)K)zoesMbQZgnU z(Un!gL%M>*ab2bR)Hlp3dqkG#8oB8z?~eNW*$VfQ{+=PlYwGV$>HP%vhJFH-+!%=w zD#?CN2d6pwN>L&lI|L|T0=HCl+9xoRF;snMGKdPs(Hx7(h-yL792W2ZIiV|ba!57I zqNOW7DH7;23h-||Hs+8XHYS`+4?;D6f&Xwm#^h$VhB=s!7ALCmKA2n5>IjVs8zMQP zz-e8FU(17K$sX+}Q_^NtGqGd|GY(aC1{)=41}QWHBK8UQ%HlbVr-7yxsyI{i%FZIk zyLG(U-lZR=t7s=!lt9JxZio8L)35Th#zjie&Do#8v*xBk;U&dm;E7zN;-yyCxTH+yT5qB<63*5_(4blu+1d5lX|$TQV>5XZA-O1RqjZsAAVmbDUR4Tt1*nxS+dZn6rWjPH-1L zgYmIbPFUk`c=a*ef*t7e^ZK#re-z!&TNVduobb(crk0$s#I5sX_oxV3q3@pY>mb7) zuWor|(|U3gR!Y7Bvq>Ph=_jdoK=qQrA^A8*Uqx^x<4_Ls0FecRiEs@>YiK_W2z6v& zj>I|k?=hIdig|SSVOQ$1Kb6g+8Fi79TdVa zr*$vPiu0f{B^MKh_$&RzX~@D{#bZumlDO$l(|Aj`;~N~D)lOa4OVw3I1MFwV+%tAn zOzCEKBr=hciJ*Sbvr|G5u_DO{HFGu}xUGRXXv)-5^7b@f(NL#}oA`H(^aIpf;|Sfe zZQWkv04uvSA@bc3H=yI>B8RF-zANKIqDD8G!7FQ$^;}mJOJ*sU+M4C16tOZdNqs5v zk`yv&mwH92(=5mYX)Z>8-`*fhb2%E_gb;m6Q7cf%Q`;;D(GRv?OfX|jCbo@7FA$dQ%W1R6VO%bFC z-m_Iy%KVv}IoL@zwQo+>aSSwqd>6Oo@-c}{HYKWnDw*ZkY}`g>)W38)_9y4Iq$6I9 z&E==eDsK-|ErG?yUIv={HNknBg%TAwQ24QK+FmjA6#n*mpgoAs#)7^5a*|yV5+4i6K*GLs8!LpW7Qy)Qg}K(MyVWcF0p|zk+v< zaVp}Jyf}Sv`-jq6J58(YHq`eYpuP?oVr^P(uS;)k-y}d9$=_-j5249|y=10V@|eo^ zwvH3!w!-cFjHbMW3*N??xgeVXpzy!(!H?>L95^w6dbL#Wc&9gcKfcX7K}>&odoo{q zN$~+*6H6#nOMgO7yqeJhZ$@2D`b=)UUqA4Yq7vkphQ>jXBf+p)NdJQ}mlo2F+zti5 z+<_UWu38LsB~)EVQ{~_+q(8Kqy?ceUt$huQ#!XcIlENJn{w#CEa%i}qsUE%)BXNq| zWG)$w7sZHHR6oVlgm9b#f zM&^O&yju?Y!C=~bA$T{T*zf-u znP}^pEMvPM8k0{Yil32t-xlrMG*hfM&=q^ZKP(ptD#Q~p{;$1M?_ngoQR zEBH)+UFl0vM*bzPPx}&~qQ$c)u?D3xEAIH0pDegt?i`oo8?32HFJNj7Mp4XA^BFb* zs1kSq5FUULp3H+HP;lM>TB6k=qwV3WB)4;Ln^2@`QERqXxlrju$#=F3FCds%!v&}DhsK%F0=YSwB|LU&pAQLW6=r5X7W z>C$nHE6<=CVXn>*F81Da+#csvF3KqR4B|_Zb{mo@hGZ4IPFCoy9KWm-CATAk@h+BK z=rp1U2xZA}?H#47fds!LOrzmB&ME1-oyS0K0_ArCJE_ni^clTL$SIR!y9t!-SuplrwP zXESF7Km3M*0Sjn*rUB6#+>6aLF33a06e&*w1Iyx-Uw>ctS?Y;8f~KWFdWI#`gG?;DV{ok|-4}A3rtCC|Wp}QU zSsoDfPRM_E%s2)r;0h1>UR&pU?@cDr`(n5E&#u=HUFec}&E{qhA(Psb6FgO;^UPKXi+46@Ei~cDD*Oq;gl8g_Vg4k z%W2$;#DbqQSVh)Er)55PN2<`QR=<7O&~ICngPdW44ur&&uykU62n*6GJLc)(MLBJ; z_@q+(W_^w!IFFt9+J%>x zStMEh*K5s)VaaUFWik!k8%I2QHOK@KohUU@xLd1>CiVOJ4%g3`sLP~(Cgn<9DJN!m zD_Tyz)GNw3)+K|Ci@c0u1cV>2i7eM%pNwNKpKr-TE7EkOEQ94%m1SZ@CDC0~mT_JS z((B5yY(cW@Hh1K!-!EBa=bZM___fF~#qWuE!HH*xW%as8f;bSJS_#~0r?)jZM74~s zMB>iOmrOSz7qQ@bL}q3oOeq?NAWSTzcgaF3C4W~Zc^0<47mUn$lH<*a$#&L;S>{0sRZm-2}iQ>OE?nqS!l}n=H5jXZ8igY zNTfwYO{i=^;yWf!^(Ra{8XO?Q{OEXvRl*xmepVio(rOU+w7fv15Bww^O=M6B4iKrS zo3w|dn1qWK;P{J<$={Hqgg4XOH}bzuqFd&J`Gmub2C#=7!LX2N*&F1*iy1|Fb3I;a ztM7mPM|d%;@0=20LEeSl_QN*LDX^hBqp>@A21*GXNi9-_eyEALv@A!9J1HhFkww>)-Kl&b!~$l@?qoHyLQK)js9BtNI0DTO$I%0O zS<}aSNgL^Tdo$I2qlP9~Ogmk5L+yy($FTsrVC5J|fEGv>0NIXw;-0E)fsanItWiwH zMpOc)r~J7r0?4Y~$rpm&_92$tr5t)`Q|iaf7;GqzDAy~Pqze%?4hOSpg}~^D9Hw3q zLT>7zt??;=zI9JHUC<23?B~djmzEysxzQR9GEG<@+kyr~>qlZ8+<>G}z^d`4m?(@F ztgV?4=L`QH%AbO~WgGVB8-(Z%WEhb-gvx7&1SYh?qZFZ3ex<{YoK_xi&%b}fB)n!U z-)!LO3W5`zK`U@Y5F-R?%GJudu2FB0V${du8bffLoY>|iX%7$O($p5Mdtn|2@p!3a z&(Z6C$txMO0#23ka4OcOVVmd?PK0!vX5%`zEbLDn9@04Ut4yyDSG?9IEUb`N>R7wD zUgvi%Y&+1YZa&hpyU)s?PzW3wF*iT5PEoxoalfd-{U))#4t4N zBZO`d7ZC-Ms%L(UhNW(ssr3BERHQE63q=cxGuwzOPQIcegK^K;Cs`3v z5U9&;d_b8+&#|zq)&_&E=szv$y)ROv76yzJ_W^_o*FytnL9XKi?F~SK7nrOgcNsL` z2gV&pp4eoAtfP*mVXJyJUpc0BkuBD~292X|g;f3uVU^^!Te{s!L^;=E>$6#)x)x2X z-yKhERm;=siMru>d_B10I~3PAxOJz9r7tEwGomWbY|><$PN7f$4+p=3dlnQx!m6x(vr~CJ+$6}P#V@w0LliPZ zgzU^_;27eA5EUS41i!!me9vya100H5XtbFJgK(nt0a~)6?oJYr^_A^{hIT`&v4IJU ztY(E?;RgEb4HQyb)w-ZzZTu&;!tL5#26jE=1x0us)bB$)8|o)9-Z}Qzklsk17{-Ik zqN_aS>M0|ysEF|-{D)!!20<$LAUqFc1|uPf$(fB_?)e^C zq42Y@!bPKzr4b|?R54HNkE}5ETC=(%m1FWrGGk@!*7M|yX`_`tTkU7IQ5{1tzYVgk zYk!~d-PvtubL{(ms3|Xte2!40wIs_8-k>&zV1WcO;M#B(?@h= zC3aF*bkN~&ozPVqqlSoDK-L}7GlMp6?{R2{D-sfAv!B?u*t3O*Zfu)^-0E6BB8bgo zsp8^bT6bL8Y`C7-ppZG9DKflJV39J5u@U>RB4X+W>2^i(Mclx1 z-OV5|6ohM2XVV6@B?&T6>haDR*$*Z@jL0e78Sdqg=?$Fivp!viwlwQWj%y5hMeFs{ z$*LBblR8D5ou-yCfR}*N4KhcxT9#U^JZ#hhhg6$Gh0dVv*Q-!nS{(zUo{|u5aVr#D zr5m316%B05e06Plth>dn`;&iZrY6_+Xvl2Cqwz5&?R$big{ys8;~VQ`LsFDoLdLx$ zy;uEcdg=n*+8@au+aKxMMbJ=Nsv%Kjm1K?q&8+1GX-8m2OO8l-Y|$SLEJ`txWf+Ot zoTjYFa*4%^nYJMt*}H?-AjMQUzvy&ERp?PsjYD51-(AoDu!Byblu*>cKtj4-VxoCF zg(N`LB5awQ6JZF-tb43)!c?Qt=?z{uoiWvco(MIG3#2DhOvyHY(jPikAcb>YO+nk2 z@1_8)v#KNSimlDmWqmEdKyrXy%oqvn3bKEns@-U>B31NMj}9LVI^3`?P0mLj(*Q}a zmAxoF2boA&%Ws|CWTR3}eno1ERUeHB-UNN(OZ_+LwD9|--rxJQuUC6lt9favt9K)> zcPB6iR@J)W>}oTuJE&`q)>Rxp-Kkqa;Z9No^rfE6qtzgNBgQ}03$lu1vwOLP>=k|) zfWzn|aZJjAF|rO0ZPrY{E8z)Vut9IL>V2nmfO5BDQhiL^=f)LY;Y*NB(&W><7 ztXGs9R&;`QX%>5$a-I{Bf4#;W$BH{QrQ|pCidMT*5jh_K(odWeYz{(fW+Hiri`Yy* z1f*Odv1~pgD`I;Pdmv?Oz}r9v2c%)_uyI+17}iF`S><&P|p4a zjR&0q)oAqQG|?=ej&DMqil<%>t$(nlO(YYX(bvRRft6Fj!sSxK@NGKnaDkkgZk9>d znv9@3ZTXIx8L@U!*5G17zMDIl&N0~v_lioN?!-*qgXAwWhX?vOyb|6yB|^&j2g{31{Xn@sd%xF8Ssf_D;|j$F56e6!R)tTRzkA+^7EG33PkP`r@+Gg2N0uTp~7#0RS#5Q~C>V6{>BoE^aE4n!X zz1d8wscy@rx`s4>G!(X3U}y_a4@SaZrWtb7BQ zT^rpr@{n=mzG##JZ2}9ky_S*8|4#T$3uG{nGeG=UhBHAmlx+_XoB!L7-Orq^y>IjQ zzNZV1?0e|pgX0rZvtz}dZttLWB9{$d&Ai!wynkn*&><@R(a!dL4?dc1?-u{5NA`_n z-#++AdwT@^^3C>pWXBDr+yCFkT>Qqg#kPw3-F?8h)(stCSV@eK=$e7{r4eF&w(l$c zRJxr?O!TB_y07?_zUuF3LEsuFDv$QUr+eu*Y}!i6VkZI=Ws&7^BH{15K$Y)B?IB~P#CN88!; z;D0eE!8U_~?eO7w0|UJq_SziXb6jZy@b+QgU*dHIZvLDQ@jBxah2>S@N4q9VY!Z)=KeJz#4XGfA<`E7 z&0Xy4((v-`b%CU62b2}i6V*P8suh_9p=cs*HD;#|p4ov2ChsU^1#OYR<3K0jUUprQ zJcbW+EkZ^_+p>MZTO>e$z=TIZA%dV>V*-lSz*NnG!bFRrIz+l{0`bxTAt(XsnGor) z*7pkqWBqKbR52r&is@4@SD{`crlnqnlboOex@k?l+XsFKQzX^A78Qo*243(30*ef22AmOEWxKrvv>y-X7bW|b1=YBYde{wMU z-`i^<6aV*m@lWy+SX$y=Y?Ye4Z%N)8&{V`MG{}4Z+M%S8!G3QozbRJ)uNXu1=dxpu z*_I1>tD?=Jcp6hSAxYpf)v!21HnnSEoF=rj2(pxJZ0`sI`2zKUfy5$EFCk0ovrwzv zVs?ke%ULgX!6CA*Y#qT1-$v8YWPt zfJ_LnU6PnhhuDzFzL)2x&%+WgCSPOa1ffnclvRX!2XTUNLCx!eFz-CtX-JqiE-TEt z+xb@sD5b83RT|p8Y&*il&DCdYcXIk`DaloWT=6F=GYA<*IGr& zsHs_JQNA^!W&LR5wpAsX?l4AKF?nc2i}Oth&rlg;ucD?9hw`G#KUG+niij&E`Q}_9 z`P@1Z6R@xN-7H3bZXGQWzdo#t=Zh3(wu|#&Xl7Xeu(!_w1==`Aw!q&{mGp)CZ6!XBlu zii+R$x|rR5DU*PI)Ybz$1Y4-c<~K->14hoWqarUb*D4xjW7MyT{n6Y1+`>^8+j82!lgfbbPFx6B*r_46;qTUbcpkE zL#Anef}IiOYKAq)@py>T>s(-9TB zsJdf*V=bgoqs%E5F?{ths!*&VO{MVb+<^GUEdcEisOpO8mUIKlt4cC7#*kmi&@N!wmaxZ@0LdXXLE`&a#TN zW#tMisQnzVwgzjN5N%XQqY-QeBLZZ^hsoN3D99%W+|J{pI#irbb+HQSky{iknVUk z3YMK$&t4vx9!)Y~1TL5_J#b%#bZRU0=v9g%3Eiw;*rh(8rk>(Ss)L)h99)4!gfEbt zd|*u%e|r9VlOZUVbc8R0IYm-U&hfQ@JdH>&XP`%P@?pQE1Q{(vo+Gt2*wWOhNi#h? z*|BKs2<8DpA%dQuXZ<=n6Cqvzs-r@i)Fppvq(2jHVOB$3v+)64PQ=Lv zZfK+%E#3mHQef?wiBpuWUuCw{!0A$qnHQ1-gG=KcS}D3Iubx&dFKaA7h-Nao$EG2K zYn$4Df6dRH>PI|`Z^_)f40$=W0Sq;4ln!}fP#lXb!jJv<%igdzr(PZ=BO zI_m`GdO9)oY&ubVfV~v=A3){d;b4W7Z^=@a8*4p)Gu2_2bsym7%IOCjhPGqn-q9{@ zQuI%jN7W41$OMIMp}|PnSZU^vO;O^M-}nFH?ros#x~@9U`|;kZulK61zGamh-+DMf zN-W!f#5TsA=oX4>;g|&Q&@`PHGQE1O$&$QSkUtMEBiu&OIOd z?60%WKKsBF;B)NoD7zhJ2|<$3mgiAB26mc`F@#A$MR?%%7;e7>iW}4-wu6uVz{6=n z3B>-*6SU_XS*hV_Vr+>c)x?@5HmiwsOB|~vHY_ozCJtEQvTEX>B`&Wf4q4)gYT~dZ zuB;}GSfZ`d-4HdRrX{YfmTXz#nrh;xC9bU|j#=Ujr9{(B6N%B*#Hd!bwQOvAmSzM> zAObC+HG%HBZR6<;yR;^&Wuq>0Z6$N9&uqEOHI>XYKC|gES64Du`^*uSxvG-6%4ZI{ z%$1eQl|GZ5F7 z8+WpDjwkF;g)Y3$H~y_S7!K*Um~n`KN`7or^ZD0PJg2OkwT z4mgY8vd#CkkZyXLXlR7-=Iq_*`J@on)F27$G|ZYCW{o~*?df7L-y71Q|Z6`keOP_+Fd;1p50_>Om zB~H-vOTV>$GF~kGO5=6aFPU=|{gPQ{_Df!*hy9ZC;kAdwEMj@`$y-u3M#)(CNIHDK z94&u!L`Vz`>Ci(=gaU(>fHV7>lR}VVF$xV-x+ClCKe=aHyUxA`Rb_t(R8zgE!tB@V zf9F1MDo8$*h{yXDjfdA91tG+1yC^R*8ZhSy*~kVlH|$}xP0C8O7t(}o?~?%NNDEt+ z5t2YJ9b6g33MonClpXi;v5S1q^8E8ep_I!7zF69e;iw5dNDdWzApSS*%sP9-hGEnX zQ%-zSv0}UH-fCjgApn?Oipu$TRD!e$T*ti{3 z6ltF2JdQ3NDuBa)17ia$vhI#B?z-<0nFy$dCqN3-EM!QrIS3*nIYi`H;^08M1_wu_ z6mX!t2FWFs`mBJ17^vzJ9LQS;hk6$d*hC1aR2pvca>FelK{4DM2^J2w*=M-&is~6I zTkHh_*l@9}=fhR;-r+XgaL4j#7q`lXOP+>1R+;wFaB~zfYBXelXcS}yMu8_)Vt}|h zYFGe>q@H4t6+N^y>rh=^QovYJK*Ezk0g0RdDv(%60KJgNN2iJJ3yCTLz?Y!AV*H%Q zapT9!2E4C1MBt^1_q;f~$Hzt7Am$R2`)eKofO7%n0|;O+D9Iqo8qVicZcB#zR=wDf z`Vwj)a%^BQ#ON0jC?UTL(#8a=JhA;9@?&4fv4PJl58I_fe&uzU0OZ+4ewYC79tL#Z z;ef2RLJ15qSA!ClV+Bh@39-GLI6O*}!Qpvg2^G=R3?SatS$nD7GCCT&i@b^5ecB8@cB{;6z10~@13*_O>b zs(VqqMQVWEABBWXKDXAkT~m=d!OVX0=^*+1O&~H$3B>47c05n{*=^)59pk zHwS)ku{nR5|4sV_b78<0XRtk<|4iEJ?B@;II9vB4py&p3|lqY9n)DE6U$_pZrje*WpX+GCTQkNnQ`@#s-i+^#*X>u+WG zHoY2K;`23K`Ah8e;`iyu|JDj7&d#ejHglg=QCmv6<&S#X^0#_mAXFb*E%wt@@)2{` zu{um82zOFYmCEH><+bbNrdJnF&Bds6JP!@q9#$Ryk6N}tY6RDIYeK+hEg}d5%QBRM zj;e=wt=ZHVh?>i+-V0_K(lmso7~5@?Lq-oq!7O1q`fLpAiwsY*4!+f zqy=wKKpfXaj&gI;1)x4%5VaMaO#bzD(6+k$!=W*em!fLUxO*pS$qjY-f# zUiNZ^WPlKXV4?R-*c(>_(R?i(ykGxp+X3J+-O_BGu(Gx7_i{z{m`&OSuodIl#<#R0 zrc$P2Kx0u&73Yx4I|jB-YM(wf+ary?J_;s>A4_j|v<>z#m2UXLG)e&lcTE$h=LiBI zGz5g@j#``rK?BFBO?1N6dc?fYJ_`zDFt7n|+$v;k(`nG49aFNb-N(g zbAkdYs{>*}*f2)g0ST_9oqU`kPcD9@;yJf>RB92|0>b8N&@LNF&~A#XGy*?JR3{s_ zYZ|er@~`N`A+$@%L|d|zI3gz2bfu86m^7F$rMP0-mC^~|a#he9w;N(NkID=!)m2^&5uMH!UH8UWk_ZHBkl#$XPsIS+t@ZZ zST%zig$J`sZ0O41mgPvfS@?Y!l!UBGg99b)!W|O@42@h6i_zNf*qxBf>S86?|Fl@i z+`$zXUNe*33MGet1;cEsOLcOb5?d30Lkt`d@s<{@r}jxMDf&nW8?PfsSZQ_i_k$r7 z2_a_dAb^CxLu8?BO`)Merj8itm`tskOcew@OM|jaN9+pn7t}fH@>U6E- z>gp@Y)w;OrYTrFkt(U9DX>Ab?=G5|!=VRc}tm#KU@#MMzKr87jdQ zKt_o!$lBqX?Q9bsZuhm~W+F(Sgp}kO42bStt5oeH)mA&fYEn(d-KNnOQoBA=1aG44 z8bxSHv<*2vHsru=dhd`BF9-E0DGwt^9mXrCFBWdsN36nTMoNuhPcBPRc7(fPYa^Dc zkr74h(d^>s7n{)J;Jg#FrUi;+809R>Q2|rejtTQIl4}xtJfHnuEz9XuCdM%IGqZ5i z4cYPEW(o3ME*Qy{@pt4i&*bK~5;wWGW!Gz&Ce;0aO88%P`l)Av?9S}0zSKn}+5S(H za7Q**B%J&d3G1_iMZ!KM+?Y)j3Hwi2iHj$F9dHgzaUA|}*V=;P18py*QBT=@!4A18 zAW)rG740Q7HiH1+4zm=!m&CWD+NIbvC3QmyOR z?aKD*4em(rGc6;B0nQ2a*KC!lpOYh>;9a2O$>pd9kx(<{}5A?t#b(mS!t`~0vqx-b?SpR6LvFv%qd9jUzVYNXWJAU zPJQwJ#QK@B1SJuRQJ6i#mQ>bx@e6_2*&w#_>?VavPwP7{_XXJncCj5mUPY^e5C3oN zV8_EOA;=0jZtw;~3F~O6Bs=$yUofYiw(XGz=4fXYUVbtnDb-v-O3ee=P4|xPmbNqz z#K<{06xHYlXDD^S5Tw9?7WnR4_#N>rL8a{CEwFkbkZFVRD=DCovi08ha8}z1wkPfA z-f^XlPuR+YCejF6f{we;$S!@$4K>P$f&vJ#i?IgdL_qv-J9rqN#5&!?@QwE>38lXd_Y__5M{Fm$fo({LC%FU_`je&Yqma11WNxa*h6F^B5vVwhs5Zvq|G zZT=DpV)Frn?P)M>d_&P2Lk3B5V99DTB#&3s9_AH;=-B#Yj+aNNxjkTbE=FS>f&RR^ zS&y}kFrem%KEp-~7Iu3B{OHk`*Q{$n3REznfF8PomZ2o=kPofHG_LR0`l*KnX!aQi zg3vN_DK!WzEE4i)GWh>Cbsr=KRQw=JE8bc14KW;G?2o05|6`|(gIcnf9R^V+sso)- zWuc{j_1nk5Agm+7ZkBl9){b3jclXYBIK&7G#0a~HK@A{=?V)J%q(BT-u|mO0^P>2? zc}#c%)GiY69Z;7nNOF!(?FbUy=Wt8Q>H??fGWEs}?{3Eu->xAfwf0WPcx0#VXzWx% zrL?)!L%1wjDLSuxPPAy-*wF*WH8%!;O5%t$ZikqyOV&AE4=y&6V>!@e64yHb8^W@c zubaiR5#a{QFCCnY{W!I$uKI&woZ|JxK!cuvLZu9JpgT~m*t3C(r{yzZ{&-L_1LXoI z8z@8R4is(@3WG4X>fs4Q59Z9#3AjWzyZC|7DdUIC5}J$d4A~eYVbG{R>R2p`Io##c z3R&3(#7w9JJR00-Wzs4;n1HtUG#rVw9QT+F;{hwoVkq2huqg(^#8L;2GYI~#Bs`q; z0n8AaW>nYjl_TOE+Gmz6r(jF%-~m-mrEk&3IXot3EumgKYauL(h~F5H;{Z{YwU9hW zk38gZUkN^8ZPmkCqF&a5V`qP*fRYl+|)^wtoER!ZyztfI3bEVFHy15k;*0PGTb z0gw8mbjQ2^S^JDt`YPL93UFp04T2$eyoY0JeJk%aFR(MQQ|`A$80xXE|2K=Fvx4k_xnzB+R9f z=+}DA{zhqXgw`gU0EAd%1+9D79wiKa0h;E({grSh)Fvw7P#qU)2O3m8`(#J4)UxE^ z%>j&M4~LSZYDmyS4#{p*gVsQHK-40Kj7PzJ+ss5MgSaPx7|^PqBbqi0C6ZSsX@f=sKs=lFUl|Fe(F1lNhZ0RO8_5py zGkftSH9tqCVt|2FZ~0m01+v9Tlsu&ufn6_p7CHNsvzLFAqi0dqRNbIbVLcs28Ou=R*0V zgPgS#@~qF%vnV#Jm*;$r zo<*@ay*%%8^el?a>*bu!(X%LaQ7`9xj-Ev^QLH1Q3*|CmBd~-GJB;eZy9(WhRoe#b zJRK5MVv83wN^6AQNqp7r--YagzPSO6)0raUE`h6}G}-;!l05$6haj5XRK-_H4&O^frOU2N%A;$+p{O-%KR8(Rh$O^*e8^U1) zVwaf(qfx8^>R>p?V8E(4^6Xwo4SozAS=KsI=~tnwsY1SX@(kceo(-1enND4zHld_N zU3tbdm^=$g@+@##nkCUduBJJTsnv|sA=5y$i1x~~siib4HH{^x!zvz{78GW6xvOb5 z|8QtOg{4Toyu~tH;1E>XOj+D-J1s zU7>GAEWra)ArCL@^`IAnI3=32*6R+7FKUC&A;8?D4wz+v)lzo|`MLxY1Hl_k*R?5$ zHVYIeq-HTO;5nJ1Rj>V`DU@_ZBC(BrVQQscR!OB&K}Ra4KwA&wX9liCMGsi}Sg*)+ zb&c3!kG2&Cg?N8zEms5rH_!A55>iz*5izVCN9|fr$rkq!I^y6kB%~bqJ_xvtbD*NPNuRno%*r`2LB4g#6djH z{)%b{(v0G!-DCfeZjErksdZnt*tc#1)UGuH#PWi(Sv5HIh2m@|o!l6m=iF#1Ff1Pw zL1d-K-|oyT>KJ?_Z`3MA0}OrBM?}fK>4>Jq7Hp@z5)7QnJ{Y;1Pg*{z8!Freq%aSU z2P-W`!$jWhLQ?PN>?A>dxs%<8p3bH$g$;uu1&x?8Gu;%%#g*Gc^FaZ(X#K9gLp~Px z2^?q~n3PZ0P2kD*Meo=R<4}`A?Fxi$PQv6VafXA?3KPT*yxaA6H^`hM4hSa?b<^WM zP1!1$S3?1K2#*cEHGrv(JGnpQAB1b- zE*?h~$6PaOIA}9-M$00Wd}>8EG;zULJv;nYcD|XP3JR=!d=iOvqpf#-aSmaxNQ%Ao zOT6<7^yj#%D>tX#9rA^abWKPKGFTws4T`KvkBF@5`pZRMU_duixka)U9v$KYtnR^4 zpknLOY`0HjsZZIL=x?76XnYHr?luASaU}$MfDFk7U+-SZO`4+$Hgu%I#B|>G#!*Gy zoB4&kd0x=du#I*Ka2RM9NeK+SeHlXR@)fsyF?qkAramCJC`dEQCB-N>Iu~zJmT2=z zM$__K!7z!0;_f;&>aFt*ei?j$TCq6Z5k0Tzd*(1FTakFYpVhli01Z#=0B(w_6IL8g zrAl#|eMm(>&koHANyIBA3I1*f!4~rKnwUQZ6wm3$m-)dR>vhGCwki7)0f_{X7@o%y zE-DbtoK-s9|BTPCk%se?%APIZmy$X6DtH20p;ZZu~y!9=BfIW{1cDzsXl<_K&s&)tu9Xl^B&2Nwa9#XC;d(%;Nv*NpPv|Nyw7ZpAi zm&yBt%tgvOgx-ha-&r9cPm!8r(en-|35vm&UbKn`Puh3l8RjpIAjq#IQ|=5F5f5Yb zk_<}-F!&3`#V^Kfg|Kg#Q;CgcCQ^^|-7G_~FU6vP8cF8}V~ak|je6RRU|iYFU^*e{ zWEo0LjUM2a#YDsM=D_8V!I%p6Q_gK06qKAJ71Q6-HJ}F(kv~T{F-G-M*O=l0g#DH`$vhh@6+ly}Y3rzFOSR;q~yq_<)pZ2MYHa=;y zbwbx+X|_n6Gns!XAB7Wn^oiISbZLLw#$csi2V*yN2jU4FjBWDRot1&w&6iH(xcQO} zKm`}6K**+wAc7%3Ul;Vsd|cvbDn+SlLIb8-Q|1~gIx2Yg^wd>z(8z+}JE*GWZj!z# zhSK3YQ{E;_-KIzEq6!j~=xK;r1n`sSF|z`)n^_9w+?HH&G_z`O)@sJbvk(^mL3~n` z;2_!Lh6EhOape>udgMM~hkmTL9jgVgV!V|nrHvmZzfZ&=jfcX<_bpH1pdn#R(IGpr z#SdacXcDGzp3%97XL&MbIbKY=Vut0occD=H2BnQQ=u(-6r;V#9Zw5T@G)$Z&I%MH_ zh7Apdt28`=X!1D0&P-Oo7U#ZADQY z3}j7!M9@{c#>D19HFr0xqr3!64G9NJ2^*9!-Axdl+LD68b|GGOxnVdg7IzRj5yl7= zEW!kGiw$OpRh1!Mcs_+t<}9@>9TB%p9nUI>W<(?(IBw`bel9K(70QX?Aqb?;+k8=o zW{O4>smGuu6+w`ZAeQg9DK%X|tRy2Mrl_muqG5FPT&xbJ!pwZNP+=hGT&Fe71%<^F z7pBS-7vB5mEhdeJl{x*F`K3Zd zODSTMY)5Vi=2<1lqK28_f?}m8?HhU8rr>Wv0wJ`CH$`7IalDtum$1%>^L~Y=5c02i zN}^mat6e?&N1o!yx4RSM!`pDKh_YeyM6_>yb%_4(dnl~@kC~tk3qKg*HA#?|NqYOHw8Z{$$EO-4oWjH zkZEq`Ks^i1+l>Q(EafF~+E%1I{*$~8tw#gwu!&|z9(h1YVbZ&6K4GWy&{t!CGy+rD_pZH9j{)3x5-r-5) zy!s=%;{|_GN86jBZ4jZt0jcFaX%H;$g`%5xTrJtlF2IM5UzvN?Leiwsu!_m>If70? z>qv4DL`AAdo-C9e6LI#0z_5rEc_Cm)>R73jkjmJD?e6;#ToIipQV=kDfdrC!Nt6+n zz2^(z=F<6?Q}uzUc$uqG<1&JRpFKOSIhzk*5|3*j_p@FHZ5_H47ZS0F-4FES$Gojvn`YyI%c7kG` zA{6L`=7kkXdH}&C*%my)s{8e%`7TosJ$ku4yyqU^b;LED^GyjX78lZqHG*?e3}xu< zCYK>+56b5^fkC)9(PKO>FA~l zJKs^-2wZi^FRyWkRLZs4RtYntaar?PCzXl1&!|fT8deoC8GamJEA?GN|J^}tW2l#6 zW&8CU!>*#IBksDoYtbr1amDPoW=lPzmQugVkdsHOjmiv^T&um-An%ucp04DSv)I}X z5UFYhFC(ob4VMY7D5C}gI#x*ppm))8O*Gb6tP)?lFmc*>TJTvGTaEeQ;odST4~$sa_d$V9TGtpklkMThjku$|*WH?*botbWbY%D}z14}`C_BPe7>7}!>d9{mt5ytk{5y-lQmt6l z&S@X>+)v5BaaKQ#H=04OkzK+uh2z}1=f)faioS7EHnkjTxLT%hq+QS}715p|vXM?P z^iwFVfQDZ)VH*H-bgWHU)oES&v6?B+g_|9&ra!WpEf7VCyBM(M)}KOl)8Hc**?Bw) zqzpS*xnPIXwRFg{XZ2*pPU{J1xDzSbzcQ;yf1em&p>ETm%5|)ZYA84$wbg*HIkuL5 zo!c9^-*4FjixbWTv)mFLcpRX5n$s%IbZ_LCs^Pe}eNxYABNO8HvDJEp5QR3ST+PM3 zgLbO6Mn48v%n=d3XxYGoN!P-O+Yq=2Yd~|?Ucp@JK)80t+bi|bN?y2$J6IZaEe*jA z6@c0%V|N?#C|6_I%R3d`n!B}HpaeJh4$-GIB6~L@LUHhoY6)o%W_(z;g>stG3J7Hp zt3{^hgGphPJd`}eZL)Tmh5E(vK2?_#cp1Fq(prG<4*m0xY%x5~FrjRXB*KzG701V9 zO}-QcG8?14+$9Tev+31pw3YeG#l~psSGoF>6_4w&_1A+)eRY&o?&e2DM3sKd5*m8Z ze!g8j`?uGvpBjU3z1&ara@KCY)e$)87X$zm@jSzc5&==||U*^-_gxWqZLE2uB zMmKOfBm#Nj%}k=9PMxc9oUnG&Xw~=%Xq3iqUxTv2A_pfTI@&ycMc`zj45PT#qCLX& zQT%y+>c)^nH$2*X7el(MT2!QqoM(sC51^^ynno+DSyutBaXzmCSfz}B&+Hc~5piqF zWuIso#5}4a&^!OxTeEieDd%K!tP*Sut2A2<@=!qmxO|Rc%~8x8IYe7ziZr`3hSC(sXV2yX<|JV& z!a6R7DuUwLjO15DJeRlxu}LrZsnF%RH;ntR4Uk;_EY_u49w|KqKi7yGvdO4ePUl;+ z=VQDM4Bo7LcD|B38+49cif_P^5L(V|hi@Ldfka^GE{xnQ?)yl4H2Id053m!Z_-8dk zf_0R9L)-&Ke0(KOIP@`|l8w{;xnEDFjuCuokXGox^lE3iAP80R2SiNeaOg_I?7QIH zDsY;>(FhT4m5cFJhTH2_Id1j!9Q`iVK$Npmk=6P3 zyz%`D>Mg^c*OT6!UxAP!WWLy_aeGjQYD}=wUp3Q7vS_QZIkx`cv5xzTbq&&c3ZECw zaZT}>Zl{yZxRT~sBAM$m0$5#@bkRv(Yh!=m2ZUKzjZQhkCMCLpgZ?t^LU5>K$@?Z8 zk^y85$1Kk?nEmLSlUDDW5Ta=eLM6JFd{ed*Yh-RX2M|-d5i(Ve?B{uYaw^aH*j(r- z23Zi7KwD98o`PiTJ82U)lZTPfbPed;grDw8H!3lP;dZdNeGs75{F)$Rau=CVs=bsg9g_j zfI5S`dFE*3a(aRsp! zl5awP`1%!7&xd?ov;^w}x2c}yYNYzPEv8hxC^i!=vQfqbXZ~(XgO)DwYq*J^y=0%r z>mo$yIm-s_Q~n0iPY+DN=(L==g+j8I=%m@#O=;`sXNUjTqoUks7To)ZNwjO0x}gr+ z;taySJvX+DbI(sBJIDn^LMz&ois$f5aAwb=J>b>Q<6{P;G1vA%C1eGG2-V2aX`7>4+Q;) ztHvAIKN=9ZZM*=Y%4N?28nzJy76AmeKo5>NtL40}Wgc)W00c#_aS0G{@*6~uvk`Dt zEUg~^4ww~I7ZZ6%fSEFpc~C$7L{d%>v2&f!ZvN#`4?H1COx=K}iFRz=F?9z=&(_5^ z)D;-J=NT|2KW|3xj*HpP{VPj6>>hvbgFi zyTIb-MrHB*c4gHp>lOSwN<=H!Ho1O%Vgt{4R3pAh`FROHxe1=n@!ZH0CwSs+@#Jv% zt9kCXqV1Ke$tPBst{dr6pfLFex2l!@gz)!eP1`TgorSMa!aWnVy53B%F}Hsgr?1W( z))~Iy_i}-VxsSk9%^k#=ghDUDBhX_Sh!UQMa8lIsU}M4-t@~wW11=~QH=B52P%MgB zxJ$_%^@NabR?gWsryIoQ)@EyNQ9Hvb+(Fms&=hDnuWMb*#-g3SxjGjBD>k_MNFdU5 z_zxx|@$>S4(aIz3&BlY9!4j3SmA&vMc1q(* zI^t>xkI(u9Tq#uGq6*Y?YgBCS-_U#HZjn;{-{$$+sKGtNZDO4x`ZN(S86El&{y*4A z0@*wq#NqDAdoYo23idZJ!HoD_oPHCK!*8w&f5C3ntP-Oe0uQ~Bja>8?qhT;_277PF zbYSP>9EuL?xcYX%e%67VJ<~HRZIZuP%e1T0lmQ_$2K@YC9NHU_jw0=pTLiGDNUgxN zQ${xVov>vQz&T=X_GLXZLF^!`1m?Iph})qoo+&G4x*Y^*3Zkd0{0s95!rkf-krp%| zY(Os@H`fyM8Mhc%2mDQM<=_Yyn_@Ga=eaRH>#GGWzFN^`2_}#$rRusU^CnX(1sz_T zaoE>+f~Qe|O{(UTcZfSVxEvd8q`mfQocqv^c>(cV1_s>e&<6(BJooHK=QGaS+f?g- zpYAMhGhWk-*Ncf&lsLY5MKP7HxZYEF8WyCfoY9l1#Obl`RDOGPDq+g`RN9@VLfc|0 z=Y5?W$YjA(%8~Lz%Vm0JBIST$MNl1VzKw_lkunk2xDh)WN$2HTLg zWSz%$wr`mj5NK>>DV|*&dtSoK_F+@knMB!|Twjpe`s+?^EF+BE^c1=A?8iA@1@KCo z6ZI%3xA6s>bKck45yYq9<7Li?G9}Jw8z1CdXF5Z!l<7?8kQZVz-RnzdsCg9~MOf{~ zKzN38u<0n*NM{Rs)`!mWo-Liu!s|$9-SPLMv-r-wbhb%!hN9cv1gY8nCC(i44Sw1- z)Hl)fma}Puhl#iV_nzGr;CdnNf=$5`;zVsWWvkIlQ|A15U@UqtD*VS+;sOK;;mm7a_jQ{+({B;wFmkb0#LYST(cNJU^g!)Vh5 zzh*a9GJb=D;32qp7%>w9%glh5s2{&EZtbZ*7Cx#)DmRo5+#G-e3Jge%bRFLw!iYFqg0SgO}>cd$NWw2p5)Q#{MnH5@}zT0I(=r~F@=_Yl*PA9 z+n@v8z&AM?xSwr@w9fWUI59k_lYQ!$hKNa(jU&6XZs>kcZ<*SxePZ&(@ZD6S;#9?8 zRh8VFsb?}6SvMI>tN`C2Ul;A1b>R*U7!ukpyH$2oxsgD=)|9Ux2av0XZ99c%AGGaG zJ+1{*>h5&|6$W5I!a&6it;OxqVQj1sF`X0g3syrOR&<`Fk7TWZY$yjA5CB|!mhZ^f zmK^`cUWc2&j-w+OLfBY0C$2FBy>8p zA8g0tm{O8-C0i`qbm{znAzJWY2s~hthd_pO<+~^`jBDd~n}Fw!GPyi~12f=5-MZ(ciW`&Qc4jnUL3M^?bWvqiaf;%`;)+TMx4|&<-i!c7vr=R+RPt3P| zSZxc`wQ-S5Dd&f|OwDWjo*u%qlE~)W#0sgYPkh9(ut#e#gRYa2u=0 z3Hi2YKfo_v5hd?sG<6LgxX=hrU`QDL4xWA5htCzn>f3jW90mSaC`Y4V9r9Z~`KotK zZh4Sq#31-D`Jr8Dyo;eMpIrSfX=C}56EK{o2v)s(GWbF8hZ9JU!O zzNMZgNzRTOc_xtS`ecwiGpaq~!O7qUs7t%Yuqf98O~|VA)Rv$A;scG}o9}G-sBv`1 zAz`BNj?qTg;J*OvJA^w<{>f)w{MHNq`1fD`(RWXN{?N~T;oQf6`rrQ{_13op_TT&- zD53bBhTjgTcFj|xM- zD;@-G6c;f$exr9DJ-_F&t=hjS6AumnHk^&>UmcMPMM{_bIp#2*G*` zpN5TbGO+1Q9e=5u|^w*5K6GU4vJI32`(`l75z}1%D4HQ{X~OEz`zG| z=d{Z<`0)xC{wG&`_v@rk^~5hcnaM7v7_)@0z@8&f-nHg~k` zDrT|1i81oTrRgaPOJ0C;hI+SyP3MN%wZ6y3OMsS#l@jyXAs?VJ;sm!&%t(H!#tg9l zaNtUv26rm1ONXvXqB{y<1EwL^I`m-v5*fz4kRDQ7X6H0n{Q!shMC$rR|2zC_LF6Or zkQa;sRYnk!$Qm)PyoPAZ1Jwz7!5aZGWTP!Op!#5;$8!u}Lb%F8$R>Q`N_2)?ONo8V zK3jngBLzNqL=YTxR!$m$fwtNTio`k%AqzM$Kt4Cl^1%>7f(Jf&MMq`s9NQs}jpIm6 zd7psdjKtIlL`7OB8Z-0A&+K>?3_2LEOev2@&>a(D>?DeiUtN(%;cyP@%SmIyWaoTg zt?Sk@*C<_qqiP@Mn1Icw2-;&)#nA@=aDZ1sRZK7};hScad=ny00pJX}PGy+a$H3+=vLellBOvLGt*B);AGd6uh&12ULk{RTH(9|L zM>|k2i%`}%2C!{hP2az|!#`S`_)&Tw->A zgmJ{KF)DlF5vz^*@8Nz<4hP~P1Jcp&Cmz`b{}rZjHZ1!Vbpjy_n(+`tFJAJM$r4=`jaUt%1^HXumVx0(PmklDR51Dk@Q4fREM2?%!x5p|rAYL_F; z)ZFqy#y_ZJ4Ueh>1^Sw(&uWc@tqU>0uUZ>{%Md5`u#+~ZVX8xeZlH;}tPSLeNZ&J7 zEqN#iGuBw;5A4UvNf$-1fePyGwlmP(4bJeM!G-u#iqwbO51Kp`;yDR`_l3lP2Uh&N1<3J8Cv?h2d$Xf_#mMm~Cp<-$+ z0~*2}uZ+kRRT&0^*E0R$<8r@!!I(B2cR1vP^WWqF=YE+)E{@qN6Hm+>|Qw*G23> z#Ei3pl$SzR;3A9*>;&lUltq~A(s%P7B{=K^;eek|C(|l}%0+x4JE7|iAJH}6DF;Ky zj&g`RtY#XXS>N#B(QkIlG1Ix-QqpN zD*h;h2C?L2aI;=mW2;-b25&XfCCqec0f8NCxLP zX4HX^<^{&=b$17!v~O(&pR%9~=b0MNmC2e5ftpikV2p;+(Co{E?6hbHVireuJOAtu z{j#l}96MJGWY!IYGBW~QKZJ+k3xwy80EPZm@d3i*FYue-YyfppFX*JVv#Kx0 zeoUhU_CH546*yzq55~HEbumLFKkKtkcl%QU{Hdb9Ge!QH#rg}iTYrT-C#;ft)xyc5 zjuYiR9xL_nxbMWVZXb`7dU4cebLXTnYT(MDj^X}LgV9(ow3Rbms^qY*WLlLtCV)NH z*pYg9sOTl(LPVIFGKbq&9mbYv4+ zr|(_I${7ed9)0$zSh_S81$YYD8aCR}cSe>R)F{UNsKbs&^1OMe&gcxV$Wkd?u4icW zPRey*BbL>NQ_uM+7^apvtHm+mhq^NN9coXwD8K(47yqs6%iHrj0N+Mp_G=;+2J%zE zH@+9_Z*w*MuzKqyf?VQriSVGyeyij`o-YUQFfnky*=651(srN@`$z-sAhfMEjARC8 zmEk<(N>E1g*fUFWWkFK&pAPq(A%xF}R%<4J&X&I$_TL%P_FR(%zx>Z6tWKB9a>lO+ zV}LSUU;;efxa{T~1u(X_(Qej?sfvN}=*sp#^Mx+Yxyxx!_bfm|f}oZqB|Ob{md+K8 zcO~T~B@w-(JXVsF$CoTAU$+EF*<0pikd&W%871W%UMa+VJEx%6<#c+x(GUVl_MKcz z8X}0&DL z$F7DEKrzs!sm;RQ9%XvLN^`WtQ|ST>Jy5Kb8V~4HQgy%1(h`Pz?z1rO4cVbzB6NkW zo7=lCTI1Y}6FXchGP9eqJ*wMvZ=v6cPcm(OnSPmB?2RE!8ulY%Dml$)ULkvS$`{wR zW!PSl85#=-n`*4{Z!rrU7q4|#n+!ah4l03*pYsF^pjhgZ*sLbTme{H$)+}+fnpn5Q zv1($&5|e7;fF&-gCJtKS@@nFcC9bF@4qM{NYT}3`uBs+BEpc@V4Z}@T9LgH-HWv;DcuJxHMm${~r zxyEN=xL38SE19c(CfDmJb5$jCmCqb@nJX)qD}5%GYJIt)lDWcXVi{8A@=E4%pNY*+ znae7f%Y0_TWhRx(#Ao71tS`qZnPWZ^|3qbuRx(F@X6!OsmCTmUBvOOEY*sRxJ`?v4 zWe!&|hkd4UMk+ZYmZPvz2r1$SYM)|^#V`g)Sqn?lq|?o8Uu};u@`+q(vi`ABx8`b< zN^3=5phOWNvRHnO5UJZ)pne6u!r&~oMr4@W8u31Xe~762rPDUnM0q!`l_7(Z>jeT= z*R}gbLZPW!GO-yRW^dfdsKV@~of8q}wySWd;x)yC$dz6hRi;!*X-eq6B zQ>JV!ra46zlAvgNxm)6WMx^-WxSwk4Wi&(`;*pvW9m5*aHOgadza5*p?-8 z_Oh(dGv1Ab>?7Zk#$3g#_h)Q3U}5^7a^SXK`PcSO=1PTrrJMbe*{AGRdXX-&?Cn>& zU&r&|;jb9WPN{v4+WoRDf3PXDxVC698h+$^Smbn$#qi|LDVRxT|H(bJmyp5RVcX4z z+9>dcp4cMB&Y90AwzSth*^XMqh78&)SO~erje$bQPO`1lSeJ2dR4<(x+XWaL^ILnh ztBr2Qip)<{T@DBNcl<1U#}=Gi`PoU^A**#m-nQ&3C79=uT=cS7h_?nl?O_4%F<`U z*mCmEEKhQdJQW%C-@B4=w*2AjomQ3|ho5fhe-}P*s<>uW7HiR&_6W5_)--rThPoae zyZ}cJ4_*Yv5h4^BJP0ucL=T)>10!?XGx2Lrla zf`LPmPV%4*-3u>#LMM7K2S%PU6FgXkNWF_AU5FGof|KVuJh&#f`a!7TwuI90C-Wid z2J2Tb>Uya`;6pi$lid;zA3=M&Tt?ST-eQof=QZd{x1I6EAI`soPz5hl5PRe)DzK`h z0UJP7z(Ly;UpM(3Q%^b+a$hj9Q92IH+$+|Fe=;)4@h0!lQYguI!PQd|pDme^jLcsi z%DH;FDJJP!h^P2?sT5S;fFmRK3a62R5ob~er3}VDF1{XalZ_bv3&%PJjCFWsN_)M` z6g)GnBLWK)l%T*%*sJkVaIS-3GGEOn4t;EM)s$leO2yDPLHNpb2Cv3y#u{ZD%&37fm4%fl$H)f)qYLyh6(xYdk~af`Q16>L1-+gbxy z`Mp-Vx6+(qdX-^3#-#su+9k!HNFXEJ5pZiF7>C8Nls8MplDbcsL6zY%j^k&WlCN-; z?=ap19AVCG`rq5NAD3ffEt?xKbqc?gb>^O$oyM$;(lNkQ@=P{&ZvAfXVlS7P{d)0j8bmsFmu#M~LKr-&=Y^*fOyx8`<*Wak zC6RZWALO#(L0ks+8{0naFDk$eku)^x?MY5s+OZ&na`Nn|<|;u!$ArS{qx*kLw>{0S zZOVMhPy|*sa9#sYlQj7^^eovD*njhT{@2#B?%Rw1#`>CkSA3OExAZ-9K{L65I1V`tOc+6wmXQ!fwK-p?ugPfm^=VN zP04X{k51wTY3oi7k|Dgstpe0JL$^TlTkfbGie3vLsXG%w3aXncb$eFb24SGIaCh>R zbs#e?W`k6CD$u5l7#MkamAA7co4*=d!5jkF{Dmcq?c5Zc`h)L9vU7y(VfUMwv`9o( z_btFrM95I0lC+%{XLH4-ym(YJ%ci{Ha6XYUAZgD;V)EZhuld+e-lM;fLdTD$g8tl5 zLGlJ@Mxp*I)FAhWO~En-KrGTR@|YGF*Vnb(_E-EPsBnd{;?*#+aZS}i3ir4{C4vqP zqx6kE6zfYqj6V2y^Gl#&#Z48#+O%&alxzQaJ^Rhy1b8Bd$!Us?-kI|XCftB(rf

dVcFfD4#=&{?5vC5#>y3T|yRUmk)4g*0RUq{i!j@PCq0t^<^eraf=P2Ae$Nxj;D#^IWJ^fPT#>zIEroSD%la^6=u%@biAI zueZy%SRS!f+Q0tC@*3{;RcH777&^~A@9a%SRk`P(9WXJ=5CAbIm{u~g_g_dW;qj2X zEjTDcWCRaHgX`Yo3*dUmKrJ~^z?F&V1J_d?t^}+0Fm1J@a!4JT8&JD*1B*0!=sGlO z)6vtkb=d}X{3Wz7(-&b{c&@>JpV&KiM_|wq|%IOvNkBLVs}o zPNz6rhA`#y3)D47p1~WlH`xGnqI}g7={ERiQH=O873N--s>2ceoIEkYEQKZiJ+yPp znw5OiOeu#W$)(4!10%J|j8l=XuenKVuEzMqS0*J3&_fJDd4qd@vXGu^rW;%M2O2yt z$U3b_x7xx?tx{8xLuyjhdksfW<8no(KhFQmBKl)K zD`n-;Eml+cl8i<{C<`1`(RN@v2Qr%m3fnBEwkfD_|B?8r72pGuS6va#FN^llZU7UG zi!4(dUc!acEP)?`9C;y~iqy+y@?j46C>Y>}m)UG@h_+-;`02MT$n2POv6|3>Al-*h z>$BGhDZt2iFfuzsO7a_{fr~*hBr~g@3LRC^c@Uv2muw(K3Zcej>3!CmY$LPMtywG_ z9iHiaEZulh@bRy0Gc$p$j&r2|K|>S&6^yafUyrV@As7bd@vo!gg&Rqk58Ynsf&a!{ z>YXZ*kLOuZY&`$*M(20jDg2Jv{e4oF`lb6F1L_`!-7%%46KGFzp_yob(*2w$BgMQ` zG$Ab)6irBe5c0)yr?5{G@xSVK-0bmR?wQA-NB41oRagPcRe)k-~3dEc9mc#Q;~Q1kXtHF ztMmnjm0I3o_IOB1IfbF;N+a|BFkvHni7>(Fg}}*Mu=?38>%znWGC7#cY6#|gY&V#~ z37souhwwq_y>msT4E|4c!K2Eb(r<2c)NlM2&F{(jTzCR=c4&bo@N4K4+isZm7xx72 zEwfbrrbgMVL23`cs%hX;&MgBLXi=$1#+%acO0bj?KLcWaUTIkWdT~tL2Dd?*;jSkz zMBYt=Y|Xc=kNbSXX4Lrt(*g5RyNE^-CLLR)_jqxe^WY|rRgh?bRdVCjT+Aa#aCgi& zKEeMDZ(cr(qD7R;tHG){4Iw))Wen6|)f|o(8p(MZ5m3AetYS~Aic@%PWSjcnluW+n zU_b~oZPWIaxh9^GG>dTWtU~FNav8d%tMiLOZeg&{nKm zxxSfFeKWqkQ+a)GNY!YVkEQ&xB14$~a(*gDYjxDztj$LrJ2QA_gpCa3S#kceoK(IA z=2%TaxHx3T@<->L!;pfbm?@`xRUBy*$=5yZQCk=D) z23MEfSuNo_y@i#;ly@cGQIs&Gy_~Q2Mf}b=&Is_#o!hGjZxcGGLi6O_EE=Us1Y=(` zm@iF1kGr?qW8Vl=dNQ~cZ!jc4WpH^7@kG7K;$?YzxBZR1}9^ zr8$adxE~Oja(HCnzSJv<8NsMm7&GXV^<^nN$sL1x`=JwDl3LZXSQQOSt{_X-z&?99 z4a`up(7;&ES^s;^h2_$Z(JL;K*n-METGiA5zB%wZ^u*Cd=s5`YfCfq;3nuos>1XUf zs6H2rAXY z+VbqBEm>#O7|h_LJ?$)mU$Ww!zw{;RK|WW1P$v$lrjB1>8k&NTT9diXcYNp35mct1 zA~EeHh?cCk-5nfLg>DhzgnfE7+ zhbe8gHp-?x%EDsUFIVUN!on?;7@{4)nbU_vgbrlp0H%Z1ERIHY7mui?~;^?wr+cz5tAr76k;<8USshhJiQwjzgxb(gE| z;415Mmnzo1#Kr2Z9$)6X3YjC|d2mL!;*PG;J%tEdupliI=G?@A1wz8eZUgGq1sku% zxda+AwH))>0=1m|UPBg+ocH35t*Ek}7TyebyqOK9-P(Q-BckP{;f?WWd`C>h&d+5K zwl>UerAy!pCdMw-fZur;Tafma@!a}~r)Y-C99vsrJy?U^^L4-)haVhw)(R!Z8sU{& zK|102yvG1mlG;%3i%~;1+s^z!*Ss+7t{~k?)2&EZX&PtFSDGbpECXt>u3)8UGWl8B z?_H6)m8M&f&iMLH`Eup@+yc{$cU!(}ktQ^;o*Uy;Ikje4c!yCtU+Acs9FOm|m; zy-QBliY+<~t7aAxR$^$?6{l>rJ*&-psZm~UYMrTqQ<}xfY2(G$n#g>q&5NG%T%gbc zG@TVFtvLS2FETM9yyQjZYzgX1Tx7bb?^$Ic9{l-oCU~)>WIn}OO4^##&2V{5>X(wX z&~#*)FEll|`SjaL)6H(N(yT7iDl^-=l+^6&bTjb>%QI>VRJVrA7pSJgTFY9?+alAg zAuqGYbZf}!BD31L%4+Ru*N}GD*lRZ?vAlL;nhw)htRWR5r!0=Hw1zxWUfB%$RSj}& z(KX~1dXldpd;8IU4OtOzeb$hd5pX)Cyr^1aYsg%bH5XY!=He;@F(j_MSaWO0{A0;M zGZHww%#8#K){t(Y>6VcMEfs5Gz1g#joGt^~RQM|{BR?ed)ldAvl3IJHqSh|9j2ulb zzl`k7zfQ}@#gvi{U2e{LRaqo$c^R2c$YRRJm6wt8QU3#_zjjbl zG`k~209Kj9gqzK)X4z#Ouv=t~AdMAy=&+t>L(`Cy(TuF)17Q&WE>eFiS9-&|dY z1WzY)4Lw`Lm-H!ahO<1g)prMYACZp3nLaUJ3G;-oG&QF@nu#);?(t)bk;83`FZ8wtluM>C4IW5q+XsRA0Msj@jD(%1l1 z8)+oJLTCB_vcRhxyavxcH5%B}(`j(5H2M9|QpNUKF*l^IDgiKdab#_dBi#LEIHEgE zvQ>8n$MpoNXZ7?rqPsQ>Z~T*4HXJ#ucW~r@o_CqYnTMY+0ICB6v^_P*)kF^Vl!Hz4 zFZLPe!j7_Q)-~1m8(flaiQ$Vujdx8L#rOY#X8ImCp?8r0c5mT9qs5$`<;?e&jR3od7umJa~tD5JHDF=lWe?WVAvHSP`|c;Sa;5HiQH6w4(qBEEyd zAzlyYc}WrBXeS4XyVwRm8>WeV)^f3W|YkH388QmFA^OXI>BrQ{RkoU}B;xeXa~6$%<`)`^d=UV zOKV{f9NvQF}OLXO>R!4Sh0aU_%lp-&jP8d&Aja@4 z{%VJX%gooaVYW7Bf(T8nCls}4y}*c@mlc}EtxPZ;>lKVc5{yEyLNHQWhYx@{dXdK* z9v&4P_w*#^b2XVn9l@X2Q!!QSQxRUL^qc~m!^uI;;A%Pvhs}o%adZ4;0hf|O(}y^k zmez!(+T&HoY~7fwnGzlQpF(-fF@ix?+!!v3Z~uh$FDZ(wcJtNWW;YrFlqNdpOPsI1W?k2@ zt{$wB`5INGS)xm=OrT2vKS$cT1EampfA6Q1iax5e2OZ>eN8SuZT^0#lr6VK}A!e%k zdw<`Q4w5RffCITpFr_2R)=T3ct&r#FMul8L;Soj^QnoFb2`5yT0hekCCUS(%CTci2 zaDt0dO9D!$jUJL5(@pWU(W%w+GIDvOxfnjc?(&YAC2>(e8!b*n^H5b=u=^P+B_f-XD9{gf0uh-aw=m)ZCG5h-mkU>h9hm;+o9P zZNm>-m%-pn-ffo1S+=R9X7i4vjZaLhrw`*jeHeFrNY{7UPuJ7-c(-j=HB&a?wuSY6 zG=$lM25Dp4IES7#$jhB8R-lAIX~4LxXB)EPzx{N6#R!1XY~bo?V5DDzc0~mXdT6k1 zP7(y5!4`!%7xI#nAl}(FWL0z9F1{8c<*Ok*>^6WM?O`C1j%ZVg#%;0c=Cds}SmjAF%@7*)8K{U@FYvh~^7Pe0>glV$rpMZ%5QT#;~63G1_q zMZ$i5Wp`wAC-YBEKSjcw+1VoD(iff%vT+Ar1w2dLB{HHqtx=EKnupT{yRjAt>}^Fx zDiAOP_jGH|xhcUEl*~ z2GUgvW^V~Y1aWPM+`}Wnb3+_p%bOuCXNW> zaS3>8BQ$nHoIF}#goLILdPV8jcG7O&&QU02dd><3`YH>&RtESWBQ*v{NTfdOkLY_a z|FM+&v;(oiVR>Kbklb33KrpQx!9Ra-M>`4UIr_UeG^OXm0w!d9CTcEd(f zjKAT=&238Cb=gH-7q_E{N&RggqrDtO^D{mHmcV^$>Q(Va9}Cf%x-)qQglePySIJBdFKD~F`++B4Vups~q6NnA@&)K*zjo%{Co!YIY+VXEP5f1bq34LO< zF)>6xh6H=8fclEFCn)-xf*|`Y&$H|$6gE*87llv|un%U(KHlS>~oDF=&5 zd9Ac0`lSW^YpEr>9iDAHv~%APP-Mnyc2SPg6VkQn<^#LLD;02v8U<<#KZ?bO05_Uk z4a|S2{Yo1c!y2LX0&!54@hqZc@kb7pH{5=f>*A53i&U1C@QUC5P1wqS!1l88hHNXp zf9SW-KGt=$kH7z^(0N&Eb8LyLiUKn>11n4;0dq0h8VJInC~nopl4bQ3QZVF}$oV)q z>Eg=n^aOz)#SmSNU8_9C!^#vhf;5WS_Uslbhe-|~DEbKADLU>M!`i&2F(V$$%KAB^ z`-W%++gDysBd-V7>!KnPsB!XhZ6B6K*8^ImgHlwn445K>IT6cecKTzOm_ts7R(hyA z(CRuQSMDNsjlKT(YMl$`Qz3owo@JHqwzd>(p!%I@oNi1B3)AkHCWcwsbyz0U7A)_PVGCVXm08SEEfUBdWg|hoev&`p}^K+{w{ z0*$<>Wyf@BkE&-?^)g@eT)o}Ot6rho`j{7+f2@7zI_ixKRmt02clrEhf11ym-Oq>I z=bAGvFt@IqujgHBB!6~O^X7c4vRY9g0sj41&&Zv;ganNB%wW4ujn9G74pZZzM*G;+ zn0%kW)csT;Rr1ahpEkeEMhA6tvD@Z=F6{dW1{E(ds19JOW!*v5l0RPCY->;+IytT6 zwG~(mxzaCS+-FGL`WmWFx{pVQg7#{e8)HMXR~cX#+T8(K9WzWpn7w~CCoI03spTEm z+FGY}+=!Sg2h`?-5+w$Ojs4*Bj| z#GkeO;BzC1U=C|%ZOowWh;-2CeJ3EwFR6fM7hiG|M~%{H9=+ zT!>GHAo%i4&GocOxLR(=RHZmMg64W2tYP|@WhbF!wh=A|HJj^{o;W7K*M@Y*h&~g= zX_Ye?OSHD&VP;_&%tm!>QUkh(C$Lb|+2PLzFx8D*EfzJ z@Y5ab;N}3m1uP{Dn=D^V9bjb@h1Xualnf?B=0!|-RUkBA! zFPfP#WP(?t#LD{&*sD>X`FI!N3k8c8-cBB%63}QD=&`88gn|JLG5*(}oi%>B@7yO& z52+wFXjUi-s0w`)5e^&$M3n>sD_Vq`v!4?j6e-5{VF>_mSo&1z>I9o-`Y??`%2o!o zkZnK&3036)kzNC8m(?zGsP6+xA8vc1>QiB%cDZ``lYapv7Jwc~g_KT*Q-hKOO+P3d zcnMIlI{*1W33J6_P?EUm2c-`RN+pHuYH-Qw{O1QHJZ~0*(i*Xd%PM~NvT!JfiQr$3 z6KP!|=r&Dxhf1M|Fx%UMfjJep6?a!%?@xCxCll%-PC=GAd6}N#_|8vgJjQ=3ypQmg z1w^|%(@`f(0M@x0@vkQvO1aGYh89mHxl>U3W$XG>+9d92obY4=B(LiV+`M-!WuF`K znwDmT&&kHff+c!Y3z?NCC`uby(zdcgtOj+wzw{^WcG!h<%KNfc3T&&(oAWt0#OPfB z#mS%C#CDA_N$wxf^H7aLYBfpKSwxKVkF$EBEMop?7{%RQ5T%M=O$EZOGi4jwH{U8rGj*<{^J`E~u5|8BCoKJT36W$r_|`soUCBvJ6NIoyRwYzgkViga2BMeFrKfA`;sQ$3>W|i;mh8 zv-mtqC&GcVo zRl=sXEvRDJA5io%_F90V8l;tDqQ;{vsD4K>>IxGyEFxS%xA1}R3##RCJ`x=J1BT1f zA;D14%+8wa=Ey+78nanTIX2LRcnx>rfjeVkP;O~9rW%*=&xRnlBjC!QbeRIv@(TcL z44$srPj0uSh0}ElT1y_GlR57zhGw=pd~5XEVX3h!46(7;#l3cu_&xP@}gddR-hnqN`<^)O0-f=?}t# zWh!+O)@#TUs+OtRStk4vLknIrp}MLTQf|d2xNx|f<-rB8)Dliq)|;=g0-N&t0( zD!66=G|~&8!7YL&`eZ~TrqUrB4QLOXS0X?;_$76Gqi-~?|vlt7$+h3)YMQhdO8U5UY}$6C@XBu9ma zguW$HBYX2;&452vp6gAE;DsY6S3|)gJk)@>lOzqC#A9_jD1fA=YNVE?t>48EPXcR(7 zgYgMm0=q_Tz&jJVIUtaN2RkeAKYkyB&5gVe&q((ZKcNMTKxI@ZyTZ(tU5C*)9Y}~qXLD0u4%1joC^kbUf?+d-*<*> z8BynzM7!BxlFf|jD`Ewlh1@r2umCYML3BXcbMn=3v48<>;B$kIZ`BYNXjY{U!0dz5 zXq5r@mS-Uls$Vf2|J8ylR*8#c(I=nP%QG3H6FT{%7B+Bp)I~KXLmLIfhVU*>3LEG} zAq>uSX?ND3NC2-2Wkek+90P<0^^CJ6HW|J@_-fl#6NBhmOc~p`Kwi<9)lQtvdVxUB9WJ+Hvb{W+70zo1#LImjP00<(eUN;d42od$}NGK=efq|9HT&=_#y{={`3EQkYwpn)HYUY*oao=L~V$O@9xsyr7p(ll;&?QN} zBL%c9Has#}-5au)fDwWPU>X=j4YMp6d;&{mhFHu2SS(z3Tr+s^=>kT2c+ zO8Q$CwWuuq>+)!kZKlnbxWzqGa?AYRWVw=s+Ld2w)Peb4a^zvH1P1Qe1&xpVQ$vN8KzS> zAt9dpjfZndA6?ixza9OHZQ1?fgr}(ieyYAiT^01;u8ICrRo8C%ncG5Pil8()o{X7?5AvZ0wF zQ`h8k*UV{_3nuJ9-9R^Cnscw5>*4e>8`Rh>hKuDx>utDNh1qeTjIE3MWpnbb_dBn1 z(}ly_)b5q>8bq^Gy`TEhVC z`JusWAkR z3G6}DMxpdATZXsr-{_X>Q{jr0_uRAm9{yW(PY=LY=)DBa@n)mNKb4We+_)3FDW|dgWDm@Xg^2=qy$=|2*CTQS-Yrk=P>4XAB&vf;Y|xu#g|Qh%-qP z9dGq8@5*XP6rJQ*L{@KY;eENdL;(r8eX4n9;mjfE%*UDCQ^e0pSkla=g&vrzvLVBj zdfK<2E-F?-s9dfxfW z=7tS^KE(r|JU7jZxv^6A@xn|novI}tens;;g%pZWsT@L=iq zM|eM2H$2_8Zg1Y!gA-~}{H3;wZW`9yYW)%$dSw%h6A0s*A=lNH%!U?G!tIR66*2wW zJsZj)Dc%O;N=#_pGmjJJI{CT``7(mzwRrk zCAI$9_dObD5i4kGy_U-MPIS6Jw#O)Tvd$D!#iYDd-de9(OWB}xxoSPQjb#uZmX` zRqp%lz2}}kzw`Tde&_f5ohk9NDZ2b}n9%bgY4b1y1RXr8VJ6kfEfG9Jr`f=SMs0SX zpU7RdLY%>0bZUqJqZ@|ajn`<0CFdlPKN%yzYOaW=4BhP9JmV(ti;SD_^ToJ{!1vGVK;6LH&Zg>^m6*k5)+@anF{*L5~c#HdQqm*RwgntN25t1s~$+VnaVA^4g`#Z zz!cTRKhRca^9=i(%dm!d3p>6ni}bZ>chIwiC}Rr)Vq?ZLgczN|18(9XMV#^4P00h* za7~+u13%}VPV1>f<=IoTBAZysAJ!Z5BQ&JQ^gqAZW2kuneq-zZfvw>)_)B|H6SUtY z8e~TeIonmRLe}u7)v&qyzj(vhXEdBIuLKJ<+NWV=J!3%sUiF%*>WkOA<;NZnF7+>G zK-p)P9Z=RY2Gn*z^#kgNehReSo}t%e1M&*yAFlSKp3iDyjcJ&@Rpv;q*If{nVr3A1 z-4(Rtvp6~45O;^iJfDTfc=&XpjLn>OaFKcULpjW!DbPrQ<%>mGvF!}c)*ezEO~vFJ zK=iccJhL(^7PAFd2MXpOf=Fxu=GiLFSia8oT7&A^`=1`-9UI}j5N}rp6Ou!gs>_y% z-O9DsQqAXtYCCudY&TS!6AINzKT&NW>fCINdcQmbe)q?KfUooK3<9d|?+yag)(wFh zIw6p)X@Su*f9rpkzw+ z<^NfjygS|Vy%*lJQ^ifjEoN`sB$F8W<4s1r_(08p#Skmv*+csg$9VNVS`B+e zF)$yU%di)|_qt`b`obJu#q!7YU5g6+g=*)A+tCX4Lfz^JPDZgluuZE$>GD|8s zg3A71F~35ykNbC#@(%T2uY0s~ zzn%E4Dwcd=JV?8Ejq4_HL-YOt9e>g(brq zCp^iZ)ff+!pITk|hHYL43qV$c{TOYK0(>jNo^uaL@v^&!Z7g4IIuRr7;sa__ySFd0 zArv}b#cjJbLj|@~t!t)>v4PvZ!8X;tx#EIyX^$X@m(U{-?tCrysda3;7caM)D~pu| zu4W*R@5?q{m2JLzH#oZ7_k5>~Yq15ks_)GF9K;g1e{<8aEZ^0%-Rcf!NUOa=XIr}0 zEDg~23LM}_VZ0&`fgQWv-VM?!iu_im8eLiu&W%d7%a<|m3SO_keSu-Rp|HW(vEShlbDKxKrFJ$0c!8$D;y5{eb@QP=M@>HD1diw zm67n1#1kqug&@lYkxW|t>CqkdXoH&GKCILG;0*oJD=>qkb}WE0z5S|PL0Cm;U*)S za5({U;0LhZT->@XJ}RFQ^3g)o-(RocA2Y`ge42%maO`8`Wz-zc+LfAy_q1w+xE!#Gk3dz(cX0xN`eF38M}kHb-Gi;b*E;U;xiI7$?tY94EyT2vP)? z*dMFOpKH*H5ZRb~+zirl0X}HS}M>;U+5A^cbK+)L>f$yosu=azFg5 z)!NW}RZ38fD?c9&JqLwd zpU_YHh#JpaO?|HbkaRRKj0)fRoW~WR3n-uh1e8kJ^NV2&>zC}>#=cWcLn5x2Fe}h@ ze_-^-f#Q%wPjyT*^}*lPi>%A;9MBsI?Fzmi7@}7|6y!8t2wyVy8NGRtriUzAQcMZ> zGhC-Z%=S0oR+83yvfj9FPIVpd|A0!gyMea5*097`cJ2!51D!XdZkA* z!#mOl8!2^8FbG$iuNj5bMWH4^0BPN*6k2R<&WKfH+UoZNi8horsHdguFzUc&YH7W0 zTaoT)m%*~efZVV1=nRe;c^YC{2Fn~8i7MoXB(XZ%gc*8R^{K?4kVUB-5H?n@%`CU4O!K+4{$1vpTQ{>gB zC|94Nw)zyA`ji(fjt>eANEfRkYk-P0jBQ12oq^f7I%v3g>1e#7(%6|)njdx%yCzqc zx-M6C?i7F|%;ktd1sh2mx#JnM$18Oca&AFO+#xcVJ+^_93gdUkBe{q>gf#LP1JxTL zT5=eOT*WiMjG}V&N?8VxcA_q$Fl!1a$P|!Yg@bw8QbEz`ATx!E?!eP03dsR<{4px9 zosIk81Qo?|QG$WEL+uiKn&|3d@x9nA=|{g_SdV#U<-Q<~fM`93~FZ~Vh004aX8Lb+R zaZ8W+(%Bl9AQ&K-9<7DX>g#<{Ln(T^2(&@g z+c$V0!xPG7!t=QzixIBJimKw%%~j(COgdE~&pzD8&ZsDQ0BLz#bOU$| zxE`ngk)j4v11><;#DizFcdDzrO$y}=_)LNr00RO&VQ6@861D(WtltBd<&_8Sp+JiC-Nd0$a(l$d`^~CgYcK!7f%XRmJUiIVS1zmbuQuVt z{GmR`p`V`?m5$~n>lWT}>aI?a)4^)2N%0xb^}J4L<+>OrvuicD!8k73$Y55??P7k+ zsIjbb=p-USLoG>4v01B-yUzqiTP=OCU52E+H* z)7j8twL{5qNLjS(+b7Ze2_2Wo`>W}wOsAo<$w90mz|9(1z5@6A*5&WnSpZsNca1%* zyuR?a@lAzi)O}JNOjuVuc(Lth7St_>FEnXPTtY!yHMgJ{FQb?a+7_Y-e6ulJtfHen zk>qG_$>%Flcl;CUe=@aN_g=cGHp)tFcp;L3v*^VYIt4Ps+A#U4Y4=2Mz%X2S3H-e6 zHzE$bD2!I@~E16$|dM<-&)_FkzT+=*ge22sMX2SRmacx(fV=)M4)q-JQo5(S%U^xJV z3PQj9kPRV!>A>Deevt5k3xF@wWNn6-#S0y)_`9rzAk;Z6EIkVm| z(f;VE_D9gnSp0_Gj}TTcW{xpI!zr-(VsP_CZH#?%eVq7Z*z7=9hNaP1{E%Nf3L3bD zV>FBqk6iafQ06&HA}PmpSv7EM2eSB;Gs`%5f3@b>%SE=!?Q;y#7;wWb6@5#+x-p9C zjb3`ODw9e>%SGlYcWZBGg$?`4cd0-T&o5+(F;u~bKdGsvlG!o`Qe#AHLfg$gv{9uwNpF;TS5blOF zY&7~GiDs~HcgPTU(@7{N(z}(S_t2l{4&q*mpR>JNrMucA&nW>Y?ku* z8Q^GgWPxlIZ@;nd?LMRj_9-kq)9bVx627v|RgLU_xCL+b3Hg-E(@=J=#%EJBRT0MtQ#4&s_dN;q`zZ=Au<;^B zvq{h3q$#=roV3t4fP$Z9yF-!Dwr-!p76Iq0vVsBg8?sY@y`*De4UM>lvQWv&&4!6? zaZ-#UpAc&mW-tvtQb@R;{7uGj``ocdAn(oY*gFGxYYUIoD1E7F1SY-;$Lnh`;7&4| zhR8%_i8v>%Xi^6QnH{WE4K!nL=S?-w&3gsRXdm*GBuNxa;~n&GLeHeY9rVGJjM;T&7XQo~5C3qLhq zU8Kc0*omsKXOvHYfUP-Thh0;^UXu7PFxS4g5sOHKJtIavRWYt2S@r@xOTK+s!ph0> z2yW{mX0hZ6Y}DMs?UEnhN0R*hHQXT<_#4EQ)EzMeWE_l{=X8U$^pxM<6(2;ose={R zPzH)S_?sb_70n8=$OL)VqQM|KkNo93ew|`pU*DKaQ>Um5Iu0LcXqp{Szlfgw$K2RE!UXy(!vbXW%A5~?I1aE}2c4{eFpl?83?`{BnNGz*#OGC%JS~L8mT&RuVB%Tk8 z-6s|gT8LsD6ln*xaWL=5_|NTsQU|s1P^Mk89@Wtm5{Uz2@z^Sqe>4LALvlqxU;#0~ zi3!5#QML!go`O9xDJcOi`WynM?sXT0(u^bu*F(CpSeVuoADx5Px^%i)#T|y)P>&{( zudS7df-@><6zPHq9()-x>$5P~Prhanm?n>jZor$?3Ve+iT_Yk1 zBHNE$1sFTCkvMGP$#dp9y7V1e0lX7h2)2D5Fc1fbSW(*8oasUyhw<%zJTTVn)cMx# zAe8qZETb@>GRqm$Tlcc0@N0=8634a%#I%{b&3wBJ-B_C?!V^9_Sk?kVpMw@yFxzIm zI!th(t!qpHU)6xo&gfHAR8QW$0n{t)^=x#i#&LZdjtpE*$Anic}_gdStNcvQ#3YoJ<-YwThh?j(;xj=&|K zES_HWlQYsLbvlb}T5>osF{?mcTSFNfp+%pe)yHgTTy3 zP=V1H46due zXG89r4I3F!$$dRmKTy_uQfdDtmmF> z8UD_9?2=;b-^>Ss(}Gg`TJMz%e7SztU$oO}Z8MQd)ifqV#3u(L>N1dg+Oo2riQQvT zd5OQJ)B=(Xc^@`-OOD~w_iRrXRbG%=AxreOfUa#)P7X9VcFKM22OMoM^A+q?c5N$P;&o~zLH(l5~i2jx45fv2P6%8^`4pw zGN{`-n}2e$eywNz*M+$WRTf-R57>Ep+g;CM^I?GlqWiV9EsVq$Wm|dx{$i%w*58RcIxwTaR@}1ehyfH_Skj7J^-zH}FRu6=SHrwt;z9dM zH${n^CWEpOdDNJepRE*Kpaf$f69bCW+p;5o^6 zrG7$O!kK&ZXODcIcq=iI9MTaG@)s!Lr$QUa2R8BmUpAGz8+$XCH>br7y56HdZ{a5S z3l$15KBZYJ-w1d2({zwMmUDV$@Ab(PDRQab?%%Y5u4)olMS8aF4@&I-M$B5vj-%1M zoKa1PY-?rVM_=ZV8j`vpNnnhBKPy(RJ9N~71EwHKv_--5;Tv!eM#t%yW437W`S0P8 zvc~5X3O{;yi)~CT>Ek@?d6_;=xBHluwiNc>Xp*q6yEh^V)Q#km^#SAJ2n~Z@l>Egt zZW!D7^tx8jHiZ#>QdQ&4@qm0|usMrhhchMEb1oBufr9dZ2-#NpW-onAT^)tlq8g=s z_7j~WFfkgi;fk^01*+>}!=l9i$-hkc5f* zCZG!1OT|b*jP!c&5mea91&7t^Y^Fi9rR4A;>I?LR0%Uqpt~LZ#iEo>D8%u;EVh6TF zU}VPUxx)8tXCy(N6#Zap_o#|B=T=rjZGKM&jo-ufjo({?qOP)M_p=_1V}hF^BIr&E zO?sH4es?kZ!@h9pVNQ}GWA>x^mQ);p+0S{H9}&zkLUq9Wa1YE0hge2&LO>u}MLe@8 z_~`i_NXMc~$Ka@VO$v2)uqts6>77?ruNc_x+Fq1MAWHtN39VzXS8X6-!~0+x6#atr za?va(TnkYIq$vX7&@vWDoIJhi!n#=BiZy*02+H#vRZE`lLUG6?Nrw6;@PVLN!fT;w z>s6@H_pseHhMHWoL1P#7?vEeY5O4B}%Ncy%sw^%mY(d4C9;=d42hakuO(7oVE5wIw z(T@@eyihgL$Uj!8F2bI)Slbhb$v~ZiiW*F$YJEy*Z3g z@_WTx`f>cM*j~j(WXc|#cfa+-dbCp3!23fUtOGt&Sk;HhDLfegQ@nT;RxY`xIYlr3B_62 z=9^VX^|3tPu`PZRH3HYWJHYy8|7cIgqkFL4ud>JwENVEaM6D4P8m$e& zx)I^qM*WgeY3>XTRA)C51Vp)uQR^DP7{dYwd_~xPxL%4{D@>nG(}q0K@;Oul)p}Vc z`^BI!YU_NDnl2;2@n@44Mhueh-L-gt(-_vgDES;_bVB@WDzp^^0j{8L>W>|k<@=>F zH@BkXF^fsrYNY`t47n*23K>WQg$Fx^d>jSV! zbAlR5gHjc;c|D&$;o0W+%{IgObd$(>?H!Pf9z+BOa_x z6YRoYh(A4^zKfoZ7kD=8`u4g>JnBAOPe=DPN97(js2P?$GbNr%zht)Yzc4$}$Q;C~ z=R{<#3XS(kXswfnPM>T>qbk4>$btaaHwBJZ>ax8qqW_J@`FRH#{S&VAfbHIjeJTDE z>M-n1KHQ{6>XD-+c2OVw6DR+s$+n2_Be>VAdpHWiNMbeJA(xordo#zyreW#Sg}>=PRx#6MXhrBxo{o>`%evSDKCC=$oc z>p%fxA+P7?>T@C-E!sRYn_Q{SDREPTR$%OIK_#H7v%2B{bVk>oB^WonR||R%Jz04a zUTaY;sN7uS9`>*kg#8{PZ(yCR!Q{8V6~Zmqr16y;(ML3XSXU}NWcN1~rbA^1!}9~- z9;{=F&v+ACDY{{7Q{lQlyd+|4A3p=nmh2fwJ_&M)x>}LR4xvZJ&nPPTYt;f*OAS%^ z9>fVu4Tc!lTFZN8@x^G)*hnR!b8Bi?BYD0Nwz;VJ`S^xbZA;EiPf8IwgBS?fD@A!-dL@5d)ldtj2IHu&KtJV=|5#;~BWePUb$ki*Tc^?*!Xu#A&Y zI-trSOEop*n=%H*Ak0Uu%1NxdlaJc7qmj1L*!$Gh95iOplM|kdA(sg?0iycs*uZc8>(e-_t zoLpxb*ASJUGlEzF1@%Q#Xr(D-rJ+KDFGo`jv-82eR7R1C`(_^FZtKuUX$K^QAWxENi)`(3Q zw%&=3$k^{{tw!#(n!Ax-gH3b*B;9aYZ$;8l6v_koA;JdIL`hC1+R`=Q7m?{~#t`~o z;?eILYg1Jds*;6UzzzuzyZ2W;!u4f$v&9=&c%SA@F+*JRN!sEML1Er6g8scJU9GJ_ zG)L40wg!20ClO)wv}tOIMP<>N7YATp&^I6`MtVbhm!x#YoU}st+lDAx+O798r%ahHTK|0g5{@3;!8>){7gSV%-4Q z{qt%47T*?Q;IDYs|GmlsAy`3$?EyuO8gR0P7wKJS7#VL3|7AvW2Ex2W>h@%1ivcfg zinN2qD$uefFvvx2`n_z0l+#V{Fa41Z!hdF$P2k4>{UdhIwS+*j9%v%ALkA7)IZZx( zjSAg|=Mvfgzm}Kh47FRIgpTp9@(zzd#f-dP>u-S3?Y4v+GqLvko?I7?_+{Bb+4lUz z@il=v&^)bcQrr40?4=@z+PbsIwqkC5AJvMTeuU*tN#1zm2kLlmy&m8<0&?nrDjCCL1!|HD)lPt7@xczf7PZOW%Jz;)K>lxTKL-Izbjh8h zVl>QVfo-@^K6#EJtWcug* zM6LwXJa#BV%9P0+1*+*rlOxg)u%mz-(mhSU$+<{EO3w&Mx4wr4tMYF2vAec7tOamO z_yKdsMJY})osu5RNAv(otihL&W%b}x0dgAPlfROI2GUEO+=SGb0+@1aOv_{`gCTR| zEpC$n43&h>u?YBJN%}jGB9eXN4+Dtu5)5w#uW)W9yj1GscJLEvz-lwOIP7cIG^%xx zi=P2Nr_C85=rHrgWd#3R`K~CE`MlPSG<{ABR*wmEDw)$Fk4i2w4E0`2UJkmM@f5Vg z!G;2y+#v(ZMHrQ|`kpB)geruWW_V)enp+u&DBjZ9HoFw-G3lJ9JyD3b(Fw+cW;n>j#l%fz)jX6_&u5&?jt z6@#Mhktc{3 zjGT8MNSWT7wJoL}+mV7ABZCpcV6lgw2SHKFSbI?5ZgPa641jCYuZ>O`B;ZhJX?ATO zz%+x`dBYsjDXfQt@8Lp4ELv>d6ily`Ja>?xyE*L6i_J<|q@I$Plj4*meM_`dfk%m9 zf)8B4HBh$DtQ!C9#|VK*P-t1ftpxIp-Ocho6Sf(UMOExYYctMv{gQWIqm>qB|B2*- z!{9#TNevTxgSzW(-h*ku2H5XWozImcOrOiB&y^a)HOqXSt(a*SJHLCw9u>AR33ufSPzpA~` z7aXA~iiC$h#E7{(=L#Vw)%=uKbe& zbUCsqm0EK_->F{W>|z2AOg6~eY3hxclQ`cU?IKFvXLEi=C+nHKwY5ibm=in1=p<-8 zrF#MWN1IGsiao%Z#PTG`y=H@cBojj(XF`gSTu-Ad>huf+k4URH`M&s}1n(d5#$7^9 zqRPy&@2#8dJIQM~BB)nWXb3-$D~aTpbm6>@(n+G^JAGhMx~`$JKtqBwhlZr6h*6t7 zrozNn6MRLr0E{DqLImZ5)t2!>25TKE=AKGw$pit@AXS37*c?Aau#8ezm~v4NDQ*Wj z4sVh_gQQCXr)b|SGp4QW90M(QKlT#{(_OFyc*!j=KK6zYU$&*qb;KB%N5zF$sHlNR zQycU~-Q`0YCR5@h82rK&o%})kVeg^)5 z=1;XmYXjW6d4Y;k*9^T>1UW4QNbDuxiJx2n9zofjQqU!C-x@z33dVL`l7XskkbEB-=siFUaIdN$?!~M;NtZr@3ouj<-XkN;qRW21Maf;)`!AXvXL=|io(o7Xzugx-fD0`8CF8~RthwN;(k>f)aYD>M9xF{m z82^A9-nLqY3uUN=i+~7s5pATU+csFlKPIHTQb*p_LU!H3lAaa00~H2ka933YRU`%w z>xKQiZFf`BkzQtPWaV0elvFLsJQF3qv4-wPHsrb_Hy_*v5=HzVetiv>mAAF7r6W9A zGr>R$2pZ~SA(T0Qmt|(hB@*#29jb3vBSOY$-oxgpc5cx#$nM&fzl*9`|MNQ= zQ^Ng9nju`bqnV0zfkfOL-)bcEpR!qfx@Y8?e{DY5uz1}^(^f6b=qdRa0K+Q!M-Ta} zD`2=m3s;ME=hhx8f0&0%9}em^FrH^s)akn%(bao2WZyI1;~bDyY(!{3TopY}eSWRX z&#W~xSL$RJ-m*3-Dx=++>Z6uWn{t^bAe(zF$fS$ft@;el<4cv++$(8_LBZOmPx=Cy z=5+uP`@K$!44yH)Tls=ZAqT&q)O8-EhC5J-LJ1@9H{h8PM{BlT9%F#KErC4%m8XV2 zsYjoYWzdJhqb=lukZS}1F~T>j352WWwZj=Q4Jkyk}=USuGI<6bkZT-*hhK8d5`7Kj=Cn<_*gtMY1>AVcx z`-rGB{Lf=ii*=W7=qkcYs7`afn&05R;ezO2I8o)=&$C2Ti7Kd7|6A(~+M+dz^Z_;N zEx$AL7FEzAd9(>n4VZjZ2S7GJie|WrA=+B4^1et*GmVi}EdV5hykRn{h{8npXeLD~WY{h}Ol{TALa z+}*dljkSk{t5p)?v(cuOW)X$5UQbS0el(RSK7bCfk!7&}H^?r8de5R{qFF?KN2p#( zT!n_goD3#UTX>}CuWYVB7=_F>P`(YFfFgog>9)6TNYM(@!Q0=?(Ke_~TIQSD%7;=& zq$KEKyYBuMEufvQ(f16G%k7MS4jF)Dy3j(5qS{$vM@}01h@P;LXz^^=ep3S~Cr|y@ zQ6rfW_8BRUvkOSWEYmFpqz~!nN2_0Th37(z-*7$cjS`bZ76KN zL&=B*1&twL%td-hZ6mlQM|XsV4B#}U*|Q7>8Y3XoCE_vWw0NRPr+krS!J$t|Jq=J1 zz+M7i0AU6gR73%0O)p^9D94!%i*&^zk5Y0XjFW!pcYB;3l3LVve9&E_7ZkqIP-X<$ z0~E|LP!c}y&k(sK91;weC|v{-ZBzUbKq(U#$PSgEc#{&|Hy#on&}t8*{EH(*3|UUQ zSt5ptQp;cZKZlK%t!)2KO@nC}<6BKQf(wna}ho(NBR_s+;Y z8p&u_+R%)dyl8-PEQ(tH$}XZm*>?l}J6y;H2qE$A$y*BG3TZ@>1(LrB5v}TkA}eJl z$AJS>|-Z z?@8@!9OK5emJ1lg>!KkTk@hkmUro0Yjktu_h+VR4gN&)cjkf65DNfX|2t2S+h!a6WHH5&D>Tk)*`&uto7}xdm8f>I+T3Q1fchI6Q;|W%)&G| zcnu*S?h%ZEa44oBLu}$g{74Kg-=#xx1+-zPX1q1x0L?deQ0!3a8ZeczGRI^igP#cs zg(bIYtyUihCHSk2PfzizT;u4P2Whggg3QyhfbAKS!)k3})bT{>ko3>$NCR#Ll& zzJ-5zfBlVV&FHJ|p>aj94*iR_vBI`*)P_dq$HopZ6jOVWr;)q%|7b;TPos(CsIpXy z7n;~BukekEW&O`;rTj6hEFZLKrEX3#=|G@aK}fc=45cyzV!zjr=>o`f1T+zF$(5?E zvfG?IOR`37X6uDJLj8JRv&dhP?Yyr^M=|U0TJD$J>xVE<(_yz;3T$a}J7<4SsEkZr zS^t^qUx(ha=>oR{FaDi;uTJxqoRWjZw+1!bon12;^PWNbgfm!(38`?Tcj! z-5Z8Ouicj9&oCMmCbTTyEeBM^BC0{UjkQn zTNah7eJUwQ1ii$`N0c}E=pno=LX9s09T^y0QGAq&-qqJIPRvvpoR}u0uHoU*F10&T zWv=@f0QM4fC{l+iwjGuCmqSA{$Wge8s`m)FQE{{}96126`1V^X03YjzqO7G<^E3$; zy0q*}li%~Qb6n10ra5M%kk4_+{pzo0Si|%fizJ0RAnL@F zD}8@L17Kr_^d*3I&*eYOW;8T!Gl~cf8x5!g8ECpDa|Wo5#fLj5Q#_76rhGDSDKX5# zrNlDvk%Q7bpQ~YLLGD6+hjt;kfw~Yd;d=k=RzAf<3@hDI_^bHF!m&7uH!~`6lLx+7 zaHkWBQOTzw3_nwX_MFB9OUyI_sk~vM@ITv0H$TcZ9jotQd$io$h8A zRc=2J4$WS%+|jJu|GPGBg|yh@V=J?@S;l)Bcunbm5_Z&}Kvp11MZ+?6tNvWi-aVJ? zFgq?c>(36k7nGe`S1ZZyaF)k7QGG}xOZyKsmvgOqmK(oA3TM-AcFksVMMNpH*U1>$ zOGM6WmgsVie-4X<9f*QA!8-0Qprq>nl&5NPDJ;8#WM|PiAG6$ZV2C@9T2j{Wo-8NLlq+YI%a@_a&qExi(&BoSPgio~cx(3YIbMZh zRo0}#%}7d_Y5fDzlLknsgmR>A2SQ1BTG8VQE&-#7pa{AhB?4ZGG@ijR@%#3!!)OkvVGTOl53;qIrTq(>4!M>XT z5c=*=&3{Mwcd{;R3Qgjb|IgD;>1`QhBTDZk6sv33NIri_@!lBx9*AuVJ~OHScQ_!KN{? z;b!Nv(C4Q#iO7*7y2=Slhsf)Q2ILM5SWxFWf?=tWoLTk82JCO61$uFGACsW{Pq|F^ zO)Toz98VGqivp|#DRZ422_fh~Oy`vHnBzN=uWjNmNx0m4ca%%=+zNDTD~{DysrXof zv|g)KNI4zSZw@$^Xo@O_BQa$nBYID@Yt$ez!Xi@ED73o_po5!)go<@kv*O@YHY>;8tH@wYjJD%v^-7=2 z@z@7i+r6~~{}4M^Y18x_Q4%l~M@c@v9(!s zbZd&MQi2$gK)%%bTkFj6Mm>7PdZ5*Vppf?fUhvAofDDh_J-}{e@Z^ZOKT5?jUQT~x z^!1p6MgFSigEjinzF2-ZXbfGU>Uqos<%{Efu_`WOc%dV70>-r37^9hFzd#tn#sL@; z@4#?N?j{WiS46^l^4OK5Oa>!kY<}Mfz>J(8{47JSzdQyiOdxlDnB!Xw`N=*b| zlky5f+*2f;;+`d#vSKI;Rh|{2Y7I{-9} zqC>-dqeV7NGYDr{F{+BLu2N4LtT`0FR2N#qC&hs1=V9@!8Ti%$9NSHMV;j_|*E(*5 znAs^Um#N$5eiR4r5bdNleCx8-jn1b7U`RY<_fzP-){fEC6z#pM!79w>Q4;Aw)|sPM zo2wwy0JO-PzhV)dj`I&AF`a^!O|}BCvZ0j3=_6hzxYN%TssC)Y$e(9CTW24-d1FRX z{2YIuR0#d|F!{Y$`sD25jNN1$;Sh4<3)(V_k~3@AKQp=|VOS<3rNnp{>}6>^O%W_9 z4hg^!rxABTOx41((H*R?1n)V|NQr`(;P+cSlAn#G#Eivf6!*{dG!gI;n4nNScx3Z~ zZeJp}Clwz3VZiCZ#_*kj} zn|khnu6*&?)l#f7LtX6iLqFf=hkmZFiEmHY;l0CO;FduQJ2{J6ZEhj;&SB#Bblu6Bll6&O#yPK#pT-~f($5QL z5(AIf>>w@;Q5a9d=L6=S>ywJkTzTb6wX5!#GG<}przqhVwLKRS_D9JJ#$y;S;{*;F z7GePhfkE9mL7e?ba&N}2cpcTU+*R=I^E`aSg z5(knOaB~gNSm_+QOJoe;)x6~xJ3A7skQ>h;LEtgUeynsKPsmWZpLszn%ZC)RgN3U` zhI0Jg9}8Vrt!TmAGHdPuJbg5H9$kkb&LwSvs9cAe4G@)m0IU%)o`d@NLH6ZnOf$`@ zAQs(YujH!L6M%t3#Ii6bHi{}(k24_hP-ZPy{W#m0FAu?#7U*J%HA{v=stG5ntos-S z6zd@+UB4zn=VOQQgSIdPfCplcRDfED{xD-z4YQDl-Ro{Futtf^5-WJ9ic6q^cYu_& zuM-xwDFQ4?Sx=cNg9VzC!J=|mSm14Tm9VhIX5K=81svIW4J?k*Up)mD?0v*;Q43!8 z*nhCa`nNe45o(N@HC-<-5(>u-o2Xe{^!uoOYk|k_dHr6XI?bO9)P@7tj1~V_@+U;> zWY;-zuVaFsS%m9jH5Gpde!{F}W!TJJT4pMO50TxFb0$EIC_@c?Ajw77f*CvDmE>6t z=Gnr!$n1`+jkQ4L<$l9X5vuSZ$egGWDJ8sPAN`?^ISFXsH@S zm2UXP!e<1rIs3q){0R!GfjN)v4i|O)w{1LFfXxMHU(V6q-lR<=?Tes220u;JRj`1v zHvVviW3xIi8r6+5gmE@QeUYl3g8HHY1%VnHP}h$$1dqRl!#p__Xg79eux7FpUyd0- zLNt$j6N^z(9SjxzZ^#r z=8BbavRJTR{bmfh(5Eq?82r>sw>vUr4S9@(Y^~Tqiiz=OorUkwnF|A|!jq9PS`#;v z5jB!frAYb{c%lc5?_uDUfQugKNUlhcH^Yz*^HY==;bHwti#9O6nY5OkH^#FsbaqnO z6QV3DBTIUeaE=DOdB~6F!R`|58&KkDW>vwv2IKqk5{9?vM>%+Po*D)3rGEd8El{~S zKz<#i?#brpZtI80lqw}tm&1gGj!DqQLBT6S$l7`_SVx33l|D_T(~Q1=FV)m z+QG>%;Z44)x3;^G;R2p-%XTEgh8484V}go))1dMOU(pU#M1O>^Y;b11yxG6qZXge@ zF=%EeaJ_%MwcgUaEkFG$!_=?nn0n6PY)^gHw2!HBKkL`|%E$8gGDeuHfS>YFUm)!+ zppED-;~RYe`R#x;p^pWRq6?iUiqd4lJVQ^F5qe6C(zpuJN=%r6Ye48T9fHq$;2QrF^1(LF!B%(=42v}M;>^YUH1g*xB}cVOfHfWyH$nP7@xD3O=;)DPD>8>C9e$SIgYim5 zpWXWu;n`&OD0U{}tvlk2aR&Gn$2;9Gn3z zSHv0ArGKe@eAoO$+@$C+oB#~IDSPY%ui zmn-3nFlM2m5PT^hl;1*vu`k;Le|wyPD(IKlRf&BC0n?I9Wn z!Z5LZbq`ZLoK}`xt_QWP$aN~l=ZWiVunk48=ju57C@^DteANGr=l*e@khJg4}# zXxs3VO+Ca%tqH2(jkzVoaw1`_1q2+&g6O zk*u$Rq0tnPi8$F=>^!S98KXuCOw&?r7@RHPnFnCmT}&oh-m(?Td5M`Zmwrt$zFL7^ z*i8Nucy0?j3^d6HZ9ju9Sk1I|yd+0HIagWZ81;)2ZuG5+mU6?|FEt!xw-{dG&&O2M z;-HQ%<%46QBD$spTrr4!je(WyFur?QXwvNho@B!!2SQ18Q7S;$5ZG-ORTRaG1Op61 zB!Q58LAvjk?*wY;J!+<71oz3)VZKmgi{6`Xm?svU;j~a=+p{Ji% z2XDoL`%~8tl89GqMzJC%vS$>PIU>Ygk@&}-Fs4Lwndhb^Z|iPc!XQ_L1<5f>zedUU z?WYzl0r~6MMt{L7F6?$A#7t&WEN?%Hl+@~M2T^U=90Q)G0GM&EQu19W*Zgxkr*8W; z>>03Ok-V53Q>~O*exQQrDIWa3?BsL+_^`_hIQ?8}m&c8HbVIUhT)6;Z4Q;i zT?o)O+4_e!>6d6%T$;WAWY&@g=;DdHlzeVIOjz`&9H8Q@-hHJa`REIU=XI{WLWG>P zr}2~gBde@cqXAVXsOcz1Umq?*p(82}bSP&Xulp~>;c!<8-wBJe@2sLSx9W&UD7;|a zfvv(B9PpUe_2|M$2=A1B%5g{jzx);sA%KdcqAVWcDlkGBFifKzL!T+#Q{92^e7~;$ z-m2TDpP{-*eyciCE(ss+qcXfq@H`hL-pd6BR?p4+3e{})wQ%Hw z`ZPu@%73Je6EbRFLt$&;*; zmzcaE_E_f_GWEqa{wfHAK-~;|#XM|U6wR)w0atPamS;5%L?=BB<0=H9VSn>N41xZ7E67+GULEQUdQd~GOxdAq z!U)W_gA5~F=p?=TC>b5DJ+vTJHqgt;l$tGPWdruh2-OIMk=mGDA$cnURE?%qv%BK2pIseUYJbAx;_hq@)vxV26{3m=3 zGcM( zTu{j~xG)_({3RLPrv{bR`+I0+f+oG3GiSOJ19Fw4xxw8$7uVtyo_1#IJ`*?lpkbaY z#PDSw&L4?s-x=6+@Ftv*r5?B+R5zcZ!O(Ly0j%e!rq<)EuZ+a{M>5p`dAbQg1iWe4 zsJ`FK1ysW=Uf!A4o0gdP^@fB76QihS>&P3>up}?uK*O~97Jqq@zwDs`n94oAy1V_| zUH(oz2aowqsUI06h*(G~q-(fW1zh14 z;EulJD@-dZ3EN~iNE%E97fjps$Ta2J`VR8WCCn zTx}mP;N)|*R%O!Rde)d2l?XZcl00_7FC!Ix!lVdO`!$s(oo$mvDgVr)Z=u%ebDSU| z`Q%H`V{$y1bG$pvDXO>v4jSKpnEBkE%yc|C!4nc`2iJR?6)APTmT?+(KkUhcjweKo zQ07uCV+q1|gTQec^=7aG$1#2@Ktle!vkkG3{NQPNWDjz7#;h1S6XM~h;L-JN)Jg8{ zF+5uG#gaPnDqIoVT2hU5gxcz$TED=f$vQNsfzTOkFBy0a+Y|a5bSDIlM}86YOoKFy zB2LiwsIE-stgg)QQ@VoeN4UCUR?7@-y_Sm1U3&UU1@~%RfM4#wC%8F0_oWbwOUyge1vlRtiVXnI_CAS_&qSLJ4!RXN4dlpcyVf=*^nBMHoUj0=cVef^#r^M8rfABz9DJE-)zwP!6-iwJ=oP9fz)NQat=dy5)Hp#mG=T@HVbQw4Nyb&iCOnl; zNuFKpkz5r2EQ!)FA&}%$74k%D#S$!nOCJjHXEoI<0rM3Q$X`CV+^C!gUxZ;c-f^Dkk`h#G+514>US8%u!00~mND7h%D6&wjV^*q50HiXc53Ja&75)PbyOupNP zH4l*UjLioNC~#YECDwJ7_(g)trbFX%18(pZ2~ZosAcFP@WK%Q7X$toYEi0XM7G}#z zr0CFEEkBhjktHNM+M0SuP_F6*P$CETHYjEE?6|st8hlJwgx1jkQug$_dGovmLH*?W z=IeCJAkyG`=OET8Zz&>7+OytxLKJiqI-s?E9i7r4+B`bO!R)NpQebX1=Y26!l$fGJ z9Ik?RF>iiKF?GqTX%|POGV%lv@x=A97ApXXLft@tDM2SX8z02lX`@1SGx)RCE4vfM z55bepF{w_cY={`HN#^T!yOS5>W&r4n-&5o@rLSwGkL~g-WjS+06wXBmAu|` zD8Xl!37j4ju(5CsO8)ED)F62G2x_clJue8|`%*M_b4bb7XYfN&XmU`(*ZFN&}Ett;!LjaZZYAM zN)M7#sFv;U-M?HL*Mb61#vaV|rsN<}F85EGYoUez^~7MKGbPVZL3Rx}%t55d=V3bv z&1B&w<0}l?2dQ%zfz2=-=v-RmIXh5QnO0u@$7DZw`5%+6LZLp%^ay!yWK8vA;K`4; zQRksBb>4Jl74qJ``sR;e23qIXE36-!rJ<8l|3?fzYOI+MC!%v^~%Ph96Wf5+XD__$Sl;0_F%_E{y>5fGo?lM zNIzkcUSHU9Q*=o}0%efH7ZxxUY$4JWYOBCr=V@K?r;Kqq+{twx1u>r`&{>V9VF2IE?3KddG8p?|5!*Kk(zh3>au7 zc7JLk{DVSXi$=J)J;Lj3gf{NmZi>$GV@qMok8;$H(&iiMvPQ|#J{`!)8o*sLQKIAB z+e6_r?)D7{kJ~pK=loMVNc`-6ihEBYuP*E(cU0HC<%;4AV6d^@DKHBgEH zFG{#Qb7`m0akX_+GU-J!_n_@FawgIrtAhz z)b8Q;YsP0f>4!a`4r&v3@^9^!2Hkm%@TxA{Z+hI{Qb;|PZxoiZR@C_!@U8_LIZU~Z ziQC6YXg`K_d^A_$rV>rk9NJm5r zV0;H$vaVy=lByGO=b=z4P^+IPU`_>VUSO3o^qbrdfN9m8yD?<8rpOkL(GR%5-HP$uL4}hKtL#7%l zy=Lu)Bz8XMS?xY4M?i%9p>}jK?4Wg!+&c4d z47Re;S<@DV*;z`S>*}&EHS9|z><0Rz_@<0dBJaI;g<+%ipO(?d+y_0REThm%`0PXB zvufRaxEI!tu{*frAztVo>3sOUbtvQn;XS_Op_We4cbLqQ#V2)YA0qjA(>>UgPY!S7 z_P>{U0~gFyBDMuhFAA2X*r6-%1jQ(Sf>h^8dx3*h@Wz4+^sHI0cb0O$z)Sp3_$!9zH3}G{ z7#QnxaYZc)*kxt#{MFD**_Y~1`%?Ys)BqQjQCfOn8I~_Riz{s$Fweeb)2#W;q7J{D zKmYqt^#4O7YQ0s>G^h(>G^ikrRV?D4YEtm|EcT!)#~|7)Ze3?Z)lL|`F4}(`F4}( z`F3+vdVWT1rsikF_KdMDujaQG{vC_>?j?Jtv@|aL;z~XY=jxUGf8_-Yj6h2Mzj{TL zd`y}qcg(W%lc3}?wL!_}*HR_F=XI}=-}Aax$?tjHtK|2*?p5-8UiT{bJ+FI}{GQjn zN`BAlUM0Whb+3}I*GrUqd)TYwcUOdJgzn3;D*0x+mHf*V%#?h6W!jckE;A*c$1h*W z=VJ`-zE8Q5-}Nw4^6g<;$^X>yN`5GnDfzzCm6Uuwp!Y9X$-m0aE~n)4d1Z-`Zx4Hw z{P!=X+0wQu58d|4&MOj>j)o$$$D~DEWW-52WOik1(^{wT1dWlr=xoJFZsA z|H2X_|Jk2bCEtdUDfxDjDfxEOrR4wA4YEtg|EcT!)hhW+)Ze3$Z)lJy`F4{j`F4{j z`F8V@tmMORu3pLiw2XdEKkz_q^^^@_SzQ zD)~LHdzJj2*S$)9&+A?#zvp$YlHc>XSIO7wB}%?M>{ar+EAk38&z36rmo1nn`T8o; zhp`}MN)QYqvT)ZXO~m* z`FyF8Zx4Hw{NG$o$+w4@lFw)Vq~!mYO8%d&jn_V0dHuzt|yVLdl*G7D!eL1=%&r9+S;}z>WsTfH1vaQP{bL1jMMPs9L z)wHI*kga>dl^^g&{wleQ0!#o&HTg?|Q>+@FKE^_Sfz5u4^lY)M!cL10<53dMJG0T+ zDKp85YuUao@qbN22QYVe$9^SbVn@cU=D029WGW@w%V;6q;if)D8XGxieQf9so$RRJ z(E}4LdS{29R^1~J-_SXB{HobR(SkqV72t9ruROl&fK?8#(cTZvtNNU(zF4>|`6CSt zL&%A1)hE5vtz&Yt_u4g|O4$HX0nIK$NG(4Qv0C!SCTxJXpX52N0!$?UhVTT#p>%ih zSxz0HN{jws;}G930!Qqyl6?`=4J0O&*N0iK26ndymn5`>oqh|$vDqOC$*wa(J8~E4 zTmz2X)kV$`M+huTxDtVbpDRaPaOG4)OPJ^5k1V8Vk~#MOXvtFUbCRcg?&VdG;(UO+ zDG(7>mW7oBH}b;pQZu`P8$(US0qUSepL1V9frg+KqDXTB6;X&RLW5t?3U2ZUM;#ZL z`_LEDx_MU-5@ap%C8u3&Ce~4yto-~f98AMz;}DhL8@wXF#b1I0g+n72Rkld?H6#OH z&ycDN33O2hkuxuEWPAve*)JtMw@qsDr<>AMkW(#7G=|HiB8tkb((9wYAYw&PzahK` z0)mbR7Ku4;u5PCem8}r;Od3XqKj#E)62<#Lc3yL+P~Bel-%e~3;Yv_tYv?9w6`t6& z0z$e4eNj=H)DNTKTJgJ}{Xh`BOD2f;QPT5DrII3L@gX1y`cjHn{SNOi91EHAufE&Ht_}w`xd>zl@Ty2UT7I<}Cj|Toa#sOJHL*v9C9UEVdsqZ()ZK7S zUqcPjVGul<;Aj`yRQ;@CY01|h4y=rX1De3JAL<7njns}Bu#Z9Nx=wZUlh*R zr15){W4t0cpI0?RVm4)AO zo-*Nv5`+{wsOL!3Tcmst%VvcXL##s5*Hmbq?s*RnQfRK!pCZoWLJtC`?Z_KHE1spl zPzpj4a4wP)*~bQPa}gdL4!gxq$>>TlI~S1hyUzurLVr30Bwpx*Efa98NjgleK*q*c zw)CGxp*@0~zo-hy3x>Hg9zzenDQg?DHIjuy32HGRX%6ou@&o!ss54YE>vKB7Fys56 zc+UWqfLh50sePLB^F(<{MWTN1A)eiFepC(Ga*N-Bb%pa0;GKx30w;ynxJaJXlK%_S z9*Xh=57Jd0LZX?iA{h%elX?f`SY#4q1SBsN>;}Zj0>0{eFR&Dhi=qvp3>Hw(3tp)! zD86%myQ7CrFs=CRD5@5R9tgrMsF#YV#ZxE5)XwD@bO`AcOD3j^MKL~IoWR8P=Y!tI zaj#Z|qRyjQ9a8bE?gFsuT2XUln^6yB4sXFYCQOlyDs0cl|*%p~w zh4=ikToNI`T3JHiWa28ZhBAl4liIbUpm57$+}kM-1R57}H*I-o9^pWkIcjTyHX)vT zOg$k%4?R(jogDoHA_?V6!in3YU`j+1sxQ7# z^(ykx&kWD=&-`h-OFyF@>Pz&t|J6l%-9LMK@=H?Z;NZ#M3~C09mvfeS_6#Vcayvyc zU@j00OuZ)gB(DpuNoj zK?L$89LgfE04syWk+*aQ10O*7EADM6s1eD@$vFLKW1`gnY@C@TKHl)^2dAV(+_jYc&^AA>9YBv)+Qk!h6BM z979b+5!MT{^vGWJ$i7c^R6c1>Z-_0#0c^P_lr@y%AamY{7D#>JGYy=siY7J}j}*s8 zei51=nGnsQmk9U@q*o3aMX*@fri}!b5$WiI%ZwhTLt_VZWic|P27FGJ{cUDgy^6+QxcudGL8jkGT-}<|Nlps1m^6R}5@x!7Yo?82VI3*=76S~Gd(S~Ut!?aP~3 z;I5Y6$sxU--yw1>4Oj*h8pS+d?b7Bph(}@Ik6ZA)L1UJ&o7lFyr#M~Jgty%ti52Vi zP}*-lC@l+w$#OuPFc4^WIEd3D?@w}rlF&YSb1sdNYTy_hwB?)#f6R4!w{|aToFtp z{el~0T>zG7Ym_`?#x9m|A;gkG$P|UJVGvqGQA$2}4g4BmqX1q$K!F`E8y7WY;<;7e zKu1CFnBZ423~}v>2MKw zq?-{JuClp!=eA<-Ti?oa9_)~ld~jBW5r-b3FblABD}P{WB0b9=+-!K6#r#Qk^2`@- zYyM34r8m-cgANQ0i^~})N1l|?qK$@=-(F+FNk^9zlfPwJgiJ=iA|oRR=2#;H{n27U z|3Zc`48>Ck%B}~LrhLw)*a5R4kV7P#_?4tkcc=Kp8J_3#;5p9le0)tDy`!$&^jooR zu|yy_(_5QxZvEp%(MJF0?P#qPX>&4rVJZ>j7x!R+BU@9+JtQ-s*aUP?Pd>jwX&$AT za2XZ{a~p0$hvCROkBaLjSo6_NTDfBb#syRx-`LCjE2-z!8+zZ)um9!tw>6q{6Se^f z16}aGhKe|Q@Qa)zw^qFxXvs*$4-WiJ$>)xo-%Of{;`sJ=rN!~d9~K`SAA8q6{hYj1 zeRO=po=#3)9C~!T?_K-!qHn*LIuH0gqTiI$^D%z&Ils2=-?wicRo=M&$t{KVed~=1 zjYX@n#4NnNe*cs1=k5=01ig3{wn_B;@t^H{qm&6nowJ}fW1Vj#eM-CRaMvz1hInfaptSKYu&bd|B|U(`B;;fQfHz%$TFsj^yBcftrWd2u@NVtS z24__F0BS8SMs_tg)(=3fd?f&dpNU(yvq3V8UO-`7b?bLE$dS&p&YQix@hYvCT!DXcVrEZ>pGW+g&+lS~(8}*f+vgVZJNSj0{7Cj4J0ET;zpJ>4 zo5}C0j$;_}I~^lCm*4d}l9c3kHCJ;B`CZ+i@#J>{Zoo}Gp0(F-4L6nF4Z1-$liv-w zAvc@fC7e7zm*1^$E8Kj3x6-Y23;EqDx5_Q%cf)SjO+Jyex7w|CQ~BK*x5mxncWd2R zH=Ey$xDhv(->qYdVLrcGkEmS8?>4v%ZZW^x=r+2^>8!m?Zj+nJ@2+vzxS9O!T6e9R z&F?OL^O=I%;*OksCY+*e3BlZqChA?B6@z3PWSe<8aac5|j9g}iY8N7mJTDW2aU9|P zRdo;T;t#4Cir=pLv6#TPr3HLAtCsE6JCHF*Lri#SS>b@#W8w#L@nq|BzPST=qqMS0 zOm+tn2K7_>!lk`@Rx1_EM|N~HUQoqs4Bj%H~wztbk?WIj|4d@8@wcQe_Y@qvZ>PJCc7zY`yr z%-bv31m^S16tK-^HWGD3hy>&(nh{zV8>iYf)ig;jlX7i-3u&K5r;6PF=(BuaLz8xr zFMuPaY+))J6gcf3e!I@ZV=|Q3sULk;dRX$2BKXV0joP8=`!vhKTGN7xN$r(#2a{6# z?Jb~ct;xA4*z*3F>GGvdQ+zyq*FNdK{p8(J0!a-3s9gLLh)Klb_KUh+=Z$<M#U5{5IEZQOLth3utV_B6|J1#IlwDVK=XvjaKkL=2 z(v?*DE!+3K$fg8RTazeAEu4vNE&rl19VNpbp0${@Jk##MOXbdB<6*pdIju65Ljh_d zK;QxtQh=>LvTDnR=R+P{%Mep{(mc?282Hxks?Dd{f~z5_)ZCojFRb-c-1i%QfbAO84R$Xiy{T)s|nI%!zU^q@=jD z6xvLn$aBpUv#_1DY0^$}ZE|H!qmYZ$g{>f=maJrg?#SL);CctfSP+@Cr0%1|<^uQB zJ4kjF8zH+rG~EQBHu0s17|ql^V}=qtm!MwMThvf+d%a~#+az)~i%8~JVu~oolBQ^5 zV$DKZQwaxbjq-tNXe{#(>f}9|(yW-u)2E=r`KMSinZS3!@B78Q)TMT)Q=bbgGHXA( z8e)a<|E2oIJeymOvTqIv4r@$HCN7zToBdG%lTqgyV=e3HD{ z$Tv!L<^@qk>q9tIoB0Xi27Wvvl(G2is>r_k{UeUS3A?0#$+=`BopOj>Te!7(&Ct_d`{on- zcYW{E=Yj{FZ{-kA3&}M@Kl_{aJpF-VCqH*8d%)b6(dX)+ADnvs)89Gsy~AhRgH=Pu z$RuUk?(U3tj|mlWxWRzb0_RPb!*+Ywf&gM_}`_ zi04T`b)dKKRs^V8_cNYJ&<+1cl0#hIWdZ2>{UKu!0(rFN%(_S_%naZd=4vCS3e@8|e&M zc>}+$9@_EX(8&F7+c~;>d}?IJ14^V_r2fKNg@Z!c^V(IoQ{^}MBG{pFsDKu;4>qcQ2B>gcOjelT z#Y5^MfGPg$^5)g?`$_ztsvx4a{p+u4PdoT!I z9Vi@7$TV&Mi)*;2tHa73j*W&}`%jp5Dr5zM(6(|l^AiN?%mR#_?VgV7{0l7LTFyeq z0i46=+m9@i-wDGvt=vU?gDszmCT{&#PH;RX5-}q~WppSbMEC$5d;Ym!{^HrEzW?a+ z!Or`nffN@7qlozK)C-0TR$z_y8C8c1+~WY9~w)f(pU;s>4%4vUBV zs7|$V!$O+uQC1c>AzmRxL?FVpFrxl=)Uo_2wt`Z`x=;^hq9;$$$g=;g=E7mRY(kYJ zMy7JIaQH1r^)4hz>&U>`Tu4I%BRc9W6txOTqTWC~fo(;~dFTk%D8v3T1N$ioMHu64 zRx3nA(~+XL+&8`kU&iqij@U_of!iFVnAFg?O1c%=q;C!ew5)?6uR$X)MSK<@b@4Zs zo9q#DvIgX!T{s^C)>6`^!RXC+^RBv!wUcXL$D!wg2N*wcTK=cTAX=!v|5Xr%W+y9#eg+c}#Q z`lFc`lpe4JoH{XKz*p6QvsXi|@b^1#v<5;=$;)CW2K;zq;?eF6=;M_sWtBt?ajO?hFHJD0gf`$fPi5#`I3JMT0iGOK=vQ zPg~baE6>g zzD?$(I?!f1N-%7P*E-ZgR)G#7$wGu&rXgEs5ssiZA??|VLR=zTxx>xZaLahM!Ig}% z#76p{grhz>!g*HuB@LFOCd5Y=sPW$~Y=)3F!YGW-4+tXKa+PZNgHlEpchMF6G_4c^im$(hX5VY3Rw_uFJ5-gA|U{SnV;0y5zz zAfaPN(d60H>7H{0$TB1U>I!vVGZsvK1%^x91;}xh&Caud%ZzY0*`|FhkTDdit+Pd? zZ2IuhutzIIlNbb1X23;TU&=q7uN*KG_AeqsS#i-D;uJCUx&k9z%HyqwHW^vRDBEp||y3P*{F9?)2)K|F5y`HW1 z>H`{3$}=_G2qW}XYpQ|*b*qeEsS2{dnSua(8?4`b9xM~9tTw3Gx4|K8bUH-2Si=4w zwZnfv^_HMm=b?X%grw>luZ@fx2?R+bJMqn2v_VTmfokuSFwrA;n@JqDQ2f*)N~~Md z;OinisMS?z!EXJrZgF-v>`7e3&0HuUpwmuUVu|{eq|js~nIX@tUKxdUioCHzpw(cd zm~bg`0SGo?vi|Rg#I-{ba6m*Fy3_Q4fdY|}Sh{yL>OkS)VGS5~ zmb>hVIeWZd7;Lx_C(ZP+d~-=Ch!%!RG=XS zQtNvYOt2+UM~TvB5G03{6k>)Gq0A}&I-mIpNb0K!Y}^S%1**^lUj#-hg-%tdu@-|_b$ytHSbdlCi&YJ1`f6c{;jozHxK>oPmlc5 zBai;k<0F`k6x=)X*e8Fy|A`NNYIJ`yi# zkA~=Z-Ks_rL$@Twu+B{oZa|w_XOZ+0NyatDV+O!h4v8Y}J1>foYYK>K$_q?baT8_* z)_o_en#y=tb>mSaN{mQJK?6h}o!BE`KzS*^7(tNoVkw@Gd_@>T3C2vL`o^dV@w7X4 zi3GpJTYVK7roM1BG_k>o9XR;MtOiU9ixe`?XC?lS4fxAZZZI_y$M!&w6yqgGD)IRh zN@`0ZnIIc_1={)du}2_?Ip>3K-`v4nQu7QQ(*3iUtk#?E-OGosN{@1Je&-qDi5v{mehPBHfRkBOt(dHmcLJdf+pv-^03y=BTf%xkD+&I@~W z^aiRjM9E=<81O>}q-^85b(lY}9v&$UPcjq#dMRg4&xt>2*R3euT@7iI_>b6_12zte zOJ9|q<`VDJm<7=a@skDa%!C#1s)lG^{Z%@d5h4h-#@ zDH7>g$q=(ggA$NUR9Fgg3m%LSvfQ&@Lo7$3R(1S~(VuO_{u{c=qEhx^5eWmw`G-YW z2h-H8D{C7LRYD9XW3vw8MWDQ{mGmbpU$R$fm!5*iQLaPxGwz(dz_%kR<(nyg#UC%a zur5G6sW00_i8{8KD*f#(O==p^587r|GtLWKrzjN_AzCaH71LdgSE8-@hxtu#svs2+ z`DUY4$?qd9<}i8%@k6rP%}34S$x1VFDZ9mF1O;gShd>h)r6oFC!NE zYtGg9kBF9W+hF7Zw@sn^7I;__@z05x%G_S!)o!5i!hk^I+6I$+Tyr3iyBO!|IFYbZ z(rhrP(f=T{TxaWD#dHj>nthl9&lgjynd~NLO{g1J@Y+5(U-NH}63XBV&kl~?EuXo2 zU%)|~NiQ>!9TnZ8H%^RL^*ln^Z@@Xojak|q5#yeDm<}D@lX08 zB3@7R-lS90Dk-hVqdGAkqEL-7M&oJ-W5A<&xjhBdE&5~CSgnE8={q&83d}a5R~j;* zOnf+Y9d9ppsFAQZkrG@WDxP6hZ8!ie6RH4U_i^P8Nn)NjuEJ4Pa3i;t6A~?I2Bfux zQhHKbx!_BIEX)9>{D7J&D)`8@a8an!|F~GdzZ4$cHl?@*he~lBN;$8gaI@4^X8BXh z#y_NQgWtPV28%YA3W1K6RU?MGZ@2E6SVL+70fJKrhczMayfo;xr=SdJhsH6fwd5oS zT*NyVvk`M`w8mE9HMqi9*%ZWv98iNHG$gd@@OXJF7#Y9^R2nTPFk+BhJ+KAW-3on2 zw0ZYlue1++P^T(h5O2wIMeO~nqqF)2GoP_iwiEg5DP2u4P#C4P&rgN$2C`h zr?BlGsz|94YEaHM52<~fSe1tb0G1MUaH*S)^qYrF+wJmFHL9z2k4U=4q=C{4rOa_j zlU8!Btz^_n&a_H^B05zALysbtT(~~979-`0M=mecUE2PsC?eQtv zqBaq^`G@1Iif5*(KH+r>=`W^xtjco!=03gYet|{8jd8^Q7sq*O)46MJl>GowpF*O6 zt4cI*u$G=z1oCh`dle}a=Bi=NVH)H{J8lC+x~&bNco8{e-o|iis|PKZb|O7go^OJ( z;p9C1Q0EV^-f)3C+p1&sN8N(a z8WU`eA11Dq*p=nfWq|+`g1G$$8^0-e{R>4 zo}uNxO~cH$oTEmYjzu9)8@NMr%|Hi0V@7-XOvD^R)UL-6*P;Umx7;@9T(PZHCZoH@ ztU1lx=G3{F$G(>9s6|I6wADfh&Ou5vZ8vI5(sx(ou>R)asCP%C;H??$T0$=~uaZ-! zz_^RIM5C5BCX^$gS);@fXb6}Bw@oQ@ORnKcn0srI?&p>mU3}eKp#D;^jZ1^LC~R5R z83!-*FUP$s*pHW|Z4Zc%~TD8 zyZMPk(aJsE<*-X7jGm+R#3sgyNINcXr*aC2>bPsMQDlci9vv963 zB$0)!7|v}>9aaP}vIHfTU&9EKpJM7rf%a2VV|-9Zr}!Ji|6bsaF-FKDkd>Us*4A5q z){NqZ2vtdH=^ELX^#W6`e8&;_i(2fVZO1uh^zkESiV`)Vf+L(zAWn10o$z%b9nsV- z{uZ8Tq2(SfHsuEdRu;|KjElh1-st4zFsi~V z#DCmM1ObnD&0Gr|EkkvPYeo?#@rh$ZRY(1fNjJMs9$Rfab9fQ?{oYIH_G)*?Yv>RZ!QT7ICyEWD5>Tg zSd=Qx(2W_P?hRqd>FjXOpvf0~q<87=A26~0K-usMvhwcG%Q0mnQC3couji(|9(kqh zNA0G*st|x(YNudhmQfw;+}dge(X+}O35LdLoJ9qXXOlAnL@pphGs_B=?giY^8M1@n z%aj`TM8@-(nslcV#yxGCaNG)Vb~o9=D=Tuhk?|owgmO3F;%;%0-eIR|*w&EovHYxa zF)9|*1L31ru3RC<93=5fQ?|G@DU0=P*C}FK_b!81PZBB-DKN5txsBy&8UIcHN{28W z$X%}yA=lJk;I>VL&1#E0X+ntczG7{a-XqX@GXotc5BQR^WGd+Ez}zP@fW^SC+$-R1r9@l@9GWT` zFkR{jHSSoLntzs$Nz7~*7{OhY9y2te`(CfmzuItrv05lpH4nRi(&)y!`CGd2ZWa%i zJ!BdMEB~UOm&4Geah;zVr;(Koh%qJQ9ET<0LW?N7lvZTTtP{WE4%;o%Wb(>jk)iiu zD)zgKAXXa~_VpCoFl-gHV;BTYnLHkmcDK1r)^FAnhoP;|78u%!VOZ2M$_rAJY)rOLE0)^Ugvp&6)^I^@TI~!OO0%pq$16&wi=(~)uwL=GJ-sU`vIAL#>{YlCH z>PyxK{~L3lrtO$a*DL8tDSa}~7Lii=W3F0Z`8ijmbUDXWQHa0bs`G|7kY_HuE3Ijl zNR-yx5nYV7$YlHtcwn_OTa+@3mSe*g_clUMVMmWSbU@Z3D_^`Jw}{1yD7JCuXTKVx z1QVcBWPW%1B1+%OaDZFEEhH;cAN)#mBg_-0Km@|9n%{nznhj{;5;$Tkb17Y_0pfjT zHSkU~P`o(k7PEw#d!7woVRbYhM1r6o{yMWe(ug+eLxtalAnLRVHZ(c^9Zi$e_v2h4 zqr#bgV<-}0>C2g+m3zT0@IQ(eh*f zx(qVuGRoOb5m>2FXDQu=k=b$#^o8uSz^d~gRnxz-(>eR2P?;U5?>0-9$4r#ukwrNO zop7SMaKDWdsG~DaGPxX~aIezpis*)d`&#CeDEa?=sjt(>B5y92) zlvU1r(J>i${A^A54%8G!n7a&xQMys8f#4i(@<0Vvl5Hf+`J6?rs~MQ!a~h#IXLBIK z$t)IkK@pN@ErtWefLzx%yL*BSu1DNiOs-)ABe*0w*iqOT!9{Zili9-tF%@<)B*TZ} zef^z1kl?Ay`5#Ds3HO(wVaEQ@rkx2D!$8x}uCo;8wNK{D{zVg`cJ{Xc96U7(X;Zx9 zK#>FzmC)W;!A{%lssW*OQp@$MY)PDfA$0mO>2Hyx2kN0{wP z!sbjzXdbbWfeIu)=GP zThJcn=deW);HML~^V+q?^-ZuisG-&otR=A9C9W*N#%I}YLpX~V!$+5EoSut~CW%Khz z-iw8$%$xyy$cuFp|6qUAQ^Q)k>|6CdZ3ezvT?^txZlDI5YP!%_?~yj|$VS3o!J?|M zWtWjfu^U{JNFEezM$z$BSt}~~y|r1_<@#n{{8&xn_*8*;EY~9i@NXmg(E`>G`_?Vb zSy>vER6snD22gIZa=K58TJb+HK4_b!{*oSxUcj5A;<%Ii_f1Bu!}^L?VRnb|#3dFY z#GmHa{-HGGy|h8{EN$9nzhR>n^Nm!ig#;c)A$Uw{ZZH_F zJU*v*q93;@UHyz+JB`K27Ja&2h|jUI0ME;4mv5T|y+|y~B43nhp_f27*6LKjPrQ7mc>|BUAas5^0bz2bZ&QP8Y+WhB5j6>N3kT*Lp`uUd{ldi z3H+h@!zO`K?6ZxhHJLg3+*g5Ql2Sd5rL_;(52XQv+}sN|*e*&B^lXoh*FYw3o+qgf z2n8FWisnR;&zUTnX4OeLvu(z_nJo5*a1L!~m*+)oaNVmbC>aC2K1rrSh-*tNjaIBB z-HzcVa1)TR9<6G>-2yoG_GqUQVlGtib=IDI3=jeSptT~US=b}aO?n;w^$MuMBsNON zdouhg9+_tFS&BCTQK^o@O)R3dZaGB#w?a4AjlXb38|%6+SOd{hx(6qidy*hT^F&LA> z+Y~~AB%8Xlu^HdF^fbwe#4JR^C}g{)x*RUG- z58aqZyK8Bk1g+@VqykHq;^WK27wrR9yTEbgd*K z-nmSQ2qL#K97=f5hy^$b%ows@DOY8DqU=(Wv-!pINgIW2$s0|cq4DNTru$53I*vGH zG=?kH>egXlZmLHM1Yjw5{~QJiwC->KX`Z6gYV%G41-Wpq&rhtQr( z9eFim+JJI4&Pyc-LvBQwQeR1F?K731CU=&`kx9HDyt2WKBObf*3IdN}F{FHa$4%>; zRF%lew618n6SK7reWww9e4YbHZ0sN8t!w}}VOqx#X?nKS$r{QB5L)wiW>^qM0V)zI zAo8){1YX2^bl^FNVwDP=BJ|N5))8Y60YS(=Hj`}gFf*36=_NPt;Br&|NBf}UctkUP z2orx{MP7}DBR{yB0W<>9gcLI{Mj5g&r!X>5O`>vqR$=`b$z)|wCf)WWIRsE#`ZE&7 zACRRW>%n+sriY1(R?f?cq2Wn>bU-$%Aayk6AcnGRvZ+OWOQW;A*kEsHHzfnIAcm~8 zX|Cx37Te&j1#_&h1MLo>Xlt~C|LtE=S|2FKMZ}7I5XxhVY35Bd*=9HNQAU~qOk7OB z_?K7NDgwwjl#ju+dW3|tfAyGD5m2GZit#5T0;h@2syG8`w_sL`oBk4E z*cyJ1)p*klzel*$^WC8=!72NtQ%Z;+*GpsULKmM;)inO<#j(D$AIlIrnr*}|(`iYK zhRkAkZ&ygHjfOrGev^SQ)sFGBM^|KiHy!kO_~}DOE7J?C6@#pnrQqL90;DNzU=_&=f9q3dA>9Z2%gl@6{o zM+Z0n4tbgAP;Cuus#MA;FJi@_M;_=j=w&``-0Z9z#VDJIi`mr;Sk&1$Q&3y^J%RA# zf~IZVnlUvx88$Unr2IgL9GV_+hR(s3p@VSuw;MYBq#f~wPK#xke~V?s93TOnsd7pT zKeq&56(>VCNs%5K{lsWn0*Q}#6w>f5TY|4)D^T_EOd60YzCfxdF2rx*7@8-V6pWkJ z8t?0{Nyb>U8Z#lC=tC2`j%aQu6?~v?Q-o48HF|(+ijeU40E+i?Ip|!WW<_=G>y_91$KQYsc zs+Kdloi~Lt&7MMZAk~)+QX88gUTbVtc$&8W#qDVIS#rQ=ZYH$kK?)j`;p72>7QxTt z0VW(Y6fzB)r##f!X9%&uap#G{MDrCYZW-ClWJ`g?M=wuB=e$# z-f;%hS=&R!u3(ZCx?mRDme5?Zsc;&6rz7b5Mf)|Yu)y-n-?B5*Xk^v|4@PX9g_&6& zjo+iK3T^-|O1&|MIg52T7@gzI)eGZ*yelHE$S?PZNQu_RZFp70a!azvF$@9}J+O_@ zE_~fxcbn5lyJqG>$(9*EvXShC5r&aXoOd1=G#p>xx<1%jHsvacFmBPMnVm*nLisfR`f!i(jW8I0c8ti*q_I5J~N zzcv2c2;7XU;QUWD4%<{G{-~+*n^{wShS`vtUOI;F4hH%Z^cx`1Sd&Y9vL*s(V`u(o zDv4nrX%eh*AfBUcYe28x!g9>2UX}+Zr8dS^n3bHKlV0x7P& zHYQ+q=&HGwP!#WCT8qcHL8yVP6wEfgkR?CppI5%F+~^WkWpo{jp)@s&a(-ajykqmM zdB@+&#L`_FC9Y}fWd+9(-0BHDd74p5D zn4CL@9kq0uE=Z^@U~6>n`vlqE9luY&))~JaK-pfJ-)XIl-}8C4fXJ{P zO|UlAlMUwLV*oJEoscP;7PKkVcWVGe7hiS&b)yDjLB}v^Zf|Kp++9%gP0+}OQY;VZ z?=qAk=(Io4=e%qO`ZTA&ROpkCc@MmtA?AngoIh&bZrZAI9%&wVD9pOe#dMeVz2~&7 zY7n&O*;%waEE>|xAy3PL-Dr7iHZ2e4v^>~G%R>v=obFw97p--prGUt3c~CLpZM4)N znAsV9H^gt3qY$#1MMmpdU~+^Cx#9(6pX77WWsXFlo?~Bws$bAbx(_PhX~hXhse4n1 znI@-{%_g{Kio;N25(LM{9)SC8u`m<3(+jrScDoYlo4Q-VF=On1fD{y&^@0t$FSD%G z6M&IFQv#(mK93C#m>Vyu00*1TV)>N*urrLDYk;{%hwAM{$35Z;0O`)@L2a7{d_hAQyHGxJD z4M+Gf=FHpvxrZHb8v%+^75KjSiyRMBH{@V4<&Y7 zS6JrQyoh)#C*rX-A|Ai&z(Z@@h$tX(A|AWMz*Czw@X-3Kfkz7VQUlMlOlxVCf5w4l zhLo#q1J5+Omd&Me$$>|JU25R5VaFWcndWw?e+qv;Q@^rO5i#|!S{P<#4>G)_?@%vp zY3VfXUGP8=VyHo&;I#f(SHavKoGxEp>-WBBtuJt1Uae1!m(u#J$C5)0wO=68#VP79 zt>jDRNz<6iFyU)ranaU@8IrXQ%gVAF$dR8B$Y953Fg`u|Z!GBnL%cExXoWOzqou9w z$Vn@bphUMI zy4aiJ{sdzwGz?s=Av5eM+NKdkTW9}cSj90~RGb>YL<$v=KdohE<2%Aq>WTMRhVzkv z&gjx?ov{|5Aez?uc$u?nGZHE1nD(-GY~wi2>KY8D!Hgg)Rr6ia{ifrT*D(Vhu|TQ4 zp}An3Cy!v|oNsNpxYj=S)=Z}G1P1u4T--dtN-SKc5&kMt%EeXAryClS)eS(I(+zb| zV0P&Sfjz{s^t4P(OjJOEFYe|e^}RPen4RtE-Myrg0a-7p!{(w>XxN+%TR6*nI&7SL z5xNN(m!R99D_-HBmu}H~*-w7|i_uM8oG;xN>i(P3jisRZ$(vO4#X2lx%(ugsJpU~_ zjAKBiSjkP&kL%1vIV4ZKi}Yf)snon;GwKn_kF;QnRlAgL4xlZmq6N#KkkSJbXIT|( z4x+e3OPHDcLfs;kfi@hsDPCU);+>u)e3gg~Jl5+8*e&T)J;hU&wgghQ7AcAs^lqt^ z?ddmsKoF`%i_33P9c)UCpS?=E&dTX|{Nbhe8_QhPyI6TQb4EFHhz6vcqii^$cHg4u zSeqVUHe1{)X0*k<0{0}-JybBW83zWc1>;RQIsu0?cW80JsUs-`c}+Wu2@WbHy;PRR zfSy#kJc1R-Bblc!AsCi(uPs*2Zg-NwL;+2#43rhl=xv6;hBa-}D<@dRRn%=e5-ipg zLI>f5s6FT=} zt@a|3?07NjlJd1YM^eRaUg@w8=q2!;Fbag4yI)M{V2q=7WaD+yIn`X})Lvel!+w=c zWitzPtf)Hej3N+ED4xI1II*m=?S-H`$Z^)EP9+s~qmDDZV|u8HaaP8@H_UfcSEk+j zq?+2YW1DK4pfXLG_i^>gX`dFSFUOzwheE|i%~etmwxiIPm;GHwITg*u$#gouo6;=6 z#!e2ad|e;$sY%a0>GMTm;V~}ay*TvYM$2sfXG@~k?J6HB59@FuhA~oDUh5_VnjgeI zdW$hxSv({!?A00iO)|AWlu|Z-0ey(bmVhBHFB{Q4yn2?wQOS`eLq;gfmiS`})k!NG zwH!~Sbd-hVF#c2a`^fdmQe*t3D{vRugLKM`vTQdeu**laswzz{^p`w4QM~&Kt26^> z(o%d{W!C1O&}$$=kUqwOwnBsXO9YLVCN{mVW#*+6E7TkjK#L$F2I`i^-Kpr#?MR1y zmeOmvol@t3+8ieYn8bfVj#K@kqQY2dsPH>PNS+Va@1YH3=5#r4k@h%X6Sh)wS!3zQ z&S#xN#lpj2(WKBduf6u;Oe{(O&;cq*#tNLF7CN7)P{uo$>VP2trb2B9r)?dU=F-a1 zTfClxoHAJjlFxC@ElV04UIS0qxh<-MCoWJ`FVZ&y35POPN94v&qv(VvDyxbB`@*=# z^n}5HO8lKX)I#b-1b3xZ3MfLVm{AbH15+^>HQYfaP@3oVEsPrC_ zX`J+QbkS(R{x&SIAbz)<-gFSrQHL#Jwj>zT1aoK%GqDt$HmNK4CVz#ao&XTfV1K?4AFnL5y4y$92DXE zL2ZTVrLlu$`!j(Rld@DA#b0mGGZXH#>u@10`RfJtN65iK z@^?;xL#oM@ekZQdq%P#iLZREuDvzLyp@5sJdsa^Qnm|dd(_qo)J3bhOEUJc}{CfP{ za*FCYg_WIcRHQa!8(Fp6vqszyz*L2*gk}CXR+lt1Su$hypy(5eCe49-u!+|~DU(P6 zp*OS_hR4LP#4c<}q#V$`N68qd#_Oco94)hULJooQO|sNt6-kDY#l9tY7rwwn$cDj$ zS)ZVEyrtZUg>;ltP1!I^r^&`lzbo_-VhN2EhpNzUtA0Z}y`PvDtCtYf5QYg;Q;rag zZF@=hns9{3BIz?lR4ErQj0BSXKFNT+nFt#Brp{M6m4vG8aFiOcpC^sM;${tYfyV}# zea_mz=cyF_CID%T19e$=rA%4zwFHOi1rn@L#F5Xc#)l|s)C&z&OwY7SkNl1{v{gFf zrz$*g45g4>HTmiF80;!PHkRgMYS=^KNCH?Bvl$XF8Vm`>Av9X{L&2_+8wy5Cq>$iX zhdm!;>*j{^2p8MBnVuS>AW2X70`!CUR`_vni-obS5 zhq8JP{*ZJ+uSidFaSgpg1uN2hSwXT;s9vaw4@5$z%m}nSzYj(nQLJ|Kx2*&(98kuF25J@|#d-HOPA`SE<{tt35 zs2J^2RZyc277?$jgyeg=3^X}cG5&2=9jo`wS))ya2mH)%A}f>!XIzEIc|#m|var3e zh}_Io`h;t{Sy31n+tom+8ySX5zk?!2QCNV0x$<`j%DwxP3t5mUIhl0=&Y7Za9v-e? zYVPJ4_lI5H;lraf46AZ_jDQAx(j4G?#A?c16U6*RI)!o}MjF|pc{UKyajdxB z`0p1bi;`M0pc_s$j2~Xc3w`W)mTV%0^-NZL<_63iJX1s95CguVevfDy8`0$Va=G8p z@D6SXsJ;zwxJ=TP1vLrT{GQNN2#_~yqIY}zcHlS6D72A91i^>c0bfx|U>1L@E=i&C z?OGOkQHyCHEu^>vH|X*NcCV>c#Gs~tsIp=m;*T#u<>_6@CuxHB88r-q)~D(NL=x*T zO!`{JeJ$hE@(Hcx08&lSNw{yV3eeB3)GhiMe$n~vsz?Sa47ZSY2Fy}v++u{rT_1du zJ!7)|H22{EMnc$wAhZdZW(0PEv?giIWy!Lk-+X&>*@MZl-`n5N0Bpgx@`z+q76RH3m9_wZ?(FZgdraO>Al?VC|X z(LvXY0@awXo6j-NGlGCxL4twS_8lp+$Ty+Rs2y&{s-ScEez%3Otk~7|*Y(C`DyQQa zG(@anyhzCDIBHAadHYXwD!0ka6mHfNsXwV3;;l8muAoKhm!NsZ8CA=7kfQ>VR>z{GyY;PWgk z0dn7G8&+AdBVZeQNL;dn6FfDT#}D-&-pX+h?~6el31_5sD4~bz1M-Cg4cKvwfh;*XdvJ^@isU{yu&*a`tRq>kMEs z<$97>r^ZTD?pF%fYg(9R))9gBNc~4 z-T`q!RYKeN#1fda;<(*7PYTgM#r7~z$;0bG)f_GdR)dm&RdUr1U}@ff?d<>-D<%Wh zZTEGQ=?1Lo%QDZKel}otG5u;od=9?j{#j4OxzZ@27>_IrK`{rJEN>ldm#fWAYz?Ve z*Yg2k;t?GZ8zhTXB?GJCN0(tWVVRg#Ei-UQmjrp;`d=TD>Rnjo*f&9gate*{N0%+I5m}ZLA$3}<1K4rgrN@b zd@o>Io!^>KnX#l35|bfV75&${_T!LlD41SUsfZ&a+;LA#3$HG@gFSL zwVnj=6Aea#J#>-9ywG++e_7MVv!L%0b!VnmrrVbmN2_-fEHOC=bvR2C3LZv}vF4wC z2E9fEW%`Wt8rMJP_cE>=_Cl&n&{}LLw)7CiY&aKw8e~XHCwNTaA9{wV!DUUOu2D?? z3icPSUnyw`ku3C7lLK8@ib9Ds@CGsZalAV6Oa!Wu%HZRmKfK40VoLU!W>fl8W$56VooO6tB(Zr4;ce*Bt!&O0#x0fJ)->#;G8$Aq zVq8MzMHq-5)AQ4?C6>QV>tx1njl_S7fvOX>_+q&m!3P?Oxh%^riP8}#*C*U&XV1;y*E7zCosW)aY&_)bKjuo4@QVsC(h%&27g)q)hBkqnW zx%5;wv)4wy(#RnW{n!kCG-gAKcB>RH!xe`~51G+9bPAP1pfHY5kh zBK;{a=D4dde}>eOO?xy~N9~cPMKfQt5O2mmgn?ib(N8F)2z*%VdkK>Q|Ah8~W=Cv_ zhKdk%G-S(>Yq6>GfoU6+Bv7(ep%3%oh4G)8i(;gp_>{ru0t=NOD29((GS4p^?jnYe z8HeE$Bt;To_V&h8OD%PpAm1bPC5kMz6N#PtbK)T#!lhkE7DI20f4#L66@aQkBe>Q% zT7^*;MWdukglO1fWgl>l$93WgkM|Z7({5>&D(O}LN!J)YizG5p&z>eS3@f()7Pw9n zj0;cTxTxuf^Z3sw_TDN*Algshz95KBd|hks=efnRA903Ll(OP;E_By3T)7huGYpOJ zRB@oJ1K3W{(|YSD^j@sF3oWy<&EJFUC~WBFgi&r9v%NufiT%th(lf`H&DM0r>tbeC zrTCW?7&%&Wr-0trhpQFfD+~Zm<2%GkjwTH^>J)TyQWdi-(;NQ?KW6%uk5O-3^^zr- zF1vusj(R0qtf9M#Rij8Io97}mmtD;lKv23wH8bS{dl#)4Lr{ZMR*~9B&6UoYRTnke{s{2lYF51k>UFjeT2-1L|88w`tk~e70Op0o zMvX7_!GaH?oUwi}HFQ!2w>y!0yEP7dPRg0{S7P0uWTIq|9{Sb$8zr_VG2Gjcd<8U* zhlrhiid`MI+oaJ4HN|`MoWCfi?4(_}74Sh?K>ZaRCNLb@~=@JCkt-#-hyPg z2P8_rh_YCkM$Tklm`j#k8w9Tj50j8V!nr;;XTrHQI#Xzv7@jUPY6274f>}#UrWps= ziC`mun2yT5mqlnb5l>kaN>+H=&9%9#z0GC5O|^H};sMu22aB#fPMU$D_;`wqgs~#+ z1FY)$;Ci1`R#;_i#pyfa8*yf)V~i;^1a#oT6pG0Qo?p-goYDk?NPhfa5n5#inFDo6 zJE%+AKm|nP8wPgR*;5rJf z)H&`L-O9(wV0tYycunvd_#}Q)^oCAm)ggdr0yMR@EnnfxZ&NA|Oz(l|9M3pMq{8w~ zp{}boRC;_EIdD8hWRX6t`!8i^0n_zdfQchr1k+|NiROy%$hBehHNg$Q@i;S-Fas+} zXS7yJ^m8P~hpFG4({dVhsNZoGk4*pmgeRte89k(G`3!;ZYB);IX&NI{EJCGwsK|n* zq<~Cb0snNEp5b`M^i}TD^rU{AL7~}!j~^Hy6L}~bjd#Hz0{?{V@;HT}`<$4C@x9#4ke>lH4+F`$@{8!4sQ z*REpzEkLXB^XBJ*0W@_Agc#c#%bl`nLx7Hi>!kYQ6xjipUNW9&>J%0N4r`6ntfI@B z^QK-QRSXgbY7@n4=D{iK6kOVTA(IcgKn7lGu-7OLyJD-TT<55==#{?zhex4){NPIb z?6T6CiLz-5d@;7g2h4j$x=nM!tB-X8&A#%PuPEL5ldCYH0(1eeY6|mJ6&GD`=!(l& zUQIIEj)JWo8)DQ05X58!7-VjMZ%%rUgVj(A+=lJ=4=u$2*weh#;UMdNX6vHxUSj7z z_YfeLTb)ZOsaNJcRSjj-OK3kPYZzyA)ZtYm~PN#TgE z{iX)=f{M#RGdm95TEB@oQx|z0Q#glE7lv>4yRlLB}U2YXWq2hj5 zTxk`5ukCH3%CovptGLg-P1dcf_?fm!YF3Q)*0@keA9!c0OTDcx-mPL)WNVy-bgzCd zauxTv8v1<=|BoICLbC91cCpoZSY_&r|NII49&n$N>^g(%``M?6*}_)w&$6#6=EP*) zPIU-}z`f8`(c;z@yWd6qajU&?{q}_7xbCdI11k3DS=uW8yo!D2mbHqXXscv-tN6QZ zm8@tLpK7aQWvlof+A3MqDt_Cp79^`%#qU*mwT-7T6LR%$C ztN56TJ%cq`#ZRhOr~}!}R`K7dc!?|il~(b{f2O$C6|ZR(ze~j)z^hxu536{gd;6MJ z@kHC(uV@t?RI#VdV5|5q+A3MwD*l#=J*r;WDn6y+WvE6bU90$^hbZ=Z zxxQ8WF%_?HZ~v=S@gpksy}Y(n{J4re+#6cOCsgbK{2yAyKUT39=wEFWpHs1?&abtK zA9y##9>9&Q;)hl2A^G)I@yAu{A$fJHcv8h4l1;9d1q4OlFf?hui>-iZ_30#UDoV%J zzt&K|$-~$4maGHKofEr{v05~kG4g4}2Xn#B3wO?S9axqReCTA3%EB_h0xh}$ufTxE zSVIM<;C1@5Aw4Ak-Egad<(Ms@0;ahiXv*QjrWPg`+$k|C7qpkQk@&&)ygq+L`?zpj z2M8N4G4^U$_{N`-aic#yO*L7{-cGa}W8mpP3y)tgTDrhA3oRO;SUABJHM>cvd37>4 ztCV#v%-&_v_Wh4hkqcJTI(Hxxt9wJi|9lsgh7f|gAK%_Xi^IYWS%tVl@$9*A_J#kI zO%`ZTs~)obs8p_0duqKbK4Xhw8mRP z-{ruO?{Yri-2W}WARDO?7etikT!aDd)r!BIM&`G7MuAM9ieb_a*tj9tOOD8nsXy3B6a}>9yVt% ztQ^VT3o{qfA3x08%*e(1m};;Di^cTdZpusX$$r+&Oh|~4(V0!S5%H>UWXj!0LcXSe zfY|EjD6hJyjkP6*J_VyVSf;w9R7G&aO7;74><1;IHk*glQq~K9HzpT1xMb<`G9luF{I>j#L61% z4vw9tav5EYY|RUtWAnjI)?jyV%j z3mU=e9GEe;khR&lg=}e>TgVQsxrGG!&MlPXG~0eqP;Ez{G?h;1=_oWfF(>C1&Q^5x zCXV5`Z{i`EQz&L8*aLg)Q;Wl^WRHyy*jmi&F)8JaEgj}(!VT=Ubbt_>2;+FQU*@NZYiyex!~j$h&YY}VdG zS)Zckx;8=z7*;H?AmR2qRv&wq=n`$k|B5=-vY3#=@*!t<2tha+SYpM$+0Y8W4SDVEEGZeZ z31jXmdcs<%h1C$3=YGRjxYF=@-bD7^VmiS>K^Q+F)J(IEptHAdLR0&J0$~DNS!`QG zdzR*&pA+a3xlnBhwV^a!9B!gj((???E937jP4ECw35m;H)+4^T5Yi2<=e;}40pH}% z6-H$Gr?@r_a+~JxufV}U1?DytG`2oYL=Y8BLqD?`>^&`e;ls2wUk&c?7TM?t+Mlq~ zs1r_ZRyuj()F-lr@fw338(I12CA72`FbEQ znIK#Casp)eH1LP1XM>Y$Iicn|A-x};tI zCv`o>GoszNRmzhY6~SKVDScuoPv9xF{#()|);0;lge%jSZgGaj+I1!0XS!1I*35O~ z$s&qCwTVW|xmKYvrEhbs2^giWT5}pCH@j)gw0BE@Cdr1ITtQb@zm10}hxJ*O+V=qr zNYjnyz@uO|k16b6ATrUx@Ea;WE2%_rlSCISZm%9FDbn&PUx|EEy+kMPGa&(GutJj{ea6&61Cz^_H$xptuF3Nr}Z&pW3?>P$h|D- zw;0m|Hd`AFs4~mKO=tooSX;JMn;zfeSveh zKvb~efmOO;t2k60vEOLL3j7WW;6a=`IR;YM7RH_M!&pl%abCsar2Kip$@Jm7{b_wx3e8 z0ffCKf+vo`WcVg{hL*?Y8^4p~6W%yYbt5|Tjq=m5B8578?Udg%m9AqDbr>>W2l)iN z;kHmnRs19Np$Pf1J^sf_AiP2a>Uc;#Dt!b{z9UyY2tN!qRru zcC_#Qc8+#gU)q%e+J(Cu?R;Tq=NZGFLwg#)pPeXmHb}fZ{?1Bcc5_D2<;(+*lEZo} zrmM5P0>-riD7df#&(gUy-W$L`jM;i4D#B#t_(KIP74sWv!A&6wLdD-q_;aGcaRv;Y zOk@RD$%DzuK)(Ur!E#vVehtzMRZL|p<;SNRFbA~_M%yU<#0u&x#b1Ye-Jv;L*14sI zL3z81>Xn$I)Xp6G*vA%PVk@pAVAw*2B_o1Xy~z3_U|+ltH*yY|EyR*5Qt_A!%n{~{ zBRvNV-H)Wl3N>cr_V*^_5@@043+k%UBYaa+zyqdIAfNn^Vjt-n?GM|>K1CFN6gNccb!_R6D!X5DiyAx-|^~3NkG# zuI#30g)>fwM9(_W*kJ4?i?7e`PC;?oomVYQO+jJGQv8k@%$ncQc{up)#>n zOLc4h){VYGKT_KwFpMmP(v8A!pOaXT*n~m2E2a;$6SrO6|3V*R(&dQ!JVeeE{;%Z3 z#n8N*#_t?lFG^H6@8zVa2{WLFxD6bq`iAN_Z#O%{Oy$-_icCIu{$hT z&0bhJ<`i&8PKuapYd8tf_`Np3!Q4^&eOarD*hE{PrSYN3L^l>c=9MW4M)El#5<}0R zHxaKksE`MNa1@K3Ma{7-Pbm+rO{RAwmvHtq-|0Ue8gh0&hi)A536p|2Dl*xuv|3% zr`gE7Xu6#hWrbEUkMP5`R&i)7aQis4>4INX@Rv^ym?>!dOgG%wWO7#n6+E;=JG#O| zFoRt&^Qye1Z~6MXjzvAdz4p;-@bMD2M^;mfYZC{8qHsgTAd`U?92DRl#W!pVN zH^~C>$X@Co^!fh~;U_s@iaiu4dw$#tk~F^Et8Egt`gLFYXBOJasggV&4f!dz56fwg zDb8$@$Tn^WBtHZ|X1lu=zv+hU^#W5X*%Y$X<;pYU=?BQG=RXFvJ4I)&t%lu{!_FB8 zi8jy|sLJy+o+qp6p9T;!^hHC*ci!a^!^ZM;6vus}c=mPklCG zb#gINm@xeZtqs)UkCdB4MKbH7W~BBf7DK+ll^ISq;!ryKU1Bd35=n*$g-D*$@3MZ= zPk#TCek;HZkEnj%Kh5uwe#@vXrEhybZRs~HrM-;XpXP-|IVDOg{g`esUDGkW#6G<; zi3+rBL{l!ztRCJfxVOqFac$|C`=FTa{{~ZcHZAxMB8F|^Ph1ZMT_wiw=D}GPpC|k4 z(1+lcDfYqpoP=zs4C<^_EqGK}_7)5U|5KlqGLi+G3WQ;##LWkFTOS!=PdsNdJR@f? z)FWjWd~T!Xak~}gdg6**$xg~&q-ikz$9g1AkJbk)+1i=ja0>ZpEDw`aqEs>W>gDBW z`5yR$y8)wq8S0nWM`FB#Ou-5pMWiP|1NUsS0lB#IQJk>3;JMclu9(=xKVB%m5aTB8 z2}t&Nzzz*1m9u;5uqTD9y20xTyEeCf`g~@@c(H#-XQ% za!-)h!{i&4N*nd~Q3L6C=pT^^jGfdDfRg~Am>5R|MK1|}r2>GhrfvK~IAQvYt^i02 z$y)UQ#A-!lkjVis5dT*IS|1#TtT(~N1iWc^B{0^MwG<4!M>A&qw_}s=VJ#U-hCb}d z^#o3;b-+X{WBTV^VWPu?P315V00nv4VOkx(0~kfEj3!ElLcs~c6>CBVuj~fsdt2Zb zplaR#bz=zVOII<2YsZ`NtwipY#!jnbKXI${#cw&bjUo)|cMal(IrT8`3_ zSq_VI1%wQ=CKzcmq_3JZ9vwlE^+T+oeAGzM#x z(oJxTJW{l3on%r6uS{ncrJS=HJJHz4!qoQg3d2w7tu{Z!eVUYp?bjF&gxC1X+6GQF z_d1p}^CLZCyv20GPpHIMHgCR;uXI$_-L`9zA1vnc7b8SH6%T3`h8ZDQf%=T<-b^V3 zjgPPcEUQB8ZiYx^=*UPCRtlWLj1&s(5*ZeTRql`v6HD{8VvS5*(nam>=pzu?dPl;- zY8+CFNJ1H5q96U|h6x)t@{ddL#-G*-9Ui*R zC>K84S|3oji_Xk_mv$P%!R{;e73nMd->BhXS&u>hsqeHGKd{YgS)(ag>BD$T!nw-< z#Bi04y4x}UVY15*)cW2zt%tI#99wXyIqg|$wuNT@W21g-R>NF3&@h*E%|feZ4nA8N z)h9W4q-Ar^@xdS%ET+o^6uv0i(mWX5(Zu!&;d+Mg0K$dC!n}<#v_d*4QrZz}>H5b` zzN`<_bS`lH+s$Ua-DG2R6v?lC)Jm$fwj?VRDoBN2=Xayw`QOX9;t3C1HcA~1j zPy-l{FQSMqB2WOkzU57QT9hHqbJPT+yGRw53`G*4ES>2Ql8a@jVQH$zU}E3lA2Azy zJyo(k%iw@aeP)?foQqAe_+eEb(zL~e*|?EWo@bYhNd56yC7HKclDG+_QxG^}kwR)e z1@~|>WHTI~ATdhzA)%995P#~*G;APmj(q8!4|^b~!vKOBT;kmpCrWX;dU4ITc2Mz6*3!i!>+n6;&E_T8GtMxhX5`8=0yryH5OF&X|TLR%#9nN3dfKEXIF`PlJwZ zZHj@pxi0I`%`dV?Q#~)NN2mW2Y_vNZj=!WVLl^DFm|PChUzhGj0=Z1v#_wvVJFGnh z>4c4T@r0G&jtjKzD5`_GKrX#_Oj9;|vhD`^l&9ze!w9yq*cgjJTM*g-n2W{>OhDaN z1Xp?1*crV@OpZH#oHuXW2_oym@h6q9<)U~Tm7?gOi`j(#}i;*Gu+4jR-bNd z2i1Ry?cNS5rf`_PbH?{lAJwyu7-^;Ptb=juBd}1CBF<2BaFlKqW_MG=^c>_UB*r85 zNg<~=_bZ4u7o`sQ?SIi-xO&T>?b<;x=Q-1-lsE_P4Ktf^I{C0pE@A?j=W5)g`y#33 zbTuk!3dxYAGuJ)x48#n9-pzU=-aQXkj=%&BihWzRGZ=hb);tqOYyQ+XHM4zrnwQ8M zCFV3wtZ?2HYaXAGHUE83{Bkv4x@hy32(P{OI76)YzkS)7ZxggRy|?D&>j=}IilzE; zmTGg5&t|ENa@ogB<~5zO@EgYjor3RVsjb4uMYL-LT(Q+w5VVkFK+7GIK*A zc}#EGG#G0oCn$_RNTjJOfw{Hix^x~|h>_d(D6<4IEyR33Xg49`0O%}`29t|i6OJ-# z*8s1WNqjjGT2qpUuLq0l69Zwt?df%E$f)FHTY{%Tsb(!G#a|dm723oM=v1gVuI^?u zMRg9GQPxN0$l1jTg4~qct|N|;OVU8waUE#X_$pi<5Shge2B2IYyvIB{c4qFB9L$WE ztc!Eq5*(6i)O@cxa%05O*Y48tJadwstOctdXOL!@H1S5Cd5l|@2+j$39Jd+pHrqa# z13&G7H~%AT;U>kB7owIzq#>(Y zga@hFNBB^Svkf580bqEpgsv!^@=&Sxh<`kl!*i(Z>ERsSL-})}fx5#>n1I0xnKau5 zf=^q^Ec$thO|}C$(FWuJ55+_aNTOQ|bpmpqe>|Q80oM@I)fH{HeGCkZ>$s`&O7{9n zn4jSlfl18gnm^u?LkWk-^ !I>6V(dMqvxYq8Tt-V|GK57TE*NX#1?m0%h}0;xK) zR!7=8K4KpZMmu>8`oQAM96fYe`OI*5uVeoEcq_sD#j6t})VsF8`7Bx|F-$m6JsW`? zKzp6Nho)vRT;JJZpy@9}N~pcZf%oR@*(BSWo zp@mv-l+y{vinps4SI=!~PrNwY*2)_lEVpLQz&lf$u1#c^S9HN~Rndv{H@KR%3EE61 z+5pM6^GhPK=d#^A!(Q*c-r9@e6sp56sFn{`((0D2IWB;Av_=TWh>WwSG|^5axvTVP zcM3t-UO7mOx?}C%F^RYDz6W2W(8(5|` zCBdXSjQ5dbL6Q!pSzd8L3^)?EFosYStJ~QtTxj@nbWd=f z9W|r-G2KgCG%m@{>HguTkeHzho)7QRc6zBgHiaZ43MT#BgEf6{9{~{bIeQ0}@Z5KH zGaRr0u38xMtQ`${+_-fUVM!tV<@nniaI`)^Z)x&w(O<@9qf$xuP~FI=Iqy-y4IfTf zZ`Q*FTY}H4jHLRK%JxxHd>qNC1$v%e%CBrA!ro7Ca+vL@RYxRYZLfhd!^f;~I+HXh zK1rIYCe|Wjem)l6l>!>v99x>0G z1l5uPdsVtXEz^Lo5~WXR8QRnJtnLY&Q~5dF=X6D;JYCfubS<^hmCWG~A(eDQQe_!0Vf(-wx#RT?lsTc~V{yyj*BqsPrm+&|z_ zzie|EJ`O|0=`C;c)*N=X7$ZV*2_Q#0wWK9$2z; z+42=DSFOI{%Bzw_^H;ED;Q{&Loi!KW=A}#YfqBeoE+?LK33no8v|U31VU0@s$pybH zH$~o0>~4TNrQ+aA#1RExD|KU6*4MZ;R{NU4m1^F3KC2m4R?P%#bgQznu3tgk(p`L- za@rI=z=g#2G`rS+YBYUTiPXLWq{KhEm-&*xPc6Ob;I z9ei<>Ddci4WG7x+WjYFeZely+xsWn;gX1?^MwBD#|1%&qLui>pjIcIH+#^WrK~ zu9vx$jb515&3Os6hR3;e9hqI%*?FOCao5T&%&u&H+@d5Yb0ItY%UQi-puM~{P==Ga zb)BAF*Sy3;=}G3+wez`IaQ*$fFs9(yw#vNbKQz0t|94)M5u(f7pKntlZ@heQ!YhX! zsH`Q_X6(++EsE+coNuHrJO9IGvtPrQA_9)cdoCLl*dp_hfcGO}(2y`(rZ&1| zigC!UNhMuwXY%sPPJ=-$rHASy1`nCFQp@o|dIbv(#5-#4huudckWK*6A+bDOuDOC{ zgi5(^)GahITf$ig3|e?Tqbp){nydMi@i^66do&2IJX9xaSCbBN%uF)tG4~7*sOHIP zdc}=4)lt5M#2lbJuW)F4{65>)Kyn4m6xm+FhkTxcp{YKxVFnAQzY+s}ie>LwVwVB zcv*_^UZLq2{+MF?2f76!{5-|j(PmQnIE+dMtN8e+@DOP?MFE}uAViJmicd=!%5_zG za_!4L<*%F-WfbD?aiuqjerX;2GX*a)^+C)X^yxGiW+Y?S^t@e%d|5 zn@25vN9MfCR+Q0)XdpZ$yfB-ZFb|ZdK=93S%jfnq@>p*zy3jcO%1E;6c(v{4P8 zhO){4(jD5l;6fTS%|WxzIaECs0A3>+?XO7c#gk8)#jAzO5Iy?>fYw5 zOD3Yit$YF^`Bt^y7i4S9KRkz%vz#7O`f*{vh-~h>c&bHHy17k#eM9_MjhFBWrx)~L zG5x$gq;GHy@0&DUuQzXYZ=UDP(dX^W!yRv$H#Xhr9zB{piWF;W?GhN9j<}~^YCVP7 z?6EQIak?}O17PG9j8$d|I*a0TWGg69dL;|z5=E{@LA)eM5#^qj-bXB(06kslka~ow zL+Y!Jn>ZL68FNzayapByFNsI;XLN;E$X_B}87=0_f_@RcAlUl|>@&{IWt_LYjGt_i z@tJlR=kvKTeo9$V+GSkTA62*{O(D=ck1~lCNRH@7Wf!skM&~U>a+(npU)di2V!(m~ z*9S}GigrlKrJRbBHgN`t>O+S(H#w%Z_G+Rr4FPYahC>9TsnH``)#O30b@L;X97=ry35=PpRd{S2|gk#l|%;Ma`>DoEz06Ydmv$-D^ zi#6>>QIw=X$|!2z`OW?E+GbvSZTrw(aN8BG&`2E~;C^Jp75o4zGa((Z1QUm49zYh% zgdXiEmX6rnV|hKSe0LAr%U~kK0cCxXi7fp_!EF=vip4(_`_afb^%9mjtLsPLQH%uL zdgPquUWc>K=!z1X<|;r==pBZl<93XubaH%H*f@i{eraV&&UNb7fN9t?QI-n$FTIZM zb^p|rr~@2W1+c@o;R0WUf<%Ll<)4vl;8!BZLg4knNS~~(j}2s-C}vp4EfQH*Oj%CU zN?rUdB~OuOwG@AYrC9w_;O?kmUKOyabgh<7BU|OL1t{CF?pf9{G>p>U+w>vP()>Nb z-o$3AExbjAPV<)qr}*zIvC+}6QFHG!+Va|{d2cW`)e%+vh_Zfx;lqOU#0M3wA~@tOIijL76kOnjTShS0Sof5j*F!Lo zp5z;sMXH!l6F0GCnwsXFA$X1rMMYD?485${@}X}<3~OKj_NV*Bt~#8}S^~f7bFy$# zw3q7KLL?|J7?u^HXxIh)9mv0@SrYaKaeFgdalHo(3@WuAnPH}sF4K}gN%)X~e0Ype zxk`XH9r<8Q+KtxjGt&+tX)9jQ0?gw5pY9{3_ote9Sn-7RHi+tn>z zP512iu=NG&M|walS>i426cGwQBwWoIhLJUIva3gim6TOO!NA@Wj5)XQofU}q|GtVZ zS>5FC(cH67Yipyah|GWJSSj3Rn()88&tO-Jc7yOd^9K9UGp2Y!q#QJJArN(R#10jW z@WDo9Q3+U!FtV{&(xT;*C<9yY7hWRMhDhc`;#*6_#GYLH5E;m!N03YX*cUcAD}_e1 zb&b)(iU|3~YSvyaPpkCTZ!}>Nex&V#829xc{Yyd~5bx@@Hdzh~LpjZq=@xr@`5DAV zh>#`JntU(!OATu*;dhcArvlrR&^fXgb;qi59NE*At7YSCoiIq4j?5*BZ(!w zv0%)U!_0}vglV+k0j7Hm)l}BbJ+?usokWINNW|!BxYlM&k8ACT!g>m98Ei1RlT}6J zIzz@5hYXNtyf5)Rs0~YinkgjM+9TMjA=c)2V=RxwKuE1*x7&t^iD4WgB_xsV&_aBu z#cY>qN%A=u-HJG&!5l-rv00BlPl_~%R)@dG#rKS8Ca>_&K5+*s%<_`5cf__l6>V|b zBqDxzfzz7NR#p85_QaeFL?P{sIYQDqv7DL;<1-7D1(uh#nO?-?;}JsDRz+4-OA+5f zg+C8af)zAiHSDPcZWqW8DJzvIE5iU`+EhbfdadjqLEw~vg8=`NB~^uOod!lHVxVa{ zBA%6`90N*?K&CC9q(B-nJ^vwT22-kjh?7<&6NZ`^316#J7}7l>vE3F@EKPb{d@U1_ zD!4>T3VTpi=P%$IGfbpSVFIAsuakj(BHZrhwfcqs$^EM87ak<{tFB-8j@+-Be&IE8 zzxwpc1_qE#h&R84Y|U(SS~&>_=}bIjBhXeSs@E&ok}ZQe=5WZFj4~~uWE_c5#b}~i zaxh47$ky}P@vtanuEL~{v+VBK+fU*Cz;ddekFf#e* zj<=*EyASVpEyqojwJw_pg6RQa7nDY?Ulsohrv+jG9<5sh3TRgbn`l1lyQP?WF&7zb z*o0w?UmKpJK`k&-G##ne*M@%+{eSGedz4*Qedl?fRk!Y=>XfP^mrJs__aaCMtl(rE z>^9Cs$IF(@G&D{RYZiZa_43T(4=>BZij9ZmHH#UFpnw8OD1rhC5xpvjfXcLzXeMgV zBx0xp1w=*(GAN)BO{fH=qfV5L0H>pLJI#E)zu(^HoO|m^D*OPFjsip&EV~oIj z9z(<>@CP!gHbm-Ul$@kyRPUezWWN&2nv$3O~y)8-S8i)e^(u==d( z+Xp}Z0I+|u(F2V#wJ`#M&RT{mu~%IfN9&msS_*Ors~@qEs}(I-D_HEUNFy@cMTbm$ zHI)u5X{Sm_Fbp@VBOmHb-W9}TdP+oP3s!<9Ca9(*5zOmYV3?Ukgcs-|vz`nFDTZBS zclBYr$p>3XFufR?Nsnh|moQ1vf0nN3hEnqBMJZf;D>Wf+A&;7wKS(vJ1f*3XIa^m| z^svO_1SiyiM1Vs|4pjPq zqlHRdO(GAS=o58Z!-Yrca|=S@Xg!4i1-++^lONRX!;gw|B;@BtGTAq zZ;jV=7hmOqS~`W!jfF5OxuXmCimcP6gnvrt4lMGR6wJtirbTOQmc?Q!>2Q6Xx3xOl z7W6i{t)zBHq9*wH#!yX#l&}wK%j+R&Sc`?v24UlxZ8a%3Q$$>6A%==X& z!JPn~cPNR#4IMdN13M1N+qGTDigog7#*XdCi!35tMrq@AT*Ojbq~&han)KQXXbJ?D zXqX0mRW%iGbE*l0wB>b!UT}7peyX))FUkrXjb(vrP5pK-07m73LseU{I`na~(Liy= z-`G7_xdL=<1tE&_go+c*bb)ki1MU zD|7_y4Fg|{$gzlFMxbwv^!a4$OwEC}Axao3AB=>c62j+52ZTiEqtn5|0@|a`mI|=; zG7P-YiQplt3(9chg@;Z9Z*UYnxUMAV+n@jyyf`U>3oA(sm2-t!L=+MnNrferK4&t_ zqRgNq(fR5A0hB;#qP{@zVB1TBDLE1aD#mD&z5=b?qei?LWR4eDqQK)fVx?dF32gVN zZ5s7~$obm!8T}kvpb9XeTWY$9ZpL0@`($*x18k25kJw%iwr?52HU)Hu5obTPy1qKk zqwylUZFgjML3UQ!iQmjLKI8Un{_|Xm;vV`BLQKpI;CU*1%4!rT`_eOHAVX=V5-Ij7 z@<$TtXi-SuEm{~K779&KgdN6#i zQ+SV;#g)%yq9F)=VCdg>SUo#xl_^A|YVndG>2Ya+H z6OrvgkJ#CrgQ9DowKNl*|es$3w4k-0#ly?pw~hE00!xJmlYTW z>*e&j)yfV39%>-3S^qe3ojN%za@h+CvSHX&WIxD`&_YUIrB3eO>mJ8pTf*xf6_B`E z{bM>f6`Z`!l}32Z)rojOLJ(5p*#kHO!64DD6jSes-N&QpM4uE zA5{?*9#rU!M@`MscL76{qACSRblYXw@7liKyFB;z0HL|JD;R;_DN;ol@|S#0pnNx} z$Vm`*_9Q^XykJ|ICA%Y2$<|?sZ^5~hdv32T8~N?1y#Ds;BG`q%E52gg6)YEpX8Bxv zMUy!QHQNUj93~iGMBGQP=#$w!>`3h0B75?c9enHdsuRr)K1S+ED|6V;JZ8^Y5X$?T z{HRzkb0Wl`$%*h=GrM9%h;A!BsirSuB^?G2I@fwq$8=6?;i!%nD9bLjaY-;}9iO&7 z0ly-hA`%KH_@5*Jm_e+=1BKN$USJFeYN*F`kS7%(6BOx^0U4T+@+-oftr}$qf$Jh{ z1a_~`b+F59G}R)zhU*gqx?x$rdot+2FTqeE}2Q0y#GZ+nOM4T@cH`S^YVGb z^H7E>24Yq^C6KGt8SpY9f>rL&tp|*js1VH(4kfMq9W7i7K3WIDs*v>FIWcsNohz%f z9OkcDp6>FrJAwlv5#y32xn${kV_V~1M0&TPpz}FV3J*b)9O2(O{5wrbfomsHukH!q z84;GUTOxfHe9{c1vlI^qBfIwKjxc!)-&6>}BG;`>;C~!?@w3(h$^TV3haGrhoX=0& zs+gkS^Lz+|bxlHe=OixBDCf%g+kO^hTf;x_W^yiJ3DK!?sZ=TXf7_STUJH`wi`!MBbO z#)56{VHX0_)2@DFEBhBUaL@(_!j^cfg}g|YSC)|g_7 zCIGPBZ1p1*F~C6PHLK16dETFK!K+Y=Y9Vxs_15*2guFIv1%!QY$gOTmKW`2KKTXs(Yf70u`$n_7MK_wdG2>@gOt$GlQ+b!r9(1Q>jR#fvfyNMuCY<5~j7#4{ zo?I0esyzz;&4J;&Y*w~ZGh6KR)HN6i| z@y=s6m|no7U53+55y&wO7~PHZfLN@1*#1g#IH?8Je;^+&dt!&-et8;eU;y`uYFQ(a zoY26)j{>8-v2q5vj-_%Ko())H)0dwOVpF3ILfs^%Mjb$7!ZWUN%QszqIvJ=BL4-7B!-wIFOKa$ra62l>v8e2Ghso$O8$X z9~+NU>4i<@afQK1$*=-RWmn3WMYtH_dw6L4wOa}DnL8k3jeAwyBZ^m)dbAIx#!Zzh zJ1g;$e632|0eL6}q18}`4Tx9YOuGm~E?xH1Zn$67{rft#*ftMJ0x;PDNtrkM(b;>o z6b7L-{n;+_ud6@XlV4+ZHGbJyT9DbgpdG?E?$DhbyXgybKiCXQTI?)s(?i>A71Euh zn{;uL9!B)id|Q9;B6Y@}#J+*P-C3H|le721AY5S2@<*?U$P|~fcX`9YgzecPqdFR ztC*j!eTp^ds)QTxB<-+(EvGt^eX?Ig{5HN@INtrZEM>{Tis+yW9SC1lU1G0@1gb)l zJuq1*mDP_PoltQgw=pnkzSvvcv8lF<2t-}uY6dm?+PE{F5L{Q76eYK_L=1~RzNOTTYn$ID(0i?KwS;P9IJI4yc?AKu-0 zY1@YqyZ5sE$=#iov|l#R%#PxZ+uJ(^eze$%5A41U7x_0{++G-X^81R-^xNMz@Z(F1 zKla)$9r*Dj#UH!vm)MUH3)}VM0|5(M6an%go600}#j)_>Vna8#Ura;U;~$;v++;J8 z^2d9{$G5e6JRXO4U#F`d@5!F9Pu#E7xwo=$g#YFrW!=#n_493s>G%nD`)+GyPkueu z*5n+kU#;qI^3mygJCv=D{?rZaZR?-5^3G8m+v3}SM=Jg3bZ4_~0baN>+qO-y3wLJP znjn*p+vci9fZBy)Vs~eg*32(FX`Xg`(k|kY(``*{iKD)+Lzq4XQDXZb=O1KpTmGb7 zL_V6*D(r<1%0`Yo|GiC}$+o7JWOqPtN6V5ITAMC@x82r+kNi_uxOt~qZB;7fKicXC zk?gsM-QC@3+S=y%lV*9vC%MR7Rxj7m<)Tx2~*o-~wrEHCiqDQK zEuHmM0vFj@xUPrQ${jVkJ2mB|v)@fx=L4@wTIbC}G!;qh!sGa5`QsAg{$sqEF~+?e zS?fDX4@w3-NNV5o9$Jew&FV)>-G=}jzwdDsC8Fu>koLPnnO22ydS-BJMr0#Wcs z33cm?UtKzfP7iTI{J`LbZ-Iw(xbNWh57dve05>?Q? zAoNl7>~*cRiL+EsS&7!RBeW@{TrWJ5tZeC*>5XkBqwdHal`USD=gWEWe|1$XGs`Z3 z91^@i99>E*QO($xwdCKCuT5784S|g0H*Vy@d>#Ucz(WO5Cm0)woSxZ4>g@Lw-J_e! zN(|awczuCx)faqGg1}m(c7Qp-dhnQM7goz2S0WV>7Kyao%8u%(Ba~%~C4Wrysa{|; zUW33sJ9crS%6kYYyy=yd{hAtnN}Fzm&K{?FLzRh(JgUTijZr(|G3ITmQDT(XP(7^@ zI{u3CpOy(8RiEfJ*q)XN0@}KfA8hA%D$dNi)f8T$YCw=^f-U#S&bS!7=5}k1%E~S) zHpe#`qi~2)gx76N&dv1ga!hT%xBQLZ4d#r{MTLt^^K)%7Az#fC>yf{5#YP*LDlG&$`c^} zLb*4N{jZM_Pa|exEygd|7r1{?_fy-u*6Roq1~`zdlkI8AL0V>!YYJnGP><^f zr4rt=58%de&8n{opB@Pht%QdThliGR&F_bFElLsQ4som{KW}cItsOHd-?iK$Wn1d$ zLC~yRF*Yp4U~lV=ZB?aMTElK^@Q7wi@H;CW>rkUkxXN9thr=Ub<~w7M%Y0ZzM!qcI zLvwhm+w~MQV1(m$>4%zGs;26NPI=3-UuF|H6|9Re1k;06)#w>{aCLxPn*)&u zQ8r@!iU)q09aX3@tizuim#Z51Lgi2uw&i%FF52y+<9IXam~djK-)M)_-_W7uYG1t$ zSBI*7+;pSbYj@~iRTQfcNP4P63gLs%{Z%&d=EmMCyvlL0+M_;;a>FWf2F&wi>kpBl z;yed|iAeSU;G}S`Z!(I9S;#~FBWK;@scld?9ll_E!F}ElEpapXS=5G}!Xeb;eLHUm zz}pZLP~;xDxn+}xm9+IbImk|^w2OYw24nUv}a^nJ7 zW6+aPuhIxeAytiCAfVEv!8INE_8VkY@VoqR7GGY2!MhFhK@>)>VHDCa1c4(p(tIGa zNeB(23GrPZG@3jnIDsaq5y9&SN9j5Kf~MqiHt+)|^{#B}dU^n2qC#!LWW9)F5+Y%C zY`x0_-wic(sH#Oz1{xbc=P*GI(!+W($kDHwC=9FQ3)+p{m{f>EUTy1+8K#qs4)$ol7JV{QmUEra#OA&g!ar#5t_@Q*K7PYpeRdDHt;D&fh!+U$faO{$}owQ%br7zQTjG3O{0mQ`0mRC^?g-M^q98AW!VAh>CZ zlV)!=VkS>Q9v-8tc-+g1D`u`ispt~4%w-!M1sa!6fCHe6ww{t7 zWSqjRF<<_kF(IbUbr_A)U!sBnU}M!?3MhL=0fvR1tBdNAsRxIPI62rf$;;Q&!Eanb>43iOODMsWLZVR?@{2R?>rqO+DJv)LZ98Tqmu~h6JwRQPr#Q@^ z%W+V4RG1nS5$+gxnt-DEdzn?cM&Lr>eRDE1V)L1XrP@%t)^FTC1EWMOHCuTzq* zRs3-pxgVPsWI*blZ5s^@e)`Z2o*Lvm&S?M!p#cNwAX!XEk9iotsYotNM}P0$d;ViQ^kLS4KbP!QSjid|=XWbFr|IOAL<0@^8iX3qLtm$kYPGPn z7%ZKh`DOU-EE_la)?%T%;@@vpuQOO=N-0Wl#Rt)h9zLZXG5heU`}omlWD@4%hn z{I0$nRl0k*+*4g6NXLg@OHG0THF>&3A~Z`%76GoEO#s8v`%AX1wYu(h`oyF7uw1NY z)!w$uW;8adsN#z;JnAC)xT%NA8j1~vaD;|GSt%=ReDPBNae?hH0k7%58u1t}fe3kV z8MJcRO{J%ozAQX!+fk|A&UAClpkb=uD=V+z1Xt}r4*O^dXNk!wR5QMj8@ML>)pL$} zZ7@>%udF;|ZxizOS&TeD9L2V&)B4MTDyT?)eZ~+NiH;x*^TaJ#eGCXU*!Y6cqnMaF zO{59WL57k|{skwbf(ADN4z}Qp-sL_ zKgPSwZU?+{o3En}>7ldW;D^$)9FjkoR;M(G4hDZYBZGYgIV6(RtTK}h2(e954Fz4- z33=+38}M}L(Kw|J3~OJxUl(vV1?+Xoi=YT%idJ*;TKs2%!Zl6uQ^)E!Tt`+*uPPA@ zCaa0(jOQx%h4N~&IAd<&H`XPv6%aO9hN1ANK0^yU>L!s9F7dURMSa*M@u(&A4J~x8 zu?Krc*bn8`Ad(GT1C;=1QHdtp<{~|SUi=p?~N7U&DO3CQQC~;9QGfR@c&`*C7 z3K9rJI5xR+e@`bXsyE?yL{oK#3BC;bUy{5zPY_nnp+r`&()2^h$Gg+c3qFWx5o49F z0v;f9@ZG3REy2;~&Ln>k=nF;2XI&;uB9n+Gw3DMZ;>y3jC-pI9^RvY5uP@ASeGT$x zO8zn5cL6c3BYVwEh^Cn*kFBl^* zT$8-fJkO>M4-;wU@Q{P$jlD^TrQV&yrl)0s@B${S$ych&pH<6E$eT8}L0k}oNbA&t zjO9+x1V>A80egg$fd#YaAtQa*4`5L-PQ(SzbRU7OTF&eDK?o1h2^Rxzw{2)yTs+98 z2}gm+ru2kl(l1it!CWE@%Cd<=TcYX7*Xz$4($jhz)N(=2f-dpN^SbvDYoe=r+mo+s zF$@{gPgN0HQebNf^A6 z9KnQ*bba7UgLFMi|2&yVNucHIFS-sA5?bdGmyr5QfxcZ}^3q!~21Ha#uxYLyd(i{r zxE`vFVObpxf=&Yj0CMDhNprUR>OkYSXX&7A`XgbwW-U@?hqwmLPHstWup5tNW!%xT;?fB@*CLJ0Kl89|lQ-IX%7waq6a z0<-b?gxKya;(b*j+JX_`@UHoMWHDHd=jCx37G@sn9sF|ETlju&1(5nj)? z6j;m_orj%l*lPY**3MD2V+ksoMp+v@YC&EJSfVXqMxoEZg9og;E7l4VWAwnXeaJg} zI6Sai9-7@Uup%@R44UBq`^xab`shQY@U?aT1Mm+Y3hf@WB2oIVqq;gcUk1>JR;z_p zF(fplP!*C@CBzZrm2^oBr{@nNw<}?90j3t3k9&ac=;2y7e_VVV`>{_y0nq*7ISR<& zqJSABNe1z~p~H(A-kAS@y*84_mIHMtZgd6l8s~_;)uFAah2C=%Yxbi>AJrGl7Od@( z;J1mDqdyS|Pzdw6fj&v;(VUDQ4xcGIhZ5h-rlCPq`1B+DZcNJLQJZ}#7pt6pr3l%F z)WtXU4P}uCHa-Pa$|l18L5Id029ZfTfhX3Q`pg54#MgsE$Dc&ZHECrX1%gjuUOxNq zq(Xh+{`ebnE5hau)Zj#X-4g}NE<=fk&h+tU$ir zC}_^0cM{ZeMt>mUT!gWZw{T02@&#HEWnBg31o}tKXdFO!mxc#1-W8y>UjyTlfl)_J zIwouu5x&ibItRkD35XUKacs}}&qh zT@wb!Sp48x8zyXE!k`QS)?Nw*Z#O&*U>~_Dtv~U471|zVp6p$ugiX+>GUuXtYyK<+cY00FN_;_Ol%1LTtqPpi10ZU?ECy!tiK-r&s$!Y< zHUWi7HQ?K^?tg)JB99XAVju4;l_qPd9hPJz&`8w;wmgzcSF`;w7D!d>K@+rw_rRUi zBinj4K13*m7ON@XAnc_5zm%rxsP_ulne&et*44hs9y8%NU96ZqR~qC=9_6tg<3Qs4 zQ4S=09_9d89^!zRyQs7P8eUl|C2X_~(0CkR*J89)xv9y;N%~`7M!yniRO{t*LBTu< zb++2rDW2le##v6c@9C4?u}LJJnFR#dwd4{Wd3G%^mSybt41Bnxo*~Jtd&x&g`QA&C zq-yc5dh$(v-C4psW3d(by|aW(H*IBDY30?OYK+zG``Tw>tPVk7==Q-Bh6041WFX0( zBlyjh5)jLRyaGc8>$2|w4AoR#@7YEKSvC0f5|})Cn{8{$$*n!RzRRliRPqC0MZoJY zO?UVVe`mGPF~Q=h%JWAPg%MEL`@1{q8y!DDfyNjqHuaps!#&9-ZUTxFh?Tpu+U0om z9X&~IBSAVPB`;FC6;eVnIw^@>=DXHmXvhXzvB3iNs@EIEuxAEJ3x@GY95_rgMts7c zbh6wp?@`_4I9x#Fl=W>tu~|Q#EQ=xuE-^&{x@F6XF@c3 zqxQ0%CK)yQX@utbr&X3WvTgRJS^u;Zh&D8}FP#?IYIaoLHjv+{=%`JPAa zcqI8{3x%ubL0VRErCPE=O&C`yTL6&40}(>>r(9*Y3(#a1zLg4*7GM% zMX*gI|A&c1=zd4_e!lSDqzC#WM;;Ou@4)h@>_SfO!nj3Dv*w?+2vMgM9%>`c6i(0z zV~K*sloauTd_I1y^_v7p5i{)1J^m=CjaP5&bK@=D#;Y|Pm3Q1~Pw*h?qjsCG-kN;K zqHVYJ+ZyPt6h?I*RZj09kjJM;2&jbC)fsQzz=@w2!Zk)0)hg5BE4zaNLW9f}= z>5o&!!YJ&6#Lf0R_J}$W?$%OCHOhTZG2J;$ue1RF4SoiEnMSF5C=Ao>pmvX`ZY>ur z+HdTULPwzK19usj-{lu~5Uwvj1`O|z!6~5mr>og{Jv5 zK}44s2w%R0CbEhRTR~S63t_yTx4Hrbv^vaNbL)6(lk*m}CZd7$yfsneEiEXV@m9ll ziyLq0PGr2bU{CZ}Pz_?7_~$uq8H?SjRnH=C!EFWJf~mw?P3JA*gyOB0tMOLn>bx}x zZ#B?$<2i59Q^o5w#j-#0&A?j|Bvb}@ix;Mn3&vX(Of}wGh`co=-r_1Ol(_-kBFhzc ziHv%D>_F*fOGSV}dDT6vtzRwB@lv8~7s?~q@skr3lja|BBL`c@Xy(3-7qzGqbHp-tr? zr<7%|rj-Y`tS1v8!U$xdAUk3Yu{IccT=*RFupF`&IXsU8n|x7gn43OpNUO?m;V>4h zG;m3gJFu@m0bYfX@Ok`>t}GuB9d;Q=c}H6lE6Cw}ixg6alvDVMkWqk}A%p7-Bcaef z>lNc+^duT%i%n~htaNPA#+hTn$6096##z852J{|Sn33(F`^wt%pdxVft@3>gOg4WN z$)>X^@OlVzwt>AMqjP=#KH;K`%WqIpyijo)MsH*9)?O{VMHk9OEEg$*0C*_4P&Q(f z)`Z^$!P@J>_d%}C>RoamH75JgiS8r2AM1=Kr!fxnFC_aNMZ!(>E&WcqR;EB=oE}kR z&p;5hKI#^)v$PKLe@bFRNEFz1l3!~}v6gfl;Ouzg#(3ezo3-?l=#ljQ;163{{dO24 zy1XSMw*yk`njyEt5Ov*cYp_*H*1M%WY5gs|P6cC=4%JB+JLw3_O1vVOwVakD0n9|= zzX_``GH}=FO+a_fX2wXANF*8-rR?ISrifI<2tbgk5v}DQD|ne53pDARIF7kV^L)$nWtr45)&T?@zbtMnep%dD{Ia;Q_+{DM zv>8a%S<*BstS*0RTvmb!ojW)X6S#$gr@j`tEtY%7I&2XUO_x3xGGE}0*Y+5pss@IF zivPVk&TN;uQhxO(_#r@zDv}%%yZh5yHPPVN4kUnZygO}-V}uLo8g2zg!|g-?w}w|| zLYW>&0mo}ccx852<0#@u_1g!Z{>rpCS2U^mI0dtutRT06WMRhFHf=oDq z1v-!`EMrBxRn&a07}lrPW0+4dVo0637okTp$I8HIS(tq1meMe~+DPx5ar%>>>$!u+ z>TDo5moySKEptv2s>E ziIGZu334(MS2XKOHBk5}Yf4M(VULw6=o4n=S>WFS@6L_L4ttdu>8e0Rgv=q$R56~M z?TObans%vu3nb5CU$7(e#53b**hoQDww#B;Oo9m)6mP|7TGR3PVdaj`>(m?r*0SMT zntK{bo7cWvr^NcwAn~)B%&Hy585D*qB2d zRUjb(z-KK;Ju`gdo`N|vJUIS?QW6e;eS$f$KZO`LGw3Iu9ZyNL)*?#iftWWrN;HDQ zC+49myhGGi*kGch{#3bAxjIdR`vM`*K`Nx!EkDNL!tZNi396VQXdZURJj8*ZEW7>) zvkJr#n|px6HioEX3=(9|A|NbupTt22tmimat%4>S4Gx=_UL3Zj^^&h-7|eL%oNQw9 zmj>3_5dO#g*M2qmN$jxnv-pMvRA6p9j1abCde`lxPYKv~?8gMq(*V7aewroRvrol)uV&uV$JV{DXk zn5pzO6Bo5i8fE2!4I86w&-1rHGYbiulrZh$4 z3m7iAB<6!Q1xhZHZF6?nlP;y!XTJRq$WzZT1oEpM0{PW}5J+5a6w}y3An_V?Vj+-t zjYiSn2mmS$s}M*ylddtxIbQRoIo9!-md)|DYlT2M7>H+17z8yj! zTt0^oi1#oLfy8S@U?GrrEp3{QT_KP^dCnmalpg;o$$u#KCstV{t#82!|6(5gh}VNK zH7YB>oCPo}0MekfRnjh6i!I_O4}8SY47QaAKK%C(0tmiF2z;Q#p5-zI5apy)@e3 zryz&7lm|KD_28HDAcz0{9SL$Q;!lr`atICmY2iCWIAX73L?K>ZdlUhFL^zC{#$hKI zWrKkZXS#tvM|(KX;oZms9r1dwTX~?ve~;Z73UsueL!cwV_t4E|I4xT`F@PPP+Luyr%u zz=1s8gS^F1wTshf8q_1(`j{+l^z*qs2Khrg!?r~Tab@V(sPxyyC3vVAK?|r1!B(8w zTVoomCNiM(shFve!r*wM)}O@AQDy?UFG57KYbs(*HA4RSBr=bSuC`dPz)kYe-p}N05CmQ-KIvDjcVl#9 zj5r-zMzidhNiFLSfFvMpee&ry@-|Nrc4gjcg+LX*Fe0ulSFlWYP?MWz_>w-sOs<`! zLu?U4?ysJn1XgrCdH-fZv%b!fn5sbJ^mL8SaXeMC8iT4$39?a>!~rZePWEg1^&57U z-as7^e4lDBUp4sEExN}ILMSMKx+bWntg$g&Eo~LF#vX<-s5q-s$4n8C)wsp$l-^A= zfy(|{%{b%5+k)k(+5W7~Ll{F8@Hvr|tQgM!py?FQ?&GAB=c;PyQb(W>^Gv5j00@6far#oDo#N&Z;dopHh}M zZP=aVTGWGeuM16A3U^fET~ANsZz=b-pZEc;JU!o0J;?c!c3L^c>BB++G-@jd?FALm z+}t{>$!#20%GfC!mmwREC6eq^ED;L_WlobSFj*xcqPPnCrxAs*&C}?vgL;K~0>e3h z0Zu-nW7k&%ySsjS74YcJDxTt4vR88)h+<*1I5x(UxAUtJuyyfdnZPdBtD#@4iZB9d zXR{?YBGlFhIz@@4ihOpNF5GdbJ(IsBsGTO-5}|gE^8mG{Ieoa>Fh#^@5gn(&r78kW z=?FAV3eAki#w8x8CV$HeKh4vPomF`gQ+TW+FMMZ5!;d;Jqu1m=zK9dZ(kXV?Pe8CO zzNLZHWWWjMP~i?>ay#MW62i=ffI!H8BW}jFkS>E49l&}`_2WjZ!hy8|vA~0Bj?L6> z?tuLWSt`@UETXxK6?o;-u-q6ZSHohxnzsz89_;|84{AO zY0B8p=oI;{-_5Lfdv<{MOu-fTepakb1jP70(R${{HcOy7$Ae&{!Nl`p>v+E3ga||q z$b~*~Dd&6RE_lA3^E?i?bW82=^cD-E2cYE4EO?1)0oa7F*3$P#q&h4CsV(kea68FU zaar~BbS@4gi0Cf9M{;z|A*5V*@+(>h>0QpT08%4F3jjQ78qn5jXzQxgB5St8jp_)>gMbMnrfF)y9YnHnG z9rAq1FR`QnHHgaMQ*^|1Xse+$8k4rQX(8SLTf;))U;i}LA0uJl6L_p3r!77*2nSVU;?X2M3) zRVfnwvcy4Lwng=%P~;g;>QqH(SLBGZD!|h^f?pQR3MFg#XnwbdZWrx@oSrkTk3OggP9T%{%^ zx=osa>G`lVvVEYDZTb*I0>)V3E%_|Zp-ieyYbUB84N3uyD6u6aa~R=1JA%yW6aCgB zefDcOph5=>v33>2#ecRQr9iE=1ak~N3z?A-vXH)PH$FNk`_ewr*6Ipu@opCl%}XcH zHbddS?>74#w_vJO)|6MZB46Dv%tLa?UvI`7%nTVat&-3fh?2r$A?-CT8iA!GM?u$} zr7!alJ@Hl!hkrt%6EJA8)4hV-uak&6ZygaWJ5IR$Wu2eXn{aJ$Dj>-wiR$dU=Z{>gr6iDHSK*`; zw2Tpn)5khhlt8++2Ks-hr!ivd5tNr&gQ8AK?K(-VN*mMMY26Y{?UhAj#;@CZoC9&_ zD_BVBk&LG5+HI$r{3#1)*Hw-yG@7Ex&{)c8z9a!c(UeJkt8_K9b@)BO2xpOc-Q+!T zPH;MbTLxRg1ek&U1IQPZDFeO4I=E9G}&0_gC-+a?eH*M=} zOS;o9+BDPc_GUM4xnb_co94IDHJdI=s+$5ylmv%1*?y%b`;{QKE0Wtiz{!s_{Xxjx zps@uvig`HjfxX)E-=PUT%bJx;sMC6Tt^g3e|DyAv@T|;j9=hg7WgQ~9hQHf(nq$to zmSyMHjkI+$Z4p};ZcF&ZjM=3U|J z>ph#5-%h@6!HxSt44Asd5w?qtu&n$B8=uu0^J;Jis{?fkGg@~3dJk>V^79+~>a(UM#Sa|O&4Q>@h=V7F1?2D(MnhKqZQsSDx$9Q8uU;*!TgMO$mF;tn_Qw@Kq<46B70Sc%%JxslIIAX~U}aL) zKLG-ojuCuuXcDVf9pmN>js>Ow`I` zw986bzC;)_gF8y~XLT3r{A+eyH+J5N*7MGqGsD~2U?`nT{s_}l*##wT=hUVWqoHVB zMksh1V=QDMALU$C>ssZQ!%)>atbowv1)pz7z}Bucf0O&kl{tm7$-%0keIl98=qwJz_V(7LMT2kPamM7YqpWzQ@@9OwY2SB2|y)O*X%CGW=> zUS0YyXzT!QzHaAg+6vdHvIAO7d=q5g06~lSW|)9FLyKR#nq5ZG&}d_wo}dS4N#c4Z z6dL6WYR{_I=TyC3&#Tvkm+D*k4OU+X73&RbV@@@3$hz4=s|=K^t8fmJ(x!SSVrPJ) z7D!%%w5Aqx^LzMu;a(@8&%isWpiaaHFNQUa2`Xc^;K@+wKC!OS9Wp7@)aOZGCtHQ)X@d`nIh8Wzn`M;xv#)Gt4Ub}FJG$x}g{1Es zHLGF{fu+cM{Y?NK`q7;-UT7Gl# zZ#Q#ewXJ#gfX1|#bR9`VY-$K7=Lo6-8{Nrzp?X z{Aux!X*12TCPuFCr3eYi3AFW_^W54di{R`}v-%^NKKXlA(N-i3bCoI61dn)PZ!2%m zzOdhJsQ%+Fo|s#-Ob{M$3!vdEpj{Pb^VUWPhhkvrXbJFlJAYxKEEwC)r) zIX7bGN^hUD{u*m&?Ze^T{ulN3qbMGYo8ai>8ExhF9f8;%3S!Jn`G*0qthXZ|MpVt{ zij2CG8jE5Ogf3#gV6wJSVPE2&7ZL*mGS>}&H7%Z33_PC$Scd_ktLp|Z^E?eexeM{Y(H9Z} zgnZWxfV}tff`J!e0P8S7oEh=M3hgr0(2EFuKwU2AG;S3$W^$B%M5CuQMQ z62`X~PNv*sQsG!9$B_rf>W>X8ylV1an6od1=ihHr>?bMMo2l&52`h-vooPf}x`|pE zvlvM76|FYB2s(ttrG zwxe*4-MF6UPodJ;R1hDUYxZIIk;fDrkhzDqF@d)+Wgxmtv(s3{q29<~#*IQbvw)?A zz~d9$X*)Au2{Ou>X=!n^YyjG42of0_i4kFK(gT(aWD)S(*qopna{i_??RJXhnSrkj z45apv_BM8UFTF0Uo~&)=g=n&3uaF!KW^4SA0Vw(KP1$qTFknOF$Tp#?rI~jCcJ&4a z<)XR(D6bSi$vQ4t(x3b4=O*4+ttvZ9nF8J%!7RXqgQ3~)zIhN$BrFCXj6-{qblB~GBl{Gan5xg);6p8w>|4)CA29LS40A*V4>02Hd#IB=x~`0%6% zp=H}roDlL(0I-R`hpXHmv3)f@w6#A9e8~C||FHPb#(ph6WG%#XdQ}=;Y5KC`xS9wMhTah(_fCXAfLwjl^mE> z<_baeY|TS@^F$Mu@2d%#%~& z(myhuSPf0&A5YQJN{}RHwpqbeIGw-}k*ZT^p8wbgcT`8{cSwu6QKoX&-1jpj6nzs5 zHkk8=Jw{=&X?+63j(Qmz>nyXHEVHq=-=g-R0E^o>eCzMEYjT$}B#p(aIAtToIS#7B zC5lCmQ{_3N0>LBHl*=>h5VNbu5t<#sHTIQOOp!(MKG`@H^$1F+mV7HjJ+!Q(nV$cc zMj2u|`6!vf@xqNV$3upwqg43{uap2r#4hSIVD_z?g4riI1k66nDVTkTZa!;NlK1{c zH^_CEBs2GI4ssb^B{_KGcb+RVzt(8f(vd8emeF5A3-a`LZ8#mI?jp*5$dMgDLr5bfoa!Laqvt5M z(~=#NQAn(@OSIN-S*?)eMNBX!Xfma6oOwXldonG?SOjaJkt{DV*a+qJBN~}x5gu(J z^qV)T?!`KbdRMn~KQ<-9h~F3#6@>OHd$8JozP_o@eW|GHcmHmjH@ffN@=Vp31~Qql zj{{C>X0x$9wt4bLrSu|*VwZS4$Wa5)(CD&nXcTH){m1IDkLJD9<{LKBaLbL3^?$p` z&Qd9@?3rwm-m2Bdnq<4MK^!Ek%^qr#eK1PDf%Etk%tY*WvKN>Xq#H>jlTuC45|i5d zBl+2is_!`0_SrbDA&N1XuGx(&@G+U5vm069W3rnl_)ubm6X;?(dr;Wif_N>@Si!yf7i)~9*B;ry_!a61_*At)bQtFd4DMomenViooatf$eYtI%Bl)@6#!$yP+c;CH z&sGc5C|bB9Eqp@cg^4XP(=~LZGssOQwn*uu$m$mP;uR;WY{*FbK-cRAF5ocmsT?&^ z?i5UAPQg?(9k=nAIR)9%3MJUUry!18Oy|upaBC0qBR06E(_oBZepr*3A6c82AJ%9b z`2CEVsNy|7Y}k|&sD?q?Xj#gQ(LN8v4&z9;0R5sfd19G)5>hlBdSM$P2#B1<>6>7dnV34=jiv~8Ct!!~ zXlSR$`A*#e0B3IGiE|hPdb&`SL2w}Ux^5EScwVxhvb{JW)o5Pgi?V4h>dQfyvsRr- zpHwH<$<@9{GrlPk`DC3pk)5j?qwG9RVxM-12!mb(XSIa{E~8s~RQe4kUjtLO<)>?= z-tTH5V;`1AV#CtF733%ki{C;AI7Cw?>`Kr&pDZrf7iAU9LI5Q^Q%6ffwv8(DTl*p>=DR|}fgM_(gkjOKNu2hGa@&xk)D zoO)6c0Jo)i1$@)IXNA8uI|HB|g$d39txdvB6{)A*_OJ@RP7|o$K!|x05=-mwNAmznO1NIs z@P+0_(RtpyD8qaB#ZlBjU;r2eV#rvZ>B^8xmRF3df2BH_7@WUlhGlUs7G#HS3L?Ro z#grKg7`ZevIf#nbyf*Azb~?3i*P>2?B6=&Q78S`}U z#a0|5xq|j>r%wY6v9A$U)>l0#)|R0))MGu2`YlMLT4XSKOjWPNacX&w*#wsVh{v&& ztM@p2;bHFNJznFh5^m@9b&Wt)kK-EE>0MPpjdbVL$W)RlLed(!2Bm7~qbc?Jt>n~{ zw{kUN)dWfs$gI1+VKJ6BFQFWXbu=%arA$Ygs>3M~`7VyTwjPtV?qu5f@OML7Q)F#k z(?3jY{nS5BZEeH)Cv9zhGAj}UZS55}&%d_5PW%6)t=CEETmXJAYU`-*6cqrs+d0I1 zRHmQVmfc;?Oh2=Jk<^;zT@B=;z9Z^7@3N`r?P%WEsgFhn`+M&`g|QO=qxV2n8haxDfeuUBEz zGxFz>|8ttt6}$pwcVY~>!S_^Cb|DeqPt9tQ3GV%Os{^aE9$^2jb>O#VJ&ONb>%ea_ zx81_gy$NE@ixrDGS9Zzuz(HXdS8emDYr9uZXH@&oPg)VrBFbQvOYI8Dp`H8+?#n{u zq12{2sQ5yDkgWnljX%F6Y}8;z`K#@Fk0Av)LP`JV30Bi7x3eHTd^8(x8P#sq8EUfHmO@ zg)C@M34!P2tJAP%J=xzAJ6IRNsvU zevy`g6xnMXg`8gcBE>Z?r=zPMtUD24_lg&{IzYkvu=83M&_x zcTm!ko}f@C6z{w{o*j@JxBb?R#WTx`^-F2%wP}guR_TfK?9GpDWiDYtbxw=Ff7dsj zuk-!ZfByI7%Iw>!+KhRXX>8*JI>*z41ROQH^;3j#R=4m!hFT^=MokXPfFMtX@6&N`YS7@BwyXO zY#g`M)6!*oQ#%l=6XPuLSk?Z|Hmzk)jEVcBe7sB zA}JA+?k_7PDk(?y&3f#iD;2UQKgfd+;~{ODb!JHmNgd>rZA!Ee$9USZJzg|3n)Ecfg5!Zr zG`Yo)EQf3Dv)5+XHZDbi_Ud5n%(gxKvF!{e`^O%v1OJAv2Y>ae4LsAG6Hr+A&9g?Y#rRhyGvvhDQ zU1q(rM)Gmi15gZmQS}0*pFp0@SEn^|cX3L8&)8oEoqV1UGNsYeHhp!O3RAs)YC0|| z$8XO}Gj5JorZs6!|GHLCIF{~b&UZ7=`&jy7h-;pg56$Zf``G*ZHbb<*<1D`j9%nde z{kWxhqW)v)()=SVB4-oj#&%Q}H}%xOT1O4gm(X<0my)sx;bU3}RCSd$+;laos~pob zNPju@s5@_k0QP-$gR$=~hq{@Iikt(m;bs-=g;WRjw+NO9Eg_G zVJHE~<6s8y^LN*O6n;@$)9*PpS1sF3*B$kn9!ak_laC1p;Cd`QXg|?x_G0LQNZ=<~ zj>kt}9TPn6vQbQP`^xB1Tpk|98A+SF60rhCRIt3rzCgS+WzB!#bk$`>ey5FYn#%6WjP`_D|@UfoB%cZ3Zy$RnFU=w$%#gd?gc||euZXBwz-Fo1{vqy3t}Yq$Y&HtN ziM(QOw0)KJDQg(Ot7o{fuiDk2$zsdU?V8LT|3c-0&c(6-Olx)S*Ab%Kr(=_Zn2v!r z4`_WF^?(n8ME<%_aE{Q-M`5a+rKNd{x0VcES5lZL1DH7jXNo9_m^sHiVX%l9VU-V$ z!i)r6#Eh`CfPHg)%+Qulk%L>PuRIDN_BPxWJquN1(CZ&f*4iVBF zF-TkCWq6n(;sF9&C>@x8WobXcjlq@P$N5j%`HqSRb9neWM1ZJr7G9n2Z4Ka1-wq)( zZAeA~hq4chS^yjsCJfm*;HaDo z=jZ6(8P0=N+mvfG^-KC}cSk%ZH6`8-Ya$0;9t7kdl?>Cz#jy?1$C^O6LHZcx+UJ2( z*2Y9C>cW~4>V=l`4vHxGP#~cr%I)Xa7R5{BoSmszDnv)OCDE@+x2zNAD&G{o#kiEIbv>C^u=vdwT zChWaXIp1*Ex7KjkcdilLEs_birOFTBZr$bIzQ`B#?F%~6w>6Hzyp*S-RoIXq%yNVx z7@MhzlGgS))5C0Y|4Y(=OYcz};slZ;t_Xfi4uTM+=|yFh0~Zv6kBKn&DJaT1 z7?gZ8n~X{fC;-PaV-6hcs3aiU^JZhuCr_K9j$BB#(oG`Gs8J?tIAIIxoI`^z| zv8472%!|S+=x205K|dq?3z{EL$YB?qoYD~xozxL#UeytX5|$z}9}4HI6Ra7nb7Zi& zb{D~%6AOVdh^1d=VQB6Q5CPQc=s)vl&^<2BYmKY_QG~LGg$)jCg>n2{w^Cfg>Mj zm}bxLRMo`7yjtk~D#PP-$;hYXTP}hKI+0Iu%gsV6nSgO2R5U_eP!$aw4St^EzV5GXgqF&IuO#kn-JB%Q^ z!}8`l16s2??h7%3%uavCd2jH&o}H!pCd ze2I6Hch7})FY1UjAx|!z| zqdC9Am5f(6Pt40O^C6Z%&}?743=3?_Vo;YLXTJ@@CdIZIn&2#>UlRxV zJqP26fq-13ru2dtIS8Cm17%ehV^tX! zoy!Y4AJ02@L<(UZFm_h3GWexq>CM<+vKxt~@>lk9Gd=5*9q}pniaF61L0GkKu1&?+ za4@PU6QxJnBBV1qLO|?X5a&;RGomC~v7#A(>m$}R{K zU8&ONMz1!==qyB2er&Q`uT;zaU#%nxOW!F8yR-D^X{~?`{$5e~t?5^l_hQWMEXh$6 zG){(e7{<9lFNza98ssB4b-7!E#B}Am;M?&W}qmY@kGQ=sKS8v6vuU1NW}q_ z9z}4hTf37*Aj$Fi1IZ`1tiNIE;rZ-83;kv~*1^$!slLR{VoPIMbJnb1i=4sa7QI6_TZ#hX!n>5Uh;hN4B9O6; zkB2Clgs~!Sre(|kBB%KdhCdKqHRWvpK;ak*xL}Zd5Ch`b_gJOP#O4S^qgaFoulb_J z-Ok?9xF?F^USa7OY>Ss@u)(%Cz?sfvTfC36b+(1NBRCaJ9d(D#jQh*3wzKLsv5JDe9p202i%R zPK)a_OanlAUKz@<asIAW-5+7N8Ip+Cj(9@RUHm!>Pn^j<#RB4_)S^gz;81}^bU@>k#&%cE!&t8+b!+vWGGhBhT&cc!@a0(U$()~oou*=iJsBH z!Qmc+J~dogtsH8)#NFR;Yh^b@T=echLlsUQ1zSQ*SE;*^U@UWc54SOvnc1Z>C{`BC z-ef)Gp5im?Und3ns58LfiC&raYyFm4BvQDdsdLb9S!G)cloNJ`<0SbA$m3P*0io=` zBcTgar6ix-mX52|#6Gap>?ipr_BX>P+Rx)BPBdh+;vF>l)B2QFShUO{J1d*5h@DaE zQM6{8gRqj~?!ML~qayAMiz04iap_1%#i26xIN1K?BidB`HHekUEw&oopX=vLyMhSe@JIY4{9CU-i6)F+nulYb(y9!d6ijB@@&w zxkt~H@QVSlWLd#4iBr+X8GJDF)@4|W4GG*Qe;JG$Y^@17cnC1-fqfagGaBnb!=O31 zyRCXaG}r7|dSdo0bO4c(hYG1X$$-D(8xmkH?D0Y4Ud;UoGo{T>g&K{;tllgGx6nA! zS6QaCReOWB3Aa~-ED_i&ep@gKTt7>!;=s^{cL8JdL6Zrr^kBVgfc(@@(JI*(367Et zBWTZL!VdZ5mV$@+g?Eux_$*#dk@kmVKza_jAbwb*Iwh8eteKN=F~5U!v3isc#i+(~ zyHZ7#jwfX=L}ljuL0ZVAhSL1G)Zm>}IUJH6!SN7@E0v$Q5J(N=yFtB?e0>YQ6hVKn z2>P-XStPta1bS3eHts7|H;OLjM$vTve%UR+cJhU;7MJIX1*W=|D7%BvLc&JUjM_*V zC}{LyTylR@CjL?5r%)LaMx+yjS!? ze~1rGig!0-98e6!O3fwe?ET&iJaWaN#+wz|DWl^p!-rm2Mg_%ZY^yaV3 zun;)bg<16qt(qiRduNsaeEVWd0J7{E0Ml!mx=gfE*oUcE1|zW_yICe*G)n`*Z#omY zR6!7gq!SDYxKNyrnP_AxhP5}16tVWkR0(glnur$Na*M_vG#Kz{$v9|_U&T)n-KgX;F6la^U@bs(aX9>Tk}ddCSF;d1g<@&uNr zA4&exi!?B#o^#jUSw5%2!@Db#HN=!RWTALrAqUPrG)l&Ez%8Ut={53x3zaA2F)dV{ zv;ebWO1MwiKHfH>{bdg?65KAM#0>_!Rr#yo9x7+a1!!ia$?GtSk_$?WD7jEhJ|a4F z-Lz<_Yr+u8%QP0mwYW+`Rr(dIp@|EH^A#1&V=#q#5$Z03_E}7y@_DA91Uysm=gnm= z$RH%^=yCe5mfZr}k7q1i3OmeOXb%I>LGX>p+b%ig_f-BN~;-GT!mp9YY=9o20Jz{yj5ISXphY+!>oTUcv#9X^dt%%c) zZ47`bOKTX~!JG~|?O`{Es)8na1)w$r4SZ2dy^_59E{7fnR{c`fxA-Q5|Li!AzQZn$oSlb--N#_O+*s?tAB{bb%J^%2YHNusTsq6N0Wuo;3K4ap1YQw( zp@TW9Eit)IfpEZs_QZr}6?ajQClQ}Wrk6#=2v_C2WK^CE*Gwc~LumtE`nk(M_+rT* z94C5Sw*8^$-la~zCN;l+qv&qs#g6qV@PQRDDRMOS1k|=)lr5)1M?SYV92a#oxS{7c zS2Ul$Nb%$=TC<4e&#-8nPZ48EV+ui}v)ZDBUmn)?7AlX*@ZQ058lY{U0F0+12yAOu zbM+KaF%aXvpBZTSW7ZejB)xh6Ej#Pd2+A9}z*o>EP<)Y1KB}oSH3!7E;2Siur3j!mQ zaUyaunl&5w#7*9ui%GtkxzfmDDKV3jff_E`LV}ZzrOo>w=*Fub?<86k)i{~Iu!NS& z6}e`ulnv&_)o^mUBx3w$L$t`N^eef%g+_~wPiYf#BVxpx&BrrEgR!jJlAeeZX4aav z;4hK>__@wn}>A{~N^Lku-q%ra)V?>w?j&FDx4BE23!SN|D z;S*stI6ex8phcT7`0b5P(>T4R!|~_i`_T8=`2L$`JHA(p9N*7=OXAz(RWZr|oUd&gW;b?kC;<-uUaG z?CeN9>&_;B1AkcvS4O_EGt&{;TCxPI!RNT2if8l&`IEe7#!3_<1cnRIjrg1%Ge$YN zSz>mm%$(Bl$_WYKef*jU4V8W@a#xDx_+~mL#i5;sd60|^f03b?+(UY54vI|~lsKpp zSNVV}i7`zV3=^wOR1M_LO%;+m7rQH*Q4hIui+LOk@fZ|I5FnoXRyU)7@^aUf>a)CS z;Dfe!mA^}~>|~6^XL;#*oc8lE3-!7=7VQ}udM2hUrWa#lLU8%<^s~Y8k%t&9cJ8CP z<1ezaty-*Z)nYRL_AA&RsfGpb-Fcbp&tUVL9m{=e{xCiinWD6o-f(neQq)Ru7B~AK zuWI+xWE8s=2wt6b-H6)~Q!N(dxGeY(3M+dKX}KJIl%V-+mIfm*gMS8lom8HT4n(Pp z4jCaA`D;I8RJ=(68%6@mURils57=l?+3?VyKOpfwllue27vvAzKuf_N5L9loJQ3(i zOTiyFKG)w|&~RP7z_(-xSv(;412<-ruE{84@(MB%-5e&LU|3Kr$s`l`19;>AJXXG2!if*6URXM<+2XA>$Q zo7`6j=TmYhyyT&ty(p=W2VMb)3K24iz-Gygnn8)+k?-SXx49kVt5bjx4+r>cm6cf! zyd9qPz}qnr45A6Tfhd(_9ZfndJ;3kCF4Y3SG{cOZ@{-Amu#!yJTbW9b5UZD3b(zzJrH{6__l_n zc!>i~T_%0Az{)@TdC-B!2>IQCx1fA%EnOh_jT92`^4!HSV8~QuqbY+uu*qR){`!G$ z2!;ZKV5oS4U}$7-L}{@FlPzKa(*y2Xvs?(DkheuXU+{B(E||J4(VIMcW0S)-Wm6!) z?trxjk9f10XcRw%u=Y+g2b#f1iOLfmL~ka)i@X+3n#YHIyf`J2F@$}cN=H$RTq;up zB$&;?s|5$|0co>^%Ik6PprR75aj+RPj9O-dq^QNs@Nw}Im86d@8El>Kfx7#sJQTbz zQ$oqlm={JUJ9uFV%g{cfb?=IgAY^jyN>MLUFGX>%q;SxL>k-g$ijhVRd}G5(!8H^-Cw8~(GH)Ufr*Rue3 z2?Zmi9Dci z6;h1{R-r8_UneNTmGmt*s50TK!KhnOw@lZoF4IG9g94~vlPXz@DsvTd)JkXxaYcBi zC+tq4iYnc2cS!KXXB5O+BtO-iWOGpxhg~+WxuPT5Pt|HG`c0;qYOegeqEP-`<+K*9 z_ww&oqSbQHK7cliA4m_|onmbh%`w@ix)hqW`X)8Evc-Ur)pcv7t8)cAA7d@CKpZ_+UE~(Ac6M8lI+7rppbWazZOB?d zR+K4~W>0c+fBDNuwWLK2LBZXH)|KkRO->*u;%NmPu3F zTtI0U$u=3}Uzqneod<~gW@cHKMOJ1L5AK6TwC6;6NPe&{AR?q9h5y(F#gqUO%uEqz zYLG(?JXI1lu~#3ZH7%JlSOdS_jrSV(B|1qBym_%Q^@VKFM>d69X-FRG!}_M(nb%@D zgOd}UG+@F}D76CRXniSR=0nTiR8l_6I-1m6LKjMk?$;4G?c?Y=9*GJ?3WkSu1g6UR zr(IVol3L=@QRfhr0h|>i*r~AgPrX9nc|^?Ldcs5QY@HV4$&tc*0#9WYQ(}lJQejRdPzE6N_{nNZ6jqRd5^6GMj;rO>y^4CB<}}W{KdIYP zURYpSW`QaWTxfhvk~?B8Gs(rwUe<11C2(c61W{@YPXYGny^JWMcxPKiR1~M@8bfRg zK(7EKk({wF05$fdi=&o7;&x!%w8X0{gVYWae!5H_tCUOGa5|8Ye&@?QAqiy8$oFP4Ep$ zITLOIyzvh`HHKycazsqXM!5n9Q=IL*H1tUmup{~=!-H17ovx&;5u^_nrR?zRvD1gRRhL+X3>QiZ03F{)hhPC&@nwPT}-i6KC=xXb#=RU zGMaP+ZYx4wU^K1)jB&EOagB2!z}O%c!gZQJuQ6_n+v*{9onokJEXOPjdA!ORFJ_JM zY2uO}oUscg5=UA`VI(IL{^NY>uPFhG7${Z-lUv#I`7sCRnwy)>Y@2mu~}o zs~N%$lRUGfinjVPMUrERgfCQ{o}%lE{P(05bCqXOxiY1)lk-RjJ!X^Nq>Kt>Cv}^? zDu0X+ljJjY5K$?c;Hqd(6DqVKqstQi3Q=j$xc^hh*QM(Zv48n`h*u6M)P{YCylTe! zBUUcqVRKERfKHd}&Y%TMdCcvVX8^cHpyf37sWC|}h8KOQt!5xh0aJWgSAdeskciwFsB$+{w5fh0#&$~&)w`Suz^J$p+7 z095E9+)ju=v~Qh{;g1+E9fCL?dK%DwLj__A0^sumS+=`Vm9RV=vu!+po5x?75s|Tp z32>(v2jJ5x*j<{%zu_nB$`6~}b$Hh8O5)eX6w8GDtjB{3_oB+AD2)!G17S@@uvHNV z>4KIc-Jr*nWKvd?4&c^d-@45j%{jKc*CVh^ug%JjUy`g2&M)?-Ei!|_IO__R5sWJ3 z*9f3D3uD7JR&^ZYjww=&0BMm;pm3)|>Asi-vq4H*MkrH&Vot}fmxj z=uVzis6itZM1xgdSd<7oh0|m+&r8>+zg3PasQ3ve)G15tx2S*ifq*HQz`>zbpr%O4 zn3&MH`K|yb8;~2p0I0|~icl5S`!ug&&}YRcz-P5KbDx#kl`Q!Q7hcrQ=rMu-5{R50 zs}LWxDCLUPa}aT)A|kwFWg#(N+V!%Kd$Bkk@30SBHe?loNHq9Ysr;6Ha}RogC6v#;7bHOj;{W$B>en)O&lpO0FEP09D^9{r#hGw)XtV(UFEd1r7x zoX~0DznmxsX10sx!F2PC4g9Rukg>AG{#5eUTb;dKVIYVml0Uw&-&WnLmgc*A>|Zjz zHp(uone9+$WGeZpJ;_dR>Q_6hzM8^=vB%P}`yN-|+qggqT5^9A65s=L*m7G_Ja_JQ zC`$PHjnt;IGQt1P-unmHaaH%er@POuIrBq3(nyvxvfbxI5Gk=^-TQp8%lH=4Qy|+9 z@=yqsa;5mguO5F;8r3b^`1w-xoa+J0Fa(iIhyo%gWC98j4-rHVi7*BRBW&S_Sbzcw z5o8iXB8XBbH-ZQ-*866DspL@Y$Oh5x> zK3MEF1Ak)^w>T@=s`x5c3tte8wgyC zlp=w9LMWA3b#|?dkOZO+(G%8TLMNyB?+vy%Z>HHm2%m({M(J;vQ9#HkI)=qN0CEvN zIqI(_-g=SQ5G3?b|llwoZCa^y$kF-H;fty>>Fg7vJx!1 zXi?31+h`!Mblm(9RyRY89~o{1f=>|9+QX)fk2>Cujrz8|a{3kKrCma;&@i_Gml>`CvY`e0WgfW6{oF|Ck%+aG3b4do*Y+G#+;;63&;Uy zP0m!({NQ8Gn)q&R5UxgZ1L;#kqA>ay++Lhk9T>btu=X77Vu9er(JnTleI2of9=bGh zF@>1vDSVEk9}=Jfkp4T!flc->DZET)4ihH&!hEMV>feo4G&MCmd_j-AhV+#2FuZ?M zWRpG2u(_ZBiTU_y2jpM9r=vUvcyiXFXNffRU-STSt^7IPe4xD!0wdU>73`t`w~MO9 z9tWucEnuM{TQC$)`U0-hpjp$g0M^-tgT<0)0P8e+plq@MmL{1n09Xdp8BMyQ;{$__f&LhH#Cf!RRg+d6NF0hGkRLUOMAbKVi@+89Zg#QdUcFSZt*q)$Ynt0a zhoBbTBm>MO*W6gGX@V6p1PRL=RJsIZ>hXelROt*$n&L_!fYhYvuNw!%rXc-ul+Fq= zS93<(zb;*8*P{$)-6ALyA)&4IxC-j*k>k2h=S!u@CFse$cvr}|4&N3}@HKDg7*yQ5 z<}F`{_H@ZTt;I`oe6hvB9ABw9zJyJ=yRHz~iG2Bu&PG!&s-Rt|`qR-3+_u2kBpda0 z*DUV*0V4ntWxIq_C~B}3E&E|QOfQc#T*J-bZ6$?G-w%r{9?a8(tp;eFO3s$}rpiO( zuIJ>H7e|N2CAT+L;Mo8b*3IGB8!Hum;7z85;}iz|;>gz7h`8F$0$4^!*R-x$#HCdq zetf=yph`5Jt^l!6Ks2p=Jo>@mIkxry1zQ?#5jI{0ow{vk+h6Yg0o@zpJuHt)u+K5D z!4tln?&~xF@f7!jk1+4WkHmzQOLtk0kv|+Hlb z8@pVQ!t7+ymwW(LDJ{$xn|v4fL16NLnjF%4E~-NulQN0XIr^BaRBLcA!=#;64V zdzjFmi8YgIe3pJ-b!^gib*Xxkvx27Ap{8k8z}tONyo!Wgnm|%9@!|DAI~b(LoCbVXWb7@X}phTIiLUcwM z8|hgC3KZf3<-o9d0&oy88V?<}1c$>gvZ{@{0QmAggMlqlFis~v5hdKs><1Kl*PM+x zN#+69vVH?%*IMrnH~=wlJo6ikfdtb{kklSRINH9#%oDA3S=X-6_D-iXiRCrM_gZZiAVSc>0<173#Pmap%)b)J70}L@v z)tR-jqnxC%kg6|dTpea|hQu6|rOfjrORoR=aO5Q^s|9V`7=#^iwqJhbEtUghe9N%S zu5|^=n{WO~)+Cn*j%6?*Zm^w>v9Jb=O&%20VftVO<>OQQSjQC#)^5c$>o zjOBFG=O0)$)Z__=1+rL=z^U39^vV7&XNVo+R5t0^jeG|uY;ww( zPC+U@3g@Z?k3~h=KObRS;nkI;+Q|LHGdodC?zT{}k?&{57yb!~9igkm&tf?9hkyKd z<=P6hg11VPa44dlNW@jrldFNXA(;2+xHKBJlho#(IKm@4NsZkDIw4Kx%;o!d?7Iib z8p4|c)CfV3q9`BYmZx)e3>+QF^-gEVaSj~6?8}6<2kiwPg~7*anipL9!&BCuUFT?6 zIXo%V%+6^$%QfI5!EtRTz@3}bx-SPvHISF_Nv;YH+b_7WpzI_#1h2Zr6P=jH(-S%a zjt;BiJUv_8iiY6#XLPUL>ua4Am!AXAhW#ZDhU06-mzq?gP#I2_<3v6bO0{AG(_x|u zGEI0vign1J<4{A*gc$RfdNOl62!TjAqZ_=qW{{Yc17h@aeY$Ivt_$&6O75sxQB}Sn z<_tQ-UizCgU3Zi_fK}t1%H=z2re~=ljmi#!8+K7R-$&pw2MJ<6#mF_T$2nk>Wm}|1 z>y_i_C$6AOK_BNH(y5+CALtv!NqalgJBkD>?o$6bK~Mh0Kf7wUVH!k3B2XPx3u)O| zR2hCBiy3wAY}l%%r(=Dc4KsmM71mvYc*weIJ*eh$=Sh+or60?l7T)c2n?loq(_jYn zX^B5S0uY#6YQN_YK=VpKeTK*b{fOMBh(E)+(8-R4;(QsSi5Z?5BgREM9aa-5bdqfi zTKwepggg;e*60*igkOn;i7*8<&a%#&gq!IFqr7K3#%LC}F}G>q1YvQc^534x&<2t| zRvwrL3_=@(%#LpxUKr1eHXq}`P*k@9gY76s`!vcYytH+QeWEs3G?q?s^jyfGYcydU zv(X&z(flKZG$qdQ=?IV`+clsE%K>GT;GoQvOAaU^P76r#FZsff0$@Ybcq5;UHDQ(* zXD5lJ#(5U1EXH}pSU38F@zj||#iMM_EIOT1ylM#qgPp*o0*xBiV48;RTzo_&ICKi! zZi|5YJO{O~h+%*C8CmYvEB=?C_`u^8*Cj4Q4@_2HHH>JiNS>KgDMU;q$g?1g2D2pH zy(Wv(-x;IaypAPZHkh9;cZM~zwP;sT9HnY_&*wh)SS8>2JCFHss@-=m$o%YH-tGA+ zo@pJmy2QJK#k&uu@wNBII{b95In{{~tEf<`+l?&Fb?oFyu7_${+gEbk&sFE3p5uBI z*X@n1=;$rTh3i)6ZU8f zfSdLjAZRb?_pZv;vNSYVZ(k?(1o)OP6GSKDPF>f982jt<*b&lUD|E+1Iyfn|*|Ab` zE9?){LwIY$iXhz^YyW%}E9wja#*d4k%r&270e1tL6w27DI9q8@&NRLA{GCCR)JRxC z>nG~iUV^5M2_!H#=%7aHX0h}PyJ0bv=U5|E#fy$=tv+M1c(Mj; zO)VU>v-KfYhBqie1mvQz)v~~fwjfq(%bINws!u9g`oZZGV8Z)G!TBm~H}xYvU4;PRY0#;opP$sE6QVcm#V4`JGKVAz;V=jx z(5ur=@}bBP$AZowb_9GK8nt0rrt9%K_77Kv!^n8Lfx1yd-uEK;ilWbs;Iwy)QX3;f zF#su=pXtbIJBl;QuyM8w?klKKawU-vzjx07qD;p$#a_ z?ctMx)TQwGN`@=Ir-CN&7$y0HiGw|Y75!0&FyEb!yDhsa{lb9i;fEaZCAEzjCZ>~K z%>7(H=Cl@CmS0t34qpe$Ce*o)I6?egrAZ=%5$|ERghMwS67- z`%pIC-k7ax|3dp0GaclVv^m_leQma^{YwxtoPGa~3;W7weO)##x;Ku-PJyyIZhVH= zM5t2lGSxN+EDEJr(ZSu_VLG}(7XwwxIeNb0e^Z{Le36(|HYf))*y#^goS2~j6gXGp6 z1VUp#kG;d`h4xp;PZ=W0Wk-95Ta<|QiX6lMRZ?)U8x;wtp{gkIiovEMO&ym0wlwaz zx-gHrkf1KeT10a>HO3vW3h99+H&Q{@q!|&A zgTF+mtwnzlmXj<|N{-G84N_{yvrY_`DrNV?au94Yib4ls6o$l%X$p*UdlH>t9oIvq z!%#1}#t^^HLUYmGs587my;#Nd0B$=JFafVuE4V!Z<#Kx!x3heBg|7bgYHrzRfF45| ziQIZg{v<`zd!`Tb>4kd{k4TWT4O5pYmGSBb_-KRVcBfdtKw5`?&}^p73Yz?ECG0>+ z&@scRA;@|4|I%;BQ4jt*1F;=x+!@@ zkcSCd$7H~x-r>hQ4AdgKd0k=e59uC~L)Uq@I5xQ$1Je3=Bd6D8$+Z>e81Jq!P$u~W2!!EW2?>=qG6V|u%gbQpst0apWkUSKP_ zYD8%jczs&^9_8U2@U0EaYC#KsE^BEk(+{syv4>;qbvX^OXw_$`ByvnORvboKU$?=(d3~Q{#gM`K3%+-t$4ax&w6S$H83}twQ9b(aJ#({aBTE z_4xu(P5+dxK4TC>8@&U|a55I65he?2O2{H{h2)&JyapzCMK)Nn!}?8?BUK*&u_nF? zUx`TIj^M?3SNhIXoI|%%?H0DxQ~Rp^+Rp|xN9=Lw+Tow7ovmO?z;4QOPwlJwYoCSq zH2UJ9{k1!R`(wzhmj1&UelXJ5J8Ntn!G6=vL#OHcmr2QURQ3{}e=HjSMhuYOvoIkR zF*QTX0GHG#WJX1-?llNdINj}BV05qM0-xK$1(tFv!vp&mqC$GgOoLnCchK)a*3aVf zof-jfPLfxq&A+UYu+#)otiJU!G4-R6Qugw2tht8)5Vz|-%{2b(_>a+!3o&NrR~CIh z%QBvcx~NPqMaxaC3WTW$uR*P_)(TEu0DzRVx5e|U)z;h*4d0LFVAE7*7)>C~$EMoLf z(GnTwZVVWm0}A+8$-G4)&hq=!jEDb*YLD z7j}%`(*6Qg-PhAImM&Nr!||+@Ou!w@E%O`k>x@@TKkt!%>{Q1wg$ICt;N^rmSdQvY zC%hqJTR7H;bvc>HT3U*$%ad&4+?F`yar++8d!gkiNG>G{<<{fIO&7oyFb8hr_{ z3FST5GnDhY#BNLdkiSeq-|Lmz0`U6kty;awc&CUs(9#fCFZ--e1%8+H;>h5WTj?7FHd;Umg4kiB=o9Yn0BN=Rei0h=Vcp)= ziJo~s?Tc3iAVkc7gJS?ob2GJROg7&&+(?hIHl%;h1wPSHA0CZMaxb{u5zz;c+aS6i zw;Vw%khON4Zna%<^A*i1g>yh)>3eiE0>5l+XMi3VPCKlyf?^Z}vP&54)x+=^k{eLr zpogHa*Rc4cr^M@rD{HBK8RG^%Rl4`(_#ly@<*;ajh(%3^9FhvtVkq2UHEC;j8`*Du zYc1h3N=^a_IOVfm63{4V1r?4&R2cXd3Q0n0fxnHc!gzAFDAekc5j=5E?1%7yzfanw z$Xvc};a*_`fkZ_`jByFGsEFSsDfvvv#N-h!`noe)+KZJSEy zOu7hdauM~St&uJ3;WLquH2~T8X%5-=Q3Q#|+++M~>;^SBHjYr1j~#(r6O{L1Q%I0= zy^xTp9JUZ4w0PL02UEYXI5uE%2u(4FHL4XLH6O%fK8QkBXAlk!HR9N{ksPArGatnv z%}GUmEgnUxrbl$Q2B|U#5EJMiDYHiF&8sSl2c>rwnBR&z7f%Uzt;Hw>q>L;Y6vEp3 z28AY;7!)y_VO$TG@E;$I2k(#M@n2vmvWeg}dB|xD%ekB8KT^@I<`$Z}Ict{I&GkGY z(CMXIq;b^KAFbn7F$=Zy%d5D>%K*RPk@y-{?85f2+hxfFJfNwStWHZMNL=|u%U@mm zS2AdZG|LPLcRM5Iy*)ukAVMF5E=qrM3}$f`3vD%dSZnzz1xXO2v6-OvTK;od5UAyw zHWO6W$`{^>ufLX`=90dfPy-z%%^fSgqtkvrqZYV!NQy~#$hj`u0 zb&PToJw-jV2k5U*h0iDJkDNi0GzIYHs}a9}TdRp?zT4`!xqM)KVoP5D_j)o|NO%rg z4M5)H1jMM#Rm(X1JzZwiFm&9(jv&g@PaH3*pDwWr#2h;a#hWT<=ORRD=PPcAUtv8H zdGrxNUb}^Xw~tvVF*u=)unjuW@5#UA!FQ*F_is3{Wc2@B;q@jsam8 zwT0_`_^+-9B5(X))HduN3e)&uj^NUJhyqyp(3;0$nEyY3)9|?j-fsf!r+U$jGP6Xn z7gOxLzttTbjz!1}XAj2^mrr7Z7^mbJF8Ircm54qc5O*#hk}Vg;AK7wYh{gi7Q9l(1 zVu69lD}BaIt4YZX~G~hYR7Ha>xZm-vLIliiV&!ZV8WFA~sl1I?TTX3lDP*qZny(^FSMz%0hTh6{f6+qqzRznTl~&MjQw=oRVVt7)X2+JQZ1lNK>wV)n;2ZnlkV^#W9CXu_sMu zb&t7RvZFjMVrPDch)Tb~QE_5|<@t!lW~er~Lry7wXH^%hDKyJ_9Dv3~(ns5r&G+v> z9$cR- z7%;7eFkn)h7%-XW3|KV?AfO|yx&8!+ikjdA69@qEN0usw;Tw*1X#oVwa_EV4j_ixmfH8PDWjzA|GmywXX0oL`T%TKV5BB6Fp&>w2R( z&|(6PEK5h1kF8t<`>uF`Gsi%5ZAF;EOP z*W~zL^7Vg-?e*$Qyxy3wQrH~2qW^UkZK_l|%X!0?ET4SI4Eo6sX}x+|$fExoT~vmH z3Hr-iA7504)S3NdfMIc4IH&0OFT~YPrr%kiWc>X4#iXepqnHE=-iWeTqI?Vb@N{$= z>@CV)a#ucm|J^K9M|u5TGr*@)SwI*wH&uRx3t7dZyKky&$z#-Mv>LWU-OIGC7GG9* za^XVq%f&aZ(l`ET4MAz2CjP0_`K$h3#cH7rFCFE}@6GSD@<6KmO>}_BU;V-BcXj!M z7I~~EsF1y7J~k$nZBIfOp0MSp;#3BSh^;y%e13IbF!SSlfPQj8o8&L+hWY$?f_r{T zo8BtmK7l|0ik>tDkGDQYgpy1GtzhHt zQ4p}frijO|Jj#%0jZ#}~1hssQ*|6Vf8J7?bW9pGs6_*9wI8wB7TK>3(sDPqd@F*b0 zuMB>%P!;CZz_My9;Z}tawg4L6T&XNVcb9=_kv>R_RPyb`s2ci_LpW1S_m$Hv zRX#9nt7&V9`bi)ebQvS^;M^i7ukNri`6qS!BpEUji@D|3fkG zpy*k4dUXH68gWP~Oc=M4TtS2XXGJGgpjwMYVisOP@pO z(Q(<}PE$NJFLzTWKR~7;wHbh?fo-3IP)P!d( z?M?zF8vzz2z))KZLiqzqfQo(iQF=zfafmTxfldUB_f7uk^q&UwTm1^chlR?>7T84= zuO_Fwpa3eHuT-jtFK>alM&;V+PYcdK?3GiD-0FRFB4j`+!YqA09Z=5<(0KP5FO0dm z+kt9uQWpbXEeF2B$fKB-BgERbVxixEMc){+0?ul;p7xG$DEsmLF%D%vUW{=R23L3$ zMnzxeeuxUQuZ|m~zh9#NZWEMNrrjj{@Q@?+j_z0q&FPoebK745LyXTCY@&98DkJ#_>JF7eQf^Kziw3olGM5lN zydEzuI=wCXHyAAbsh1Vs>QECkG}3bnTCRN>m};5+tk-tKswRFjAKHdToM+o3b^~#p zmTkbhYG=S0eyr7nm|0CRIVUmQX5H>?mz1^W;~@;`}o{I6=HlJC%r zR74MT-^X!QJ5gd<5} zP> zO|LdkVJV0Bj*XNCnXNC?B>O(h0D+f>^mFOO<_!xSKR2&2<7_pyCa6AK@>wz966JVt}I_Aib-pvhEC-v$s2EITyvS&_Cm6$622DaK`TCBIpX9WNVW z+&J%)#;%8%(0L-85X%}y^7pBSfxx$ybcH7dGLm6tD5RzDkh_6JC9Pf5@`GIU8y}^S zhJvJ2bdD>&Rr&Uy5hE4Sor_3#D1>Po6l(jnmb0VoU*T<6++n#AWQd?Uv3V2&q1S>V zaLy3CgQ~H*)ItS))uUHfZM~HpA+%p8V$vav;c2Si!9~*&M?okWFPWhcmP^w=9aH15 zi9|tCHoXLH>4nf-4|6|JJY74<7o9Ds8j2t?xjTi}Q_`{tbPGX7WFX{Y&A-;7snhCC9WCrV zlPSZ6Oo-^UzG_JkUAIpeHiktn%>G0dt$lQ5O*;uZuowYWMin?gkqOVTUYZiVu!d-M-2#&EX*%ZP_EGXfAi zWa$hb0L;nf%a{|_Rx+DbRA*sJ`TP%1H4c1VyEV6vAt+deCxom>pTLr8ai37`@9p~2+vV^KO#_L(Sk*=gnJnjhi88c(d(cb_{jo-RrA?`Yu6>FuY|^1xw2R zV@adlLzw3SVahbb9?KX4nDu%yQ1gmC$mQaxDv^Wuf1bQ@{H97> z!$4O~Cci#@GX8-~^mtcsFFffQS5oorYa2BmpN@7&2 zwYUNY@x5@N86cI-Syo^~Az|eMy_oQ`{YAye*bIgl+`n6H>{%C@)W)u8-uGFa? zz$_;Tbfny|)Y=19Q5&w-{6W<*kbZTP;(fhgib_L{#(oI?F4S1wto2aBg(jbnYK`;fLSM!_BI)*NoNtPqEKKHLD+#sz|6!UF!_~QB`7#- zg)v{%Jhf=z8J}2DtY9*a$&+ZJ)Kq2ogX#a~8=9qQ*+FxW$LneS!)3y^7^IAaI$3mU zI4-*Nwb4N{Y6Az6Q(i_bDtuGA1q0AGvdl#rSs%N0P4s~q-%JnL#`wkrU4YH@HjETK zsAQyCc^$>El3vS&y6)gYLYHk^fL@K`a;yM+CcTUe1-^P~;oMs4XF ztn?$WM6J5a(k;rzL!)uacWfL$`C!LJJi))N@)1dDrA08p>p@^x3yCXHJecmy;9v)L zv(i+}Pkjm9w4QEXtw1#9h7%O?4UUf4#-r=?=f?Dd?3fUHFkjv^ASQpKeEyocm2s9k z8DrFBg6+^K2l7WB_-rK~NuN;Q@B6M)4XgD>`BxK*H;B_2t8jOW6|UCM#$%^rHhmzp zlbp<$AX*8pAT8TrOhjxf3${Z(G@i+mygTl28u<*Escb`W8QzP6LR~vz1TNQ|F;>yY zUckbg0g|%1^-LC`wpvg>H=dy~^l-f#3Mi5v%xDw}<6N@z?QlU!;hN#ufDK7>;Gy{S zkQCx^vvyJjSsJAkpt#5B1@^0`*93#g(G=Y!m1@y9>0e7t{`A#ZtqlSgWZm0#n{?+@ zk_vDfuy}l(mC+xSkU+#%HuQ>0ZJ&k!(aIiMtL32&wS0#7Y3Y%Mn5G1DRSOaf1z9)P z(p`tm!3c3rRM2)s9hj9)9Uf-`bwEPj(U2la!%(hEAJm2!#f}tX$pAtC?Qk@t8fA1C zU#BKTsuY82L#pB110#JBbcxxW*A;Z06Z$lBKlXt~#qp=v(X+uy3CSvr_bYD4=~L?p zn$K9i+a!VP+BKopeE#QOhP0dMyNK#$^MaPtxt`RK-_*ZAfj#O`QD7kyIAwdJEDk*X zfhI>a)W9OV)o><)V~COzSUTZ@5lKIw_H$T_M$HyQRE+=e2%6&UF^ff=(16<@R~bha z?YyM-s0~aO8_n{!54%d*H&PJGdG6G>_^)u02^T|5c4>92d=9r**h+9t1k8rvefP}g zD><3jdAA{csZZ?*t%0%SprX;zD1@@-zDC)4DEkU8d#hH*5?kHsE4%R2VGW$u`)V({ zMeAk^%;I`~q}$O2?NV46qs3*vt$K^Hul2Hb$nIvx&Em2TYV@n2-aBpT*#x); zj9cx~NQgeD_lq0`!WYvTE1k>^W^lPyy%qcv{om{n28&j9P)_A%B28OZ*5cBE**ac! zhSIZ;?nQfPk#qPX?&Ij$q@@{ftU;IX!>r@pKH=R zG`b;vopsZeZMM-%m;)O*E?N2wR@%7PeUwHkN%Hvu5~g~fl{cOM@?!kwg-O|P`Nw^} zJ;V9j?w!wgq4ERoLSogzY}_AuxG&7-0~Gj_ai~z>U?^}P%;!TC_?!wPp#V`!hNDA> zvhGY)mwX50Ds8nUmZOUEm`W9Qeh=!4Ga0n zSzr+0S`UDbspwON0cen~OwK!dL zz``vzK_GmwfCp8sT>xA>EJhlewx(}X#uN#dD1D=$=}y&oj~0qK7$G8z!m%dH$UaLjauOam`<#UyZ)o-Zig&2y zmb3`NtEbc}iV?fjS`h`Qub03p>Zy^t1`L&?z{N{7Ub!_lVa>^Z2mdTUxw&ZM#=b_Z z>z(1Hhp?ax5fE&$sOtJIX`nV5myDJs4HCjWEosP33Y4)y$hzh-l+le?S%NY$RphgJ zz2hA>k+v`Stj8KDsA8SJUOgyMMo(FaCWZq&I9GIfz?fozzN7_=l!6q-yvEc?p}*SM zUQ#P)`yw*4YPGT~WMh34T^aJ4n@$r(yVJcD;?TFr0=1NMi#af+IU#c~@CfSj*=J4} z9MqZ-np$P=&xWZOW(4du)NEEum=Rd!Rx`5-FrSd;dLMV(AJaXt7`i{Mdl8SsNV^_S z_&;lpS%mJdNYW@LfD|Kai1qRZTPl2?i*dbY1?l4Vv#@U#4lQVx;*v`=;)_AnecUYr z>0ga^s+iSkL|M#m&=_uJjFW3sQo>7*Pji(pThMPT@h5QA{0vB5{g`z8o)Lg07%Km-uo|0fkHaH>dHkuvAj* zE|mm~#uGVh%0)c7H;<>X(aGp`3)@UEUhqdFSqWmGp?mb_4LZcg96yl)-_lc-LrN@? zm#;y7a=9ILE*iy()gWpak=00fu|$*nNsp}KhvFNISghbZ=CPhE}a?K|ykjQ11ZI&V~HNJ^yA zTo)18PN#+V8nqWYKwivqM+K&SMZPjh8#34^QBfY}igaPr7{|uL)Fma*vB6RxK%XwL zfs$mDcpxG@g|?&;@8knt)xc{uoVHI2BzPv!!vzv%)rcm)BO#F6g0*={NN~rYqZ|W2 zxQMZQkv^~&>nKgbE z;w3LhN1@T;aY;XPU}FqviICZ%ra)ODda52)P~r%;2vAJNjwA0P8dIQ{hqW7>_v}iy zL#+<7yzi$x^x+CpMZ=EiYApX1KX$}8%d0stU@LH1uihpPI$@N)I-oO%=xf>;k!Qrz zf;!$>PL%K^DRZB(LIgSh+Pu+#7f*;*hk`p6W=eR1Hti{*MkU$vrz?nebt!nn*NfS& zme)$BVPFIlSg}Z)7-waOyRpS@;V=A#7i*ie0tC!Dfw1J{HbxKInuC0`H-UHrXDpg2 z^c>Hj`YN7b;Sd9$!9ta^Xf$N2h>jgn035}CkT!rQ_jE6GiCNJyI5da9WwTFTsZwT!) zz;T!v{S~pAZM6vNNmzyZJW8jwo*hzcpy`NN`IjgMGovX?rAxerz40D@+a=zko$?;> za*6kFhC?s{O%LW1%C^|AV1+p0OeIe;XQyE$#4Uv}XT&s9d|8RHX4jY5fcwLkOYkct zqK0_RrtzLQH4Mxfqud8mKv-ZaQ3gG;Y|xe+^lkTv5=|Uey~^9KYs9DUr0v7v)@@+><4AfD?x=>mzU##mIBrQ7WskD7z7TYJbh%S63F^tsLnxh? z{OS(y&M2-urT;f zczTY6$C&+496FLx4Jbbl(NF22HT;-n)~T(xj8Z+CjSbRJ5^KFx_nLMMa+ zR!K9i4K>D)g(>t;I1ulKcxqz{UxB>|8s^`euDCsR3z`{H`E^4gt#|&EbB;e`7^A%r z3yP#tJ~0;yX=3@V34|2hO=26~9qfTCeapBW&DG?$!iP-(;jILR`AQ!cX<&+ZN@@q2 zk_J!ucqRs57!%Bs)A|oZ-T+pDyT>ybuwtoLIoJx?m9`BL#cj16!)q+f_NjCJ{#h>VI4 z>w2Dd&?~n}3UDOQUq1a7KC!d_q1mz#kcoqM*BUX$fbQ~9tc={^GH(Q*c&XTiqSPb1 zYd6HOb}bM$@;yCynVEvKw5S=mLoL6>KbygeNhWN_7KJ9m5J(9JWh(gF6Pl-RX=G0b zV`2ZR?tR|)l<{$XVwlIU?DR1*42mP@XT1>85FclU*6Fq6PI2sOgTNiMCwiB@L#c^p z;K!D{M*!lxJD@=Xd;4|$>>h0s+{f)CrvuFCN(?I+ywjADdCj6r(S!FZ6}T7xbH_MC ziw3TBGMSH2zzk(twW1i?Pt@U~6qnQ%PDymkQ+4x{oL|LLb>T2v@DQER{Ymck+1=@w zNFbgZlNtsMo=~!&R{DiZT??P1*Oe8~rFj~aW=y0WDH(2%NMRxKhWNCu4J09_+dG@v zNF$cX9n~rQ)Eb{nfDL%Nn0JHJs#vW6Hcydi9nrjA7>yW=vym234R%CNrL)X|m-W+b z*~HQ2R81sVA2xQr>fgxEK zJdUD@h$l+R;GPp>0De}|J>Q29v%~>9VmbHa^c+Y(uWwuF|H17eSD6m$>94>h0FZGK zMkRd&&y2*mv=1#zyMDr!`{K80^cD$a?ay3ukm82W9;{M^DyGsl^4vuaNvzaS7~7Au^3!fRr|@hPC`ggobP=? zD}U;&{b{C$TK)!DYswvTHg&uTX ze%6?yd`Uu$lodZ;h;CYlgW+3RthE@Bj6%|9-WjUV=Qyn_P8qp3o>L^EL$<{8q>!3T9#&8Lgqi$5$7bx3J zD!mvC`P?J;{S?a6Ty0Vmj_qz&LuHQaYkRS_-=_GYe1MI_%4qY0)hSu{(K8Jn}J zal7MWS`k? zshWP3A(6kyJG$AX86Fd={0xETg^87O!WOk4bxQE)%<)K_G0`go05Gx{oto1ygrNZV z0o|i&(Om58)8`TFx(9X*g9-!y83{ns(tLpZB3{B68?h(iCBlTz&+2`nK&+bH%GoKebkq%b>joR)(&enC7;+ z7*?dL!3xZRwScw=R0*(BP2cQ;;Js7T{732(Cl-st0aGYwEbcrriRpYd?7C;#RgJ|N ziSJw2JhdTg?i`S;V!^q&KtA^R2E|4?CGN^0P@S_TmW9NDS4~APBH#W#HI8BF~ z21*jp;EUn)6M*K8O;G}y773Fc0&tdiF;Xu@03m|pIS>Fte3?!HZQomoF$IkDJ(NDB zxRAbwR?_^$y*wKfE(E+lU!Ve(WGe;c)C_E9yN$+7bg2;#WkM%?%?So!c0uMlhgXDs zEIW11gw_k*If6lNS*PYNmA)Z{MwkAVlMxTHV4-Pv3XN&VkIx!04_KM3f#xBtib@i2 zik+LjX-zv)Dgu8@(uVYrRXp*01Q!)lb^-gI>;~y+mbkR#-=085GD>r7vL^@m4$h9c z`Di^~?@cHXfXr+04C#WAHQ%YEPvRBy#gNUzLwr{wphzfZW!z|OHfmQSf)TA~8+X~% zQd4*!4U&BNse}v(@#ggSm57G-uj@p^Y^cv_={q97btMpO!xogQc{W80mHeqU-p6-H zdVDnY8LKpOhXIlzw3G2wHX-p@0i6C5(clWtS_*&4V6bH8e$vx9)Dh{asJO`;G{0$^ z^{Zkk14ca9`jZg=MlxJmxkF1;d|*g5biCH=qI5QcC0ZZx@`|sAZt55N>xEtKCJju{ zGcT;34O`Cu;0_la)~SD1r+A@GrQZ=L!27%737GJTf2CH9N5^;$nZ-midIWAN+SkhT z)Hk-Ati=gNb&s7bWbjkw{lsmnxXw+dl8wo(s53Ar{gwZg{Tk2MK$(6=^km#z=%}P0 zBOJqMg>PT$jlVA49H<5Spg&~sFH%?f15<%m+jn?i2)%s}t-i~q@n!npu`U2-Eq3R} z|Nb<6ho#sjnDd0kq`d=Pka55jazMKrkekr8bUO z%0g0AUF75ZaZMZQx?R$O<-aAW?x~aksnKbiVyc+zN9^cln>iZ9j&>%S%^SxEN`Ei{ zy;MlYkXgq>06NcG&x`=!z;s2Ma=5HUsinS+@sMS0uo-YMZUadcbck&ea0}9fTjrf+ zvGjWD>>mra98)XYQe+Wsl?cMs5yviS^%9+bI=n{tAG}|dlGmX@O^@1wPVeCKU~ti} zMEPL>*$M-kZd*LAJ)au#BRN(};y@oEEl%MJ2QB0Z#c=_={N5}*|)r4m!ME6suGC!biXXt16 z_HxAz7R8Riz7*m%f%nBC+(;=o5>F%(G5_fH5;>HKI>vd*j9i>US%d)}x|i9=PH~dV zGnZH`Qz$ym%N)w2smGs^ZfCKsJtRSHB#EO%90Im`nH>bFeQ|)1OolkIs46;y{{`FXf zTMGY%#cq(20416SLrOucXbS$XbjoBGL$~&N)xQyWMXdT-GLbbEI)VQp0B@-RE|X3f zKYjW?l`0Q6vHX78kB^zhrEW{9T6ANaAV%=&`IPBLXs=0oCeg)l^#Amc6#}*u8n=AO z$`k9D0^M{~8*mEX=n|Q@vWC8Eb@L$`&^`H(ZTGj#-tZl(vl9LxDXHf+rg=|`EKpby zem&5dON$1#afcg>CoGw%JM4~=Pl#U1u2U!x{j(lq)!Wnqb73&n)`Jj;!dQC`WakD* z)L7LsA$z+$nUGmAp#?G_*SeXIg~jCF4jC(z{a9Efv!=2iw=goSQ-jRSzU;?%8S!BL zaM<)vK4=M9sC|Yt1Th{cT+o!_dDeV=f6C%P`QUWWv*5)ChX=#%IQ==KEN;aUp0ZdO z-&dewFyB~~mziQC-XW{49Ff4vu(#S8b3rZarrg)F)HB;QWk|3JJcY;5)7!F9c}oNG z9_rL(%V(t-b$gxb^JVp*my#!Vw5J+x9~RP3J*k`QF6hjkuvF-SH* zB6i{tY=DM+fZX{N#)f$x+JAPbhc&?959fC|QnfHrA@wjR4K-52NvCDQWvPcnHv^P> zRzszxE*>hXE>aJ-gl74=Bk-^&^>Cm?b|Avzm@~@w{Or5U7Rc!Jy_g66P{70#F5l-M z(Z2mWCEA-^qP_WN60Hy_CLDSW2#`ek*Pot5d+XqHlW2VRGl_ONiS|^FL<3na(cU`P zC(+(YqKfAw(cU`vGl_N^T=)4(H2f%+lxPgz&m@}J6i=t-pnUxFBpPV{=}WZ7M#$gN zcSf$A$Y~inh*Ge{xa}w#vdB5q5b+%6(>R_vLQalPf*6wKO!Gf%x^a2o5=KQoTigClXf1oI=p(VH$#g&4cH(oBQ$uMg>72*7$<10CQ4}D71sM zNe}+PRs-wyXa^}09YXN2(=4Y}=LGJt zZ-^xja*G6{ff9X86=814J(7f=G$5?;xQMXuHl9+N9wH(5%gNO}vya9As%{<@c|hjr zPZ6@lbIJ>IPwAjl!u#rYZES2DJPxe%YN=51aP(Z0>rlP3lGw?bo0@=|nd7vBf%@ovEgiMau4sXeuSd zw9#px{a}5#`fR?qO$Ke5% zX{+#fh!#SkV8tJo>;X2HelikDr<<(V*g~Wz()ooZ)-&W6Vhx&Wh7_X$0}oHbTJZ^I z1=EIUPO2kFM9$|tit@uETwLzZw(qe%<}n2Hmo-ye`i1KPZn zA)_r&5$CX_V-0T>=AFKCoe_@WhsD3iK*AK{6hzKNsY35Cw^5zYOZ;h={RXw%eH)V_ zF-M=q`FB{07%Wa6WUGMEsi-BfT0B5^dy%3*oUP&%dW4*|FA||;ZTZZS2gj$gIb;N? zFhM=(KVPL9=lsC9(KzWY0w(x7@qV+dMZ(Sh3Ajq9zL(}}Q#n46$=a{=Zt>waXN4D~ z`>%ORn2^7Fdd{;%MFe4z{~Pb7xuI`LHg+G6kZNyGmHD{}PY5p5J)47G#D1h=TfIUQKDNTs zCMX(N@meJ$ob~c_kQ_4L`XD*qg=GD+hlEwX5R#@eZ6xDnJDbp$a>U?x7c};iyvBP& zgkzK*))~8(LD;d2!TezWb15`Y69}Zrlfv9$Y~exu{8gS2A`{9K*;x!8{$)cMl@sC3 zbpK0@6bslkcnn8=+CWjA1pq(d=AaMVS+!?F{bL?#V8eK7^aQDfpF4)F0MQ2220(jr zZLl?>%$o#vHJ`JUumo?z(~s!MPhXCoCXu&kqaB!Bc(JsQ;`OKd@dLUw+{M#gYmz_7oBAq3`fmNLVj zN#wJNQRB;UI)&5}VGdc!gv-=E|Ga9)f0k%NF`7OCr69K(7h!S1Iwfj&E?BHuu)3I7 zZmWP(u)F>pja?SB=P%0fLW{QX`bi*YU}S5e^Ps^3eMZ?&k3Y6l$2zd9?BPV{A+lJr z=V5D>de~`a{4Q6kVfL^$Fw7oE$3UWan=z;mdMCtC$>P~#ldEs`7`B;NZj7)y&v?*5 z4gpKQptAwcx!l5_x{b+}8??7W5y6-+rfsBunyICY$*s<(SRNJh+l_AvdR)}g`b5yP zMNkCBralC^9s<3Q=*7J_v~(|wO^KBGnB=<7?2E)HOuCP)0NO{^T9OWtw#~Sc50xWW z%(!y2;2FmEsP7Wgj^QDol~KEI9-n(iX9M<8;DfMJ&7q#UxL;Zjp;$cAYTx`Uszu9i zX7H2uuxea`8R!8ZC}9d=+`8PEck&rB%B_~GRL9) z?UA?{_9T;@-Lw|P-m>~AE|ovLU&+zZe~2}ad;h7{6GV5)UKdBEe}yW>Zwz*b1WlDv zr(%2uTo*{{rRzxrHtXwfQ1A?=dIwE*xJocoU2#x^o&NH8r!K9!#u^9&Lg4x>#Acd2 zC!F0km|~D(dO!`D9*FTnB8)?r&CT?^NO98bCU_;d&L?;!EVrS8Pr|Kz#jAjxXTe?E5{+?U74S; zE$}WRN>SYrIe?w?0nPlwKnfjv`%#k5=f}9DA6!kNm>5ZZw2W;9aBM(Wlvd4#b3wGwkA?$K&QAri;fx3nZ+ub&Bfr!>~A&wp+ z%Rm#G3Q9E(fSHjzHO4JGMf#DyC({<^?$8>q?;UonZVP+X2_JY{w)9qY zQZ+%P^0!!XGEIO11b%C!HjiKuvdem~T~1sTW2z1KaM`rAISB|hCvBQACz-2a0Q_Z7 zPrlwfa78Apon7P#@EvSWzcb@F2QZ=~!LTj6jsYDg)c}@b?RVSQw&npK?<9_8{C;o) zHo6Gv!1HvSHKL#<+es)vsL_-5tI^vYuEr6?r9|cQxzkABNk!LI;7B+_^i&*(^N6*V zP+kqqeh4HFoJWX_*h|O>$PrT3_Y%4z2W&Lkw4*2tGripjY1DK)w0}%jsOuYT2H4q5>++TZ2kxC=_&|i4_4LWtEJ8_6}l|7GTMD!=q!7wh|Kepem_2*rBvu z&;}qWc_CcE`G93SwGj+sXNmo700Xr%EjK22_T=@)zE!{#;RW3+Ri6J$4CDzrF~kN* z-7kDR-gnX46NH=sYLVe}N9IC=UWFJm)1lFr}_q8dYjaV~sG-gP<) zG~$LsT$p9T05nD{o46qszWb5*cK;a|^nX@(SH*Y4=~EjvC|v~XJs@>Zh{T!}E4Kvq zXm^$+{e3B?QCNiVF~qE;`-1L#lU1)+jVB5x0SgBsaU8+gV@-@*Oa#L{cC_vNn8mUC zqdx<%y?;()`~18b@{>BMUs>jkH6;>Xk^5VF+d?nL7M>?(hKt|VBUea|%1@fE<5{Rw zszvk2ud;bLW%46$`z%oH6jXD#q1cco2zg;XZHJISA;c1I&iBdiP_<1Rrdw#%^myMO z6BsXZDi+69mH8P{{8WofkKKBNB7`5mY@ujPx}^c+yCi50wHg)G48;7{TR-a>n#GmM z|1I)_`_%HczXwaM6?OydOe_YLx3h_Dw}P9MF7g>Q3uNa*+A2+O+n3Y3FUVkniVPNT zKrL@p3xrt`j&`omiI%Q1tEKZ6aBi5A>=XtI`D+F@Y~rgHJuQ>KP4F+TQBQ<2^#^^< z(~&#h?xHq7B__ibpTg6bpS1@Y$_JXG0r?2Pc+B?J)7y=4h9_3gFeTKt{O}{v#nnAo zODFY61`#Ob?zEW_VVE>rJmZ)FCtH=%sPat1113dH{5qx*Mk+pdbi6xsf7Knj{ENR2 zCa+j(tWbO0rTid7$X2LlK33@5#}JMJgV93TsSVrR1DgY_C)nW2s1f3v{zh}#L#fTPjkEYHG{n{BLPi3(L(}mfAfgtquGNY|_$bn$+NSWtG zV`V4!LJJt2(Y2MALgwr$Qi~iWq(2j4VLmbTJ;=oPFn^fyjm_g`#qi3;2YP+GhSDt1 z6jDpl&t2_#X#PD3>`f^XC(<5$5P7_uO8Z__V;O+TokNxiWk;rVe)Y5-e@c76q)!3{is z732#D(flY+EU5aSk!V2C(zCUxPMzh0x)SwKKM8Vlsgj!le^Fi9kK#i~^ij|1O0oxk z1s>gR=(KdMeciUUv&=%u?$7HJPOE31#&0XV#v^MftnW`OlXYE3dFiQcV}jF}C8v76 zz$bMrh;phKnGEXE!n)0xwY^WeC&%4W>o>`Dt~H%Od4^za{(Y?HUL>XxJ;qnTUz`{L z<$%30-gZN>C7$U0Cw7I6fG(b~v0{y%mQN}FYJ3n}ZpXG7P9K$pPg<&c{>d*?q|u^k)}`Ui@ll~& zC%deMqQoBcuf8!kfE_v;?sa(kj7rT=7h5$rmCJ^+=xifB-u3}j4+xk{|6vWKSDMj| z9eYz{Uc*O5e%ypU(83k9;Rs;Ezqb3opA7*aKwRPCou=h9tjqV_35DJ8;ltKV6+@aR zhJB%^J#`%^=A=kkcYZ6f0-?n9bhR^Bn1eVU?6ev?G@3J6r4&>+XUkHS@#;pF)wx_x z{75rBKrm^30vKCm!}E-wR^iQ3CGkD39jes14JapdIYZ{SI%dU{?q^97<2xwR$yx3T zZndC$Ix?#(Lt>b@+T6gb&EW%x=vX7&u6$qh{0I%#L(Y7GY^40s8_=kEd}_N~d9uzX z-$YY zuyaO!E_-sC`fPG^=S7?+c6u(TIV?9F(L8Z7(Kp>>zBgzN5`}`rY+xkkg+C0Wb6oj| zK;D*;5Lq)r$|y9=V5)VJeG%)D5VAd#KHlmKy-pTHHAy&DRWpKi%Ng;#l^9VWOk)$( zV!9I6!OhKE#X8t+$k5$Xd5g#gO>w`Fw&y|NQq(1D;GiCT47GHJwJwVF5#sS%bZ@f) zqR*e?JI@#6RM=wl;5{G^Zvr&_IetpfBRJoK6JQUl=^L~}-8+RzQuyb@F9`+q>3b>J z|0%;zei}{)b4IA?x47kZU(_-W%Fjc~ND-ewXz_s(ATrXafCL@N$H)kSPhw!fd97o9 zBhK@^l`;uztmVqpkYn^Tl{W99Pt0?WpAoj+-j*}5u9MHpA%lr6F=WCEu3-@>?Xg|j zPnaxVK39eh8O&!`qY%v0E32E)6W7xk-Xk0|UXnpz3U=~|Nv-q;awQpUa3xc0Azti} zzMQSejs5lI@fG(c{{!hcAKcgyAnZ$!2+8AnwsM+}9VNk8M`pPbl*TK<8nho^MgMHj z%wT?w$w@Y#LQ%GY%PS!d+4|W^1W0EUPt1hZNqE5$#D}Mj$s5vP3&!T*Mouhxo=ov4 z_7(d$iWwKF2O;BGV=zCn1D#++e)v6IuYsg*L|ZgsHOe9*-tBfpdH|dS609YB0G)#i zQ3Ltgn{J^fMBv-Y^ffU896JsX;sfI&{lny6YuQEDmTPep41LTE1o~w3849agfXy;{9|1>%*7?mTt_Fz>&YJpMruY(_Jc4`erV6~wT88fi7ysKzA{e8hGR93knuZA6uvoZh7Hha`u!n^&HO(|=sYgY(>cR>uP31FwM&c*Ghh z7d5R7u>Ui!8QN4XTb6#GU>bU4lg1`c`n~aXgC4D&tp9r1qelAuhGSO!BU4iPZtc?c z*1)#ObIV8S>>@HhDJ~Y9cCh!gev2!yi-t&U2dV%MK%fF9ry(ZGlnNC|!4REw^%;DN z%r=CSkOo4}pjo|+I#5+%KP7$Di5Zjrz`5Zg#W6ySdc9t&Mam9fNaF8lzWSqP#+1rh z;Bz#BeWaheiuP@Qrpu!!>FGv%N{p2qd!aOmTF!$*YJC%d%F?c!+hv_$-cQzUHyoPr zlFr&DN27=xMy9mF#^me@wOut{G=z}Vkw6SDp6z%7O_&sN;$_S}eB9OwUbD9aDo1_O zkvi4%-ze-P?h&)rMVMi;Toz#DsG!)tYQEiSP|PZm16oZfkAc6Db^tkjit~Na@9SV6 zi~zBB_#@s*erH?LFJGmlJ{!JlIS315m}JY%O$AY^Ag!i91b(uz%B!YFs`)DfV<}Qg zydoUv1AVDFYTmb^j7JD~?7#^v3`=};d?bNGV4?8iRn!@$M;o|2iox$*3np7p99Bg< zb|eI04GuP%(1DqNXI3d@2BYl`{dukVXyl5KeAc>Z`bAwaorD1M$fSF&wDc`3JLr?t zKass^pRgtQh@V#HH0b%D)`#zri+gx0Ir*cjZ6`i8> zI2y{HFUt1UtAfYN)WWDlS}8~$z0&=grY{I{z;HP8MA5YMjw{_e<+nr#6P8OMzmmZl(nGG)_Jga%imYPhstV~M`W_+uOzyG(kk4`WCL>Gl&_Jev*y8eJtYL4G6i2c?Xz$h;{c5Tm>yJ z;w+b8Bz;v@)dOUvRyJr+D;xF;xR`RU)H$p#oK!0HWuB{9#93@k!!nO%PrhrLaJbC ze5saKg$E0^W|S-mmj~Lyoct%M%^-qn$c#BW7i@Bs-L^WX-l?|qEDG9g@vt3RsZTMG z)`@A*3G0A1%kmx6!*=W;>5IM{dywd3&SKU=Ap3(^b?0CGHnwAvXAfQ4>%~8j4NF-m zw_~%dRJK4f=!Dvw_DSutjgStS(L=hvJjXFmrO4b@wG>+Iae|a55qz>c2H-m@(=3 z)fQ0kP((P zRPM03mGP^AXiU*u_p0U=Lwq7MYMV7EW5G^ntb~P6x}4mLTVWr4UC>*vY6U#9c#ii}Zkve9nStEak?_nh?I4EdWCIQZ z+6Or#n3?Jr0R$RovY@BdGvq!p&!Lx}&oC>v&75!;)cJzL;SgljWliZH#yD>00;hZh z7vBMXE4&5Mbqf!UkOgD*UHED(11*iW%L9-ZShgMWOj*&MFgy}4JmMH82q1Fc zly`F})WRjKTTb3ldr*j8G~5O4aqXRJnj$FgJ~P4qI-+4wy@*9!t>E9&; zl0LqKL<-FXkwh(pOww(yP@;}9TgF9n{%oXDXz_W8r7)7vs>>yV+XYkT0`Bqqdqk7{ zSVA@lff7!_&|>Lyqz*EIbdsQ2N;>`Be>5!tb&=>A>ocPGh_!FGpjhL#gjS^m zRbA48@=7lwwhTOzS`YO|Ez%`QXmKeLR>J>SwJrgXoAlmcZEQeb7Vj5-!mpUbHEOIc70|3PFF zrhBmz+$*9s{gfmWB$_U5K?&1K%O?=qBc3QHVl9M|sP;KpP~Cc)Bq3$+3kxb#UJ53) zQOG4a@O;El33srd1Oq~e7A_%^FqmXP-OR-$(v2>VCU|h;CB%_nyjU6u!Iw3lmcnc) ziHy3Rn;_Dsg&Z^Idm=4UYbkI}3m)>({uIu;pI1}ZH4od>!XCqU_lH|q0(hM6c1lzLepdkA53^bF^z37is`B&h353RFe~wMVr0)5) z?L;7zK6Th3^wg|0?Bx;I*!EgQw1e-v$H?P`6uM%I8z|2B-cBuoY`TQ!G^>&|8lw`{ z6BPJBmo`#>vsMB`+B<-iZC%sH_jw(~`SE1F>UnujF9ZddIAV9br$)22su~+cEU9YMF_{#<2D9(Ki&Nf_29KE#1htYh=_}63O@5= z>Q7irj%o!rQP=Gtx}5|dW5pcM)&d6PhIk7`CYM+1P;M(>OAIvJcht9`C*YoufCl=G zskbj}AX#-N$AH7-RrRgKAhU)Zj-a2IDhs`|7>fxT3&E-JP?W|JC?meg2vB1|LWqK* zZdN5e1$D-}K|(NkK~dK`AUZMLUd^zB<`U=57lSQ|*wC%vn(kO{pcd&CK%(O$SR9US zu>&6nkz=ecaqfKISZAu(hdL96)?a3*FMIAhQELSX)_EUSYf2U8&a+%s3^PX_sHLI*tJg+~ z*YK0*xZCygMI01i7dF}Cd*DCtJc$C9WaIpL8Sz)zdh>8HkwH80ME4(0;`~bDf8i^Q z{7MT>vY^Ts#-NQ5M2mr6?LbLDb<+Y3GiHpoPRCYKp)X}gv3ecbD1dzLK3|aaAzYTEKqSv)8$T2`pO9GW<7+3aXT2vdO?cgFvOb1wBJTEkd zYf3RqEUa2JRP`c&*x&`VZhJU|KI?kSD5qbzlIa6lfl$DT3)_axfP<#`VF=-EI6@pS z^wu8G^WIr*orSX`nfKL46AV*zHy+H$Nq;t^e>SdHw$1BJSIH~I4`j1Av>vig)@(@? zzEdMb$l`U;cawZji}D1c5=RkbBk4znRD$SaT{bbcTwcTaIMKQ=sHq%>Uj&6k5+w5F zgMsu-I;j#Tjlzg%7O|~AThcGIY1=U~Oijz|OTu=T9csEmvJYi^R5%uMX;9(go#qC% zL3FD2KFO;{>m1;w$QHu6_AI*-s+@G1_PV9O0Bsb|KCTy2A@$V4Rp+ECcu09gwDo^z zTW1K6N1%rxcM&E^NTQQJwMm(?I=LqPMwS)d5m|l~{?g(X=xdR*g^!hbfe@6ZR;ywA z%(pnagN?$r8H|Gh_<;J5uVwxcQ@x37QY>&F2b(4x1nIMhg?W@i&(Pjm5*m@#DZO|3}~23frr z!E72JTMB@NCKrq!5ZA+C^sq-3e`GqU|%MboNds=@!Kgq?9sd=j&tjYHj z53-7mh-VE#(nV<(I5=Lc;;a_T*m;omq&SDF@c_Q3 zWU}(B!ghWw*%|5QpaQ7w=l?zbD0KbI-u%L{yE=`RW$_kMJK3UfTNY1NUUfIFi@4Y( z*4!@kHr^qv@0-PQCZh-1b+3y-`gn6HKlSMR=Iq^0V+yLtcUd9bg23VYqksMJ`?uvQ?wwMKvuucY0(mvl_phQqketq36Xk)~ z0f1EO5VSFnzvMQB-+*W~k|>bqv!|=u^5tqXdHIw#*V>qzec!Ecg7fdgfKYoJIz2^` zPki8UVmembyEXsG(=<7puc93V))F=H8^BQCk~Qx_xGVe%u3MeFKO6Y)nzUf7{mlKfRpuI^sbCsjiv{DAgqqNCANU zMv*cAk|4e`p8#80c%=O=2EKPl;N8-#;Td%Ss;T};HgLCbj4fG%J~M%SpkI4&vxbu(S zex?0H>Q7#H;%`28&fkL9$qSEtWbOs_5=J$7;dlS(WMaP1+e2GZ-)T z>o_r9HpQm~oHyAXO4ui3jLN3GOEAMGdIZom*eGB-n*b`4XCaf#9|Cem;z|^QA=FB; zt4W_z;5i|_Iy#V0a;!N-zilbf5wMb;geH@}1BwvJMPcAtX}M7uq+t58E+3gvZqc6- znO5@#sS!%%W;LrhT2*sO#@1P`q)N;8dTTO=tlKErm?$+mUR5sw=1@D8%YeLl@H*`p zt&xeS62sKkJj||Y>BY1($5ovm9;TY(sp0Q#Nbq3=%G1*WdW{?794QZNAFus7OV&%< z%3GE7&nNrrFKSJa?h`sN4fuP+4G`p3m2-Fa!>+DiEAi5buqn2DBL7=eyO}_tBcy8f zPD0L!jDvfRqZ!^PV4g&H>3TlGEQ9WAIfNMJbx~DS8)~0P=jcw+xhEqf4rG(Eb?$tm zWCZ(!kN+<^$NoteJ9I+IGrFVvKq%;#R0v$z=&00&-_9@!fmG$HWrq=lJ0p4|QqoQ; z{(@uMNa@dZ+B2}+NqaGTyY|Upo@mFK@SNOu16$at+OmVbSd~`898riY2ega0m|5gb zN1JVFei_wB49choRvt?X*XtNv^iU9&DbV z;s?qWSgCC*{{Hvt2CXhxt834Wzb!uk<29J`K$v zJ2%WHP(e~Qi$rL`cR_fXRr+nSjDa_TsK6Nuf@^Bb3Q{v)gEq*D#+qVjmm)5cGp)rq zV&nAjU61=ttNiHivxWM<WSBiDVT|x1A7r;y@+>;m1T7DlH3w1Kx~95H70f_ zdlk5~g}k&AD;X?SIx6-lwy0i0ctW+$HQO5*ieT3E6e&$_J9#h^!5Z#10dC4#K$D6< zA?cs46Tu7qlGdyFHFDQz9$TM3$^pkVX(X`C*2>p0CxiwZkGKt=9FEro35q(CxCG7E zHuq|!TdnBsW?gJs^YTRW=xlB+9apM!O~unN2KCk z4jE&RB@;Gnu*tGjn*OALWnfi;`NKSyx095xrar?c2C~(1{AvF^O2H{u2({pLLCNPA zkurR>Dyt5H12QqJ&sT4gFxSp|Oi{kKZCHsCZoC#?4(khZ163~@v9$=pu_eVcWFxxH(@i!>6=H@qvnw!>J~6CuVQ+UU zy)cTwxT9@)1KP-Hc@N~l)WrOMxO@9xyRPcM^PY3>yYIdG?vsu_EnBjE-bG2I#tND$ z2f2*9TSo=5H6~*x?V0jW`GcvVW+=;{Y~y(7DcL-*Aj)831q2a9kOwGOq3uKo1{^+u zAc6>5F-lqxK^&q4g*a&k1U5tvH_Y$1_Br?6rw^l~lj^Fm%J1BB&OUpuz4qE`uf4vu z7glPNWG(j(oQu^)JA#HVX511fWaOO72p|tNWqQA;_=BZr1kC-gd3*6omjfFZBy((R zkq=SF+A_voeFKrFGmstJk!@HSXt#~%c-<+cBv@w?>)141V3lh{+uH>O1H=X8C> z$YWPB=8Qv3Ar}c9L$ULPL;($yS8hUCIHaBje)I4`>S0_{>SdO;L^}~Ko)U9IKkx-B zFFs--LV5{PjAmd7k;XeF76XWpU`a50(>P^;6TYStno}U!_X)UKUVKkZQWNt2vq=m> zJ_{5|5f*Nvj-)IL>U%Ltq%z=i_`DO(*$*jXkHrM8Qx!8wmlI>oWfhO%9hWd&FDWMm z9q5G?oa?L}4qw;J6u%}0i@o%#E}1+oqxfRR?=ty=(hCPrMQPcCziMW{uMuY8kX#fq zK+k_s%m6Onq$NGV`I*6yvsq5f4C?wt-g%h;0jkz}1@K;&85HFj*3~P{VFrE2H-g8{ z#|(lIwAhk>dz54{cymJa=Vt*+eP>g9)rIwmy)jzk%!3fX-BdVe?>P znw(C>>LjI8=w7>;jpMGTrXKER(<&89)Mjib2{_t5vor~+LlG}KUwHH1Wrl>KklMy! z_VSM6HqWbOqka!EWmYZrG~JO?sXs+nC-9&ZCSeXlOEwL31}uP~!h^vz+@UT48P{XN z`q)w3)}p$$;jL?!Fv&N&!(2e#a+ipb4Msa3<;qHEDz^H(MZ#!hqOAcUp_lP(%;s1u z*&%Ox^=j5yir?t5i|%0uZ0b6&egaYRdteD;%u0_uD!Vs@C{z;ph#83H=nwnfVdP_p zW{A1zdX4fM{TmhcZd&c`)lh31S$vZWg?;?pe9x|Pdr;zl2tnKJZSz<`mBQ#PIQ$mv zYF%)Gf_21gQC_%M-(o2o_qmFpL)JV~6aJugJ)|>Pq z$x>C0Z=*PA($pr9)Wkf-)3whv+Bt)O3LcR2dOm2i2k7J56-*I$(Myx&fd?2Hy7)9V zxQSco;cR2Ft**lrka41 z(OSWYWz;nRoyYSV;z5u=ZkQrx(kSlFCZ3=gEZ{B#hHXUNg}^U_VdUe<$-)GWe+ikyWa zZ5W;#ROEOLrh=5_!*eOQfQ*t``PpQ|r)qyRFHAuK@R)IiX5pF2!+Dz4Yo=(B#7__U z&4d|}1dL#wB%lf^UIdLno(lqrm=E)TL>_q0R=o}+T1s&+*Kcpmv4~cYPJ9Zf11pHP zs=!)j#St+tkS$W39+TX2?n!fjaRTPd#30XeYBB)D5$vEcOs6dq3MS~K&YccLA_aXi zG(!lU>~zu+G!6Z-SNi)!Syr2%@UJ-AxYR5d|B}~IQwQKK+DMYF&RBPRVzM{YpI)@M zSh954@)avDS#{}UtJhq9#g*mE;CX9*?8kp%-THs?{Hr$nhm$;|rU5w*}7I z)Q>H!>7y20(A3(61s*@Aspl;$@O2BA5@!f3tNiGY%zm2!i_eE2miEzt4_Z)nf#Hy_ zKF(di?Xo2@UPJtS;-wVWfJYHZt4Z+8(;W8c&nEL6u;8LmM@`dHT zXgRDi^PsF*Sl}xb;7C>rye(QHi{NNW-?TuD*i^ur+9ROc|8&%#&ZYYPC@7aMEVtKk zeLg(9+^U7;_FJyT-l?|8xnyC1PoxF|t~;#BwTfVo_Y=^Uo=(ivA}ay#hFHnLxDA4;;fq-QpOJI*QTJRGVlpBroF7XZyqzjaPF;z8!a?@vx0P_tC zEaw3jY!H-KBesXpg0KHB1ur>YLAD&D1>a#o(}xWwLE23KWa|H87D(Bw>RG}fKU%|= zEbzS18qkoA7Wke87GMx@WVFCr{(%C$R6`%YN44R(BkxB90S&ubW)QR;3 z7IVm~-*Y|WHQFJYN+5&%>>w-Nwvy-i`nGkbM2m+$nqBbvyiA8JX{1YqFt1Svt@22r zBD^j+q>vqIjo1ei;FX+)XFMIVi=5tTM)LIHNp5_&b8JCv&!R;*$#dS&V@x=f;j~!f z$aZy-ae5n_*wEU=iOO52MH2W`A86_}?jm1k@>FGj`Y3yb8J=VNztdee>e|`ZeaAW5 zcYu_WY=e`GUC4>Esdp zKwBk8G5~;r|1eWIbYk~F(QwelC)j1Pjbh7dzDz{@oSi6HTseHtA@5ZH4{=ZTAfh@)phGv*_#@l|(pS zTY)LjjvO0fmza)}ifxPp#DVqv9nLX+A0i#OSb1V>UdhFjI1Vw8H9p38c-}KW#`n}x zPe!;fYUAMWk~>HufP|g(b$t0C>?BWpmJ9G{^HIC{)BLviNuMv6*|=hgZ9Yb)s>q>NTaXy_^qPaS`H0xD;Dw#7M5LPOS8U(K|0zB1$u%tdYj+N1zYV&7jhX^SwY@hVz@Yc?flci33dQWs z*s;b6Qaq5Qji=ww<)cQH*I7}xEKrk`>$;IBY%bOTAi+H#u_KO@%NW%7CVa77HEH7E zp>KuY;3feDMs;&pj2s~laaJHlU0RXV7Y_y1(MEA*&B(5J=#+^RIFi!Ez#@4Ex) za1%4+&2mE}9(7>2DRc`t=na&Bdq`XDB90-kXrXh9hUd6eI}u(^FBxz^mW)$m?JHA1 z!0Q-Y=rcL0XTO8%>_Pq%2Nv@zhbu35HU+DO4yfzdl~c{4givpeNGC?)q1F{L~%PKTCY82g$I`^68?jcezg3CoKdyNYa}p>IFrf2(Wx)p!q!C z>@H2YsXk-j)hv>ZG&+sNS*w+|(tj#9P+7OhD^Xbo)cjxrT3$#R6Ok5 zwxN{-2Ii|T!G_ttGkg@$z^=Zw^`6jYX?jB*&|d4zj*{$wC|hjFer9!9+?%Dv*fD`R-;cPZUrUB-8ay66AyDHXNDcMHFJ3JDhqfe4UIHvrV2yBaaI3q?;e zwB2x&0r8mEHqZ~cLx_%^m!Pbjx7txLjD=LC#jjoN_6I|Ip45afobZh5J5NI|W5t)2 zP$RpB;6zYCbi~i@Irn6@e5XGpzPC7=&Y3k)z$29L4 z$l_a0FVH(q3jyAFW?3L9oZf=~_tpgHp>+*1|8xnnte#sGZ~9MOLa;Fjq8S1V3h&*6Hs_wvhRdj5+U zjcF|8go#E5n9U%Zr~br~&R8oZw#-2ZoSle!n8Z8FR$@`TbeKx>AoqB}v7V4d9&Cq~ z)Wk>}FCV3_ZCpbOJ*1g$~icobm2^z;I3?>f)T^ozf}60`(iD=On7ygr|BG$xGe zxQ+|U!!>l-(Tx9IyNQhfhB&=SP|E92GgUmal;32Ar>@6817iE0S%H@%1rwrE{PhZ;d&;jT($^CRq=SC(Ai$Uo{o*P(=(tX&3RLSL zVse@ICxS8id1_f)gMpMF1gnZqU-_JnV4lU$GVIJmbrMMjKk1Os=tt?-3_0}`@199U z-464Et=$s6yP%kk^Ai&f5Sxm)Q@lIQaSbYQysO;+mWF%_XSPWSJam+$5=KnAkvJqN zi9^ceNg`1e<`Y{(UD{VeHRloZDZrJ8Z~fQcqbGiDJiSrRPw}3 zsaBIo$1i9_U%~mq>tqepP7ksho?RzxxOb3Fs;7MQe7=KNswccTEpz;XMUdummpdQ^ zEcdp>jc32-<#yJ#8n&8yhK;U~1H9Su?d8(p5igj?sK3)J5r_2+%CBvG+Ux5(FUk(_ z!$srcUg_QLa7AaOjk^cJcboM#?)D*-#i|>3d$aKJj(0jW>o3R(+^G(;_I=tQ)1$FS zjyUAAChK&c0|ny%@i}ZT5JkF|AkedD;f}9w`jNc&cS>&;4>&%!tWFK!M;8G8!~(!i zi~{~~7L)%Tz|Wiya73Sr2OMxl06)F}@KXx_KRF8c;iO>ur(j$!=)kzBJ{#FcLk$1k z9JL%*w%uVL-IdP-gMT1bit$u$kLv5VfUo0nH5!fPI6k~{Vm-$RvRy(jI65Ch0Hd@& z5AYMcU-ej1{3-_?|J3jyNp#GUo=vx$!&WtOI;*~ZgZTT(+x~#089<~;FCdFd;x(?P&}jHHq^yWX7HqL zv3Dl6sTN}#fq$d`8!{k(?WY|uPL?`Vr*nhAa)4ia!f1lcQrwtsn6-ar$2sF{t;thL zrT)~l;%Ro<<^(AVhm~A?t0MHWlq~Q z2oo`g{9eTlpUd)@o|j@K=64?x5MeJ4W!lxd^6C7HXFl^$s|XJQWm#=6;ofXB8$-p; z&0=n@X>K}d1wmXyrbzJ;7Iu)BAjJtAgJ%quq$SknJK1nui#XMbVconPnJ!#mir3@t zj8DsyQXzhB#d~7!*i=}*hzV;oa-#QuG(D(eigPj8TlAp_-MoEjkZrHJ_XN4CMnDmw z$4^$g{&GHA2yTxA<_i_Y%F^D40h-IHQJern4Qh19qB3HTitfLHWq3#K@;v@K>hGdH~ zPTT?v68rnF7@iLdAlP5E zM$;8KE~1xQg1RaO!O=7IO<^$HX+l-2OlPoeb$aqPR;ctP%!Tr2CgBxapP7slLCF2O ze8S+WS=^h%*#lhB7*!9Tb0=opn8kcE6NKK$);QF*Cm(oBj;734yf?r`K10$z<20iB zM|%#=Y45l`6IY)<)`J}f_kR|-zxJSF;~Zt!P7r=o<#=A(Cj2^!7U8<)-M!e_GWS6Pp`$-oCOZP|_@-rJQy8alM*q$XZDDk1 zJzd$lqh8h{?nX+ii?5yKydvMh9)@aMb3xg#p1kqh-f5h8$$@f_ekBR+j2*JHqy@ zUA$GIo)dMf2L9<6r>|r+I8&e4?8Y2r@Eoo7{dz7z6_z`+Pc^`iq#%aCmI7?bg2eVL z?Af!zoVc`vnZ5obxIgo&8*`6OB6bgTO?#`Yc|u_94+JeC!%w9z*sxfSDpNCCUM==gYkE*Lf zE5I>_*e(;bcnDtokRf$UAEl-W+53o)*5ka_XZ7y`{)Sc^J_Lxw7pliF9;;VBA_T>M zUcs7?SFM7bhs-aP#fTi=9O}gukvGpVIV&PAMdIwFpu!t!0)aN-iR7DzqFc?y6Dn(- zs3;0H#c&3u>$w{YjTyQ#SS+GAWV@^WEeY?PtUe}J|DR}*30yt#8{9m_lh|l}p`S%w zkwc3@^XF_MHcc^^1R34do#^PY@n3S-dBXAtSK!*b{c!NFPgUx$X`NI4t zPwG}`J2LmX8T|k(FCIisR?Q()8Kw?!GdXbCA(zQCXNL=FJpl6yYI>jQw;k#ojP!L5 z+9sABa`-PZvB&Bc4;9GG&;Sq`uAaIT^c{Mm!`5;L%Ra{lPgUXjjH>6_)@*~>TIV!*G}Yf3T?da~=?sfm-BYX0^-YG>V(2aV!p^iX9LyXR+mpVzQ~MhRX2sj~&o* z}ntF@6KS_LUSpF0PCTE zHO@H0d1nY~N^(;jnTHj!psuL^7$RbuoTx{@ipR-b#x}7l&TJ!%E#qeInq9b{2HGiJ z#k!sqpY8D|#seBJo+WVX?8Ma&%nugElI8kf&5feU6GV~vKbbb{o|J~ zu?`~8quu7(#DK(r4yP6?LK;TktF?L)A*`gj5=-z%S$1WiXASZuG@Qt&hO1y&f}~I% z$UPQvjVX%B#^^UA>#*=wR$6m6*689xMDe=5HSJPp*rOib+X3rAf=#3A&SAf8%2M*; zh+TMs9hI0>8a%a9Tyg|Gf1hn*RpU9I%sPLl2`G&kJ_SxdFMMg_soP~VY(8U@fF;afO3Dc z6xUt_Ww-3z=qd&r6*6FaeK_0;)>wghfY?Z*q{wKlWEO>&G`pu(oA0E!jb31%1`4u| zNu8hlih+c79!rRwe>a_fF;`~Hb%H^U8ysBCFYCgoi(m8?{P3s2g`IQfS+A>rwLU2t zG)4ktIHf9t5pCZ!m>sZLP-ghmqHiFCuC-PV$o|u1_(%_ErkSe$sw%tNnF#_3Z;#y` zdox`h(EDMN7q{pUZ3GpVxp=U5+(ZM_zT@cMf2umprTEJwwy0puI{6&}_+0>_Hz8!% z8#cx4{5woTTB25hfiEec?ubDX+RcMDnjU}Q1cwJLm?h3eby4=y)98cJC@a0d1;?w0 z54FtQMUW2Ktg^k0B7`%A=PmsuF;J7;uvT5tU9~|JwH5Yj6irb$0qi;k$tjOBROxxi z$mky?VRol@3!A$*Ksn-`CH&%pGeUWTwBN#v>J;FV>))Kj>7Y}U;;a}BaAiO>12&%P29)Sg_`1#ovw549i?I(QFl;g67tFr+=XubG9=*s*w zfz$}VcAC^4+kI$>*+@P5ZkJR5tvWAHefccX{PmhN=eV9to6giko6gj0qT|u+1W>W} z3c$k!Jh6qCv?=?PhVcNPnGr|dcNRN1Uvu+~G}z6C4dEw5=L>v|z^t>~DF|>TwxpY( zEs}n7DezVT_6}v;2H0yk=pu8Ti7*MvfDD zwKn0xRNXSh&3uTMKyqe0OU&4IH>dE1_4zf>Cu*~qHq*n2oiy)^F0`nftz})Z1E@W1 z29cbLN1@ne2#yU$zUIgXNau%E`aXM@C9u*zYiUgYS$WadwOJI-#$a>MX>Q0Uj9%KU z&d4r2=yWeR08?J!Ln%QBFf(NPVLfh9_j!el?yc|laJ2_`Cbp}mI4v~{$rLSF<>Bgc zJ||5Sl2JC(%Quhy163S#jjQIO0u31$i)8aMIn&SUWyX*F8J-v{fjw{LFcaOza%t9m zHb)7pu+|rM&-b2AsYKz?}F{_<%=G9M!oQWw zO&~50VtaX=vYYa+sGgtPyUA~1KVklRnrh9Vi`t3IxOlgN43tZY@=lgd!51KI)X(gJ zQOZAG-?J=dS@i+Aa7M?C7RSOv%~CCjxy6UP#UmqalLZmu;^yq<9z87nUqX(mHuy#5 zzIe;O|HUo6Ev@3yi=r`)bIYp98{yJzN0j^-{@FaR;LlF0A&*AfN7H2X$e#NBtGXQ>6YWZ0RZu^7t>L_rS=q!Sq)WOHK3}P>fAia zbZ7c91l1h-HB1lLc8Njt7IJ*pu*wPK4_iTC7)(~v;mhLp@Cm zJOgqfotx1BR=Fz;l}>chpB4vVF0X}{fTWyZF45aa^TK`rNDM3)-xhG_qnef6B5O67(!z zd=O6ii0eSY`C~(z^C&)uQr}#4xtGLht(+wj~^ev_=PA{`~y>bL+fF3 zSUGKN?7+}lTD?TO!Z(1wY%kZfS}$z1g5R_rA+~@#_ehtK=RWv+P>d(c|3_3SYXFee@S1!nTj z{%=^-5q57O|2KWzF&K-PBednq;7cpa3chNPy(qhe-xR!eFm6Vs72sg(KMp!?g!DSQ z2Hj0iIMnvD$c=nbmre!wXv@F9e=z<=y?1u`IY^J9)f{O%%FaXE2bXOB6snoqtAh^_ zb@X`g^DwrQkDG4XY{{xtNy_;b zWJey^a@+Rm-{1MjpbNZPvU^!_R)7b1C@U+!S|rnDQRdeKE`5CQ`A4>pkcxY)t6bI% zmU$^DH(0)7uw+ZNgFQxf*F%Gq)$Yf`{=Bj}wDaF?o1Q3FRXfxt$i)19a=b2es>SbAr0P`} zuO@FCT)J9^-QACUn(*uDSuQE_^aH=ggUhRjxugdl_raR##PGrHkMZDz)e$bK#F3Bk zU{f_aeDI{7Y^e6~JY|@3e5zv~;r3SxL_u@suB_(X+^yjQC*A?!6nq1<*!?gs4zAyU zJaB1w$#!}AY78yKz2)Q%kx5pt`_l{^CEs=*r8pTT8@46U*PvVr-$ zTyy*O!AfkBZzL;QXUBkqxO`GxD!094CfkCTD#fufWz`b%L1u_!rXRi!k%A$#(p6Tf z=Ym|0H^}W|PQFj)4FEH9GBc2yd*OZ)w~%^G_sgk!?}G^1I}jq^h-LfU!Q{(Wl5y%J zt8q$^)7wU^J+kuy$tu_4>VPQx&#Ro!fZ?*u`3vR5y&wjC<-If05OW6t1!R~zy(uSe z5rL$ZET?z8%-|0el$GwCE)fme6YS`hcBpx*VS5=<2S_FKHke0YW)Ix{z_IS7TUp?1 zoP&CzBZDr35KMIZ7W&4Wow*Bsk(ZYQl&cu6B|982d;oTUxurYq-GXG=Bdglfy;MpE z7~&m_ak>27a@oBUm|-Hu+Q)Q8bmg|4Z?cbQm zV(z__(av8M8PVrowaV2m%HZGSC4@)0z_FpRdO&(vxzg%cSsbFyt^N`*-38UV01CjC zTkqR(D?i7#EWd9-BQBavBghw_$WP3EMcT5kVIi~@?F=e4Qm?ew#I$&#@}(cYHnZsh zL=-R8(S3*Q7{2Q9Yem}0d_rpLwx+(p05*YT?mICBANTf<D|)J`c3fs6!sVixQL@M#gpZbGd=xjKIWHn}AZwfZWa1 zzLPb2cn01Ouf9t6*_h>!e_)6Oh3m1L4Oc`F>eChq5^RIa_jO?rYmqXL8lD)&JwQu@ zWukz)n(koE!);ZMU{`;%@Vq5b5Mp&##h(tM00TzeFq~X^#nUUfSxZ<#V|E8v^SPh+ zGl1esgoqY7T}@SZjr9voDBHfa*zN52vc2sNY{YcTeyITo7pF{ ziw8BjItG#yJ=(>pR@B>HkTR`i=Z8!M;%6tq0$6}&`M zAV!8!W9B43W1vI##p4)m{tk((M$5@IBI0m@1!cn>Aa_>wbI|fsyBVFBXQv1Zah}0) zoo8}f@~#GA(mZ!m+N_jhaSYtkSe_b_oTdL1j8ISG3sg_N8(m_O3qei9r*{4!Wb%Yd z?CT&R4pTbLZc5ch8>tNvC;{C97wDnc%`V&xHDJ zY6f&HtauUqlh^!cR#Ud{j&hr}fDiGIM{O+P_Iox0h(9@%_3J!?eb${^nP-VCqRs#5 z9~^uJDYxvz8WHG6NB`_UG0))BJ;sK0gu%P5c$yF$R8mRBydj;L;fpAe?klENV2|d> zF4(KaZx6!*tW#ZCC|6Ww_0P#J*egCWnq83UkPG#gFuS0u5bIZ+T@XBAxryw8@$A|b z5e#Km1hL1JV?11#T9Dpj17NWmFZBTJnL8Murz%1L;AV>7c1GCvkq=!xtwzFM$0TNqtv-&+LpRGDI2o^ROa*PmOVa!J$@Esv%P#JZ$qEskjSyqTo?MK(_90=3PLqzeRVDn!P&OHWM8 ze#LC9CLxSf?t*&~g5&`^9VLXI02Vn1dGe;gbO2Qk4JVfj34tOtDMYE^ z@D0mA2$o5taDg&G2$re|A*BS2){uSAAq2cPlhV1)2iTJk7~*qiK&Kd}s2& z`7r;Vdn?zW3+DeDb6&x$Z5n?%G>QvS|J9vmaEjw2ss946^&DxbYQ$flY!x4zP;N%Z z8>as2qkO@r|GQHuQLLJ##KG};FLD44V9&?9Y4OR-#V`E()i9+jv9X4+C$vet_y=u0 z;DK5eA@IRz$2D|2?>oiY*qD^;y!cUR-Ug-ivsDY4$?L*3sNMin*%Tw$4;>aR?#ylH zyyzd>j*!U32Jsy3Q41HwXJibD=ubL|s`xT7=E!ulDPbD597b2IsKlg;a)^5y(~qq= zw4W-4^OPI{?);+eE)#Q77h;Jx!N+@66(a|bPtz$gm{nkDT33>#SKTh?h53V_?%n(r zT*;7&EVQkPG(Hfi9?u%Mauh?$)HD?jZla1ra8`C3)v!8m1*4O+xb@EIvErzz2zKRY za^GA;UU|{v$KBOURcbfJea*6D>vWwb6V3Z@B_1{eVZAzTQpd%NdD*+rs2$VFL)Y0D zd#3`FuD6oG!7j59PgjT9ti+;#6t2LpC)s>@U(m&z=oVj(MCtHo2hc)6#ZMKj~}K2MzLV$Tq>4Ln>@BXC-5L zNH$WIW(Lw#dpeXiGHP+ZENE)HT$a|op8G+NA0LQI@Mt+kbhw8NVqgsnj+e^92=EpF z2IE5f%#Ub&vUJs*|CVs$SRxZWvGi)d1Hc}iIHQK=DB;q8iO6KU01&9gb8SgL4oie5 zr)GMD7H$B4xU*V^X*nH2-h#=(%4sHjlG!%+E?du@&-21ttT|H zHYoVuZxEgp4!TFeha-!Xti11j6rTNbKgFudA*0}k zRpu4?wO4a_lC58JlC>drbt+e_<*$UBIFezGK?n)w&M;K`7br@*5UfbFwm{>Y;rgU&E*F zv<1CFqbt0xn91_Z{&;x;JdcAL&wJ9h?WY(ij&qG_J`q(kCz=Nztupwd>IGU!2cD}Q zrT&}4+y)+U$(Nq&dp~YP%{lcqBxqhb!}8>29sU-Y#GDy2tZB1ro@vmc5c1@(5I#p) zalJ3ENfmMYI8562F|9Z(Wfx8mv-CjZ0mJTLI-*|mDhY}`LLzPNf2MqUmMMT_7991cpmVqDb_VAp33gkwdJ5e^k} zU_cAxUuRMWh5qowz%#;Ry6v>Hh38|39aD7NMFy z_0vdeoUdBw?^-2n-?^LX6TzbM9o?mthLHh>$J+nbX)uSNTCXGf2?mbE45yN|E>E~>000|WSFYCxaK`+mn^>32)!d zHr)Uo8TFv^2=W*Tj(aLjz*d)fs`c|6bIXqpP2FDQzn~bw--ox%zHjWl9b0C9<&Qr8 zH<+FA`-&~a^_YnT&qD^v$%pS9Ec%&gz+fJrk`8k*KBc_FD8~z+PD|c~)=znMuN}Qp z2TdTzw%(~Y?)9$e9?SrH;lnuIwEjbwTW#P!yn3454vP`e@nV8+zKx`_F5hg56rcZL zO9hS_qIG#JWgA*Ac9Zpj)=Q9+fpRX>Caztn#vP=29=$%n;(dzP%ayFqa!< z)_A#jhG^dP?OQn*hRe%mNc=0~KEOioq-(>K#KCyIBGLrr<>kaZdcTHzkX~0u64<=F zY*QOaqP%od`wlJyO1_c{C(6H^%Sz9CW7DF-9?35GJg*>asue8X)IQ>MStN=jeFc#* z-Y+34#w#wl2fU)rKJFFs!ZELl$pq_lk!GbF|8hh^v^8uFio5SZ=M+J^=hVvxXJO51;*SKrV@YvRt;H)<{JR1a>xljohg??SiAk{rH) z60E!*`o-T9YJT#Q$WQC4(;xg)?M~n%v<@Ay=!`tfS^owWa#I+Lq~>&QafGOc#?lpjJp z?tXM8WzLC{G$fA{dq#$n>A>`5bRh+api}K$^QuRRw@lBExJ5eEb+3Xv9x2{7{1%~! z!IvW_k|E;3sq7k!wc(qJBpX`Kz;Q#f7RP-ei_ozzF{|r0YU%m?ou-mFwlJ9D8M5Nh zV`;(b6s|w5AEWl40L4{tkDASx9P7Aru5GR5g1lcQ&QtyHz4-6^;4>b+9uNi2OWa8{ z0U{p4{R|pz{)M-_nLbJiW;{3WxyA_Ddja~P^|1us38PQ1xf~uQQizO(v9``X5((dIvbLGiXU^YI9!%s zFp+T*u;-taq!K-{^qk=}mdp}v{nslLNM5GR?;H@cOwGPurvU|pChtXGi*fLO{^v~MjchF6x z4G?q2?zV$yUy!YPQ8t$`mZXLtW*piDJ=xn~SA{=yT3(;EHf0=Iv7yBR5KHdc@VHDc zg~s|qP@KQXx*ewN!AWA6#y=g zsF&xpCh$b`Ld^8gs4+1hWtn213w%Oc#CDIAnf0Vi+}l*{xfA(zE^JhX5vxqlJk+`7 z!F~lVn<&-%4sK4zcKoW_irH@9yuzJXH>{a&jt zd^`fBT^E;NWHgT=1kQ{%Vp68pdn=>I+WKjuxIs)S-cZt2h&1d7p}C>pjnhd$d?n&k zJG8ZvRE$%Txm}I|1Ug3SFaBf@9jeeQ^>a94U~c4)NV#_?prLl05`tp~y+h|Hv-qAb z$j{A>;_b!d#C?cO4p9P^y*+cCqiY50*i^JX`p(~#%C#a~Y)uglh)E248>Nr$;Ka92BK$Oq) zv#v|b9Jasq+Exy|ocphei7Icv|J*6aQnP3*Z?#%kYbbM_`2n&2Z&=B)VV4HBRNE$q zzF_F##c{C2I@~m<1ZMLLY8o|?LGIzb5i5-;@qO-c!gAfYivldyb!LC(JYIEfDR9~g z#g~`OjPW>W?%h2VA44cH6&YU#jfY;B;v85DpPqNJFbRF6Vy#in@T|}G;oEXuQmn=j z8XqOUj963^RD$JP0|jTykOn)H-VR?3+)Rv*k53q~2IH$1UypBSLV{oH!DX1Pz#D#X=$6bg*ygYW#HV`|wCyoxl|j+7&Aiv`b74D-tUNt5>+Z zGk$~-jXcAxo$1`J5LKFT)J`rZcS@r)1f-qnL;DfT+d|5`^udRdKj5FOMxgWl?cPsP zzzsI{zdpPVNxC}Vyq2F4;fj^%%rRG6H@|_NRRW4OS0t{DVg6VJ+r|;ZK zNr+js=z9EjX=g)gAEhTjKWd5Lu#h$w<@Mhf9#jJsQ3DMC0bC5i@QDD%P&H3}B#;Oo z!}eIsM}SlS4s86(H;PztfkqXy|CJg|!4WmVFX$=D)xTDw-3#@U6*9O4a#r>1e}nwq zJTuQTpYnk`vwBj>^i{t3eEg)9=Xo2PC4M4%RLqiOc(`zmM-J+EjQ~a-u2xOqyW0wE z2%s&YaVh$cUg0>~hr-5j`J;H%Q z-(|Q0tEARGeB9 zV=eH*!4Am9$0^Qoqe(_(eCS5Wn7cG;jtn%`E|uX=8+n(GM!2xD8Hiq=AEs;i%?j<2 z%hST&HS##>m|ysDtY-E>b}pkV4!7d#S&Io2CEPDuH<^tp`ZhW*yLh=k`Z(Y&Z1E{t zT*W}D!b-#x?mdbzYw1Xkm)5fIX+7g;=`+k>Jq{Sy<1Z5g!6`5Pi;wm)TbwnghUPom zT9KWk>eKVj?CcY)&bzIV4!BaYA;CQyJ9ZkyL^`uMN!Y{h)46G95!F1HK7Q^@zQ1bI z$*?u7zIIuCVBS#};bI}icC!@6b`2G;d0kuJr<@$(6b+|dv(qWpJV>NDUD1zRE@s%2 zoaLWBg@3v$CT^|Zq#2v80?e@1=qT;B4?q)knua}trmOf5(ndXrtD}7A_9u~s9@PW1 zt7v26OFU{1OITpp4R$11qcNliCHCgC>PU!4D7L%Rn&g38J;fJ`75;JJ*_513KEPPb`W8oQ{?f(Kw@4@X1HMJJ_zkXT{<1q!IPh}| zCo-Wg7H}vBk9N3?O}3t1>KG7{ zx#(xYCDLo~4p}*LRrzMxM~i_Vt!9LjRH1}F>J@%`#6^_Y6gF!7I1+*#TAreKOviI% z&EF)k1LH}g1HVwnq$JhsFAkFCH(m1TBv|ScAGr*+<0?79)-;yPP- zREK7xs1HOEbw)Yl>~2)2pzJ0()i*T+#PT#sxqyB$eMwCOEC`0*L0H4@(gSWGTN`X% zK(_c#9LF&V?6u8|0i6(iN+3$?cH4;&fu|%zw-0$GFBlVo{dFDYtbe(mLF>D{QYAL_ zwtnZky#8)f$5wP$-7LQm$}yL;wOZUkW#}d`g1JV$k_%Pcz=fJ#%muhMbNTJ4#{<2S+$i(8b{Q_Xe0ZmF=NM==3oU%JD87#VE(9ZbEoDeu zHF1Duwx4PVfB}8nnH-VIoMYUg1`o6Ly8OwU1qb$XjFgIAj~l_n^`xOYT%XA?YjHiD z!)CcYm1{iI<9^U2oxysNYQ;EH9S^NZST)@O0}lBUl9q<~eMT7RDv8kqn_-QlYkBo3 zOG1z+Iv6QX))?=@5N}E~G(=;?=P#8&)bfRbiBA-^a5l6Z&@XzMc& zD4og%lhx(dtB#5~lCow5BB4=2JL?hC10;nTMYjepk?OgCV*?KP_B8Toylpz9{Oi8y zOdcAx4XypgYUEq#CI(ukIo5_6`Lpdb7`xj{OP)W_PJ=PmPJ^+pod#o1I}P4mf|K&i zsDl^^#p|p={j`E!#xX5vAkrPHYhV?Hl2~Qpt#Y=?dunz0l3Iq6ejO+*+JNDclu$4&0JR+&mx;m+?5hPy|9-pnLxqg0W%CNFqw|15djB0X-u`O~C z_Y7-zgq)YFmcjvv|JrwATpp{A6DYyaDAj%@327LsgWP+nnw$RYF5_yelRPq^Hr4>x z=NJi|cq$RGI~A zdNDS2P`r7@06&jjfSih7A}54h1R;M**DyD5a;w*8waarolVL&U`b>rio$Kigb3WH6 zGa{t8K9$X^sk@7T9EJwGG|bU&cuun(c)bk0q*u<#ndMr|V)C6TzA(_QVobRPR}}RVSbwref&s(2B+{gr7*t&fFn893~lXIl<UTnrt*aaoL3$z1pX$nf)*OUfg?Od@Qv8f|y*#U^mr zxfv6e*#xtmdV=7 zx(!{sAs}L`g^k4TP=(=Cc6>UYsLvl|W5EiMM!M!;SqdD)5ujvdB;foGi@lA{+Y^lD9)d$lkDs*?LvB&{fVyA&W zJP5!`jY(8sqZ{$6_CK*B?R(JK9oOvFrTK|!Bfs47z@pj<;y)Mx)|Rgsdq6?9X<`5# z=@9x$cm4FN*C3F!Yxflc(qpjUH7qfGU}pIEfR_;~!Voc?LIWns`-F-ZsX3l+E_0o+ zU90&Z=)o%k#DY*iw6-wc@+oDNGJ#(dKugd-je#IE=CiaE`&`BOpe3R?W9~{Dp={fS z98sM>h%!SVUks7jhr_UoRZv1W;x&dms1mV8r54sC&}s6_+suz?1Qm>1Mdfmrj0hs2 zN2oaC{dhba*A-jFu@AkXBVK$sR`XT$e5951k_9jbqGtiR1y`CcnU)YZ)AHoua87lc ziBV=Zg~LLk^dZ)O^Bi0Snm~8L4-4GloG1N{BWd!Hl$uq`|Z&HC9G#uO&RD8G*7}3lVk* zmLUV~>oq$dL8)#p!BX%QK`o(Oi*OE}BYc|z65ciz5`VcVZ)p2Or@|H|1#_v{5yGzl z`>5lyGT%NU*FpA#H}%__^Ud7BUxM0=-vcK&RYn{I{QzbDfJeXjV4B&z2n&k1~jt_!!h#3^e#j`RR_>>Xje6OTHUT1h zLONG3%i(|R;%C4GO0xH4(=C@vwIu}*lA*Ab<@yeydL$|e4vM?NDw10*!_jlF><#4Y zd1!{L910e(8ivPmB*og$n#+v(wB8aDiU@AHN;3NZI(%G6sKSaoOlD6O$u{Gm&hQc& z>r}9*L!p$YJIU!J$hviB_hLUvpG2Pr&_;r-6ou4F~(GZR48(MJ69QBYUD2XIl zd9jakj_SHCy|j3D(9qGI2s(xhZ-&{5Rtt%MP(H$b@tHy4lj;}T_`0bdixWdpPO^w1 zxOHM4A3}2C5RlH6os6_M4V4tfSAhNcl;A+CEar&PQxJ#OatV#!K2W>{a9&l9)^X!G z9cH`A>(F%9bV31uVxNq=By1(Sd306o*hHARSU-v_Z zA55lE(t-#u(ac~75^PzS#>u}cOPok`NYiqJpcO~xXJ9qRg;8!7C#>li42K}QRlJpD zqWGvZc7&t}kBOFJICg=m$wrWgIr_W#v`z;J_g55mFm4A$=vQ=k&7_?RFb>&uY;WU5J!br3}q z`!o6G=)a03hrSIkBW-7p!ha~(DN7eBF=*8VulA)v0U9R^=hfU%U0hJc=O&jw%(eO) ziV(E#+BMic!4Un;Gc@seXq0er1YC|8ZdGqcYXK5P*y+@94Rc7LdPmcafj`7}3@Zrh zfHRh4xJ2d|Q^J+Lgg! zro;+KHq(%Z?Kq5z=zXT&u=jvTw8^+GUa+T=d1EhizROa~TlUh_6i(~kxPoe@Yq}4I zc1U-)!iJO_9pGFI7|By?$F;g*-Sgl{#345xq5rP=vgeWU;Lyxw@-3pH0m{LYm$Zw=4ey3IKzxCteO_5XwpU~KkPJ2$cDOX6aA-GE1tuIeC z<0hN=8x78dUDtDR>gw^X!#E0MwW_5)gw+iFf}>QcA(4$LIbx@~fR6Dc18ml&<-DvH z?KxG?LGuu;zaUq5MyL2HRN{bRjSI(zje!gO9yZqg#gY3V*#J3PDtLIVMTyhagC2K# zg&?t$=G6feTh*?it(w^sPe5h8UQ=p43Quja2rX{)bEgP@Mdw%HE4UrxRq}e^H`T_X zkAFB5DJ$L-I_%wfQew09iO(CrU=H>^pc`W?4^xatvhuIR!jQ|J1ioQU339MT0g4j) z)`n9D;*x(OxN~gz%hYLFs%8Vtp@JW!j{WTjSQ6S|XPJm2=rdI^B#;quNM!Pw5x0l< zU|3Ys#>R%3u@~A7X~4|TfOK$QuAr2=t4r^kj%?oZ#6hh{ii8G0LQc1g2~^Lva8(Z< zrlbUOf5rRetU;I0(5CY@6r`RY*q+ThjH=qrnu-Fgcn}L?HOIpqJSObV zmlO4HxqQ3$CxvE1!Q~J1$D)r)7?4&8vsP_Is3{X)ZW`oN|A-d7u#ZaSI+|`xiJdQCqTtRz!awUk1B?neZAc z!P63hi2BNiMbQ?`cqoWQq!?h0H3jKaV-O1iw=)fqa+lZl1aR0ihD>ah-x|2J)LJWA zZ`gZiy#tF!nn_K=*v_NO0j_eZCwW)xLD&*6bf@kGH<#l~Vj~Bb1Hnu?#kYF0frkz6 zi`9>tgDh`QK=8!a_JJ0eI~dw2hJs$o=F>e4dK#0R4gsF3`gesBck@8$7gSx6`FknMR$)6+N%8HbqW93ONJ(P8?3+M;TfikkVrFrBg3JQa;*W_OsXL5utNEPP4zRc96*xH{qA-@FwyMkPwqnMIozPH*80?Vb zX)Wo3og1k|8z|mK+^5LlFRt}V+r2BXFOctMtbLVluR^d^)a<}!7d^V z&`JA(PP+Lv+HE=rGL(T*w%hacZ{kPx&oOV?Lz_8q;bw9Viu&)s;{&#nl-OzbXfjx~ zaYac)U`^dQt}ZfDW@e$9KtgT~&zN)AU9r9H;h6742|94g6dj&w|F4lfD;&6kIbO^s z`>2Ueki=^zCJ)t-NVpsU^xS`CwrE|R)&I4}vaHkGj9w?b8An#vNdUJ!Ss=le zS@pxQ8}B4rG7H)^;-R^3ZJX}LDK}dPcw^&HJ#n)2qO4^?=hpDiljJxL_4)jxQ}Kw3 z=N~;0kC4yiA3YY2f&hX!m6zLPw(n*;ho2 zPQUrZ+-^&+JH8%$PV%_)Ccoet9}~wyP^Ox}bjR_?#~zmlCFf?GT+d{T2t7gu4iPdG7_C;gEp98t=XV&n-S@Ys0%uPVO>DOt52+04Mj zKSslXUVSHix;-{00w-|RFfA8;%q>m(%I4kmS>Hg1ZuQ?NwIWIOU}yYJB*@M-Vk+i| z<*>x!n#sUZ(0M_16ib29v$GsZk@4gQA{UT;>s?b@xjpG^b@GpTTkit3?>^o0;psn} z+Fspp<6Ua+W>53`&u_ocpR=64^{%^b^zpIx^ZWmar?0o9>#{ z0#qG-`(ZbWpY?4Ewpb zJNlM$ad#$$JFoueE&pWPp#pDkM=degd2r`6omT}gGTB$gJRMGUGqx<8?3c%r(aF9h zo{Ua*T;lm^bh4{I8ky`XFMhILasJ7^a(=R3$s*y#sr`bi^`cg*s?D1$v~0pMCi&|! zvQ29J!L`mngGkNzSREI52;S1h?A;D6W=``(SI!XVTX za57a3CRB;N21?2sra3pD_A?y%=%5Nh6xQ&q#XJ&aq+@2PU5^{}#TO@#NL$6Xx_tsa zE?6~57cRc)U$$za=&U-kYUR-jL2c;E$=FX^1k^`9L-1PzbySTN$`L;ZHE)=)mI+5~DBsv4eq@m0Uesulc)!-xz7?o(Vb>APXQ>++i+ z+i;<8t9FaRgKqKLGf|RQSoNBO#Zgx(r5^N@kFa|0u?`rqgmyCh4wYy)DMS0Vft=4S zT6HKyyU$pAu5)#)J!jb{RIdl%*RqsfJOsMJhVUDgT7?9Vcv>2vY7&uQ z=xJXQD1;y}#z(A03?pk-t@5Z1SEsP>SbP20s@9f^S_Se0a{(lJ76oh=wHtO zGc(=FwbhBIAoQTDg%5;eP6g3bwinyPxpA#Nnal!+5&zwB3vw_;@P~EqdjAgF2XcderMfm0j}@bJ_%zBRIO5$H zY++b`Q;+F(cw=+LJ5p{Q^xXQL|MM$t>U-yCeR;^ejH@zVrz*EX63?`d-aB|pZH@DQ z+9YFO8n-1Vk%N`%w>}jIrZp&|J49lT`Rtr7ji6?SOHIrcx!TpI}sI5C0ZrKWfa|`kAlTYl&Fy!NbIrjBwkyM&{a6w#1K8h zgtqbAw*0<uyKuIx+fW_ZmGjwo`Cy^$bIS zwX50(6@te%ar_s3Nd$5d@>HV>4v>V{2ReHtl#q*HO((N51Fo?&u_ZYYo_tV0WMK^` z&E#bo6PAIbwIhn3+jcb@NvYo5%a^CXievEi#cON(IsEWYi_~(1OJ@g{m6zTZ98xZM zsP(gt1VUa{h615@S~9_+3*7?kJ!TXc~kw|T>iIZ$_(lz;9 z)-JNenN@-NA4YbwUb#{WHL8WSZXuD7WCGG3pb^A1tF9_?eibqX%vrCmmz_9;s zTg@ZFm`#TcT6sibe>98e)*u%~ptv7qo<1Y@ACQ#Ow>`3>yzD;ntULCPl$Uz@hX44` z4Cb{JX-Ls__ZeO;tJ<6M;Xk-T01T7xaF4~+FXy*~l4Kc<^klX49v{tenX0+Pia2~g z0(49-9JMB|=S%(aYC!OwU4*ZW@^~uFc;78)z?Z-omM$-7-Im`3A0NL9e(@4HhJhi= zw}WScgXCDuKUYbLr-R-~W*&y^GdTG!HYO!h+$5L2dj=O8LcNh*3n-!~(|pG>D`iOQ zH#t6n&@L6{+YE0*E6Hd4&rvWSS)#7L!8NZar-j^T?FopZ(2u#*2OkvP$U_$IF^gUq?g?^aai=m8y3#e%$NPty@{sLuvaEyb>l&Htm znckXu4->>_SZ}D}cd5?SO8=}az8oH$7__BT zi?Z$zfm8hcm5~1eI6f*IQ?_V2A?6|9vlQRXWZ_q5W>ImVjQnF9M-a9)rW2ww{hG0& znObtT*CVe;*?=A@8rNg!Fj0B!E!)k0j z=og&Nw#vCQtY@!J7x@%+Fns!cpDwjWoH^%jrqEfG{RZEC+IKifgI`+Y8m{q0y!%4) zU0OoM(h`#1ec5-00L!$gXYUkS0{;{mP7f9j(Rs=slRCyOr-*;u?c z+{M^LI>LR1*D<=|K%A(ZK4$N*Z<+Mc%BL8Fy%8`+cTTI+zcK zH%Fq>^?E+&r(=FHOmMp{v6(xd1TLI^UgcX!1`AiLC$3R$Fw3F86#L#6=0C^w7mj)> zZR6`$eb8Qv6|h-gEVnEz)>39o>9mxC5IE znwqW=!kB*m<~knEyA5DhC%`sZ2xY!NrG}+UoCfc&@${j*NYW!0JcftT64p>N@=k`;t(s% z=v)9WHYYJ&#V0Sb?lo{`F00tP$RoSXBbYaI#cWiJiP=fYWRFn79~p+n_{+tS_uutC zw6+~FHUUbQSL32(47&dEO1d!#vA|}eo7CifpC>{uL82lK8Q-Su#4_trHM2rkfS)Cnzeqo@^$?@o)+$CX zKd%@)RW1q9l3|)c0%7GNvSWG3hcZaRJQ|r{Uij7I#u?a2c<#2rc{$~F)37i_%g7)Wy=lS{oo-j`9beX%jI-PW9*EuzV+=n}O^srpyx=uPN zFcHEths}iW%vbjerXUVF!ojB_!ZXY=3D13a6~c30eCr3jd|r5F(HjcS)YJ&i;1$|i za<=g7`AiDWIJDHl^Des>pH1Nc+X&CA6rPn(lkmJMgy%(5fFA=%aEWBc<&p)$b1m&7 zjVnACL*aQ*2+whkm{=}ScrFy4waYVsrQ4MX&wT0jqXvY&Ah3CMTlMK}1 z5xn$V;d$wH@a#!h6m5j(kfVbflkog^2+ze(ct+g0n;DDinhU-%up+W$n(tiHsTAf} zzkzC%n<>x;&&r=nTh9|5OiIr6H@dKK+7b0LdbiiYGvc0JL+}BG=SgZ?JSsd-ZiRR* z3E|nOL3p$z-9+pu4gpVy&y9$>I7HNCs|US$b(ISt5e%cyUEjDLip^cZZ$*=}`|z_A*d5SRst!VY-|%z{+E z=SatBpD;(@s-eOAi#ZXpQWBU6)NtPz0yF3aA}1EOEV~Jt4x|Ee8p~F&+OPHV$&@?p zG{)>M#>Q^w!GMGYFd>k0t@s=s5=dRtHBo#K$`Rpf2R+jo#P8C8j;kqyV8m_+A}K!O zCwMbYddlx4T51N-&rifihHv+LZ3HWA(!q|bX2>gqf#8EjVhCL?7^cy3*qvU^Q?j&B z=~tEBbY(A zrfYynu|$F|F1Ns7*g-~2OBc;`eh7HYtnipuX6mE$l@niKkvPYBMftP8zRtyahzzRykj`$n$aKUOO(_zD|7LH$fO7m9r@_N4{4<{Z8WtRG_ZgsQ` zp3%id<75El<*~L$JTX?*Ks_}8;sD+?01-ei&eP%i!8(_~O4=&yhXE7aFaDxT;|YBH zw)*33GW?>sitJg*V!6-{ImX|P1(HLm&i)rDiJ`L)-Q z{-C)JUFSqqGHr^tx}Rk{;3VK(w^Vg!9K;t)hV-iwrb4mo1a;KBCU^QzkYKLnMIMGh z=xey;nn(i&LisYukXSzAQ3BWJ45Qh)U?$^gGn?-VM^11u3$6jus|PwAs86TXL2Ho-nSUKK}IeP&+q~? zeWy6ctgp@l6e(JPJ4oLI)#0uh6Z<6JI+367%8WU|b*Nay2bwsQ`hmxU z@Ha#0k4uo~o)k8s=`sR600AAmIi8wg@aOgUb(_e;Me@9zo>EPW((sh(ok9p*zZ@`d zPv9nS<}uZr{FbK(68ykX9~LzJg6ywM^s)SQML_iIuhm72slYxUSWh?(bBBYo{uD?>2Klil z!`xwI@QY{Bdt`Sm%Dec{v16ci#V&*=-3O4WRL--6$5JWn!^IZRzA+9%+6M<$GX|h- zqx5aw5qw9@e##)mY*=L|F*aQQaE`E^L?5attrzT9hCIAoh0+iXK*uoeRAZ!;Y31yx z!oU5F)C|tfHuFmE$Zo`6XukMfh^3zLhNGNE_LvvI%xc_l78#>|HzghVNN&z-ILMI> z7#H}1ojN9$q!i0z_3)5}sDPB)c*$R5O?$KyapmBHbQVXYr)JevScke(_BQ%{VG!AF z)gbQ82G~1l5ciOB{9gt{JF68gkPvVM!S++%B2PnNyJ$yWM!P8%Hln1knA9XQUS$IU>3VAqA0 zk#N6B@fPGroYD5{ffna4h#E)Vn@pFj-G%U@7x64^5C;Y@fjCqGB8HY}fN5CMAg-!D zphLm$shoNtWB0b$mDr%aC_CxZM%Aq_rA>L>c>#}SXu`&W8kv@K8x#8oQD#Au5M&Qp zNk3B6i6z<-VO3mCY6s~ zR7JQB^+qaEjn@dmt~A_?%+8cuDTp^w2A?MS_1e($ZhJ+RkQ$-WI*ikd-Ngv~4cCfW*BX?&ST zi;%B+S#L@5?0S)1^foi{MDs~i_i<;_$M5ynG=!JQ95GmJ)_#!Z1R77bm)Iwa=PAq>%uW^XQijAj#* ziM5|aC4~HF=y2V@Asd)OmrnBe$iXE3aAArkC)*8+rPO+4PI43=3e`~~_7p!PBBuWW z5Z1R(bhfPe83j8UrrHQxY*&Zc`aS+N&OGagTTjMClWK^lA!Krth+I74Qcb9H9qrCH zM5^$Y5TZ9d4{GK+NQ6@DMryPv3WzAsOL+0~EJWp?>|(}&UCziju-6Inu-D;f>|f$~ zfcq_+&PH%;T$%DbsV-sY*zm;AAR?!snk-IdX^>8|W008Llf@?qsDnq%I%nHej1CDy z==E6jTGXRquI^yTAQ5<`L`!clet7BduE*2)L1e=bP_pI08WLL`njl`-BJlhe6`>Lf zK;!7_9-ki_wj=fE?1AA=02_tf`q0`Qr%4S|@%##PVJ043bKaNCBFG}F?mL{D15U?a{u1Dr)mviY5b4enKn9Fu`eBs-pygk{W z9@O&hzXDD-QZ1P5;=D|qvPqJb2T=SK=N~0$mJW6>JW=6Eyc6^lWrK1+%#Fa3Z{OS9)6?BEb0v+W(I3mV8<9v4>#g$E z*os!0(w#E4yf(43kF9vC{HjzHzgm~2${O%nY@3@9KH@nS$E4hS%gSq!|-_xC&ZcK6IkBO8Z53s!mV?R(EX=XZYRcYf!0 ze*cbklixPG2gqS|s>Sj#H}Hk@kqd>PS%qu0K0Dm6y%sw~T{wWW^KE;(=<>;Q|3G&lIDnA#rd2qAG>wo7?KOJ@`p@*+X}08f_U@hz zTHBs<&;caqu(y>CAYRq^JAm}p2YW&FSm?0Nug=9BK+yj6Ie;{!YLf%Vw!K-314t8* zs&oKBhkXtQkS11Bbl6Q{y$OD{Ew0066VuaSFGt6=zyYMtVIz=1E)fnOzh{bLeHI)* z+HwF{^9rOP)+gz(C-k#)0I?xO~Ab|06{s$f(g4>h7wSYmU4XFgrKT(IDm|-%eNWV#rw)op&H!1Lx_={8ZzqFQ`47=gA>PAyAFllSjYRF zIn2QX`+`-0&jsIYlWx0gky~pK^9}1!*=Bc06PNzGE}AV!sf$L3zEBrE-lvOpHkjdkS5WyxYhaWA1Hd`z!oS!YV3m$;{kFPi!{_dO#(YkL`;)=wfOH8?_vCqSI+f|?bgGp( zE>_2@^JI1UsGrvv5}EaAtOg8r&poqy%C~0Xc7~50yR)BSR-&hQ4DX33aJ(~qGlauV z;C=q2Fv#^YJ?PW8p039BLfhhd)>uE|(}RNZiLiyyXT|!ysvULP&RE9`SLjI1sa89i zsE7>rBuYO#YI=UYI#uan0(rDT-}rU1BEuiy9@Y|n zae~U)RcFN{70K=~))n|>jRCbzzZ`@f8D`nTL?ui3W`876*V^dXh_ zXkUp(`bwZRd|~t+mH1#^iTC%FKuUOF^k*vZ?!FR#(N_Wmpt6+X?7{U^j87`p6S3?n zO1`X2?^~jyv6RDGqB)(i#r3cuV@q@hWXO(W_+a+}Ta?|@Mu)%P19zc2F{*PUdMrcb zk6F))o-K`m#dmR_aGlp#4kHG75~{l#P@HM)ad7F!D>0Gz{pJM#}>73MmVW z{!+vqRJJ$5esoAZ;V&6y*>B>)(e)V@!Ufob>tterpOnTEjabIH5;mCuaWkFzH@!Z@ z`IcTENa6NNQHKIQ-|Iu1Kfl)pOl<08EG!g#AQ4Qj4{-*FqF}I4^dZi{LeU3H`g;SM z1Rk=R%PLDxo{jsV%yeuQ59yc|6*`7$R~?h>g^q3FLdP;LbZmkP9b?AH3dxzb?7$+L zM#p#5*rN1cC>^!Sw}JdNE@J3n%_8;Zt%1Y6d4A#c=nZ0Oh;Pig_adK)&5~oXVr0tQ z6jY&8XJD<<6*v`Fw9bjlQrupIRKo=)TvXp;(&B{`4zDBVMBzo;zR_aY%)T?LrqBi; zxp3Vc5s()Y{X|8kQ_H>ba0o}yg4K`IL^pJMJ<140sCzZ zy5)4ECA1Ym8Nufk_nRC70)Z_Yp;@$Q)c;$kLhBH>Hy4#06^<6GWG+-9c8=kytYmKo z=r|=f?6qRk9#zus!eHgBDn7u??xOw^eV<)!C;sHKvSElm%-EpL>eH7Lb-3Sd zt_%B`KT@Ls<3GSCR@*4grCNazoJV11O=|)D>k!7==nwmFH?#z%{41z!U=w) zmHdd>i$i-8J{Q-+&?$?lKowe9RCdMar5aBSs})k5a8U^DEt%MCI!ohEp*DrQ#bOu_ z4dVT9iFcpQK9netg?B*%Ufv*)>nNDy-o&pXeot1?OX4|Dq1msDBmU3Y1L&IU(}*^f zo*(yg)^)A?cQ*CG?Knuw(KVF8bW+LZmzjYw$;+ZzU@gpGXD!^gam%2MkRKSo9o`+%I2C~gC3(Gx!etjL-rAgTJ^;E+m z_G?^>#W)*-#T3kTXFur1P6iem%ix`bgx+v%`nwovai9zqTLyP&&};LS8s+y8z$`Ud zv>o&tff;}M{zVcl<_O>BP={r7G0p6S9d;-U~$T`L) zW?-28nO=U$SW@OJ0zL2X_0w@#y0sHLYSc#Cz5e9`S*9F+NBCOOHd z3nxrD)0%OSnlw>ufY&3TwDQ_5-8!l#%V;fo^JTn*vF+d$u3d`%%FzDMWzG9GnXu)F zHHLN?1+JnramZhm*d)v9k{ciwAwp707vFi5)!C5bYB+*2Sd(|t55B~&?Gr1@{`{d> zRfYb9-c-FeikeuYH`HWQjkRfWj4LT&vA}6DY?6$0wB2~&c&5YF{2&D0uy89iYrrB` zHle2!xrF4)rlLgVNQq1rbrnode3jq(epp%DgEbUJ4p1*?K)u8^vvV=fM+9Jk#g5)< zVj6m-WD}OL2xLk&iX`RX)y1H)0gBTvm@TvQBK?qmMMIZyv0aH5ZYn3E7yd{bt z?_!?Kr^^5Xnm+Z*Fn(|0S%3rmJqe>e#`4HSu$Sb>Wwpe+M%SnIDYHHFX33CF>k%n& z^Ak@#B9frz>HZCh;>m<3`6|pI$Bp)&p=S&*O*7iEI&3OG*;<1||NR^b_&+p1)x( zUFtyPXFx=Lj3+@uDx3c)H_%&l>bJKr(AT8NJ%yM$z#@ChGN+SxM0Ho)m&bduRg;zL z2CUFgjt0=~}VBIwMaVbZO zWE>3S>C7aP0U=*z-PXMd48lF+cIcTYcAJy+&0G>hQBH`gNRHXa1m=>-at&Vbz|st0 zUMl3o+%=dYq)!;58`7|NIwvuTZdyKKgGs4PHxaEKO7W93gqGV+L<&p4&P9`)&{yOf z&AaXj@nx|cU?120P&zZ#UHKxpPYO3!+TAtg7^Ff%;)*C)TZUWo^L`WmNXLwuuYNyR zfeYc~akzp?k>7I_xenuIB~JjJAFXs&w}+{klLxpBMPc%r6N;kKvmzY6nHgVPmaP>t zPqQ`Z_gIE&T|`EP)%rD_4L!hcDp2F*SMTeh-HNgmay^Qe#9L8ZKu+>Xj!}%;1k%<> zZo>tBa`v4(D6*{6%|rG87v%zjs2spJ8#bG}44*Z}yk-dVnJ>u2o8@tG78p1bV3&<6 z3LRh2gggy%dVfW$7Jbv9vBCF+$zQsi>R^ie;AgM~tWeghXi}W&lnr&9ez^to`Qvvp zEmq{GK8+)|J32B{`AX5G@|hB+fJcp1vPfJTBGz}V9lH+I0o0|;N7^e3JDx>TgZQAj z#+5FL@@>TXsb9g^VX(C^%uo*NOib-}E#;T>k;*m3O2DN~LK6(ENJV2VONeLy6}{1f z_9+0DlQAU!(Co*EuF)1^VCv(pbP(JYGheJ?gn(0+w4w9$O7Oh;Qnq!ZqEdjii4bI@ zLc?hb7E@3|!K{?*!eX#fT#%<4HPCY#4jYa1jjE1^%uQXiZK&+YxBj|mys98pO99Ja zCB16{QyYrX*_y%!Gx-KCFuNPM5b~wZ{A6ziKm7tTW>dTqCuCdll*fQ35DGO2;2LBJ zO*e>SHDEX)+f%|1FNGoUpf`}dsNgxHu{l;!Orp8ZGH9;K3g@6s&3(<;Q@v7Z<}%k@ zb9b%#jIlG~AOs2m7L1Gl8i7Ow78#~U+V$wxMEH74u!^ya0_okyfx}Ynek6#7y8kOv7;SNs`ZEno>WYf@zt$s_B>LJoyTd zVzeMD@wz&%R5~s)z_8y}iK&U8AC4OL&=6K+gb)=+%PZz*Wi7NL$xoICVyNF7WZrky zgMH9D>jCmXaMJ4VD${;KIy%nO7FO|#WZ+B`pYzzz3Ko)!FEg!rPlV`MGR>jtp(~~q zv?kM6W3jMk@g`iyjc+9r}volv!>`kr&_3m50pZ zki2h{V(JXM7af=0fpU0?mwQV0vw99?&}lHPF%H=%Irsyh_s2fFAG0+VA_}q^m{*V7 zbZ4{X7^=flY7E*l*p7Xo;6dW0Bu$m=V!W)-H8=VFPkRMLrLP9@5R8s~3?!*4xa7&b!%I?#9BR|#v$W}N8aef|DNm_M{H!~pe z7%E{8=_>+=? z+x!N1COyLb5LnKiJz;dS(m{2rV6^=7mx6$uKULh(XBYh8Jp~;UyyukT<0Sn{*G78vbDo}tkWwzRm>4w-^C{j))XFBN9K(o;?`x`D#i`vNMDo!)f zZJ3tYb@&%K(l?ceG9~rHnpvjgKtruT$#{?CU~#nqK+n)i>oQTin$^BE*-0TLeo+X8 zbj%}E1Qat8G4;h+fP}djVY5M$Oj8Vg+gn0MQdl~9^)Q-UZ6*zfs3qb2EM`unAJM{3 zDw9&>jRcCyJA9)A_!;$R3)QDCFTP`GFTX>W>6u6UoAbBDF{#ei4p)tL`ak$dK>~o= zr)ih6LAv(FpzgOQWBT9uWzJXAKD30Uokc-xe@Vy>eQi&1FZ0dbyg3gMsr zk&yuJbl(CX_|8;`X|^R+?spu{$@}G`>GKt~nkyi_&HN10s+zS;6q*%BBQPgh9!jR! z7(%J$7OB1XhE5TCh9Zd*a)lUN=lFZZpW#$vsI_OO{TV(rJQIRXCE7F*z(p=Ty!Q3n zlA_pGmJY?r4#`DF)#%W(RzHX>+fJMcBP_QUUNu3TobZheJVsB#MPsM1UW#h>_NDl^LRB!IruA7>mxhaHm4nTz<|9K@h zb3x37z{75ff#Mm$si?Mm#@>l#g`w&_6RJ+IhdM0Dbff8;85!s?ieI5F9;{&2C^G|C zYB#HvZj^Ln*{eBLx7;IWr~%i{GCmBH4>BZ-1dTVsSCO&>WF%}bj?PdkN*dFONta~( zbsTca`*e7fw22%)LiZwgp|Xe39KE>IRa8;K)7^ zb)6c~8#w(LT^_FZW}X3nm;zlRu*w}wbjTr%au?%Pl!6wWgVks8y++@`9hG*=A@40~(g@2{&Vc1us^T67&WcDyDV+rddDr}f?T~cZFN)99i3tDnZG8Vo>@G6sn zE&N*kDIxHuUFg`)lK!i9OPT(Qliu`Inf`0o(|@6;*SYZ_5=jYi8=n3Pgc0B^g!v>_ z*3CWwO(O zIp+A{*}rPHERp@|abg7)Wd9l-%>Jb^G-KNeDebA0@LiCX@&@sAUgVSxtHxw!*}piz z%Cmp*4Xb9z{?(9;x5gSUKbW9FZ3EfA8ka+>1KGb|LQdD+Me=;XYh(=$TWDM2WEL)e zvnuuF{VGhHq}dXlBoBJ}Fa4^yiHOL*1lfRBlva=c6r_+i6dnuU=w z`5QQjL&T_T`QIgtD$F48%XJyz9>OOY<(3 zS)6zA=7-3;q#TFAq+hLc$3)Xz%TMTLJ`>7~Zxz20p^R@8zYD%q{C3w2n8lRbLT`26 zq5-!g`Uc2;~#M<$L5hDHIyP>@n(-*uklZS;6n@w?zz{#%T&Xq*i3&cU7=p7ril zB{7Rl)C-OZyLsQ!pY5-FozRo)8C{NPy;`deH8>EhJu*6$E?W*Gh^5BUx`lu^j-ji) zT+eW7^JhsW^OV`@NqmsDm+37Bwb|SMEuPq>7%ST_U&6Pk-r@vpZ(opPzc}!%9kiPab9yMkac&eS0t8JEkz3#^|qqkg3eK)<%`oP%VHk;d$UnWj26tHC34sdwqy|| zC}FInjT{Jfj!yi}YHgbaJ24;hP?OYEIQKT}7`VI_*n8_D-8x6ZO*PyI6;8}Y7I;tZTj4#iwgR4zuW?lNG)-(zYNfi+4S~*G*J$rGIC0)bL0&rZm8;*Pl#Q^*DcZC@C|P*PDJa}wG>+Y_3yT!kispqW*8ficw^Aj*r3fQD8Dyb zu{Jb>U3ki}A~exd*7@3-Hb>q!I7vjrl4Yol?jFhi|x`eSL~O?%WxKQkufyc`GTDqO(>Y8bX6 zhU|x=ky&%=1Cy_O)xPPO*}198E7+f-ITMC!FXc<_*5f-uk||Ltub62O+K+7f&hE;| zJMPR@_P+hiS5HnA72WY_23j4UugoCLn)Ksl3Xo=AzO-)nQT>_$B{1S^YyVV)31<AIyjq8!-Rm>4oxF ztwJ}Lfd2<`19z{uo1h#tTgyJO>3nY;1+d0)qw~OtkGYHjc5oBVQOwq?!Swx_6I2BF zu{qw^1Bbo}Hv=O2waJk5O>|)9x+R&8HnB4EcP38n)GRxQK5?YrR+{;TQOM0gU-GPw z>t2rk3zC~Bqiv*bUL`!C#1pJ!9F$IjJxeRhLy3jxD<%qVDY1~><(}3wty0w%^Hx0W z6c8Eeg&t;D`YAnNbR1w|kXT1BOrHk&CSvGim;8tewL9+oq)# zYETm5fnt@GU8Xv`m!<<6Wlv`a0#F7;1b?K^G}a5HKJcB?Bq-nHoB!&rM{s5nC5y8wP{9^cHx zoj`UA3vew&BQEJ{MYTKk__xIfSlE}XHB3ccxIj0{x}t``!`0iPtLcj*6NInUo*hGcnuxQyY1_u&2fbe>oM#Tdkzi6za!L!0>V&l1BWb&FUqDc{8l&Oo& zn3g-%3!@1Ko{@kWIPXM$r?OaBDcG0@5}T;zZdimEGrO}RO*O;;slX$WKvvL0(5`Xs z8*sLH78AtzKimnnL!Oj0YW=h`#ozw1XNrIJGp1-lBFoBi!xWGFsF~uYmSTzv3e0DU z3kodF6puc~OmP7S^O@p;0zYb|sBu3(ruaXb^JC<`n?7m+yEX-H)W9Ju z7DXno>{DbtdmrTHH)z(q5F3q@t}}K0tPb+oft;j7Cfd?oS(&S6U>Q?sLPuuFsp&q|vbVS&)1nR}`Fv z>l3}@#& zEk(m-0ievstjtTC+g%H<%Ojk{y~I(gh2#sH;;X&DuCjp6)sBm0Qzck3bF0gjOugME zAf7oHm88w)0^DVwqCi$S!kTak-Oj@|jIHHN>#qUDV*emOtDzQO zulo`^8N2+x7~?_E4%k!D3mx$LeIaDb7(`F60IMvJPJjCrx%I|17bJEn%Ge?|zs&hM zlb;9I6dMrN#Q)zGIk5*Va(8TxUaLo}a`QQaFLSe+%V$~Ugk5pSz&FdH&zx@pnfRvd zgHJ_MrSG#;_&kt@H-=M6$ic#m9{?szc}Spa4e4kV1r8g) zx9CD?PSm6kk`cj$>NzBwDLm{kxn$A}S=mxO z@jBrO;3jF5?$JSIM^R7d`RQpgIqb)QHGiBZi1Gw=6EY6krN5$cn6=XXC~-CY02a2a znVwih=JQISQLbylGdDy!03%W2p}k{;r^ZZ!+yKq=FIKtL!3V+U*im5gd4fZd)PYCq z@O!Su>sUXz9;>te;(D}>VU+8UIs*APA%YrxdBTR{NaX~G7muX!Ix7Rt-3yS+8Fa$& zUM`^cMlN9Z1}-3YHy7~BiQG!&n|@DYFU!zy`W?W~pt2hQ4JYJFrx|E;o^~tgTbnGo z05&z0*A(1L{sc`Oxs2oueuZf$TO*~~=JI~Xa~9hKdy41s$4Bi+pfJfq;HDiivQvkq znHtcChwu))JWQ!G*eSI$vY};4J;`x%o2WorNKSVVeTlS-RzML`hB-`Af~fEiW&poO zwz|)+(bs28jwv5O-Z&sDpOBKk*7E~c4IkP7gj92XfcT)UsJIVsHBwZpN#QH+=&Ph} z#M+U5Lg(R~(cvAOq;!wS?RA}~HQTH-#Pg;wi&xDoPRt2g$Ho6?b&sU1CO*0bw`DYV zplM*ouSyTe_-jXHl7^l${G-Rm^}_7OZoe7cC$;Bv_ZK4(-)H6HAC&Fjy|{`hk|x zE0~#dD`XFcR7xKU*xAJeCUzMY6v`5btZQ6%?jf1cdx>38*BYTZpfOWbf7dVzYiWUO z(%;>HG(uH8P>q%!W}rqyl2BtWYtLde0t=dFa*nG?0y(|%@`)5!W=Jo_&O2Q|InZg- zy=?98B4kr_21)N1@9*$A`^)r^zi_X=Wrgz)_{_R10yEgS(r<1t%6#rZ2?^eqXh-t1 z(pXVOP=I6|H^lty?@2lZ)o9#GEXyE7IMLv^3Cl*-eXSD8lkV?gHxgT*ycrfkmOdwR zj_xY3gVrQeiybx`?5a^`;*c4hw*^qdteE9*V3I5XQQx;#1=O?vD}ZOizuqS==6ZNj z_&prj$*p=sCF z1s5m3$k|(XXI=hfa7FUCOGpI7mF4b!UD>fC-6JiTWN%meduo#~%c&{03S^&&+0XAq zds54fz?78>>}di7mAy@_N(cn`Q41KvGRS-7Zkyq{oa=NV$%!lP$x)uO+3203lgTlL zAVF5vnvUhvX7&dCxlw5`c!84v8a{25)4$e(6O<{=e;v^>OoKR0xG*>(=@3YI4>b7{ zZ5tJQ2oiu^rxErowN!-A$?uc&R!RNyCs_dVIu1S}S#Lh_R>MMuWQ|ltZojQx%AwS!IPT}QY{bOm^ zcvF7z+tB){D1V4^2-0`pajRXvttS&qdl40~PB_2W6~yEfx&_%!r^Yi@v@h2IW&!$8 ztbnl8~3jY-0h&J+6QX0M$POZHT8t4l*O9cv0n#ue9kY zs+U@)q;|oL3k>h&?n?dF_CgF&Q2CJnbQ6Vizr*iMwHN#gmMDB+!>sh}x2;%)zkCKx&)gCvdCT zB_fgv$BT*s@_>zEtFL4-N6F(g$S(~Zh@lCb>Oco%CdW4dbj3EQKjMqx@9JM??lwjFp-=B*d$AIjBJo2n5UU z^$&*~))c2XjVq=@5vqZQ+K1FJDl+L+2#1*q_~wggJd{4X%Eu8l$diW(a{;4&`OlG24u|5UT;SNZ)(je6NB+0zeM@)Kz zwHvzzn0_2wXQ_^AO5g&e+PVbr;Ny?0Oe1*=`v9)1+mg^&a;HcNY36i{?Cy3%rsVlqu)XUP|%yl)%709#y-5o0f6ElbbQW7Di z+HfpB&ha_NnSsPhOxS*J<`vq=7c}$aZv&&`-~yXBcZYiQ8AkY8hY&g8B&r5c)S=gY zH307D25yE2*d5!UD#La_VGqUV3V}^94HAJ1y3Z+n3*a9I`lheXHGO}h7{KR_zJbyw z_&MmCyuW6Y`=e%Dzav(nl0&Fk>PQ?(dVja$ZtFF8fyph}GsDA}F7EaI7j>Vy*Oq)7 zPEEA={xvX_x>7lyQnu8>>30AExxoF|T+3&RjlFiUfM{q<4}$%a-q?O^58I!#WP=XjOf11T#Cwqm zRK?YuQ!%W0IQ>}WOeTmR+U;5O(r2DVPBb}Om5p4=r(D~YQk7LsBbU;c-yh~4KX+zz z`u;Uy5oo+wPNgxWO3#96F!M;+Eu9p^+31Vl%DU(_3~a>Ts5|0tOPj?qij@v_%jIHm zS=$U~E6pu21=@A0623nXAbpyv5WkfI2#9o|0{to0 zE~08|yXvHln!Ts*hE|*DBe?J|G{45}!^%V|nGQV4AC-=R@Xbl4J2^GekmyrZ0cf%Vgmn_vOg#{;*0U+^D(6TN&2>lgQH+5phQiDk{X$fPF^cj9w zDn6l|PMe-~7DetySE`GQdyh;X=NH@X9(hiahx&|D5ZSUXRbp%nB$J^KDKjGY5Ysdj z)AwFr>kWG+bWtYuSxV5&97+T^3m_YFsPZIr8t;%)M$Xpz>~ygESfjvMO4>=tOmoY) zgl->ankhcbboa0fVV3<84$>0lE`srhNu>YW{~ zh5aL_BZI8%PjajOlwR(q3xAwpeQ_@G6C_vT=Ws+!n*dW(!#=+ZxlZSLl zgXgZ+vK5d|&N+P0Hv}w&wsKJWv8%OEl~@&zZAIvPuRJI+CNM`vi&PN(_0a_mEmob{ z5u9J0%8oL>&S5tWs-M{i$l$Ez^cb-qlq(K^1`9Cb^hyE|Zc$(so(kOJ>dIvy{vYC8+ zeA7)^B7j7g<(xhJ&am$hB}rOru%{1h!Ca>aN$ze)SJ-2(?0|Gopp&kJjcnq@N9Uz6 z5ribS=`Onl!f(7xHhpExgE+Efd!P^JR`M0FT>BKabR;4^W>@-6Qk0B|!&@W`0h_nL zF-H9WXwEAw%M{<~^kyn$4L$B3!tX|IzX$5?sHaq+v?g>3xry$D z7P+-HFo)5{vdwP8l{ZXp;kG;ll^qi$;RK3iM1fMA6srN@VDc~~g7atm=YKi=^R}O2 z{`16n@E?^~od59VXZ+`f&3~R6j#mdYS4cF%$(Q<3hh$Wc?Su@$XHCRftgOg>Wn(jByE|brmgavC?>+HH9HfZxGdmbyKU=)(kKUPLu z!?+O<0!Y^*TXNYY8Ut9By8vDz9IKHw>!j8(YoeD2I z<0f&AOFFcZ?~oPKKTKKWH%g8HjBRM{xm^4r{oR^JSG=q{n&0tq&Mav{8Eo;X0E!D4 z9ae+G&I%wHmG#aBMbNAi5UWtf$5$X1RkGC%(I1YFn2XD(-dz4tJ2%G$9fVf*aEOGj zzer?4j+|dAY7Gm>uvT>i^9cs>^GOo5AcnG(tDUoWU@f1Z6MON?G6n3{hOwWP>f1MlTP5;D`Q2w}B-371xA+KPQ_;^OQqzyEGomSKmJ z9Fdk8wte&!h{91*^lHVzuO3|bE6e0G*w#Z!e`Oh-2ERJ8^j8+MKls(LrN6R_P=jAR zy7X6Mi<*zagMW3DYR-v6c6al?I=OUP#R||jUXLyPl^LA}`}O$JUs+NoeU)4C`hq^5 zUic*oB$Kkrk}Dd)5Vn8A$gs$e=jo{m_w&0t{kj1nlif^TL0gJDn@5o|gM~H!=ToGT z`Oo`m|I%NR*$PPqWYZ`At@1ZoS>E4O{+2xiHRqkUqb5opRPl!F z>7dUM#h#WEQq_uCfvN8ozrC7$K~5qvi_|AnF%cg;~!B8DYNzsnFJJy4)@ zs91P-N?~oMl!?TV=N`f02M1eFwUo#QF?}MQ#_8c2^_x>|>AYq0Puvin5pR@Ys5f99GLDlC^@NV?cpoY61!Nabq`Ta5qGB362e&75w@8=vk ziPYApSlvdcO7q8c(B=!6Ff;GqsJ$6DiXXBWe9rNll&r}_q%EJ`ht1mA9g;1Hnm6O? z*(GrxtX|X8O4`I6GMAeSdz)Sr^HCywCJ5bBd~dVxa+z~4m-N1@(_x&TYv)E$|O zanaLD3^MF7E#nz%h#jB#f@sICQ}_gfo}IIu!m`&)Xfw?sFjQyhb^ zDc%iQxm+)O1>vadgAM&Yu%aR$xUL*oiuu4o%M?6adYUC>(NFMSDf~xmVDUZEI+SC5 zSl5wRD7pg8$503Je(-Q=fs|nfv^o+)19Ee~4kXPy+wSS6yM|I;8Y;B&e%9r^_c7lT zn*tO}9zS=}2Z^i(0y@0yf|D*|3521V$5R3 z>vMIBSFTz;v1aYM^%rcoFza-m2VnG7DW@c|SMs@oh^fo+ zPwIkn&-t{U@mmtR-jpv-?`^d=`WMyk#pm_DiJZ*)xj6mgaQk_K1-`5T%7j}M=nfY6 zwhAbNskJ}_OiRI3v~bruct4)MO_xyYLvi}K7RK#?a)0XOKCFwp(W&km6_w+7>HhjY zeztOiYxI}Y^Yp4Snf+IuzHblO0C&9G~ZRZ3l=H2a^@b)ay2CFQ{VgV z=shZYz5hL{K#Hcm0(ad{fyE$EB65xQeic~TKi*0pt~c-08_Rc7jH6UUeRY3O1;!SV zl5|28lRTtZ`d2EpF8_)y4f`B9BmcU72Hb!{rmB=eeYO9K3dnR)be&C)!S#j*>_s1i zvS+b3_vy`ee_y1A>8ta7Dj*;IqE0DX`raScd#RL)_pnN<`ET`N086mW{x832HRscR zLOI@e1xzc}(Eeg?(t8XMdjDCY9H~b7AedDFOdKTyESLT759z%W{Q*L?rGSIhw+7sK z7M@k~gShi7E8KZdz@r0}0)Cv;LrZrp*~#BAeu1fMq;TmOQ8apSR?&oIU*hc^qOg}0 zE;&`F{F91RZ9M~bv zeP3y>HvhA>t<(V+j+_Ay1wxPSwNr_-2$NkxU)|bm@98v=O`2Fc5Pe)A;*Gh-C{n1V zQ;9-|wmK6|CBhS9@l%OF0d79a`u%wtdB!8WdahZgpd}W@h*OE)RH547&qK4fW+TC$ z2Wt{P_dLL;;NElRZ`{{m(yz!2=bT5>W=-cZ=+A>6)HNVjf}#AXN`Ia)^XIYOI00p3 zCFitzX({*se;)ZnyFZT!ay9i|fOJN(7J?Idta!JXrm-*Jc0m@CundN3|~lX?FO~ zD0355DkRFYCsRC3`5scy$4vp=Q6u6x&gm#n}#TegtgiwXGi_+o7=^3%2w7!Nb_I>}aPzya$nVhg zqtbqZf;p~20WRl?k40UB)66lw6h2I0dM(h|h!960oG5riM@Sk@9P8?uLS7v+kMp_0 zguM$-SQi$-4aF>)5j|!4X3GzNcLd|vOh45G7?iG?hyalt$p*4JoK6dqwe+YkBZUwi z_aIOSVW@(Tc5X8{@#Et!X>%>L&>OPVSXU`UlmZ5p)0zA3*w1;j-8F@RNX!y7&5CT&u|qF*tCi2~MCGsYyaYB^uox z9hK(LgOyyb--iQKRb7BkH&y$Dl0yM>O-?BQ@ovQ^6YpQx(=c>CrlNH1lzPkWlStea zGitSdjMyal@dxS@q|C_H9i3Pyx52XP+k1$f8CuHcjS+1?iDt$M#VY2`TH$CYRJiJn=RHvI+D7S8>WD z(QFw`|BO9?hA_R0Ju*xrJ-j|+mjDjg$AHi$g_z^R+Kzp!S*eLZ5r}Cg;b3~^bPF>| zBW#%=n#3ry=#it+uIXp$t~D~3$nPpcd9T@2xtu*g1z#>%R;p&Nmfzr3e(}+Gm;39u zxB4eMUgUZf6TU@CRg%#(7bGIEcGBRbHgJFh;w>4kRGkH_vfH z)TL(u-=T&IL-YH^$S%R!xf&27B1-Q(B04~r4a5FEsD4d3Z0z!-;I+bG)5G}wSh^%93nEpxW^4R;- zFuQT$^9w|%l;a6R2s1#)&BY}mK)P_--we4Y~FxNTJf$6#f3e2FX-A!2gV=Y3TE*A6lPX$@EM(NthwC#!1dabPUVj4B^W~XUD)O zXbdogZNz}v`g9{+(F;^twlV4pNy{n^bk|IE*Jf*;NuU~A=n$y3B3pZVXAP5XCn_yn z_Sh-h;dHN{*+Pk#jb7DV4Tn%li~23ymed!c4|LZC&DQ81vI(vzG+QIC*|Ny8ru?Ft z>FaRH6thpY-E0*n(heoani+=>ktqrpY^U^N!<2>1v%`>jpm&UR-#4b`vhON`-)XU! z|KW&7m^pB+=^Cd{{T9N*q-!(lo4&fWJA$bXh|pX~)76&gk9ag!9N`?Cr>^M&RXDN= zRgx7cjpnI${x&rgk!zp?8}5pJO;0Xj7s(bH+2-YRaUuk=N%C67?>Z#gZLMQU$+3e6E$g&i zqb_{8{ScO*m=L5kVhUcI-I;fQ!7C0hrxswrQCe8+tF2)bpnv5J{kQr&0IjZREA%vr zv$0uW={34C4?tt*B#^YJF9Ohn)(Deo)cW#pJQny0r)ekf8pTGiHN8DV$|5cP9 zBUzP_RJn@;Tq%7m;=3f{TgBpNSs12J^6PC^-NN)7aoJr!y8&w}qU<3D*V$$}S?V7*r zIR@POym_GzJADWqBscCQF@etPP%Nbwar%k8D(}@J)`fkd-6WsV#&W;zwTIHX8Dg({ zDa8!8$Mqbvv(p4|jE-$S6A7?K^@z^r$9U{n$k-5_>rRL_jc=49)o@eYSrmO1~V06Lnin;Vs)g;=b?7LCYsH3nM>xt@}YlTN20 zE3pGnYYDSf0Ed&d6p5Yn;HSbl!3Xf(q%uAsSr(2*cNZCvLkRqh}KnvdEo^? zhi7I;$Q%5d2_^01gb(PvMdiP zbS#>AllfDXGeitm+B)>D?Weh9^9;)67VC#w4#HyN$V zZ}|r*Ea$;SIQa23{rdVcm>Ql}FU*9ag_#iM-$Z!AM5t8R5*N%&I0{@uolAIPono=$ zjal8)0|dt5GF2U`lqP0NSW_GpSQ|E3iWJm+vJ@2;veY70!{NMVH8i`ISq%?ZcUV+#paRo_g&Fu`fBq>|~WHr=qxYdx$*{y~R7SSRL!04dWkW-DHoz)OoWueuO zEC9=u1z@Nz3&2RWoTR`Ep|V|-X(jo-QYB(kY`u=v%YFMMTrVCGUZbQpDU^Rp$y3m9! zV?Z!=Wq0*DHxxn*lATsthpnA#>>BUA&1b~Xy2Jv?5GlzD;#HADfIJ?$A3}m^UTL+N z!tpBmSZY6>zgRygLhcHYE)-Y?F||U1!pj0kLkK^m3Pb4fAVDFU;Yud?DQZ1A9FMvL z1+xhf6btjsa4(i>dBq|C+~B`zK~2!yb2IKULo-V zoS6gZXnMw+QFq$F!vN(+%95j-o7s1gKW>bs-HOxhFLIhcH;8my8 z6GZS;si3Oy=3q-Lo_wsFHX7kD#k00KGinV%zfR|weNTXl^zT;)z#Wnf6&otSP4)~c zfH<{pKV{~YdzZJ$Qx~sRGNu?hU1z4%jj!bRduABYpu{Evkkt-X<@^P-%zNp*1$ll? zQKced&EGS#m|;t?DR11bfZr|Absh}Mr(2@`tOLO#6L9w{0PqeLPWm|+$*FOOd`OKB zgR?o=-RdmU2xc+3Fp%>9U42PEPY*OYNDml5y6vlAlu!doN~GN_(amhD#Wv0NR{pe< zx&eH*^4gW1F(0igy$T+WHr6)aTOt@R4Uvyu2euBq*alO3S{n<`9WRGhMuP*u8Ct%$ zoI?0nwi6An)=Iz^F#`&#J)0r)y9aF`6e|o26UrAT7hA>S;x#PKZl-@r+<=QE+RNxn zq}??t+l*xPBM31kR)}cKy;dVRlphezeW;c3ma0>=Ac@HfFw_tB#-$BPDPveQRW4R4 zS);T+5<34p%i;&&i-%qK4gWk6sU!xUe_L=IH;rG(ruJ)|wh0!wcIRj@V)@`%T0= z{~Qgyg%#l1gpemJB3z-||Nd~LDdoN*2mF}(6+hV7Pv&Jtgn?b5jTrPVayAu2WN!O$ z*lluMc(RKG)4Pct)6kvce~BH$wT)HX3V2Y0*=LW-F>l zZsV~wpCIe~43{QvsA4x&aB53M1>jH=c%P*mxE_WYn%WI2w zc+A7V7X<)!Zv%i~=EWGyIS#)AGBE)U5BU6WJmk4k&Tx#=5UR7G{50-^5*&W3 z0*w&Kak|!Rnmd-8~D4q z=KJZz=zT~Gqm$Y6eQf;SuhilPc&hzuHT_GLO)c}>YX%^sLgExBn@H4E42&?3P_xUl zJ@~BTQ=nR*UP4IGVG^wKM&0)3Lf4(tDnNQqL)-Fx<>+`!^yE3G_9%PW08zmX!CBcz)RV1b(As8Y7fU`kOh|=8& z9gnd0ru0pQzw^PSC{oxwg}gQ&n=?F{k4?uN8Rr8B8nVoi;J5cgxI2#HPJyqJ^y-Yj zb$n6l4}>q+@+sj;cuReR7UEEmc#ppxS@3loNwvc1epE&K#yd?=kJ^>F<1s&6P&XVU z?u2JdSp1R z1c}G)}6u`cPwR zxY=rtL~uIly>euvjY6h6f=LTB>koEE-SMYQ!ah=;@;+7`^L7?(iI6k+vxmo)?_=x= zE@%DHl6$0A5Jn#nQpxULk(J%Xe*&eA|5J4+W+PvAg>q|vFa-eF#oM)X9m}s60V2_==5DoUgcIWa#WITl$RgD|9A0onbb!(yLp#vo*ZU3|42m5d&MliZquj7RXvM zJCJpYVb^2*xl(}ABu4{TQbQby>Py+6zBK>UmIH4^Yd0{XLHZn8kd`C4&Cp;dn@5Xl@)#!He^4doPi=StcJ zgOo*sj6}M!=?h5BGqmIZiCA{RjFYoLZKrEN*?WVIl5$ z1ueCrbt;{9K?22b0_FxUiDF7-p-2ha^ zG*P{Jk_~Bv(e#z{mNQ|cD3SWKeR;QG`T-s`)=^c5xuPm*rivOxy8;K1YPgpM$JKEx zO!N=c{5;TF23qT?0nlm~JPOb_5XC{WC)toV?;v0egsp*CtjTH;+<~1Dp@8Y61?G;I zhk=x$sIH$`TOJVLPa1`CK)D+>{0(bpNyn_u6y{VQ4+XH;A43A?2`x8K@3rTRYxDB% za51jK>!2Kk7DFPYOP&X{RNy7lql-ZepaE*s&!}~;8EMXgdc>f%E@M^_)WZW%k1Ptc zEGvv}NsT}~Qb0X2A8KHbe8T@%ts^W30OSk~4u<$&Y)KcP#6}e>-A%oLMMx4)^viB^{V+jA9Z+FAwgg<97iX}AT zv@X#PY*Or@HCbhHJ-Xz0r&!-?YzCA!>o?vNPz<=Esd7e$pB;DC5K|>dwNq>i4&O^1P~%iG8QI{rGLMsYa2anu=4n-5n2xa?#ON1 zwXqwvd?CdhKkF~Xx`xzyOa9N%OYIOf@20h2mDkd*k@PbC7B&+xZ0jfu*yc^vYoKN9des9B*Wt$=dteE=Z-+-g0c|3vBb3L7O_;wRs<7~*eo=R}Y;(9VciO=;!0=wh-Xo7zW z*W(FXjq9-lKNqe?6BN;0k0gYZa-Bul1=bmbg`j;@@G(A9N1>1@z-D(O5=SB|{esOy=y^L&xegGyT>>F`4B$T44EcwcAD z-=1nf{o<>yO9c(0sJ_CKA%cf0Qf3^TnWH6fE()AS!-i_wt>$^`K(LZ zZTde#-#ft51UD`4!jJ4i;H}|rI7FLucDSNP*_ATg+5Q#8KEFc>0G}7)9#R}?KZWv} z@KZa54(B|bLRV3I!fjkgk9i9hy!&tF0;}1}Wvwi5I0(uDR}qid&1IQPMwM*2%x{%! z#U=4exNxN1wOmLidNr3-(v4KI?9yZ#myVoIDp~i^WD}PSmnIpPpSv_cOv#=nMR_IL zD5g}&E)?lhvNeRIJ}{ZRW}iGcphHtmIV+f|7%Kqp7ntr5+VPo!x^!`tz$QSd*F@Z9 z1}^a{%y=iqWFC9b^J3P8xgqL%v&)Pb9_f;{S3sSQ=FOQ_a`yfjzB#F?*Ulqs?A|3%IpG8|k#a^z#Iy zi#o|yB#g03Wrq;SDv`chq5aUn4P5Sh|3_gayR#VA76zDo7tU4c_P;RTraY9OX!H{2 zoN5KV*ff{^=tgd-2Hlq)?c5Wnh#7C*VmPPshOD~!b2X+8i^Z309#OaiFuhbIWW`n8 z`J)EV6t{Bf5(H`%P`y@%gnK&V#HZ$<2l>KReCvo9FQ73Z9j@e$R)jn047<^~9$J(G zS>R(iK(ftvWhXrHKvJ9iyq$_41#NKn^vF6D$9&+L5lI9F0^1j`8R-x^n0$DtkNrE+;Tx zN=DFl>i}8WPH+B4`_xB1HKtBzpG%tL3n8E;rp)BzBf%dgHm%z^bKvfx; zYtx(`Ko}^-b(^7>hqGb~w+Sjc(Ud3b8!gRs{oCp^(UXi5XxV zK?JP&2WAng7f->BF$v)UFflJwTE~au;gGH!Z(W%jP!Mg8{(Xj0FsQuQQiWN4Ew^(B zp=>zJ9$`LaNNIDD3xiGK2n&l;z;2YlH#Zm|T%oS&3!?=baD-QEzkqaop==pr5n7%aS> zW{neYU7W`F?>06zl4`u~IwS}L#OdG22r-S0Rl3?o%Y#*i?4VFnfcKtBeR>Rs(HC_f0g<%8!|h5h`J190a?50x-G2+$Ot z=MUNwAS#|@=+5`cLc_GYN42_FS3qHc-<0e(IYLvWA7;d18(}{HTMo!!(Tw*C&pquAiB$b!hV`iurymZiV zNWK{(;9@{GuUVw!On&vakEw0f%(Jg+1}|htu28OXMlQ;A@Mg+&*~8Ti!Y9zMrxg+g zRrkGvetB&N{n`e(>8g7NKM%(;^8PXKsl9Tqs62wrt`$bt4uBo%J3v_JYD&t~m!d`V zcXlgMl=muYZb7cL+1BnHaR)g}L_$#!S^C!*H_Ynv>tvP^BSEYmN|o&l)C9V*rG`mL&Q~Y{t-s3hOgcpUCqbH)*4f@ z*pTX1Un4gl3~xhNwS9Gh?n9_bWT_nL^~9>Pa{{rIu7h#ccHzfW+jhapN;y2vZG{<~eIle>{r!-3su$EpYA`E#*F+Dj*1l#pha znY&vRBaCo9aQRBouYFLImCo6!EFVBLNQ5M8bUibx`sQS}HbWpz;pc3b3~@qhN%d7w z2UW4~ZBs~*b`_u;oir})0fSXxP`V>tGIh{5iwLzRz@^Ei?peR8**6{0ts(FJ3EBIs zxxQ-Z4g;f`ZjVwqH&EfYEU5xxU?8jM*DqYm)}=2dx(S5IfI^x>VRusuCb~HxI{jt^ z9E~YB!8x>>TNv%L7BI>1Tm?+7GkS#Yf5vqhCbk(3snI`@5b^VUqZ36uxUg^h?7?b1 zIPK%72R?q$SV@Ctg|VQ-vlcMfYY;~CaoLa%uVJQPXu^TdY8EdXIY7g|u@N6m#a?&rsaJ{>%2 zgDeDt+OR$PuUy2_(hWG3?!YZwf7{P(EpDD}7=Qo~@GEP>DzoiQG`AFBkWS{jO>4FDqc&S->dK@GKs& zQ|z8)hH<$m6nbVJvEW(#lrIL_r==WX9mb6v#)^TR=MZ~apZltWQOThu3iUgPB9NTZ zA6D`uwPRK|o6o6fe?yf>Wb%lWan|aE@M6h~mHZvS@j?6ktp2fNewQlHJ$GYydWG)0OowrcKC$C-?_J3_`PZc8 zIY>{rM?$uQ@Ve*FadY8AESv$I?QUeoS&m?Sris(_z=jT(%pM8 z*&6LSb`jBWw&tbh(YF0!5U^UGktbP2_R^3DsKBaU@ub1y1QGhaJl=z2U*)=iU6E}c zWIv`)o)O1Sr$I+5mHSJ0{wNy>Pj52L=v`}rx`R7&J^?1ALQ25`q)i`@z*IsX1SA!6x! zl$`c#&_amwfmK$PaVDz+`K}H4VUZUra2Gp5QRZ778hC1!!@o(4lD~~V>A@vhYa2qO z6c=jHt)On|HN{Sisi{8`3gQjzGDqo=9ls+UZ2LeWs{3)U!*+S3lhd~s%V1(lEqo_s zXteuB#bmo{sNrfVdHO5TWNX||U})UHM8@SL?}ZW936*CUd4Lzj0hB zf8%>kCC%cuG_aK9Y^>0e^wml_fR3yc5JJ8n{LjiCh&!u_AIhn47=r-qU}C6sR;vt2@XW%)yfa8_Vr975I<$pgRN&NMRJa(Srxuq?P_yICa9dMcpiNkzS36c zs*J_?)A~8#Khb%?h=4&|n;Vkn#jA$n*m=t=5$$al6`ssmCt1zmr9O2nrCeL4h4n;a z-~Z{4V8mI+OviH%#~R(^oTqr)A@U)1?@8k$WHAWElST*)Lm zq?$%lQ=*SIb}PDUN*@KMy}IzabCz1x!=R*0Wxo|sJ$?%LcKB}NE3;aF2_hX z&H-du3@*$LKH~haK(N9?`f#eYGthMs$5)-F;P{e^#a^4`#Ax7%uEI$(O z(iPgdUsqPi19pYc?9l4NCP-=b86FIJem}wOLw+kc>@c_GFftTKQ~%CUOIjq+2mVP= zhqB(-`Q9@X9qbS1_KBiWLvueIcB_USBsXtBs zooW(2Dp4G_6t7Fs(aw*-Ch<9?X&Qd_O1(VJeiSEgJbb;5&^QgbbE>tj>@Z3>5}^R5 z7^0~_GQm|I{Kr^P)MN$nGDNGRT1GV_`~hKsh}vx3>0(<9yBIbN={-ceW;_N!j9+_NT)Nz^FSRyiu*Fm;7J4j$0ZKsDvtzsR(O;J^StU`nxTM#p?*kh9NiHk-KE48Xm zot-$4CNhRzSIugCW6b4d$ZjxvuU6mZV!J*t)H9c|sQWBs| zR48wL=kpqGi+!h6rS4#a*q3jQw&e*sm5^1H+QngrzA=>moQ+qhJ|!7d zdK@_jj`fLEGzjCs=gm|Oko!h0i{%fo!~JY1M0l_)(F_Z1nPVxI_KF8CL@)qkfUxCf z3NMblO1O)J4th(v24FN=i{((1`F5PU8*N!8d8*eQC@9tfXthgV0BG$y6N0EQ{o1}i zqy7MsY<|)~g>}zuelb*8JkXXk6UE%9Aj}$*)>dllpWAw1P(?=K3}uG47hu6crp<|~ zgvxe;tnU3)v$~sCIG(AD7vyk*$N_w5l>*FyAYS5weVt`kO#Cbn4K@lGh2Fg+6hC3h zwMOfDAMumrgWbJBzkxy5IdZzFEDfU+L|o%?wU(N9PcZcS*a7T?Sx-ZuNrXfHE*+aJ z2DFI_q_&aCtsOXgAY=H2jIQWI_G=M{wL{{(Y)HJN4mIPDD?)*rQRlU|%|dk=5=khy zL3qvhEoi{lb!Xvifz^!w*-uDd*37ald;*%GxKR!e6CsR{K+zB68jV+Ilm~d*S?%R$ zF;F~k<8MJjxLEFWh;A%50N`cMXdGAIglfZ7CR-xgaoY}?56Cl<{z>A{cnRJ>_v!CR zCgWC8)F)Y_;QP|q0z=0l*Stb6`_6EluPX2-?_q*yUS&50%epG#gepc!m6j&Dp8{U= z#o?dvB8FTn(Fo#ayl9XYeR23_ya+b*lf;X*Y9X927frZawBFaPi(D?+)DgQY<)X}& z%8h4{i!zqGrRAcnEEN56kp%Ix$VKv6?3at)HoAZpt?!qMh(`KfS}xjJF1z!1(NSB86g~YR7RMYCb4#jf!kQ^e+B&hT+>SaN+7eX=$K?|8nbz3&)wCDTDTmla zjYILaJ8W6*Z0}_IraV?WG+>N*`O5tAFQy9LYxzEl&|$@g3JTiS`Gx>PD6|UQ+8tAp zJp$MO-7-w0G_$OwB%4t_Qj%iotU$qudR;jni4Y&=m%P_VsICi6f9kf*VU*0T6o|bX z@HA57EmhKPVFSD7Eo4U=iPrLI#-r9?4)_#J4bAuEEp3O>4$S~f`O5uFJ-|bw)GWok< zQlaA@6#Oi^27LA>e9-)YGq_c{()1~adDTjBjZ=v8n9=m2@8Qn)S5c0muzAnw2 z$`s$R0V|S~@;HWgAS~W4NccVy629vLY^R(RU}@eNRAqQ?O2@>K%dqP78C;h2LV@aX z%)Oj`tPC06Ya+&`Q35*CW;SwVchx!#KM+ZaQOj0odyoDz8@YzgI`NH_=N8&1)V&fu zA*@^Xio7R1sp?S%q~=woS=HT(El7dgv#>_^H82uQZJWxFGJx|BAtK6xAMb|HMz-64 zIcXW9)?W_C^*buJV|G98=kFBcvGAIsj#VCv#I;8u;+NJ(Ymxc1N;Y9XZ0;nKjPkF& z3;&LPM8vA0exs6g>32a$`riqpC7X&jq^iY2LUIo68Lc*1{Tu09w2PFv!Zw>K zD#?O}=nYj_TCqk8^3l)Kk2U0YCjLHb3(?mlhN^W*GtbQm$1B7p1hT z4ccBQ))&4Pp1vu>R@82lo_7=S&By_k(EBO)UpPUYfmiwT0gN+V%Cbc$igxQ>KQ|U? z)}+Iez@Y9mF#8k@yq!P1pZZ?%QtG|Do4}gz!$@rWa3aa_szeO`%AnOB``Ji8ts|xX zfA-!7>aMap^xS8kbH49<|B@XD@Im-Mlv z>oN(e3y`7QSty?pFtu1?#TspBgGPxh*r?c2M2(ngw5ah)+f*s06>C&lqXtDmGr!;S z?tQ-V{Ru?d-nlcqM8CbyyWhXh`@GNl{Cl5QP*iP?b{SdmBa~!@)7JC$VFXk}gjcSKObkbrHqLWA2 zL?158W51#tzwtgZ&YK7Ey&Ztf(pjGx4P>4wq)$w6(H-rDnM;+ehGVwDK^mD3Ca}%8 zB&eVR3p3I1jmv2%f_r)k&DV=rYbd#-C{ov9+_KaFv#>ChI9p(t#WAA$H7i2E( z+(02^alJ8|qpwuN=*gZeea+%W=asR^TuWpc21KL;7C@-pJe3j3d$jxPzg${K(*r}2 zsyL*ffgvFhg$1=)yuZt5$HmAE<`a~3*0?a=#-O@G{b60ts5D%=p~)vaTl2|*DLMdP zo=&K^aO-ph6NL7>8K`R6wt1@QH;=t*p#6Ld3q;u}-h;mw1)arq@o_AsCE6)Lh+{*2 z17YrDKZSZ;W%4n7T=;!d<72CMWQu)S7C=5d{vH}m_O-I9e_1}JdFmRUJlYB;yk9qB2RTr)+%-a z?N8Xj`r4mSSLKZMCl=|mX@6kSyZH&VKip;w@WU#$u=ZzUj#Vs{*(~i3xGk9&E{?S! z3d6H(W6!MvB0hX=1cl}@$vPJFCpjGwot|eK!*=pthi!}n-nWhYOX`5~n@bFxtFy~{ zNGkC5XEB9JG?IrE`NpIJ+$4KMC}=h)9+$GM@#rguuxv@_C)lwD45gLr3>^{jWNjRs zr5+kUiOa!hGE(dLtRPTfsBa|;ZBVsXm1|wB!!A}>@f4#eD9LhG0u+G@%*2sgE^q-v z>0#~)#ZSn^wJmiM`NMp;s*eyl)_89umD%8eErIUga0`bfVM*50Xc_}S*&GWBU75m| zzE}W1nJG+*L%u%!1BNGM3j2aVGou%=>GFmt?5p!lVe@TZA8Djv%-F!TpQH`!hr{VU z)$RHk!vaCyDzEt#`+pEUz{t%4dU+VUPRKu;LYuOegvVdEHO1ES-2W(Tw9`O2{o4qg zA93<&lZ|N0q88yhvw#3!V0`d9Nud^tADzk;@tWkCl8v7tRx-;Tj&^J3*WnE7U-`Ay zeL{Dr!`v(8MF@E+@{$P^)+Z?Pv_;0|7ipy%supVHwrvZy(vGX_7VOyXSY&}#hCH^} zWC_0*F{d8IckNPVewUC4V;07N1-wEyG?c3X0L+`XE>wyScRj6~Dm8{f0?mmkwSA}d zxhq9lN|k~Z&rzw+KDkO|HDmaa?`Q9+48X}%8j~HBC5Su@7R|y35&PN3EU#E~=L9uC z)tPFfb>0k4URW~HWY1cI*#A-7tuR5Rlx`hvqG&+huuKo7% zZ1w^!wG&BMUCx(JIY4EsI z@uJw%AjA}|P`tC7(U04w>i*(sw}qngcTuz5YJ&^9>@w!@dPkt;l{o>o3#qN%y91gh zkg?SpN}8vkWiWce?t~Ta$%W^z7&e26>hR8(4a)kLn`98WyrCxozsB{Ugg;fp3Vi}B zHPX!#P=(Ko3%Ll}SE&{{ZozSqd_+AR_n`1eCtkFv07-vJHoNerOpH&|!9_#XXjfr_ zan#uARVuWoU=`tx0`~NrX)Jc0X7(%4Rq(hx_2V)XlIh+E9v9OHk4wUeh|7_&{bTsI zTQ5#8+kCP$L_2Vn)BJWOQv-)jw{%o!G{~{yOUoD^x`Z@_3w6g;)0m*szMhc@oz&=L z>etdxsd62FAB*b>p8JB*d z*w~Jdx3D57H_~_AmU}75($d{^M6ws|BY$**Ylv(Yk0(RDGn+w zt%$HRl#Pm7_Mu(UhZQ{FH~34;-sGIsj>X?b7tv3^i-{a5mI5_Y-KGJfBCzbjT{!w) zIeb?mibcQz>#rhJ47J_zA4MgzPxS&H#->II8i8|ACYS+?NJJmPd$@ zp9q`{XCDZ~&Av+ka96sMHArn1Ukm*n4s*COe|9AA+}w#G=`l0B~a#U3Q{xDIn*%%Ff{-id<1E@oUyj{;O>10*&pzN@+f$TACNSSmw*VR|om z(2L4#knJGrj@{jF4-9z>Zr={A$~B_J-SDkupce$hRL z2$^+=%+1Cz4=?8^5m%!UEj&<)%I*b?MLlhy-R#BmsQHSBm;=eFru<^2oDM;h)3iun zL0^@R&2AP|w7bDtlTAQg#siRWz|J0UOj;C*1;pR=28r*lA_9V6L86PJKZm&Pkt9b( z8>^UK9hYcQo7UvantIT4xHl0Z;P#Q>HAV>4Y3$$gQ$?Xa(K*GLvDVm;lU4#<49?GU0jiv#&rbsX zrX=uhj23hO3MJ5m%rD#N`h{G8z_1GesO;eauF(S$|Hb8O7oZg=L%oKWxM&WX~elhA{k`1+pn?h#jZol51F8cW!g z{+rTgbMezFecn6V7^&~s8xZ`Ik~_U2=|5}}XvGPZ?$EN{gw`+wi>rGc+A7CAj}AhO zz>Ey*=+K0k>EY2)1c9!(op>xJPIkeEcy4n16%&x`osU4Cf1!MYNAY({prj!gj6z1^ zd=D=4vKhh9BB@-#XEzPP_#u?R1n`1D%h~h^1JvW!AfL#sqzJaYfhm~pQg4)m8ZSq* z7^5(~;n88g9VzeGm%S)sSOf;3&f%Au#h!W-7&x8lZ&nD7|3F9ny6vG6RISL%47}@~kfh&8`J39PCT41FnqsM*ToIjG z39kwqDWsKiu9LG3>W(&8zYDg(Ni1YIc>b#1jNYR*iAnT;9!)bvTzvwN*0VZ8i2B}- z@yi%0KF2g6@j-%vhac|8AckgMPurvG&_#qzBZjs8AGGW`GO3HbDnHJUAv5U(Of?O} ztoj-(NI%#x=Y0Z&lf2iKuyMnohI`mgunBZ+0n+j>@yhB z6X(VW^aszua+CmFg5&Hi35#0A1C^7AO9?Pn+5x9_ZSm(A=3tSP4&Lt`7r6tI5oC^k zN^O?s_KFYmKT3dDm0%`B-#;s=O3JM%KXcU2T-CI#t_hxV=3{7BbFT@eN`VV#RWll%b9M(kr>|xZ4uAT6=*4m{jihI?g}SXC@Da^tWFh zelY#2ppwSQ&3=ihI#eY#qT{BH_Qlp4EDF{r)-ztHv;bJ1IYTvrVm6Piy3q@HgYvEM z(alL%OJlELTDzEEh|bY~^1f#170b4$r$G{&YVm(sjjPtz=ly?8-rSTn7mqIKwZmB~ z-08czfzs=w*mZ-)Bk!TVenIg;B0{t6Jk_%<>l{;0(Jn{1u&IJ5qZ@^(KtEJYdtIl& zF9~!yUAc7*GabVzzk_4(AS7JRO(I8LYVBYgwJY2M+IHObWUid^?tEot;_DDQ1O#pf z#-<0F1%`lFoclD!0R!G7VG05$^7yGKHxy%~VD{nO=!V8^8-DDBA3whM7Frw&vJKBs zZ0(NL?@t}iZn=c3t~WHc7EfbqEVFK7OYu)bM8Jt-G{sIeUQDM^A){H- z8~smrcSkSb0vh2D=2r;9qP_PvPfNGUU)WN9_BVbx;O*|zxVHET_oheLdVIw#m!Ksl zuGfafHVe@>S0L-x%jVZC-|!pi=7!WhuW`mr6J$-cQjonXs0*U1}HRe%KL z4u8cBMAixzfD@(D*;JUJF+`9v`|o5)~@sfY{&aW0W* z%qKD+YP0;dCz&fE^X)A8j?X1B#snE4GA^VAhzu=AWEA=Q8bpS5Cy{B)BQgwFBGYi2 z>(igvMCL)r0iNm*nc-`pV33y1bwDp7EIeZpe#qC|Tho;h=?WjuxFI~Z-`dzxe&f}W z74AmM6ItOgKvwcCE*Hqk!hL|OjLan~5wLQQtguj|N`D#hZ!u9=hlI_cc6ni@fUMoJi5UhMOV-e_VdUUFS;%;Pk~5P)q2 zB`=ZxKqfBkTuc$z{iE1q&9DL&O}Gc1$8wfsgTp~`au;ONx(C4d!%7DK3o8ld5uTi^ z+zT>2InzI|D%$Cd7w_ioQ;%R^ok!l7u;t7AbGd>p2QL2RKvw((8xcP!#e@GXUDApk zZ4Wuivfri86SWl8)WlV`uOptoSCTjf`G6)sJzDwtF2h`Kl+_qp>&=RQR*jUw#YlAo z>5r08#V8qVj1o>9hPf$29sa8I_}X*E7vj^Ej_;~8zQZR!zRtYywd?WGTWMbO?<-Bl zSWT)54q~^wkSo@BBAgxZIr>7bSd08#=3ValOLPp{WZjhE&_&@oljz;VZE!XobAJDI=Y`*w@LFa$sz!A-ORh9VT8e4LEl^`?n41+0KsFSeb{ z5A;|tH=q*}UGA%`l%#Z|K-7c71DVy&DV6MffX25f84y>Z5EBpTJC?zQ#ErPfY%$u1f6!!;Yl5DJEtSTw zz74GhbE@qhflu9E{JM&7{JN6I6K_>5bcN~26+Ifd-da&|uj08JQKxH zLW6MR*6EsHkh)=r<-FY3!-*3n-uLT~p|<#PO|Q*l(GBTat6Y37#}#K(iqQo6ULYq|;XyUjYA8CTF=H>e4q~aZ9yRP^%a?&G3w5C*@N3u?v^IF?MyKXQ z)R^v%6snjLl>{lg1@bX!b)!@?h3(6F$ls(2M-OQ_1~iH<$CB8X$m#k(BD5eW1Nx$^ zJIJ%o09p*gt1)<7*c)b$z*7|iz?8RDZ$$tT)tls46CKQaU0Xh%midm7R$-`7-ceU+ zs362G*jjZ_QG;2EuhZD-?259X_bx?OXaC`Xtb;8W7Grvce{R-Yq&c=BxZLnj5d&8? zuNvckDpT0a1Ga78iZ;VLZqWe3_WPyFZA+bUm~9%!4><$mA`qT}bPc{rkp6knpu2Ixis?g2?ECB$HqLuG&;0APTugoyt0F{|NB zDX6*FRG_4}I6KY7WXwg8=E7Ra`(^+~_+GZJA8sT?8M9GhLpC;r=;w9|HA?e$sT4B|yyfcR4U=M)V35GOCrca~<NVo@1-Tw>?)jAIwY`$o-tZ!laJR()&2ipA zT9Ap8LW^IeI33ODfdE})rD;C4r#NNd>hiUb>dr)r79LbW$I8b3hG#y3GgI;1P~Ki2 zP9`ui*D%*{tSC>qeSHxC3AGBiT;*bfU@y;CZJR!=By4=IT>k|fxegUh|LQ7+6Yl?eL7g;V>Sl7nIy$z!;OHT@^5>UZ4XgT| z$+Uy9`{Bq9OsnIX&ybsr#}LMeGZ>l!c5^F*JhN}*vDAszxD5oE{f}z!SRO*=#c5fk zgGEAh;;xaG2R|pb0C+c`_(xw`ZevF}boVDoA!78zSW;A=X;teAf04U4Sn!E{LDX=b zS0Q#L`>Z*3sDq*|UhnXgZFg?HqjBdt$@A*H<6zyPpQhfCaQIlL-u?fqdOL0t4r5+_ zkNvai9hTxOSnoZb|7XC#-EM)&-rb+G1t%Ml14eJ7JD6aQ6nx&ELpoW9m`dJu4lkZv zf;MQ+(wo&R1k$@zVx$_Cp9jJe!zI3y9tI$d9%!o0(k7RNI0Fy7xf zavlZS%ZK?DHY{fYJ^-$$wsa*Tw)Z{cI{M~Mrd(g@lBka35w zDoTuo#rv?$qCaAnfQe%Ux0iI0YQb#=M)DZ34YI z=3lH(u~9B#k3iV~g$|fqgr2crSrT@PJ#61OHn^t&o4|9o6Tx#=9J=VBoTm=97E1j4 zR6zcOU$-scCuh9;thSA$_faxfluw?^3miIs?{8JElJu8Ae|y29EBgI#NIE;v-g5t- z3n&h;$2uYu+N2cNrtTaC6uct`wt)g9(5^x-OT2vfrGbyn9EtM5-bnp>Q`BYbW6(My z@IrvNk`Dml!^_4x)r295@q?Ckj#_YEvuwX4_&d;X%+HipBl zR<5mPCW9J~sm07R%eApF$HZ`+Gg{x{lfLb?`U9X8jfAtadrYU?7b!auA~j6`srb8n zCdE;2!|Q$T?5Pa|rIWUPFs}~GR8vf2)fDe$AU|AYo;`CXxaw?we(CWrr?0B%P1S#C zsjNo;*#X6_YCO~!jX?U+QhkZ2e!A6b1no=Ub;+C%=eu%Zh=? zk|peTHaktU4Pw^$stfI)2QA0G@UJ1Q!OY9*=j&N5CoQc7uYP@RsFv0gWKJxtaqhY= zt+hd)B&~H^o>DEx8`2uTW=U(DZ7|kHC9Q!^Cy>^LerjnA_E~R2MgHfO)-P%=m@-){xrL8?C94g{VI$={Aq`1T(F|=?h-PwL zwP^NGr?EsOv-i-T01_1J*E(*Lqs1SeDim^pfB*5Ru}V-;IJ(AX@fdd9Q%D?$1I;Dqj`H-D5J3|DsvBo_T*_-6%?iZYAI zCx`4&*Cn-QQK&)c+0i*4*ql8EclAi$~BPRLNMA z`VAgB5HkC+Y|j2`n7x>NwS~+}8%;+e?ls^eU%(f+JhSelw#cenDgx2@@`z37kLFZT za$VyVmxC&k{n<+KWMnnMaH#PBM!O%SV= zA|9%aEv4Fs#zhc}`g`3`9s1!BYSv+67d51p#y}j>2@OD@Du#6}hrut{2n7f{le#nI zE}wbDo4?yo_mHn5k-+K=7JK}rr17=~FBMhS*aXQFKf)`7OlO)}W;!I;m6@I#Zj4Gp z4pvHJR3;m_eF&z)e__GJwYIXbqq1Ps>Lioijti>ys%1z`1K>OAjLDPlW5)6BVqQ#e1|P&b3%uYpdsli*+3xK-fuR<++gnlqK%)QOl%i1q?g8N*U_x$tb_68LX)Hp>ZT zv7Xd_?b*cqbb#3|-hD0chF`H`91N}Qot@-{Ki${rf=DV3c4)uA zT74PooHde{M62()tHdo9{00?Q4U-EKY@z74wUo6^0)^U=aQtLZyf%v83CCWPC1~~_ z;+W1|7-}5USVW_;17XCFqRSGM_w-#5Q4__@C7i`nlORzZIE$HACp1}BG|d$eKGycy zTgv6X&bCCwFv!@pC)^BdO_)df>YM0B?-B^x<%?-*ugk=jhAm~7h;&M)!p~+`Sqjzzw+paHc z_bKp|+?x74rWTS4ptu*MYO=iNE_jI_p3_4Tz6?H_POhRF9&2Ezs0P(Ulw^OTx1kY< z$<#O6@#_N2;~MhP+SNR0>?$5Kb7jIDaRA^z(hu1EP#>1tV~t8*l=RWl%+Y(_ij!`lS^fs^}n>j?-zLC7KDx zpu{!xlc)t!R9kCc>#i6sDi)vg9Cvz}PiEVgs<`d~Oy!EHTLLxLVhBmfQ(f;9k{(mh zN}s8Jhe||?JQ)0O#JskY>qQt&`kH{I(=xUgmbW^kOYGGuXl#%JB` zhmfM?V@K#Nq6@|M!c~5SU0GH9))X~Pt6LrW(@qM_GM#+>^YwH8mG}$L6)FD~+8ZY1 zK|9Z~tdaFuj0eB`iT;7!+HHUa_GxwI$pvPO@-2oCYZd>%q@&_vV+)ws2_~s_Kd_MN z7j5i^8fHAo4Ty=c!l;5kOro0Q>NG%NjzXRs^O?_*P`I9;s9xcpIVZ4aW zv0eafaW5oib+#{0NOLr&$=8QU9MprFx_>vWD_>C2TG%mK>?`_GizxcmR@L*sEhP^4 zXQ>`(OXk%ijryCqdao(tFUoPbA=GKih^S)xzkUi#3@L|ZQY1F}h)KbMiy=UnRk_cM z0hgOR77ycS&KU>9@#MwOYMPxO;lXN!8wAeuO(^cVvVs!79m?HSgh=xBU9D$(sC#bW{{(f!oe;9vTWvomz) zpRz5BI>U`d114@Xj-t29zbCETCT)m0X{8aj$`>SI_EBVHI2xo2$6fW|J!jJ9BB!ob z+;`^q65k%pd^H?I`2yb-`_}O-GLHK;VcMu~5yg1Iw~&uVd^7$N@(J*|6B+OYjT%yV zYP6g?(g004{Z#W>mdftlfxXT;P1du6NK3loXilH6Erx0G-gLQ^E~B| zV4UeD%A@#?x9Jpy)6_^}w^#+kHvqDs8?Gx~^V+SQYh^^j?!=;6@M8*(dxDPTaf1knc9i+?;y(QIumv%) zXS^sL`38ip%owaAxyboFkM@ypY~K?w*7RHrhUWp>0k!A612>i}F>MCs(=A07LuIbS zxzQ!SvS%AW4w^(OE3{!jxRB2?kme4AK*Ym0Kb*5=7s@MCFY>wRk87$Qt<5NHyUi_D z8Z3DQIO=DaBFSwr=KXLN1m*S`&ZWZ&aKsz)rQ&VHpDX8U<_z^Krk>3J`Wvyt3=lp=j>Yu!9BJ6 zunEAN1Mx8I6T%!Qq&)!8B{@GgJ{P`i*FJU81eD-5ksGuJ#)*VX5MVmdGdkS zM%sO{NA6we3?ftf3yLPTS|0vgyw6T8kMStpHY(1=4aM=1q2%kE%p$)IgD3HY4qD}5 zctaM1uTSLmWo7<&9@l@60%KnHr~Db4Vm|4D%uJaf`rp+p587Z*Q>6Y7-qGuX+}`Rg zUYFyM2Ej~94%GiPb7>j`I}RN|&rxQ@6Q{ZXE_Zvx#2^zhQM~aq*8%M+ zl>5?bv7-P~r))*Omv-@K$^%Gp*}W{bkO)b@mqQJ{pm0W#} zaKM4wR{1>crsbIifqQ>?505#U5D&_oHXq0CYrJ5DX*v*d(Qy5d7d9j0@%Lz6i#}ja zq;QXHB@78OT3?5_muwJJ-U9+5-{e&IfANlF$ocVm2u}bQlK3Sab;mJfgpZZRVW5>*^fO4xVz9klL-_f0Jj7+-lI#)l`m3{ zsyY&QL$?zZtgp&vmW4re!7tw&D1s-I@$GGW9OMMQTl|uJQDTo-RKM}#;ba1xu3fea zE{6#h2dI2~n9KCZp#sl94u_Kzk|Tt4c@5EUd^&qwlYw-EqB_*#jVh*qy+U1aKsOGs z9c|ddWb!^ zr@}pDKXv0$qSi3SAr6z&tdW+Uugv!~ zC0q=K`-RhM%EoD!3b*O&%KT7#L(19QJA+CNb5>@uS{ndnC5L3JW>G53>5HoDL`ryO zCc(_dBC|)y(ODFKLO)`l31TC~r-wl&-0#ll)=dm_VWfKs_soYrsl`1*Fe6Kt)-Ds# z?e7QM%1n@hSqX9(6`oH{pwT$1_qd!Vh$`!Rn?c zK+D~~ho@vvr;{$SlbTYI%sycAq7PwnVrwD^?>o+%>p6M$=3=Xm1t0b;0ux9aD;_(K z+1C+qg{ox!?!fDuyI*m#3l_q4U!QkSX=#nAqIU7QvqXgH@T=NA(wMD57~}+e4{l`9 zMCB|!+!+}iQ-Zap#l0hnu=OhhvVKK~MO(AExOFNnz47(2^Ax`#b?>Q&>T}yU@o#&8 zYZ)`PXzA>3ELvPFIptKeCq_{LIOC^QuV2O!7m5R@3^*NMX&(taUbjvup@)+4iAhED zIu#kcer1UDD?_aFGQ|3oAw~x3MPjaB86r_Mn6RlX9d3nYMTSV^VgQ`*5(@r`Q~A8b zMp5iN)BLy#n(56`sxs>4;Z*BaSm64V9k_m#33vQoInOO1Ug;F9SoLbnp4p8H80Y~X zB(9`D4{Z;;!RiJ6EK$FZpzZA?4e_mkpCcb=I(=~7-vWu(0XDs)l5{9#D84B0$1Oz9 zV#2qcLC;P+!SlbAi|W=4K7dlGBBE%?PfK3=6(Uv`aGIN%J^R!1#<|5JUYP=8sxlSh zuxE3VK$^KpAkW++kY{cZNHjMIWSW}u8{>^?IV$^?Kqp))T{<$w*z` zH=jVhIo0+*#d?ceY@^7$ZP}lo^~MevMjy zK&xAE%Mn>BWVb5o8yCaHm4(tp5hsZX12fVqI2)-<9XOltg{_v#aM+Lq|NV2vzTe5) zRS+fk6a*joXxzFH$6pSZH5l{{j@x`uHvabe}i1=*u=)VHuJ-l$&< z4B7?R<0ic(C7rJ)m*b#2iSvdt0e!7_SMHMLWj6|JbyyiJu53RnmEx`Do5yvEPGSZ= zx4~yy;vN(@T;CER#xb8Li;rrgd4iqTCwrr=M8$8bb|PXCC%RzX;{|(XBaKqUJC&{R z&)RVRQ#KfIJq`gaFCKu#w>;KL!8_Q$JYmGYPyx+fZ!ziA_;^#1d3^EWK{{I+G7{{K z9#Y-g=`8YAv(^)U#YA_pU*%KHnkx+U^k@^dP!1lJfxmRL_yEy4*pI2;(PqgFkfWqe z#*hv*C5d4S=oG(+HlZ^3aDPO4sc>A%K7z0$Rvn5m9b6Pf7H5k#G z?n|o0rhnLYVdJre*v>q^FhmwNa}G`*M-W&C2XJ29%=ef?7t13g$Ie`~sfhK3@bV%n z!N@X1O4NlFzfpXUQ96`vv;iW|Z{y&!$3^G0afswvoPi~osj6dDNUXGj0U<`IlRJTT zxC#?XGuJnXD*&{3-?_YiG{sXf*Ix$z$#8?7k*c0Lgp<1NMcLmr%DADPq=fmH-tF^+ z{(0Q91~c=D6IiSPKQX`RXP#qb`R=T~8JRRqGAqK;t>UQiSnAzOrH?Sj=~q~l5P=?T zqJN>lp(a|2oXb1hjp`oV(P1Pb>zYnY_&E4v*$7U17@$DH1^q*6D&L;YML7JSmt2s2 zT07C_yKr?FJYd^^oaUjwz&=(SIfpW@O)DNLlU~Q=PrH#g= ztqhMPCid{r@sp^r=%%V~YbV)fLYI(UcKupT^1_N!!IvFbVjhe);+T~$ZKYA_Y z_e#`6trQdy9<7o+p_W7<)Sd-NYRejH3bJTz9IPs4T<=CyTb=De8&Zy`ooJU|gQ0DL zNb*P4gbz^XP@CG?@G?>tpop2%INuq3Nf7(ZEG%W7yo!}Fe@@i z%kiTHLsE>z26T$4B)P+&c(j;McSV$ANQ~$-6q51cTd|IHRgJoaBnVo30n!hmW9Uo< z?az#-3ZfHlcRItWNGsXnQWLn-SwmJ*&V>y0+aLcTP zFwH(bmjBGn9RmiS&L4pk7`oj*oKY>_)0+C(61EtHT<>{z_t@LEbf34OahWHW;bM$= z`LlOl%NqRI4QFoKK+LQS7$3H6-?eYL@#?9SG}cwWpm3ogn(Yql0_CzE&eL1cMTN^z zD1dKW?jPo{zky#k&wXl3cqVPhiX839Y5s=ZFa{1QHn_5x=e7pRn&*vEaisS8DI^Yb zB~$;-$K=%WeH2qaXO^vvsQ}D$V~V46EApGrfbhVv=4_uk8dK-^yr(gR;GkD34F788 zeyZ#9uEx}q&v!JYda81vxr+?m*IUtDd28=^8*aW8!1M?Is#`Wp*FSE)W$JlR;(3=q zVDk0Ab8+{1|M%Tx6N3#Htm#9C+#a3!RSfJf2IsMe*KKC)yw^X()XCc&`4sxU%eObi36n_&yb{`XQO; zob(GG)L&=wD~F2)biJQR6yzn9dF{rRL_BvsO;c%v)?C&-t9YykTSB+WeNmnJqU*Ff zGv1>6bH7SAer`kaSD?KlOm?6Dt9+vwEW{ByK78?Y&1!bK|L#{(eN7Uh2Hg(FijPma zxzH@U0jSVDvpZSbi%zQQ?Y0IW4TAR)6$Dbgs=HO3L4X2vafoMhPZv@eKs8(7fimP9>#pdoAY9!nWD<#7L!Ce-mhE~N1(t2zoe0-)q!reqNT5qT4uUZ9 zS`1~9EvFF+_-zLL%3<_KW#^?4jPM4+K{yAVxRukO6r|0~^<~S7w~q?hwQN^B)@ZND z<4y(cF0d*1t{3L3cw_6qYfS36oCj8iZa3esRXCyu;)=|m0a}fN2%y!>SU9tn3O#^m zjF!o~#K{KM+Vd`mGMIPOL0bT-qjm|ss0 z=U}Y*wIU1WZQ!MnZT39Sap0;SNsN*^6C5bM`^E7o8bkKHKkhVgGPzpfE^L#Mj>7sMd#}#sUKPfoN*%!Hve)t)12oHVXW;VXQX}Wtj@A> z4JH?kV~7ZAd5r2u#HJ?f@cidI4)6poZ)S?eWWeaaiYg?f=Z_3V*$*?RODmH)z9HK% zx*;nbT4Z#_3;YyrTHuso1MA%yV2gF4{xyX_>XP1di(zI?0+J@JO_cN2HDp{48Gp6?9QJr%5}%r~0pIGnf+5Eb z?{9|F{c3wb*0gCrLGEcMMy+x)a5cw@h75FF%6Ol`O-oeoX>Tsx0mUcGTvKKcF(+Cs zUel!tSo>~WaD7ifTS`IzC6+gIJ2~5VLP%fpN@)|yCi$AYfy)|AC@Sc=Qam0y6ZpG$ z!n{Shw^!Fn*4cW)=z;9eR-J!`U&4AEkIg-TKEL~1N;e_T(D_=i#o3=wY~kFoNkvR0 zH7F@Vmz5_fGY=)%KT8@$|H695S018@j>fw!73FYr*{MM$Wx6xoc8fgk6fCO@NcI#+-ipd!9^fnSX?*xbDzfWHiNMh zOsEJSYCFNiz>IKQ#`PsvwnKKGcS)|U$+y$Fh8`T16*{=F$_aoGISpG=XPVa#_=eZ; zlW&OA2!tWT1+!sH96N=#ZPH=V)tCW#04Kw)rfM;Fo&(X;JqA=npunQIm>^&WWqs=z zB6s?g5R*vC9^}m?^@-U;0(EW>t`02b z^)<4ialpa&erN(6Tk!w}0=L>`>x%G6A=;`Xj z-d;31P5D9eii{hLQeT;yr*-W<#@fV6iy$ms!8wH8A1N4J62V!3xd@`btYZ}45#o5E z-?*cEl5Ho|>p4iV4sI>ghFdN#j#2s z0w`z_vKKbY%z?QB`MSmf8tu__u_JTMII4+ec{{|YS$+iHheoz8^5Ri@t4wX@f@~{K z$~Nw&>}{r@1>YS{6y-jHr%yw4#bEv6Jf!znc2``5L(-o!C$Iq7ncyRb367=fe3uy7C~9 z7Zmri#=wkT!?6WsrovSz(nK*lyox`y-}i%E=`wiLq(2-dX<9@A8vY5&K)^$CHOqZ{ zwN2Bgp|^`S9I-l($0!3|o^k%gC9TlM>=FnI(lw9p9u7OvCz^U>szqE^mKmMZvA_5% z=XpqtIT1bYfOgUc3)P48+DM?e8$;k=@gt0X5kEPA<1fjNv;p)8CC=+Q`NYjFl{oug zz}eZ;Qm+;~Q$E>iEy{C_5R`xSZK4~o<9pv-IWJXiSMko_v2F6y(S=(bUB z;i||&^;7}4`0K?CdJZtSKr(@#LpiF!w~?9kev@J0gGUpyGBx3}RiGKJKvUe>TOw$d zoES9Q8vSxHHGR-z6=>M(KyH(-54F5A37Y^92k!6x0m4;se5WUGFEE?#{{hQwarp?3biY(q z-U``Z%lEQh7Xf|J4Crc_-!Z?{eJk#s(!4#G71yw2jmXtE!Qg+Z^UrX6`C6y%_`)k= z3JW%`wd2dD&t1szef- zaB}mQa{bgkEq`%t-=_uWhPMXLseM`ol4_rpfu!1}Wgw~cX&FeWeOd;RYM+*Yq}r!t zAgT6g8Az&qS_YD8pB8#uFBM*EpO%@7jEypa$DEr9U@)R zof>gojtr1Ia=L3P67?{JDfPtOwmWr1fFSGZAXC@cTy7^Vc_GZreQ<%?hw9v%Er6#b zK3{Ibl3A=Xb#Kba^bN*2SojpKC4RAMn^>{(8qgVW{DvR!JQaL_+=lU|f1=@2>8#;1 zXLAR1|E~GN-$&ZQ!=Juue(r6gCAW~7;m2tH<%d5*Se)*J6wfmIh#|9v4}Q)a{*K?D zKcHQtEj;|g3*Gc1tBBKL zMdX+)P;-b-;?%cLZOjK0k@&<=3t<4k z_T4Gojy}la3q87>>XwpKN+K#FNRgF6oh$aOF1Q0d<@|z`i`Ps+Xj%6BW~bLF9*omQ zbqHv@#vBrI{s+!ms3H_Y@VySF>H!r64Ep^nzByHYlLMji!EwbdQhZS_GAX@VN-I80 z0R%*|s3chRfXjCUWW#ovjFcGI2;G$+E5!R5i*HQTIZ!4L>xJm09Kk8qT%Atxwbmmc zkm{ulX=L?OJz2Mqv}`DGy46sIQ;W=7m$(=x^I+#O1Z|!Qydj6A*8Vw?ymW>~p9}}KiE}BazL2^tghv%JH!X}OZ@tbG zx=R=loK#v+kEun>C6@tmICabz!{shy0K+Na`jOlb(I`;fZYZ*1e@8Fc9eY8>eZGy- zP?Rmtfue;lEI|~Z58cJJJc}*yg6tA9eLll1Sbi?}o^mYCeR2*CBX~YF5yGXtE%tMd zip!QIX(!=!Sle`lE@uQx42_-`*hL$cu4($M*{u)T?`@uI$FFPJCkOx0WC7CzNL3_v zn9hi{`(#LHzX(tmWBN^A%N^9&AHlFrT_g(oZRid*w0;%bALa}kK}Uu+;3#{Qpnd|i z8uB=AW=F8^=1V#_s^RUJ!`SkC0@Y+9^7@aF!2LxH5cao{tQ=;o6d8}*8QK>dSJ=x` zPsUjI@RVcW8DolikL4(^)@qE|+6>r)aat0+mNfFop3<~x-5W7y0X^J`wQ-n-!vJ+A z6=9JHCm4r>j*tv+nJ9K4TewcfQ-igEGIzBVla_77F@dzozR99sgE^_QF^71jvsxe#w z^a99&xfX(W(W0>U&TxId-r+jtSWvU1Sc0xW@-%CrCp3(m>Ov9;dFPy>$18Ev~s!zB5V?W@98UhK?dS{g%f3NFKHC*SMlU|B~F-W zlhUmZx1ZTX?x~8z*1c!un{}Xbv({Z?(YAvi_@vu9Gcr?qo@n42s|KyA`HymHl-;W? zG^7_}Tg9T_LF7Y76Y8)CeGd0y8TR=wCa9!A>jdBIr z%;L~#3C7D)_w4Piw|^oH!85He9-cN>MJ|e=bLIDP=D_ZO-eK25KJ_l%l>{$yw?T9Z zDEIw9BP7kSz6&Q?(aQYlh=x@DW?JaRnHlm>XO^e|qX@`*&;SJ&mTf5u=j{uj&aFp1khE zE`)C?sXTY}tSbKMw1g4U*iIu5BfCQ|w>g_EDXi=|I|FJu+xLU14Ly)uQfP}Y=0ys2 zvVIEaLmo^4b&6d+06C=#f#vVlXc+Aaf?auemIN~(De7hb?)E+?-E9WZH5O%{d_tHs z1VF{YDxbN-*`}k;wkzv3z!x;&Z5-eU#|mOWh?S0`N6h%lWbxXc$+~~~0TjpJEAsMi zgc19IQ9I=N7lj*A%xVLjFg{QjWHy@qqY^wa@ublWjca#cmvvugUZT%(r z?fbYPa3AM`Kaf}O2shWZ3H!)_@h*HwR}K=mIQX&R^%FdDq=e#r=VULF0FMO4Pw@L5 z#c}AxhXVKBI2b{cMB)}0P30rom1ytxwd$Yw%ES1b0P02l0U>UL5-=9RNh{Pnemcz! z>DF9<98)MD?|9^5sNBVH<^$V7qjhc5Es4oux=%v{&nVuDw_EuPL7c|`6T3$vdcHl6 zwGA>b7Y^S^fFeV3vWxC59*QQP2oJfV!>M6R702w?eKDk?zE(prU-<}UC9!t*F^(HLhNmE;^Tt3HnokJhWHgJ9%Y>TtBkqj`!b~6#9_@GMK{4RZ5`=xN zA&m9@#X&<_Z~%@|Um{!@1Gx__3V(xa>~)>wI&=`$T-PB*4n(gUxeQ3C(ngm32Yetj z(y&W}$A@^Z3h#pAX`G9kx}5~tk-H*J9h9zBd>I!44mcgwd@Rb8JUmU{%54&{v59Xg zKu!@G4UN&xGpss;epTdonjkDgY@ewM z@tN*b%{Gm(LDdwjqBGv#+>GJ)%cJDqPDOmX-#xVIUGdh4&UgnL0{R*Kxue>Cr(|}+ z--({JNSz&k(e7?=8nhyBk1a_*8FBONr&ALg#c=U`fEdoZG>sK4(ZsU@Uf6~>0*FwO zz)~czVAlB`PS;19_C>qH3{+aT9AKToQLX#ox+? z=m}qW`mhJ>auWA^LpKNQ>^23u0T4wRGe zm-c3M3-)8xy6iZ|l_8_JYlNOweQp4NumlyArnQxf+U+%$^hfi%xE?fhPG*CiHIr)w z4o#p;Ufu#Lmqqwz)<}4!P&PPmQ1yZgr-8f#JV$+gkHeMR1nO(GD)A$TrXWjEY;Qa- z$Y9rlx!F_w#<_)@E3;<^DSa#6Co1ftfRo+Ft^FZoJ6k_Ky=;z!|4W6>B0%xLVm9s= zG~P$mpc(5*kkUbSg7A8%29EuWMSd!-#O&WkaU*U^3Yaecgm%nz3~@w+%dmlSY9mg$ zDAF-PoNlcZ_Gc4skdVn9xN>=VU)p1`iE^FH;=13We=}4(`IbYWXmLH3>E&6z-hbUO zHz&fqL3s3&<7bPFQJ*BF;pPp!5&hdo!@nJ&|AuZy|8`=REgi0qIl{Y zQ}Hsu$vGlwxL;7a7n65e&nPIt!f4@!KVg@Y6M>!Cu+`}Y=G@ng-k@Ok;|?tAjRIqi zyo3|=`8`Q1qi;Zb$rp$iS7jbQ94J%;wLtZ zk>bxLduJ4HS=2jaGXpr2E3i;&W!)v@Jf-YxA%t1{p5RyI?w%k4Wl6tRgvWkrHemw@ zB>zW@)-AGt283u8f5;ZAk43I3i#Nps9)OrBEB<1sYJ?G#CY;2{E>h5nX3z;i3!O6< zQ-I$K7!Ploalp8RULXJQkDmVix4!(*W#$ z5RnRzcAWfvN!zZ!rY7JzAj1^Y3BPc+44sue5ikv>ph_yIIe@}NrF}?*s!IM#5R)9B zz1whh{2J{Bl);BBuk4Oq%Yulqi&;0+1^y@Cql?Ozrctyz0sQzq&aVV)v{J`IF=AYp zhCp?}Rkt9V!nai1L{=eiU;?Yu4i{#mse(AcWW^e-a5L6tcPZ1=Q7?VU+|HzmRFq}m zD_eYiG8Ru9s?aQsQjc&B`V}qdo^~zTq|@-a>2+o~A%&^^?1<;ql5{Y!&>@y4v(cOE zo_T9bE=|{Gwicj+gui<# zvmM&_vr80T;VZ-b=*o`6my^9*_n3AFk5(}pZaD5lm2BUJI||wu}cV`@c~j zG}!Z~GZEUP6*ynwx-wt7t{Erf2)Ef)QcedI=`DnKMSd}Nd$M!DDxeFL8H_6ogld=7 zQryB>40nId&!~XJ=rP%yoa-B*o`gw~EotjXKbrTrM_nJJg`q_tKyKu>PT4s6ry#nGLa$rbv zu_N`t#8K2u>zY?Ydp-764NfhEYJ%CPx=4aRJ`m>=1Afsng(mZ{Epc+P#Xcyt)GeQ? zOJ)uQK(U_ne z*V>neyzG5-v1j)sdZ0^2#`;a&rqU}lVaAJ8UbWhpfmfG7^~xp{um7BQI6|q|*%QVA zuM`gF7(V8HxO3)%5;F@RFE}Q1$JPQ40sW-Tc0E2c* zdv*W>8M0B_+f8;_6pvn@L(mu&dXlS;J)n*RwX1r%wWNQQpU7amO+pIR#2W@R8A`|s z6j6xg@_0MWrB)D0u+)txFOcBf3UMrRscKexh|4gHas;Bwn6H_vf zE|L)K8Hu>J@O&}2lbEmO$12_KriFVCJ;@@iIP%G)xihO+v-Iy+L3YOz0 zfWU_v<<2UaauKMnhh|X+n<{et}GlEwXF0w28dU@)xfSnK|DA zf7Tn_$A|SQ=ts-*t`!^m8JhDlEbeDuJ+=I-tTlA~bwnPj{-``cNuA14ZK*}YGEk!KkB}h#ahZ*PmStBn0!V?7<*{GdPJY_qrTB6{HT}o2|u!{p7>*R=sdZBlUS)psoXpZ|cWvY+ zUkLV&m{`;oQDIp!n7ZNHQAMLx;8GN58M{dsEE>=PT?iom!`v^ba*+cx5jI%XFJT=d z1SYKzAH(5^^$sDQ@&vQMh8G#<;Tq+EdB8PwN8Nkrm#sliqz-nK6F8l+TlEk_0A!X9 z{$lE&x3d$Ej1}@5Y6(9SnQLsA7hoyc^(MNwxN`tVgj(=#rW?hc2RNP zGC=;C8ss!A^9Y|n3L&}JkHI05mZm&mkAf4_r{3f)6B32xj#I}}JJcOhPoUwWlJJ9h zCL!58V7sutL_Zhox%ePI&S6ysQ1_AX1BrY&Oskve{5GGh$~kpedo^^3(aFMyRvEcb z`x9=kU&EfnO`%VoLK=I*l~Gx`TCZtz9k}H0b3SrKeuaOogp-1`XGw5XC`gHe!1W{` zYg}V`+(IXi(SEU}P}pOo_o`4CEw38z#4@Mkb-jx_L-h~CR;FYY##k}R1Wa^fj!eg z7tp>f0o7J!cY%2RqP9^x711acRT$brX-MZV9;WzgmBbUV1{v{)*NKhx?EV##*2l@d2%S6 z#ZMFz<}z@R@-Z*PU5zRBCVK-(JW+j-H)SjS2?bB;AX5_sm0%ogr}&r-(OFxA-r|XkXE^qw7O0;HC-?rW z5I7)wv?cslB6JYv74e*LSCiLw5a)a^EzCHGci0ApP#z49pH5ZdcjwnTJQ}Zj!e@_- z_y^H8H#X(TKRl$ZtoYV>xCz9kA(}*SM@8Wr9vF#pI3&ZkS&SAjM?3g{U-+{Pwyw25 zGnF&=#|E6iv1L_lr><9i;4@wCf9^wU2#C$NgL5)jcW_1(*1M=oi-pR_K~T-03L}h> z=+}_^#8nJ1(-l$yj|!*=ThHkv4#?d0=#f(Q*vE#eduZ9ZbvDV%(=NzjVb!Wme?`C`=n&TYJ(}bNeArmD0$8|%cpiDOy$K_ab`;}xG*t^=To7k zn_N8=7b;?Jb<+$mt)0TxzQOu!_A|k@G>VVJ*A;vqFV3ZA5;g0Z*gxu;P)M3-c~uht zw5}lP>`~5%pU+NxnXEs-*EI@5p1@A>d1=+H@stgU;uY{ry{$TqB{L?C@? z6b~*YEgS2_7@TVvw5!$uqy#ux0f-g&MgwXui)?Ixh+CrP7gUR08LwFEBJ2vOXs&cZ z2!xn9yBOn3GerNC@DZPtn@?U}&SPdx;*Z0oPv%LZHF&4FeaSStI z94{;xx*WaLovHXsJQ0-kX$-i?u!qP_ASB=~#{yoOdLtbNQ9xE%*J?tE7zjJxz=7+Ny(;GH6?+wuZSBsQ$239$4g$+3z1rdKZ2kj)oZ z!i)dg5>89F_%JA(meWtacFTvQ0}beatK?sM317s#{{LtRFFuJSJU7q3y(Rpf;mYNc zlNl{`;pz&hbnXa|2wo6Y443Iv7?Qmnsja721UQoE!iSjSNlNcV6ly6dw~K8!6Qo@D zS?dN>RRMa7kLi~CG#XYt zzQ5>^vQ#M=n=boI@$|$Lu2(4DN8FEFlIcg;&8E=)#E&D4s_&Y2*db!Ipi_d#pjqwW z-cu>viVKy5ZLtgIbH+JJb$A~$?7c*j3TBAB#(4E40kP`SwQHgK@w7opYF=%KPDFlj ziaM`ZAZ`G7%GSuXzkh0ls7nZ~QK8xog$S>5;4c*pR`noOtfTh$@NJ)DfLrPB21R>3 z4W4mGc#R8Zr{4>~m`Ri+Ksya_r1*+_KXVe}7L<`>XCi2ENUe7H?5Y_qm(uf^v40AL zi}=I1YM=yo9Y{CpR_568M&auFR@G>3&Na*}qZ(GQ1D-4Mn=}BjRjO`*-AxiYaff2< ztc|u@EXDV{ZGh?j-g(rIakvF1NhV+7t1k!RNCmpCxL|pjrHZaA7$-z@fRmvx(nTZ# z`>V)r>=$7;RF+e-0hfz(uNves9?Z$5JX)H^n&k^F$SyWZXiAb$t$8w1h!Eum6hy-M zLLOm#tC}57&0^6=!Qrg`pkSqehkeq*0iG~G{5b$7c8WV79;wrFOM4Q__-fX&DOIvD z)gdEFFKFIxH>GcAUu3B+VbfC8quz#dN5%FtfC6;u0MQ~@OQF=EMN%Fn*m+#0*;i2Q zh5;fX7@Sj6JxVBo_-i%W4D==mkfBcTw4K8U0=65LecE9?$f{||3?VXp3^vzR9;{9p zCgmMtMsE9^#bo2SP;`U1YA#7kU~Qt#GGWQ{J*@DQciMQ2BjGgb+qL4v28zBuiosmO z^^XDR`-C)b*=v^$N0)H%?dx43H>Bg(-cLD5ih;gD6|34x8H8@(8x9H6uJ17`OF3mD z49y-LsgF=f@%T-1;UW&a$UBk-i6X~u$6|~_jB#k09t0%a#|dmWigB)_%wrR zu|pNbJ18owR`38xm-7HeyR~;Xe7M^4@bZ!y>Qlq;Xm+8C7v1UDkwKwym@r}JAbb?vN4PQj(+sY z7kB$V%K!bv*QGQ6BY!kjywC8JihAsDKU^X-yBwa|mtpqg!(oi$(+~ai3yN=IbG-i# zo@vHW0ycnNUfhL9)6EeX#=ssZaH0 z4_CmL{!p`?Z)>=%P&bu81RyEQEA!^USb<9=c+_gH2i}aLTGT->I1#!1vsv*B*3rJ} zdyog}k6JH9mThTdW@3>C^@Ct=jdJwY0qW@0Tevix8N_mvrx3ApB+6YFeE~qCE>nPI zC)f&<)2+yvsU=rU62o^7D0V_&YDIV&%8~evE5yKf9QqY5FuV`Ip^Sg!;fMC8OP}bc zt!APucEoRS^~lUO z)F$!mwa56DBEj`1-0L1K_j`Ven2cl#}FNSXQOMUZ}bV1aKswfgNdehYv3 znQ~bE*d<-YE>IepO&)^ATPP)^5KzuofW{PtLd@$F51n==M1B=K#x-{!y! zi6y>$#BcwD?=xel3>W1ye&c@K!Ebum+L!I$+w$4p zbj-ERJHF4iIq=j6z;EyH+nn(w2Y{^npx+{V<;)o1H>2F={WcrVR1k-1ydit=*l;3C zxSeYVdrsf$LE@C0bhE(!Uh+2JB1(7<{<|@`qMp#zg=Go}a6vZ8H~%AXEwv%EHkY>` z*Rc-E<81Xqy1fi$JY>d^g))XtcBaPP{U?&CYqMZP z+5@Axl;Mx+4zu~y$oPAKjGC_oGQPj==)8<9=)sKNy@UCiL2H`SJT*|$o4z(T150}_ z!-F=Z%7G!?8l7f+4`z7C3?l;>_zZwxJN{`1x6*XNGQ~t0T)_EyCRaM4=g$`W35Hp< z&B`WSEBALCCmu`XX@|InVPPP81)j<9j>U&!JH8B-F4jKghEhvFM7=@C8NA61zwJId zmFWz^jctP$nMIjY!sQm{a@hMhIhf23b^%_ocsy)GI}Hg8C$Jk62kb&({L%?phs6oa ze$vs2vf%nMMX*&d6L5 zvb~&V32`e67j}-Z^rg!f*~3Vl&pk9)r1O*64v`w=QeN)ri_kPfn&!Ga18E4cJtr6$ zxDu`z`pV`GgzH0`iN_HYaTu_Fa5oXWn#AFz)9K*$)3WxId~F`*PtElBXIVb22-dA7 z`yF`0n&Uk=$5H|9N~+ZVBQxy06m?kNkPzO+Y&?FTbs6pdK=K7V&!XV?!w($zFuzWNjupKKa4xdKwqBMf!6Ud1FBwEN>QH z=ai`n5w3X?qMS&;goChCGOWn*cnifP4k%8zTQOhXT%WHeWjk6Bt0*2IpOFT@Q^F2p zIiLN#J;mM<>%{@sCUIjei_dk1m11$C*92x%3-s$4{KgI+culh)a$O0Yr_ zd>29`55nK$FiXS+u!kk*pXzE1!rUK{25e(i5Y>1)#G&!q35ZsOtOvRmWDiU0{E~7a zZi+1~h!ga$htL%orI{Ww&=w)_RRqxdCe|^JX)Y@W1qDt~p|r%k9POb<{uDi$sRb>~ zG`*|GtJGnarMF;2@m(d@=dRa9vwd#8JETboj@zu4`hcS~(*nBr@6toa=btLK0Qy02 z(jx>i|5O)=)ZnC!0H%Fh7^L@w`$GaLxhs(B9_=K6SgBmhL(<6zz4}6dbU+_@39}+a zgxAB+x^ZY+rCT}&46|cPyCZrnc(?>z(wifC#pDzm0+Cw```+3T`sfrA#6eR}RSVTJ@N@09yUXK?ukE2-9pBKnWr{=bmq2M--Nl#0jbr5pIvh*c(7*+7(Iwze zU00X8s~WfQ$GwvOI=|BEESnnNkZ)*od6_8x;y22Ne}h*pGXVUHF43<^_PTj3WB}#R ziyB9KLL3kC^F!>z@iw^Nq~({Jxh5#JY@T0OiQ+j>&vd@W#5lf zxRp=e^H5ekuiSO-Ly0g1;o!irdmYxPLyT{S z{_vstThu{O9lh!*%nzayR-wxOr8)VlI-xHFWgxnSjbtxs?DUCoA=-Fsri}IBv=XCr zL@`v(dCv@=@y0->MpM;Yu3zJg9SmH*p*&5TpPqho$^HoDe@sBL#@TGzAB)2wh-ce7 zEEw!MuJv+9UtNf1jrbUyb5or^PV5bFff}0p3h#>+T5Q!lsQGx)6C}2Ruc2F88%mU!qHQ$z*DT&^hFwQ$SW|XSK&jYk2tR!W$^`yR>vomRlh!w6`II2 zRQGT^^ zd1M`{l5!_JZkFql9yiPN=?vyQp&2^yVmjU}SK41AeDT0iriCe)3s&svhl{^jgJ2XM z7|!>!{*sr)`#GGDNh5Me+pdYoI$9Yc+e6(C3*h1|Zi|!|$UBi}m4{{@PLfUozdHM%`h>uDsbYO#v`4+~{k&@a zJxQPa1K%sYI>Y|=cJbZFeRdh*((Qd%f&|lD7xI|mwjc0ovWO7HUA(35mH8xsh2t%} zuHg*TH}q8jQ|W{|8)ENsp;HzB9 zOt{9F27|E!#09~HQ<&bNkAJ7{pqV{G{{rWS=zf=2aAe&8jHypcnXc|lm|-l%IniW* z6cK(!@%wAyfyV!_iL+)Lp)B_&dRg~0_9n_AJL_6OE4}5$*oiuc-q4oQmf3c98+y`C zR{anJw`2=nI-IwfO8XGo#pk+%Tn&^Bm#_<1&%@vS|6aIa8aq$Bn%PdBUddvUIf))6 z6o*>%o=25S`4u;@>^d*LX~mQaa0duC`Jxq*S}8h)^LN1^-oG$9vFE!O$Mcrz?(OL| zd2V7!PgePj*j-`_kUbS;_8}7WL9pM?({Czg*%x*idQ&=JR_;wzev>E%LW-5$s?AT> zgFnNajnO`yNE<%a@r(#J8l3cX6wh4Rb#eM%?W()jbY+^M)V)}VfIvM`nX=P#;gm|0 z2Kg`Cpmy2fP2pjGQ}62jg0j$gxlX5g`Hc)@CIBT4x1v8Hb<16&(UDHI@_1nQHg4;k}R}s;L(FkAH1aGNtUD(Cws*27a~0FNr;R4>$paWox&a z(S`tC`6t^V+tgA$az7H#4_CW>gM9drm--Iwc<|8h!S^h2`a!{vMFTuxjx2_dU?XM) zY*;Qqrre&`#xq0D^oZSBkuuUHf{W!w#4rY85E01EP}!Kvpb@0gP$O8VRot#tF!TOi zwxZd{)Lm#LB@u$F;X&S%Jc!iXr#(3cUTo!XvPMJ6<*A^6GCQ+C<|g&oF7iLd61K>I z_qe^F4y-ygzKNkJh`v@wF~UN85lvPQrML z(F6Di4~AQ-s4vR;G4vNVtgB|r4z!zp13c_?s4cmSDCE=9CEteZM!2+lh1a>%2s@!Y z_qZ(Z2vy_gYU#t!QLA7EMBD-pfH4dRrR_9OfhE*X$(KU~SZ?K|X>?TayBv-MOg8b8 z5CIOHvJV1^i-2O4lwK&x8K499&n!5@CMnV_3)~1^Q>jt_iQyrz;2%TkfK9j?*ge{m zRa#l`g2C+C{;Dty&7ihbYY{O`=?`Nkv=Ia??(JA5EF z>=;%q7aL5dsL+*&q;`7}Y#?f_D`b1352&@~k{E-006VB3bPe^|#+X+bV3#J;V3%H9XK|KEgXn#>4?yz=#_GmEq+^U~#Ue8C*TPdFd&l39$m?12+Jf$Me}1ltxv!3k0~4!Ihs?jf%qzS~Rz2f5wK%6Pyl(`~rS zP`KRB;Y(mmO8xGAty8}$2?c~n$=L~-GJ21{XzQ3U!k=AS3`{`1M>7aU2oWw=7Yi$& zloLbaqpJgE(KcIU4f==|ID)1K57hMWB)4D%y8=iH@AX(FRw?Z=huz}iC7*9V{cgTT zZx8JvFaxS8YDQ!Wkp$S>z+O;H;V{A(2!UBhcZ~ls0PAuqK6qZNA<-gsVhv`g-SZfI z4<@v$gN#-Y+vmYMqOuVa3Afs%=aQaurxZT7pO?mfavuDSZ3YXdW`Ed3wJ7}791ET zFb%O@UE2d|9QH1oqwh2vw1Jb;uY_+geGB z-(AfOt6hO0AyS1iAT*HpG7u8Xyq@pC$=eymHGw=ZfyUHc=9jiM+T^|nR{V!smV3sQ zWu2pUxE5=X9Sr*CWjUOwe_odVye!YOEXi9nk=%}3o?(Y=V;C8~x>2amX1QbTtX3W7 zG&ealJu|yvZsjVdDoV{7iPHLZ$<|{0`OO1&wzVS>TfC~D&+4C7@W>ETi@VpQLmeS# zb#`;a2P&v{$cF@+N`92jkc%OBT-?YgD@+>;)%D$pjgP79Q;d{&NMc+HI%EV4Ev0HV zpgv-+cz);QAprPe=@ryylVse}Y_Wv@1R=_Lel%}wEnic2w;e6~Xuhy3>PDu<`sdK2 zL-VOa1p}U&Ny5OgfjoZ&TX}|~zVqD3E_ZQjRlmnw>QqzSK5<-0-E2VV7iZBc>rz0P zR_k$a$UW1uz^AG5#t>i-Co;&TE$jj~-s~|UPpOad_Ly8*z-Bt4NwLpVx7lbwJ9UyY zn4hP|ep>@HMjPKoO-c@V`V7&-dzfDBCJdLLA8(91XJtCV3Wfk++R+e|6X^b`IFtpZ z-cv)&{+A3qa**rjsACnm0+-6{N3yf}liH7bz}DbAvgjp5>!uBkzA@tuCKGN)b!dCx zL5aTyvA|T7$qCg-DJyxkAbf^h{3IGdga`}Ba2Y!8@B-D79aGOH1_0T{rosTycF)rx zMM$$*@o}=8knN`J)_`fFQQ_@I+ac-N1iHDI-C)y^u&tbYZsrF#5LR))(@SKGa77hk zqp(VqV6Vl6JfetZexr7H5)GWctDLZ{qKf*7I*d1;*$BKnM647%CbQl8GpS zNEJ33`Y>h2sT$h4nvhvy>t)1wm$Z)H>`t2+aEZT00YDG2k(pfjNWRACP^kdUm(Q`h&i4H9-J*36R z?6u}y=oBB!=I_o{We4e~@@twD0 z#hGztS^F^Fz6shB1%OYM@Msx~Sn^^?ER`N&X=?}oI;G){ZxT+91FIyi|0IAhn)+e4 z&j^K`Nr6heoWL#y9*8ek`m88x*XuAmab@qz? zNi8~bvTmq=&ctyd0_t;M6z%)ELgu#SKSjsFPJu%&nL1iqyFm!US?WYVY&x3HCp`={ z!%AHIWu(doqX9J^z)4&meGtZ;)Fvk`rTXweTAw5Q;BP3COqyEA8CYlAPRA#Rs)ikYRs->#RagD1Hk|k^>*$sQ`&!hQ%Mb9YWnc-UchP;0@d3#z@Bv`?rnk~crh!u!(+K`qZk zYt?ot)aS4!1X(|vfuM|(jUy2K*d7I)zqIw&{5B%ygwF*TM-i~kq*Wb>vE4m9r~m_w z&E`ja>A?XLzib$kJ)so zr^dsJ`D%Yt4^*s~NbF=zBoK9bTQj5B+{N>0F}_=Tl`s_+0<&8^`V^6D5!b^Uc6CAg zX)o((4Rx!V9>=yyuNfW2|COCONsFcy3bZkR^*w6@xj-+VIZBfuO_vE|N=R@Gh!lT? z%Lri)i8chS%i8N`rbB7+!}B9btkPB8Bd9n??6Mk`eO?Zsy?g}}byhX)cS!lTJuPv0@8 zjhcB5YXtPiC;wQ`M~(sFYCU9Jxrw`@S`&)5Yh-w(>z@D}3xFXA%`82;Uc6ZuB`dyj zmIJ3tn}Q&6vw6^dUYS3y$tc($F^nKJ>@2bTY^C@H8-AIc3O-6LFm8N`LO6>a3naI)eFfo^H$x*iA5*&|o-g1K zk{gl^QyXWlaS{+KC|rpwWovJjgmwrTp~+aI;p0941T0*w>ofKpxYyEH^BE3AtTp^$ zka_V5O-cw@qJUG-0ajuKqp>%`1n)7V1?5DbQ9@}GBmje1J%zJ`h|Vcv=Q=U*T&fW9 z*!qZ23v21_SK$}AsM^n^_~NS8%*W>P)vxF@=X-QmVUazG`smyn^`&76GQkIk#2tPE zC$pm;(-PlA8fAQaL{xkY{qrod!E-lFQs8!54E|fgPtfslE#lvKm$a|uvPN?szqUT{ ziO+oUp4&hFz9(C^c~FRtzW%3ge&Q_;A9?>{KB8UH&wuf;JD>R6%3%kJQJbLq^&Q z5mpb(a5LbunH``wfK&{bU%37uT>M6cd>Q!9F(a_xE7rpLIA$bds5UqVj46ZOC|s^s zTP(5QfrU5+Ec6PsWAo!iO`%3wti#H=ONxUHP0OivKPfBPt|EWC}(- z*_`@8Q)fQ)gF2utbcdTb^&`3!11BtE8q^O%E7LJqylKr~ji-LVFxSMXAFGT`MRgR2 zp865L5rc_<*kL?c8aJ%$lv6(dk#hrd7HAt{u|pF#Ctwgs!T}X@2FG`7uVcoU1s(ub zrrlFNpcuxp)u(=tT1EQV>t_H*4-B0L)PsQN#IjRA)|_(cM}U|~4o`;5l|?d@PW?bY z0uk0nZa~+`lrnyhao!|fpTGLEQ0ZK5Qs&UEDb;K|j5@y{A%w47+=Ao9sUHlphD3ig zeFabfVjc%*IrU@34q(wO1Im--3Qqm#)~9|zz>(UhiYWQ$JQO4p05i@#d0Y!3>v6Im2{Ks&lWZI}?H9 zb|zJ{?9>mH=NZ;Z(qLJcn7L6%o#F_Jnex6wY(4u%NauNA)>cCW&l{cT@pAKq_p=-z zr++{XK8Iey^bFRN=ifG1%lawTjy^g07?6!g-PHgfadG)TKAK}dkVC*Nm}=R(QTT~a zIJP|4gClJ~4;%=wxOidOsRGp^G5M9nqi3rWqo9DPgO;Dnmj%*LvVrK`mfV6VOfAdb zBRObn76%ZQ$v((@h9f!J<+*${IM+^Tnh3>7t&)}&0QH=@6%HH@xX@Lr+Q#I@+xasHRdG`zg4HS>(5(d!C`q5mCNYXdC5g#ss2Rch*sF@e?^}S$4 z9K7`7sauvZh8~rgWTP)8ghcf^dl7Da-6$N&hx@-Mb`h5>^$LN5({ZCp1{h0wx_YQN zp+dNh&a1G3%J_kz_%NH5Y#+eb8+AmegaNV>#n1W9l5`ek=FIXDGuSH6PVz2CH%(H6 zLl)t#p2)-u5*HVl!}FP?<}7O><5E=lzq+*b<6r??emsR4xw&#yy%Nn>3bT$n+Oia8 z(>^H`V7bos)g&>DohF4D^2Sv(153El%cZStbX?xA_s1xss9CcpB8Fq-_lBq(J|PbB zn-pgB$vXtO%lQ;`R(Bc^Q;uGDn#oK_z+me%vwP^hxXDl`~Exa!Pm;&t&dU(`ls5}B!i8ok$| zB^teUSwb?PQa1>F1`H{07W&e>6)SIIr2@gOkGm}p#OvY?t;<-knBaad-;(}COH3Go zMM_2XuVOjiV_%+%%=eLo?Bw_6FzOLW`b;UvIQsJ$Q;?wofLAGc4fG0RGX>d?U)s8Y z(Xj4M!natC*eZnGvr0iWEb4MR4T?{Wfs)>wCIwln!I^JNWbJzUHUb^2WApYTdA7Z5 z1pPtJMK8-mPQ|NixyY$F#y6#x<&vjTPiwj4NmBv@OJ?zo^P9O_euYlpESau-CAdl? z{$Q1V5crBWmthQF{=`jm%b$cc%QH`E%by>uQFHF1=Bermm&*xgeg}a*RC_SI`H_XJ zUA*%=DF7Xve1?uL?{O+3<(ZlMJ?tUp`Ow!03m&35UfnQI3AN zD-accZ$3Xr!1R=j`~@ROv+SXw!dF_7;Eo6&+&QeXf%`*Ysfwqu1#S%rNe%q6sW2uE z9+s+8EDFNrc&&}psDMi&N-p3A=m|sr!IzP5dO2wV`)IX-Z zT5CLG3o6omF^fKiH9p5}<~ZgQ!WV#lW*}k+k9H#whyCRc-t%?8#K`@@m|_b4D8Px= z&;l`3?6T3ddeCp1i&0|nPc<^Es3bt0D+jfUKN|25t*#LYKUTXn_Fx%8Z*?GLdw_Oa zRJ$}uxCJJq?m`DIKB)hII2`y{y2o0Dv9DL$Z$>Xz<-pU8aZ^L+(snkhGft)cKS@2pD=>y-hmIqt|@F5zzR!Fi6I9W)t*6E5iV_w zV*oX?#XV2s(8!%brmX=}ce~*fY0rW~g5noP5R~N2Sdso8tK6McYc&#d zf-HBceZyUer00TAv(I7d30#;bdqz*#`Oqe}d3&341Xv=Yh86~uR|E#eR-F~{p0nM- zpp}?l+ADH`PR%wGu!}uaI1xuPVEp*~E2}lAaDT}Pa$OPy9Oe`R$S`$tX5jEQn;3Hp zaZW5#R?ec>%vFb+FpbpvK8y7*&Dkx~72OM~5d)82kUuL0vSG!+G{G|=1qcv>HPRx^ z@eCnbKsC=CKFLxZ)y729VJtinZ3FZu$MI3Ww%R8+mW}fz+c*)Uu_crGJUp%r`4WA^$`=^AL2F zNv^CmC08hGNP?JZPs`S^Zbe2`QU4lRLvp>kkzARPlO)$?NWP1_YD*yEHma$`ZTq=Q z)W(a11g1`&C*kCD!Ydt6c-3+Y`3WhwI(Rqx9-73P2*TE^7_5etGfTiICEqRmM(dIi zW|&l)Ld;#0d{@^sh1R7)8vU9=W76o*sf?fS6%`~g04_BJX&R9lS(I1Qg{D5trc3T! z2}6eRtYAHoQ?Fhor-I$JoH`vNPIBsW2v^FezoR_*l96bNg27W(oWfwpXwM>XF6Xd9 zPp6(Saqh`w{sFUYf>TPZh}vSRjvog+j2b=jb| zgPlR#Z5)unbVuLwJGFPk(bf-LFW^sa2V7u^Ehf`+>|fx;Ub+2$Znbu^hxDqj%#`PB z@Bbj>&fSiY`v;Oue2$^4fXns>NyxDYQkz-aD79L{-hkJ}p3L{ni^g%$NE^>1S_iA- zi&vOuj_J{T$ORdN2C11?gI4f{zGN%xg9VQeKxWE*G}kT-e+j`gK3sSnfYZ8Kz)#!) zlb2ARy!=6&8YP+6>IyxTE5#)kY8m9vuGCpL2NlYg+yQgG|Ph@LeQZpPMM60Z@0U!dN*v z>gjP4W&A_LcbCg!M6>_F!nPqt5Ea9B_n$FrJ1D_3hi%u@eBWW)GuWLV281N(#>2J^&qvye zux%V7Y5sAEo)oq{W!N_RO9#%L?9!!}c%OG~=I)4oMA2V$G{S*0F%N>Kt8WJKUjO5mY z-QYHvgx!Q>oy;xa=+lpPZt~roll*n(F1NZMjdB9_GDqJckIq?cZYkr@GDn}OkVB8d z#jc~Ti%Lj8=v9k-5*hkCVv)QThR9_NTauq5=8@T9v+p@L3OM~6SHZ~Y|8m$Q1=r!v z>+FE&a$jPMKIfhRr&{CAcSB)fZ*&IM8UBNF$~Cv)ZNPsp=5jdMf3PN)fODPteAY=G z1hhQ*NsXS68o)gPt^A(jb>PUxyDz;0X(xne3t{h_OYF=GgCTn(t3&Noc<9Ke>n=GEhV z0s zxNtr+Is#2nnl(UAGqa`pU+^AGG7+Bc?GgY_!UGYpv8aOQqjAUS-Z>LZ#ELb#xs0jP zA3Ov*F|ovGAjG1kVR$u^m`3Nk*>59o?58Y&_uDlnZ(-NpxF$)ciiE@ zne>hOV`(CvOl;Dl&`cQ@=*x&e9rw#HqybXf#xO;7cu5%g=2|!yLA)=X=D)S z^Rb-GdF*W=8xGbD3<*$V#zKS@)(sVfW3BBLRSWaMgVz9f>27(ZZ%hrAao7#n{(u2octJ^5|}Or3dQ@^B=|5z;Kw%M zLy1j*fkLd%*1*VF*#k^>81Jet;a1I+>W1CIDa#dLDi(=5rX5Ca`0cxf^x2LWf# ztGi&0H60GfnlmZSLNsNag3=u&Tds_CF+N>HG${TcLPV3^?7MF9XA!^BC7Vu^?uVx} z72xfMYS)l;@^cT;h8-isCv7AFJEBcGtkVr^QgQr3*69TdfJJEp4;0|GZZ_TQ;8mrQ zYQQnMV6y{pxnWkc8#7e~d=MNElpgEYwC+dZjSvBhT1KcBAIp?!N`AudsR4q936Kb| zY7Ue~DS|qpY(rtt=#-0aVQB67j5}n5T+u^u8+#(_nn?*(5P>BngmoOe;$r$&_AYK+ zOCRQXxyfu>v8F>%i#`=UDK0K$1EP+T#kHrYy_V&w6F-Yxj#WYLizA^$ju-8!K{Q3b zV^L_s>5Fz!s^@5US*`nGW8ZkK?XW*5VRBi~cb-x-viP5_1EZe3DFK&Gx}H3xS%M`E31J3Oij;i4;g4| z&uL?HJ>LQ~q2VWMmvlMC1=75Z{&Kug;s?oE+MJ*_-<*1vfz%gmul64&dD{LSbTv7o zNe^EyAKrt@W&%culk8}$#BVNsYcwJe)O)e`20f@=6<7kjkEP(WCdBD0og@^(PG_D~ z(k&i%$~IThrXCxYP^@jNTdCUPs|FouW7ygV0}!3C-n=CpF=%;yhBd6rkxZowDM-#f zwqt8IoVY$%u^}$7JDQr+e@&PBZC4!87<@6srUn*XNRqBnJo3x`odJ}ro|RdvmABIW zVjU?Z1zZo+aHV2-rSOBa%sUpM50s6<5Q%LxUJ+o*#t&BmP*2YcMncWl+WI%X2}6LE zM4r-ruCpO6zHVJIxx}j!gi;qNcm-K-qE7khv51+iUoHRYu?SLxYGD6m(K;teJ+L45 zhNW;==n@sPn}_h&fdZZrpZL*q@%9Ty6IKVD2Frq1rRix-Jmuu+XgV*xa6#0rkf}IV z7l5NS*c0PcaI7&TXl)CeaP=&!z4-!pt0q|!0nS8;1NyDB6i@`4GO=&H_!ju4bTI)& zYTQOve#?bJ1O~pfX{Dtg+e5$s3nc?B<82Kw@c|dD zBF;=HPkBc#o0F#;PF8wRujKS}ujyY&%t~wE9|?Bt%Ht=e4zo%s;~HA_n@73=i9m~K zK`CZ2a84>aWp-4vFJ(d}`gEa2efOF`aX2HC;;t!GX`-2790sak;f2i2RChfBef!bs z5iSu`iq?dfR*U{N4<6fvgt}Oydd1Thls%DK6|GA+P)7e|k{}%vE-UUU`z>cStL}Q! z$4KpK?(UX&j9yc<(l1aKA*h2kBU@Bs8BDtWr5z$5z}uj;f#fuFJG)ttsWfzxYc=^I zuCdh%p*Uca7TcysyqTLaU{gRJy24CQh`w$ThgA?G@ICOe<4{CQ*HIT>K>>^3Oq*_4 zhWtqHCy|T*W>ma^i&-IzWoM43%*o!e5?&}`u1tWKq_r+AdoqO%f_v`yMmO3K6F?wg ztBu9f@jegHZ`uiB+qnP%kE#tS5saHdC9wEXfWGlbIl%`YTRD-copwUa+>oNwZG<2P zt;}*K*b~Xp5G)p1N${ZsE+A;h2nh1p%;m@*e2ne`D|1W%o{GX7DJAedsl~gJyNEgh zt?3?5IQVAog>*(}`ey;1RBT74LS!{ zC!jZ2FP7v}91iwofQ%heImY>AF3(U6vf_83tN4yk9HIcMt6F1tJr7%bCX2orC%!(v zMY+^0Cwz(wT)QD7DME<7^@Hf_?TlEQ+3l6ib6QgF?g;)4ul~2kzS2;f!;)7xTG4X9h0Po7Vu`Fe_`4QQs;Co zMjfsv;)WE3*ZscdA;u0O-OP*-*PRS4F%3J%W`VPcz*-1NFq2be!3C8(zW4ReA0p%Q zQMgGsoiwQ-(t#5Q69dv5CS=E%T?-iTL~9>fGhCLP)Ywm@t5g4W&?CiUVnVDpp8Pca z6L&`rH|1>Ev8);moK0Kf^==+kf_dWd*aOUT;MLhSnEYw|HUGA*HgCf&p=lA;rQoyy zgka>0WxK(;b}7FKb^0Iw_&z5CvkZ7>Gt7mW!rE3b-;4vwtYgTY+vrwwRu5^c5w2ZY}K)!!2F&?`P2%RCGh zeDNnl-XJyu0%NOwhZhf1Fm4|5i@Z8$&mD1IJ>c!3 z^cZb5QZgk2P`CJXjeYKQ99r&L0u83aX=|-V$bUez(7P{$8HCCdYB5$6Wv!ewoM<56 z;)BhSM`r8NmVMguc{@pWWzLr~_}8Ug{Cl-VD)Su#O9~Q z#P}#&Gj@IOWaFhRxQQro9T)m|ZMy6e96XII<#b8ImW|#K&r=LEoo;=GQQ{A9`8r9( zgBMh7L@JR30Y;nWh+jLYH(*+%fW&{up*iJHq6 z^(Xa9q+}NIrZAs{KrD)|l9?X;l3NnOT$RGGw6;ajnf&GXmh=zFs}>sUzZ)D_kxX3i z9wyRUSxnYF7bYc?eG;^Yyh+Dr>d-H6rg#HbK&R2E)z7%?DB5ZA9JI}js44CK#vzcp z5^HYQ9fnSdGeYiaqf!_G;ZBZ3#9<`Jaaz2=Il4es(?DQJ)xOW5j{RVDh)ZaDwtN?R ztD8#2NL7V{bj=DM^h%8kjmSmDe+bt|agf-Qy5=-pBqV)wT^&1hUy#;fS6T!Bpqwin zfCRZq!s;Wf7qg*Ym_)zb90Z>ZEG#FJJnW*N|3ix4VB*k%OWM&Be#I=hq8wk{i$Dw7 zNcsAbtOc(@oM#xWUqn%X_X~Y~@;H_+*V}zfPm3?CMxmQPonfRh2qIBghxakfh((85 zFTIZxGP`EjB$*YvOYji-LX3O4@*XYbtgJ+cxRfj1lONE+P7Ej%4wTWrc-Khm>73cy zBTqquMI2VsL-zqbRtc_CA6V35kf5!~*kc(pVXy$X>51Y+@!8+a2>TmoU2Ru==W zRQTaWclJPTR>Dh~g|aWe3y*a9P@9WqZ#={Afl`r9i=e*s`BkQeV~+=)Ul-j82{3(v zfD*?_n4PZe&d%jc!IeVRaqfzD&WAmMhENs|k^Und%+NU)KwpS45(joOB^dE_>GG0# zm=XxacuQ2sT5g7V6~(|6E6}X!g0Jv&x&DLxxbpM%mYjct^aPOrUzpF7^zR`oD2pKZ zAP>kePYF;rM^Us(Kc*}ly2bDDEcgM|2mlT2K$B#x%Zq)Q?ax?u*iqyQVV8>vUy_=- zZqzF~tzY8QUO9>+2g7kgbfxi_12^v=1MZIrYN9?Kc43A1os!iNu;Fsz+W{7a`a=+H zNx0+4xK-eLFfgj*f9nXW%e=`3o-Hzvw+XPw17*ggg3y zCA8VtR$9G`(R10-pJ4J%b%90MU+UB)s3d;+9^-ot zzG7AAP23-ws7pNt{Q{{i!p;*n8ce;A6GvDc)t(1F!sdqRUM?xI^^@=6LBD#ic>oH2 z2DiZbd2awG>Wq<=``*~A>t;OuqV}0(R+@YV3*p0q>9YIbLH@rn;;A_Q10kD7J3b7_ zL;T)h@^%1=8`=zD@-b?9sS-JxNm=>)Dra|^t{EYNfEkP=8l4GGdA_16q8Rg;(-K^N zqME+KKQHZ1z^-PhhaJKvJrEUw%WRMUO;LF3^inx-AJbN@Dn3D~sNI(eo;NTBm%6B^+AO79}50D_nl zm5sV+lqoscD5Uy36#w9_1HvC*upfnWsDVXBn91T(+Bx2XJTO)3G?w|BizM=@nWR0( z(r`)0$!&Gn%dPy<)~&q0gQJ&7+tb*n!a&w5zC^O(>%mXn~?(APGm|AF!dqfP=0@`ut3`Ee0s@_Vfc zFH?-WxVLW=YZ7=iCH578Ms1BPLtwr)fLW$u3nt2r1LFbPvQ7(GTSC7<@^3niP9Fe~ zfkn(_*R#XIU(hL@G^wsL5DFzC9$ zJ20+@k*J{U>aND<&OO$I`|ZK;N40P`d@%rsOljj#r2b49t~&ydDE8+=YX#$o$+Y+_ zykUlwoiSm+kVW2Y>7mo!Uf()O*M1sduDGh8FXty{G>VYqb*Vo>`T zM!nthwUc_A=8GO@kOZcbjrekN(zPT-Duq9!+yb#tGf*@g76|p=e5^}brX!|DSJUs5 zfB5%%c`xZl2a}P(RpmN^YWyT9#ofuF0wv2hM#Y7C2qg}4Uubt9Tf<1uWwZsjFRnjD zZMqL3C%{X~55jA8@ad167$@vcq072C{(4?M(7d==ktU9eV{pzGSih99F_VM3XhQ)V zaW|Y%YC9%v5Z4=v6LL)m?LJ|(@OR&6H-3bE0+?Wo5#jXZFL^-QhK1Mx2qXv)n zV+apmqczNl7(N3!2#$EhMoz#Z!ivE2u3tqgA_Fek(y3q&GU574DS zNP-nGiSeZ_To%88r~!cX7^|YG$+f~3=73AxmzK$zLJ%H4km-!@#fAjyZ{sw4;F~GZ z2i$C>fQ3{&a|iFqtAnv;@ONEP!N`n9=q|MKE%_F7TNc7i+SV>^wW{)_>c2$dlWurU z_?DDizxv@;agalp$WjGQUNvVtYnwF^74rFLZIu^rQaay)9&5g7xq6?+StK*}t&cnhOP(dHCTxf9@ zo)f@xn|EQ&maH0E5a5>6P4C=J=(Fu3gpdjm^9KS5LYASMXq<12leUOXwrbq0)uqW= zYOYjQdAs=9Y@{VMKqi-M0|8enYYx#|NWfhP0jj`Q58rDbP$5lp#K1V78bHBG093w( z{=r0E#_t*kJ>~LF^_&Ey_6tW4n`Wn0HmVVB81p@Z=;^>`i_|t6cXioLnZAJ@2)xVz zJw<3mT|G@_g(&G~tEKnU2+eX7-biDZ>YL~tyM%x-UF}&%EO={2iQ5JP6x-_K)D$Gb zuPYIT-n6ea-aYGM5r?M}a!BG&{hf|Q?5yQ%#W)smcKlexP8^HaLCBsx`B+4XzouM~ z_}P-jBI5d8u{Ga{%EI}G^|6S(wIw$6P8^FEvgmU&Wjn2WOI$q-5m7^H-wj-lKVF|X z+vER$j~V*V)m;lLGl*$Am!Mruu;rR+7V~R0r8OqUV?&k@GSs!28^tQk7h%TcfI`yP z^*dvy1BK_v@KHPQX*kOs$kt%eZw$84S7Sl0?CamU%_JXmlZQ+^5X<`#? zHcoscindj4e9?;bvZD*TYLKI&3;D^W4^L@i0k(fQ+Z%hIrONTl(jRG>< zmi=7NEi1MMJ(Rv70#vn1`Y5MVCLMLZ=T%-*9cvz-G9fJ`*iP36BUagSGm?KfGWG!i z^obo3NB^|0M7@4)Hs@PkxMaBhYim8hpLk-I<$XK3AQ4{Yh}>8q8(71@u4l0Y;&^@` zvS37JpXg>25t&`Pn^^1#?W(z8>(D6DsbTQulX2;NJFepnQB0Z8i&$28{AV53Po;#!fz#S|L)C-|ExF?;Kz4kCPqQEac%J! zo1Xy|DW7%tyW4MBz2rTD7JLaYe;ZUPm(4E-$~8J<`BbC>qw2vR5%G1ejI z_Qrz|a0Oif>49%hJJB{mE!iNMiDi;!n^U`EFq+3L?8I`Pz{>*$%m&-yZ(=A3%A}tF z3yS@dRa%zU-INWtmB9XM&yxuL@J@5 z_^rD7Ip-JezpIB_7OpDHQa~UAqlDJLlf|+xu8^Z73l(IdIt);oM*R378d!MrxQCHMgxiG50ugS1 z#g6vy3Bps&OV5XVK5PkmO(;NfWBFCZH^@xtMdD@%;k$XtxjKx$_>=QeMQ9eHD_9|V zqM2bmnNXZHq~bATAsyNt;6vkC@mYZ52|a7Vu3;{jCGdW?CD2YNeCR@Mp%8RA4u`vy zS{|jGXn6w{=okTLV^cuELf0De5YWfm7SR9D>7j41+&J_N*QJVCpwGtaG3aBi2;;88;#g>eXdIMw%nKFysD`u1W7{X3)qW6%d;#Ro26yuvV`%)}y3 zvWB&tFsv*6b5-#Ufg0LY#hLRpad95ZZJf_4_)S;-P& zYemd2xsBKIQAZdgICr^6?k^71V#2(Y9WDUJMEOoV>{y@FpFm$-Ol2ABF6 z3vz)#u3WhFhTc7D&dT$B7o^QS{Lb`|oO#uIL-wH9nb^+!vKzP&&4 zTP)=U)kDXn!1y=dPsgsV1cq;~Mmg*t(O^!Q5d@0> z8tY;J9a&!rzAx)jL7cCyYD8=N#UoT_Ntby-2iwLd)#w%@eT0#+YgR%)4ln5R-aaU# zjbOSihC~u-{ADmdI3#;{Jo;lii+UQ{f}mI53zS1Vl4}h&S;<@`-RGhT6TJ&&K{P?m zCs>YS7O!fgM54NZ3?*TDHPli>2y3bS-84mwK*q9A($tmCO(%WhyU}N{d_B}fk{W~Z z%o6DO$aE*dI8qqREEj0pWZ8=EO1^UluvJ#nCtXnyl{!>~9wg07oDlzppJ=s~Uh#hp z&zo3UdKyiUwdf6ssQK7Xvps;;XQU`cNWQt^EcgjBhE(UiEYykK+QH;~gBewx*>b{d z2_QO31Uq=Ex8UO7kYwB+v&~8HM+TwIuoZ=bubWkkjURx(TQpp{&IC^VobvT>$ja&-RV>p zk>%2(;YrAl3@P7_rh_*p*3lj!a8A~AqRrE3I=0zo5rv|omdJW&bPiAgoGHQhk)p%i zUh-k#LTh6ILevPA=(LKCO2ioyorz@{%o!D(<;DJjK(3aY3gOY{ zq!TeBIy2=+gIU!Cy%UZjSb?0gd1gq5#_do+B9&Y)E1H5|>t$8=U(C0Zor_ybc{L;V zISl>fjl#;|FmZR}J_w_79~2v&COKF{fG=R94(jVDbEG>yuO zYB`n+9gaH9w`4>;2zrle>i9zjOUM*#08KiLx#T^<+koofJ6azuShYTTFcAQG2)u12- z?b=En(KJTwRgVn0kK@Z9W(w*)7vH`pQTRIbgzPeO8tJ_J2;Nq!U;t*z@&j4?W>k76 z@(>99h)ZGOLkR0=ou`sPgFWfI(xqG}h^fwNUuCEI4sb@+3GY@*KUE;x`u0+ON$Uyt z6J?$^9Poix@ zk^n2maoB{|&!6hk3BO=RseaI*I6?|&B#t)Bh+}1seUa$KH?lkHll9Ib0vnRY7T(B+ zB2h@heW&yxJ}dpRP<)wPU>X*L^CWFYhE{k#2{SKkC0RrdsYEQ*g#w0)*FWjVIqx?6 z=Q8VxS|se?Q04AK7bYmi zfpcnEJ>WuJk0N5_AuQ10h@hpH*Lp-8El2M=m3CibAwXkTlJvTIjq3QW3kLbi_^R4; z(~Bc*S-0Xqh&ZsFAuE57&c&^xoGdcvnt=-$0~%a?L-F(kAGTkH$K*vcaA6OF8XaYFtQPGf%vrIXRaXvWI|poCLq5>xB_Vx; z>yVH>Tt7T9{_uDx8v-8|fLS91WVj8IYtn+l^~vMo5QM3%-Jini>RJtGv|MOe@t+_E z_J_Ho3x-eNG=+qzt&oYPwzZ`CBpkRunN7Gjz);2|ju@G;wu&j<9I>a`m?nyEL@4ud zZ6+A4p3LBeTwyU7`W7MOPNR3ICa8vsj5zv`c3)CesX!k-X)l<^qFuY0_T2+QO^VP( zBXziFR&=Za0yD-vy53?{*$|?DfYs0 z;Nyz0_0>yE)D|_XkT0VPpv7G>XDvp~&)E*5PyV19s~GBgbNJ6BW&F z$25{A#*#SJ`GPF4alimcnmx>mFHqLwv*Ls2_><;?Yqn6oC?8qG7V}#Z4Y~ys;Ni_C z@q*|iyUBH&c#&(uHtVsv^~Cc{;+DrhNa38Fj*1TiUo~_NX-5(wXQ9UawRER`FOQjnGQg8ICOSHC+obt_aA)y4IR}D^xaE3-|E)w zCQ~nnB(bnnn_&>b1);|EFlf^zb*I54Q8K*?m{}N@Rl4B1&@cQ4KvXYrz!@+&ZjDWA z5vOS#rH7@z1k}YgB)D2Sbqk69mV6lAbZd7Ar|GZ(DS<*RC-Nt&<8%Dy1Ao^)kxIeB$(-Ahxa35UO&^S2g?UEgj==5a}5faND zI3KY(XP)Y&M96iD1)2={iH~C}7%xphY$(dB1;fYO5mfwYK$87M>fd1u=@qXmfjMit z%(tYkwvdX!=m;dUWDmT&KNaL|s+M`&-=$-I`M(g?of+hYs>LE8dpkeoy4{SlJOonC z6N$C=JXW|&R;e8M!^?C)z`!WB3ZndJj*I9NIU$9|g0q+q7>2maw7TN;EAVTxVqk0) zv^bUWSxPDL(P@?GGrck}2){%$a?)3^0#5&mxv8rk1b&UzK;+_dqAIQ)3}Ek)`Jl~U ztz_!w{j;X{OCM5sr+VO(q@-A1?RqVA^xgPQIe(BoA-yD?ds*T*o5jDFDRELq2q?Oc zE=(UQlzism+6L-9?R0y%#sqlVGBecJq%-%pYl1Lt)IbuS>lHc~Tk?o(ikO{^p;QNF zfp;uk;;8J9<})4?@{-!kgU>0=Ws5nd*3!v=5(%OS2NeDdi-(Ga5|U<^%|oBQz{!D3 zrcHSJ>ipkhkvt$lr|KJS0WRQM8+dXn%XJIq@&FVR^x~J#7RRoHC3D%P=?IBXiCPHb z>=ANf#o)3QBk;juar)*KX`7wLB2SfUFtZ5@?yK-I3d2GuFc2;lq`PBT9~i0<8927^~)YG;l_M& z1wIJQzu5O~6QfRd>pD z4OZ@QO)-d_N;y_%bu9v8_*AVp?`8LmXD^M&h0AD+St2bf_@&S1#_+cwpOj%w0hQ-& z8>}>8>B`Z^Cnqdj%JMDF35y;(;b6MXSBlvrwB)I<&y{qldn1BW%2;ajJf2tge|6+` zH}eaUb%Rq0x0=~OIq2sttjpLWRD5IFKz&kco}5&a99Apz%Auh^Hf^MzC9+D|35YRA z&kNh)4_898AugIkqpj;~%h(Tw%c9bI&GoW?McKWNc0>4@P-Sje2t1Ac`qeF?Zo>iS zwonfP+i`@jZ_sOX8z@N3G3kz6Z#DzT$q}h`4mk4xUr?GPCi_~bAQvTAQC8Cde4B#X z`IBZcIdni}C8<$YWA-*}|51XMyTwPQ;><`V5DKD#>DELL2U?5%VJ~aUXl#8vVQ2|k z+-eeN#SUW4Xr8qf{F<8I<~EUs{+e7>E6Ey4xaSu+2b6lPRlCd?st)zJseQ#g9!&-? z#|lH3-1TZ#4~9qQ$!<2O9%4=&O=sYBEpmqO%im`6ig1Ca42K7OE(d5~w`Kk`_0wN` z{J;~nP}ZTBMU|Y4RnlgaU!bhk%X8ITFeoKc=HOSPOVGIoklPh9UW_jhC`*Sx?tDoP{H?XnC%o_ zG_iKqpWY4Ls6mB6z;&svg6*54c6S$AOgy%VmCfpph2{wJ^f z7^UjWhQp7?dVliAdfZ|gDzo2GW)%%E`Ul|B6gG7q`j3ck8Fi;&&3z4&sc*iO#!L}R9}CzZXC7{vBkja$VCo40YMPNBM3eX`g2cU z{Tq7e9I~aUbYgX{+85}R6}OQExq4tCq8N&Q$NiBuE4KIz4{boGH8NpO9uz_cZB!IT}-UEGnsGNhzW$$f=zz5cU4S}_LE4D7%kEOHAOSUFGQNaQy#x9 zzB~OVsm@bAdHX8Gl+!&1hNrKI#(8(jCvW47uwL~v17zPF8Mc#X+pBi)(eS5zQf_vAM6iz1Xk2_ZUn@ zsWL0Rf=Pl0%u(@y^SC(-S@Ai=B;OOoA*&s4f;E1;>rw=9uT50e#lo-aCE0Q3F85yb zB+mE=C{SKJ(sx3lcK*^ySW?V1!W`z632TE!uq0B2E}*8DM!E5V0+CXq_!c6dgc|cJ zZfvDF3>T0N!(tL-CyTd+%AbD0XNo_7EI0MV)8g}M8DHwqq(C^`7-Sk_?YV>8Fu0Moe)scD59Ix zLF|)B=peu1&H>vYAyEu$viPO*wFa;lLc>$hL-W^Y3wJOPW0-Xv0i5J-&4_aX1~%O0 z(gKurcjqN|&v^WUzI&>1opB#KJf0>VDh}o4!FiXq)^WiDhibpIo${gP>sw#P`9}W2 z>H%i%cUE9~B(=r6FYH5uiNEnq?)5nQ5byv;`#k5;!_#SPA(0wYD5CeXG0n~N{We4`{>dr5?VGMIL?417* zBz1^;?56F5Uh#lpdx}tk`z?e00?SdmS{H$SQQhtSX0CR7z4J>}he2vs-4gd!cT1|x zpbZM+dAF|Xxlq+Mf5k>f`=w~{)z27ft-MnAiYRMqAv}R}NbN=OHuB6kt}@jka|IZL z!YD1fuO~ob+Cp(Nua=S@vNiL7`~(`+y0{gN%yb-KzJ;c9-I_2fNWsZRPx1~E(e&hG zOCwRYH$jLVb*QK0RbC$+>78k`w(#J!y{W7Q?fWbk^&wcd1_O3;}EX7q!@BS$|t0%!Dt(}PAoBw#FfMnt0= z9y$8K>20GQz$*4xW%c2aqaSE4qhgrGMn6K##(I%?cqFh=mIJ=^;gLdmI8(k{1B2o+ z&kACuOpU83MEc@V2C2}}j#DG4>Ec$|)I?e8p(U z9W78R>PDOz8BKUg*jYKk+OtCkynf)}c?Ww5@)g-w+XvYe0a!0+~ zrz%p#!}|uZoC(RZbS7jp3{4Qxc)!NGx6P&6vSqc!fsl2390+L<*&lyw_046}WRN*C zH*;Grn^*tXSL+`vUxjgj_a^Plq;!C)Wm*zr9|x91gv9;OfJOGuYD)~64sl>;PJ9fj zVwe-fB8s`Wn%o z!jX22$n?40m-W#hBBfGDt;W~#4e5C|zm&7N;Fh{H;|!zziuM-P?kpx=qW(SkW0P)d zXo@<~y^O@-8}x_V?GIWe#-LizqUksT1fAk9R`Cggx0Ce-&K2^^*vXJ&G5B>Ym9;$r z`$=o#=!)af1i+{RQ)%@WGe(;rc6jP-P>HOXceewW6zN1m$s_pR$WnDAK(&NGf)go+ z<4?F8=m0_sj|gk*X@spKNRhHV`6afQyT{#0z)d8;;@2KdBEe8M1(-NDMIV62reFc@ za-s^MXe&9+iwmG2Aht_Ob86{pwJG#hmn-|{RN+eE*!!x5w5cw@T$>P!J5cMKbO(4= zr#lcA@{Xwk12H`&Kb@XR-TDqi(P<(?C)fjBPg;tmcv7ggPY6G{{xlynIK%)ER(aSG zhZ5$*Oo29FPf}AK#E7eXf56#iOn69U66iWu)5B1Wf7h}O{HM{`Tv1{NdNB{zd z7_IpPLE&0sh1Vlwvu{{z0)ZX{x{4e;IpnN~A6yQp+!Vjd8c8)0!4V*@^Aom}=2#L` zVCA~M$)Yi=H`NDoSN&Gl>A7#dSGu=3fMLvQJtwmh!0b?dN%o+v-;V0kt_~vc zWUWi$E&B*>6FP(&?BYu4>;sg3jn9yJ?v5*H@3rRB4oQSOTwh~cMws~h5#W$4?@+*J6*3BqQ!Lb~_qC5vGVUiileU&+Q);xuXJ)hw*v0~GK72i1^NCq$72SUb~sgN(IHnG>aJEXl-=qH;v3T6 z94L~6=0gO!p>!4z4H-X$DAU=z;1@7>zz)!VJK}FTl9Np!6st7*)`uNBHO;-#2$e-Z z7qocq`K$RR34KYey}peI`4`MYIDaVN`IW{K(a1Lrow zOC?pR=#C>#!-DNmm~nYNIje-;%1YUw1lb4H>vn3da!ZXlnplL9&p)cKep_IkKLRG5 z2td{mp?L#HM6rO=(b)HF9;yb001uLf8Hi<>+fyx-u>J;;%s0JaLB!aFX9sw8tIyjq zPB-{gdLIU=(fcp@e%g@9HN|IU;-ly?!o_g^P*`(d2c6<`;n+H!rT)4pJ7}78dz~i^ z@F`I07Qe0WR$QnNWHheS@#2G=bPouQMjV$P6`xD4eKdKV@6L*MAcnP??;8Yz6@0Lc zOJXk%b?qGnP{(9El9~4$y2URe@8WDp6Q(FSGw%sq4|uPX?-hRDAOsZCTqPV7O=w@p zP!^~+Q2|?q@0j*9(Z#|>~lkhR>+ zDWkNvHyED=CkxzGn2>W}ifs2YXbNdUUQohjUT_m}-q4{=5FDD=={zYCFHEOSpp*~Ejn6o~7xYtBYl;Ld;s2_NZx_FkCM*J)}>EHBksGEgld zseZ2orhAtl-*82D9G98Ax zvS|LKm)!bCF{^cxTc1-7q$s3j9oiEnl0AWiXc9m!hWkbaCiL0j%jYT%uTvb>7K#Ha zeV^CXgFJmbi3V54h)uh_p2D1;?xj$pGwe)-4h<11MnI@n6ODVt&~m?5Y&ZwJ0^)nQ znr~>oSMc{?ukdx{P%JR<49iwrANNX~n3#~XP$%@v#28QNW3-GVAzFUKtL_TFVkh(< zf{Ku~W{W${Z|niYsHHG{tYzW{G)&Z?F&32lhx;ZwQH<`0bsc;}Yd};_XQ+NwYk+Sa z#^!)EAO;u%TEITmXyd2vay!6^2;fvCu+FMnGFP1AMr zII$EZ@y{Bpe|QpDr<0Lo46Mw~!=PipT0S>f!**n3Y0N5J$ZY)*c}BBBvZ{35F4??b z(KCVieW+N!55E+)k2dDI|IU{en|}TqTVAXymlx~G<;CK3c>#Q(4)KWPweNE$;lY1v z%WM5VDOjJ)@_II4-E%V4`mevdj(4-O6#39!#$`S*A{`wdkB8ERuRI|RHam3GI68ps znJ9gRXzD7_YDWwZOw7=X{v4^adhIRBi^lG@cxqabi1^+^8KOD|rm~4QsF0vvV{8b4 zHXJp{a)1nsRe*Tgp*0|jdIp$|V6$PJ@!IypfYi)nG2RAytW~IzBE7sV$}>KX<*x7Q z>nz=-kLyM~pIcVt8M@tz{68h54P&<2HXK*_7L2S_B9v-V!l|chM6da+JkCO7S*p+I zreH~?O0vWIRrV($NXqG#{2{muGoi!X)P<1f(LMGDT-s$C7Pf_uhKgf7vBB zdnD^jYEBMc+B*M#h-ut(b{AjA^c9hkU7z8=O?GIk0OE4sGb5cGOw8r2tU(*r$yP-t zjqwW!nGihC>B9|FeEaOcX*eSGRh>f<#r>h6bDRu9NwH_%v=;z#VSDk-02o+p(78y$ zpHq%Olv=Z&GM&egZC&~5LFR5_pjSIl!Yl08>34KVXS7{MxZ$F1$3=gM!B!}YUq?8< zxK;XeO&T=GGwUHwrlq)UFcncc;t6=xjJdth@l7=wD3OLlLU0k4Kvi=iO`zK;%?OGU<_aZGpsk?Mfd3@`+lF@Fm- zcH7nf-6%lqT-t*!l(uI5I5H%=r{CT>-Ov2pmQ1x%=mDnrm$Tydg{B=>Q6MW9S9Sm%M7Nm6At@^*aJ%vB-{eT zb(J&!nx&xC9I`sY!8dd$0BTkctQd)yIo&{slJ#^qr%Y8je!no{gpTs=I_~U1?ekj${_09s7{HI5YFLuO-C$GeUytXPo*#M)PWCn!|(7a z48Kbc>W+*%^m65$M>5b3L_O^F{-er04|`kdL5H}nBdT(vmmc7^mgD;^gRB|`&=gS> z)!~7O=exbWFRIfH+f=v2eTt~cjnBG)${?{)QzS5HYeZBFG-flms_toG)163&LJvEeTUw|SEXffT zYRcZOj>Usvs3H}|tD_pg=^|)mSHzoE@lw|M&_U_BT80vEG_Ct^w5<-4T%71H)E{lG~mUE+SaXjR4JT>{%pWI(EhLIz65rbY7SOgCV;#2kU|u9Fx4XB`+xlqiK8F zat0I;*0`i21sdGmMEY ztO%OtZB0XR4AmI4rt6ltf!8VEL_|9M7_6`-y|JDob~syCz(TIKK~hWc$AsJ4(H`ci zdXJj|f|647Ss@1VS;-09I~+d$y%akm@F0q0hpAOmt)P1Za`UbrQJ}DLRGJAfWDt_dj$&$D~1acej^peuBxeuOfP^IPVZi>G-A{`3nr*?Ga73RhqfaKTOL$bU@?w* zhgUrSdIoy+2$HZjaeQY)DA=*uX!inlXOnV+4ckX?(ViQj*~at$GPGh+PfkU|eszS%ePZ%dmgPvdvnPw= z9;^G?+lg%?G;g-Q3J*~KEdQL{X1Vb4M9lj0**Cb7?&&{6xKB%7R@&fW<}E@27gvmRT5os zuRw)b?)Q2^6K%DBYJ2g!v2Ui`h(jlE873Gs?NgME0^eRmWoM_#P>9DW6NG21NXR!Z zj#jCN^1C1f0!3JNibE?|@IBWPF|&#;vDE2d9XAjXm@>#-yY9lQ_D(Tp#Us7h+-l+x zbr#<_3$@0OMaE-hpXD_~-R%=0u9*XxygTOOWwO0wRgYP&?%0Fl-0WN>>%f-5nDu<* z`8W}+t>Tqr!UM4p<>_9QiR~N1>T|MhuOZmWuZAbX#CFWBYGUYXA9}%tNjk)9IGjWT zNf1I^9XMbv7fclT{j?wr#yxQ`5FY6s!s|x&{G&KWz!|7W24^v-jm?C z@a${U&(ElHD4sQf9L~(XlWY9JXI~>igVR;*r;chmW=*m~&Qnl0-n{RWHv|O4n+JUp zb|Fko@eQ#6@#c_kV()hI#vK~A^Euxn5?g=6R@->wpSfB@k)gHwJ7oU0_G-KuSZ-NYt*12F)o?)mhLZ3pd{23TZ>n9^prp*dh zI>Ibuf!b|WM@L(18!;2?dxDfZ*bZVM*W$h8ndZmrP|M@T!uB6&wVs=8W00C~L&P8`t^_nIhTxhVf@_vJZXo8ltk`8PZW&3*rDC*9{^AVW zd$OF9jlp}JAh~j+V)qBEhrH}5)*2|4k&;d*m34ket&-`x^W(coW6GUnD#_;jfvL~@ z3X{Mwefy9>)gN0qHxY+mKljiT0;wFK0FR7R{z? z-e^ww;}<)%2see+FXlv+@!+!Jy?vjpW3XI2xG0OohrphK?t3CCWd#CGaJWl2!66Lc zt+fva;Pos(v)8u>bT;ZF+R7?63^;LFb$7b4MeN)MqRq(_d8D*tt%tS}ddV!uLjOv< zhE2Ndgf-0&$(ZP$>qCsJ?tKS#=*J_6>f#_}U|7TqU*{(ftx~5Z7)-bLvWg2}pD6C@ z+pz@($)#l0Q-Lp8fQgF&SVE!pyypNq;8HA2dwsw?BwX*;$iwwOE_!e-Bf$m4OaX>Eo|)=OTXmjv9g( zBYsp*@)#Wf8Le?99C_!^hk}m795aS*o|T}0Z1|1~XR4#fHm0G%0Z=Vrt!!6Ma+Cu5 z_uu8#2djOm`He^~>SBQkxjIS3oDQa8HA<%EjtT_6H37s#9sIhPmDW*bB0aAu)nZ)7 z4Xd2Fe_5Uu0=mZ6SVfDFfWh=VRlcK~-kPNl$(rzku4|wjK+U-Pw3v{?w*fzzQ_^Z_ z3{}oF3SBy$w*G11^KiXLig3nSF5_xZ<}MRYQih#oct5z6sok*`HU`i8lizYma~$;Kay(eO8BPgZd+D?r59@0F9S6vfHS-bMy^hFEH6x4_uLb1R&9XN$B*pe%>i5bZnogx!IW{ot1;PQ73x7dJHtIB!lvlU& zX$Q?dJ;VG%gt#ZZBod*a%HPRF33kBK>Nl9+nvVhj_S;{;KkRqCOJt__7Te44`~C_A z7TJ^M%-ao`ogUV(zP+!FFr9iitT+u2r)BZA3*~Rs9rQkps9KAK5K0;bweevA)^$!( z(I-6!M9YNGGy zV+x;yfK}iA&t$X_JPhTv?cy_2vu+C;E3ou|QGwl2fK0*T1@0%WK*hkV;dN19etCh{ zS;MMS;Pp|!FngNNIA9;%evIr)t|@AGLliKmeyk54u?eT10=GwjWIsUcO*OpDCh9)C zF$yGez_7qCjTLxP6iC|run%`zpzg!ZMuDWP4-33!tiYZqkaX{16YsNtN;sW-a}?12 zJ~oOESU?g&fuD;4PWo7ZgBIYC1%5sX7->IN;Ep>epk-7*?LL; zT(=PQqi+dtnz|-}>b)ai7o(Nrl^;u)fAKo=mwrxF$KFNeK8~3U-KlWv1g>PrCL@|> zeZYYDmX_ln*`*~CT|TFipTlESQ0?3?pM)JT?tlq|5{#VK{nXg~9!U&y#ybj&^zK<9plN;k)y zcD_w_c)h4U zbZP6yc!0rl`P>g9TsUas9DXz!$6d~$TcZLe97M{aOe{>4Ob|Z>*H9Aa=LXQqioz`T_Y)x)zr=JGcU#;RNeIm%I1$&k8p|nd(0OziMB+N z1k6oZEy>~=BEM-;F<>w*&qj%bfS?yTDiPcB1MCtAk)fBMya;Q$kMq%A-m z#Sm_j$wB)Ha0OdRZ2tlAUv+-0Nih=l8dd5mquV4dV$>-S<9J1MMfDOFjLF5hbdaON zHpBWB(0W$O&J~u4D)feF?I-&YOJck^_AXO0nme@}`orl+^!t>Sw6jG^Y($8b^c>n* zT0(SsRxPy*JH!#!V&++x@ckX2iBbC+E@6o=8H-%NqIF!3Gh^z5T{Y&C2Wz%hC!9rn zYG3W{llmN36a zcwE*YLFcCH0Num{K+a`WDbKUCSEorwuI`kD>ryS8Y|^CYsI}TS848l*C^d);&eGJz zxXJ1X#~z$r{|tR(UzS5sl7ub^q$XBRZD*aAytDlBa&-zYqc+)QKGk0`?(de(`h{hY=%$0nWw&kF?>f6rcSSK<~WyXZz zulZF)FG$({&)(ZdTT+&Xp0%s?K4+h=?rQn~2OFjKPS51@q*>`di1b2ca_S74=7!v$ zm)v3Qa@OMB>tvy{(m z2DL{~aWpc&-}6@OvrnJqBNFdTuF{KBwco0GKc4q_pZEEGDRi%Q8hJnxgvF2rpta*K za$Gkr0-o_g!cZt=Hy98@;r9JWC}}P!xqQ6ZiHy>$RvI zZagRwRwn3*n|(IoPztg%sa}{i`sec7;5omCb7>M43)}_k;xg85h~VIUUcVA-cV+1Q zBt!mruJ}w3=(e>oW@mz_AS9|8VV&JSONrMNo2~c&mEFoY8@D9*X?=K!UzQ}I!qoj)Dlx#2- z>|;ipIgCJYE?Ib(QyqHPaPqwM3x5tWfP=Xf@9Uf&h8o(eh(V4l9CnXcYXWrB zdEb(6HAYqo6b+owE=BEh{62f-_f~)3J#u!6PtP;Nv&&mN!s{Q{(riSm2RohHp^!q_ zHUnfSkU?+GBGND8{S$~8a9fbay#u%<_XQn&q6(+EnKkswD-^82MF!Xaov;OPm&nCp z(;I#V(W#n|xJv0_V1USyvi-9oK(fEnm|@$5%xPnXpWbKAq79sKm}DFUkJJ6@_ZCvBphS1wb~Iou>&eV5s6{ue^pPQq1Y?63S5!Dwn8?zEc%B8T@&y~o$AEkk(xQJ=2iTeIy-i$jr_`&Xr`1eg6qt< z!*p!wCTv1)9?*1@HU&2iPS1AK1u4?A>I9b`Mqw`?Y-}iz2@6h0LPQiPY;{DN7IOKI zNFah|f`y3mND%BHsN=Aeg1L!bfTCaCw~^e*Gt~xmbL7ohQrjjP3j~WM9;Qm0c(4OK zU)QV!@G{zaz=!K%Nk7u5L%0FK;%KdOKJLe!UgtAHOxTq7Rx}e>4!fCFoNhL(^=7TD zZ_rj|Q%`1y|j?D%YDTz`e6bijzHOv3K^3in~tVG{d zVw`WbK_9`fB9(+4@Qj!8H#d#pU1xhBZrdQ`HGb64gdJUCrHgMa4{@AK}-_Ub@WrypNvt z(&4;e9`tGNEs%*>yU58NEVRK?AkAET<%_F+oSWymNS!#+bb_`J9a$kxT>0lyL_J#p zyeSE;JW|io*#T%`RAXu2ektBK6dpLCeL3+Ht5dFkJj_=Mz_O{u_7P!NGe>RDlOHNq z-A6g#vD}Mg8OBdJ6H$(O(rUoIyICQq%iiugSsiA+HqK2{4$fy*G)7Px37X(;s)E&_ zoLL{R&G2YLOs@C0J*fA!<=0QNvgJ|iGzGFH2wo^9;ApHJi%~UiW{(clI?!*Li*9wXz?3x#h=R>_T{A?B!$0-;I`ChZ=yr zpx(_0Pb}ZQ5%LY0SXa%LA5vI_7m=lJxG#Aievi1Z5N2azPi#3s9?hE^%L*^Xs58_6 zufwo^IQaHBlT~41FN0vdJs^CP@DHkxxt7^!wfNpB=?Rwrjy`m}c&Fd*wJAI7J%c;Q zRm(H5IkCL!>5|T-6SJ-leP|j?iq~(2Gg_uIH*&2`BAt=H;Q{yhyWEoT=%}|Fyv@F& z(TG||$pe_+GMg-%=O5s>x9TrEGqBetv#tc5YO9b^T}#hkc)_ANT)z$n&0i$Hk{sLR>-HDPtc>(f#eR{VoTFC=QV`o9t&6k9^GI9=tf%? zMdO3C!Y4OKsN70*6HmE1wvqb1zuhqS^*y7z`$u;VwRd3h+nJhqtjJIn5?3`G{ zJ6NgC2uo&%0`;hI3mwpkA2QAjLW%WqbK1}Rj>YlSUf#X3C(q;Jfa$3^?;G@Ct*QEV z&dK7xqgVdtWZLKlO91V8#oWF5Z}O_)Z2Pdkhw{!f%Rfku)?dZX zGxpw6Kf0b{aM6`7cdlX+nj-$RhQ&L7uH$z7c61fJWnC?1&Zoa^T~)>F*YHR3$AA6j za#HS_ssb->|-#E&+6b7)?$35Eg!!?8@*l%}j+k&Cg=bS_?zf@){_w7*A$vn7CLrK3 zy3{snY4q-AR=t~^L-@n}OqK~R*{xg zQ-0ogN$CE~UOt%)=~8vm1KlO){z0jXK=9Y=!59D_IYb|&hNw}5${#}hBChxXpnlBx zT5~`J@=y)?moiY1^CgYn8~7o|N9qU2BHNUb1E)>h2E)B9_Uu98^(bhq`t%tk{%~rL z0k0yzk`+v6V2;^sQTfb0@!?!MXakud3m(mCQHz?QRVhW~WgO8JCzt^q3V|5AF2~uy z_=Z>D)ku%9v;;eGx~JSQ7+~jQiO>KIx)rm@iU_Z=BpqHtl&d@fUy=#DL# zgn&z*#oe)Pb_!G<(FP3oy7K*Hz67s9PpL_DWqi$DXopq#TF0~(Mil&MHF+DUlYV>M zpu?w>_hAb<*wIeUShOK=qd|lSUiFOlDt(hakafkE0^Ro~)`y0;ii4e{@14uagSbP$ zT7|L-G!NxeWN^au3ehQ&?FBHQx&oS+33CH zBzZrcCy>8aZw%mrt{GT_jp-sTpydTz-Wq)E`N_t_VPN8VeLIC=Wa4+IbEarnHXuhB%>lubKApi#^QOzM{7>d}W+Q+Bqhe?`A2Eh% zy|vAAv5dFM=?tc7#GJvX5w)m1JmUUxLlY4 zWaeF@rpOHBJq9wEnWJJM!`{(C26Hde*@yHzL52DWc4azAhKM9!`O3r2}T@OnnD(BxK6Wt!n@-O4?N*kZp|_Wv;l%G}kok8+a(z#eb|mqaJ-9gq;* zWZ>?phZ0*EFJB^7H5p&X4Fh01q_#~y9jm)JD4^nykK=U~c{Muwn$MY9;fL!iDIV!+ zbh!K|N|fV3$}UJpSNZ_fk091|;*I}3J8|n%YTN{K&fYjA(vSlj@kFd#$*(bjNW9RX z(Ku943q+L%o>IrgJH%#!033QpFg&R%QPjTx`Im*of@yxNeJ?LfH?MPzw%NQ!H3QSm zVLy{$R2|Q)xLThKT82iMy4`DI*X%;8o40hbupjVcp69^Ua#n_8KjAT)0pb-7XuntX zxSP1v*ql*D#1>@!#CBypq$4gPdZ4-9?=@+#p^c%revB4v>5wh(*4Yz2F4#9eW zr!Ulb#>9On*g0Vebx;`WuwBZEK}nwp^THkz`W5>hX$=oVF0rVPd8EP_Q}vlA1BdUF z0g>_;0y;Qj(}QL`Mkk#%mJW$1fu~H%a6+d7Vwjva3MAB#%F%&q;W*;e6g(+mVx+T_ z*4qO{7CQM=&^FtoL%OwrK|r610{V0{ppS9?zajL^z$x^{(v%>}dfUg(j0pqc>ot27}f4`bE`ohIyq=ku-K0UL@mEleBfyU{AnL^@c# z#x~$DvHNhV;{R4JFOnO37245!DPOADznP+8UeE1fiOv4fCb;47OCK-8SFwg)^@GRy z2c5@FWL@Jwygud9hT(DbyR#W`?6t9Mb4`b&e+DUQ7Pr~#^bF31KhNPeUb0W>JDg>c z^nwWUT)xw^&E8MtIHs2xgD6y6^aP#w!;QSBF6jy0i_Rv^5^!b(xOs<1&TRSFIqFcy z)OMi!-BTz**W{3yWGinC;C6dq*hBTrW#U&{HveIl!ffM?rb=%Jg{pclElIJ$GK8uA zGI zwSJo4#uqaE4qcXSHM3IQbTXZU$udSK;YEsj>@>d(0HQp;%VKe~nA5h@U=CnS+Oj`H zXzPgesc!v52Q*M1ro-*$GdDNMc=r`ekfF;MaazK&xx(~Lb8Aoei6bqTAwXSz$nZ=x z;pJyBA!(%`g|zdcunak$lZ;dq5Q2K zNaPuDHu{aAgB|E?j)fjV_E7C3T%&d=l;3p)!T>~St?2uf?B&Io*(ZIAz3bt)vR`@) z?Lq7aJWEY^6*LkwV)B}9u5w0lG;|D41p9^N#BObcxu0?q{XXay=QO%`@qK#;5Vz3a z7jOaAFX2K1mvI3u`!L{M4Dpm72AZRD5Te7|DLNeVebiC_zBzuVYmN-JTL_w?N)%gG znptV7b-pA#w>GBZ`i=mW4i=!(Kb=;7S34@Ox!-YAWIk2~vKdS1Zh381 z*ju3?9M!@eVdI?0uEc{mhwPJ07+^4UdHL#!-Gt6&ZABc1WK}G-&4Yfy;44o0>`-ZB za5U3orT@1Af3oTac)&@DwlM_HW2>Nl%&T_m@DswB@jDn#d?9s5Jt|5>On0H8Vb4Of zt`q`6tC8u{QHA_@>JWSRp-7f9Q5U~NfIAlMdN$5qlVyZ_K;1Q9Z^^?V8SA&eyy@a$ z8!Hr@w$dNaZIR22v?QDhmbie5XEVkGw>Shj_4AyjpCOe1iK>ekk=HPo(;j!k6Gy-3 zPx*#Ov$i;ZqC?7A`F7?U%|>B%D~!5rdjk{|6z!6p(5-ucrgcV7OUynV+THRS3jq%2 zQ=y#ixhB;MZk(!d=*~*Te4N@0PpI8BI%Xmia$T`5OYhhpkiaJ)WH1bJ zBDOf{?tsLNH1UtUBu(J-VB8c~|K$G3s=yQNTKAX-cLGT_{_^)W&?i=MmX7dTRjhAa z7{`SB%G($^Gqatz504e&%b0Nv$g#z^$!4Ala?INZEm<&Dt1E$<&RYIztZqyJBqCc= zN#Ek&s#f)c_{?O5TV1!A0$Mg|tZq{YggtJ=1iS}(TRm&>DuyYF=PcGjx4LfJLK}14 zs-CR3xI0sR<23ME6hd{QLZy5qq=H%Ari6oW05sC)q#yKFWcGInI&+y-6$iVb9t*)S z1&bgol0r0sd0E!n|Gy_lSCp0MfCQykdl2k!7LwOhP7udZ!c|#u7REe7Dd{G^RF<5T z5h)#uV^l|2>nsXcHxNd4X~bH-L1=7nq`^2n!HXyOVjz7d4c|UT%FiD?vfpxiWRK#t z$R5ROkv)pnB6}3CMfNCOi|kRn7TKeCEwV@PT4aynwa6aDYmq&QpDMCPC2NsAiXRi% zfBoMqvd6fd46;AQi~l{5{ZEdM>`}ZH*`s(ZvPbb+WRK#t$R5ROkv)pnB6}3CMfNCO zi|kRn7TKeCEwV@PQ$_ZuWG%8s@na(UZ~U7@_88ZbLH5UZ@v)KpwG*A*m249IT^Mzc zcC@`=;dsfVL%beBZ^M=q9^_a%!VJpp!W)%N5f!#1zN@c$^dstmWJzJu5l%1FJG)cw zp}Y#NH-zPG{jy8l=4`0*qQw9C6c&Vv%2!W}MG-|sbc8mowcgh>0TW0nfc6Jk4Z25X z;Vs#b-9XWPG?ml6ovHOv4_9?6VzP@heHwk{-nlzJmlmnG+>h}Vz1qz*9e)@vT--25 zm*Fz-(Dwrd!>qdm1K(KMfJ%RuVMv-uA3k~-b#>}TPx~c9^Re+btWd_*d#%_%R19!a z#Wb7-(+;^(#0j_tiyFmoXJ>CpUk?i+`dWYu2_!7&`KWH#=`D<@et`alvrDox4|{sR z%7`<+-JL`hGARl)$w?*}N*#4lqX)C;5a^Mc{yW(UyBMf)`;B031U zO8y`(jE;*$U7&+4+#bq5Qf^YLU7#2mzs*+%gidRJjvV}Gn~wO+`qR>3e15p^FhwU=1RI||{C$h!LsQT<<8 z)UzlUYU}!Ii`H9&>sos23l>F-u)V418y4Z^d0LtnKfLzi6wOh@J0!Ad56?_QY`^|@ z6yvhM-y1#mGJT0>2-Gja`dd&_ndeg$oKG3E$-2>v@9IX;(au4wSP|-m7jx4j$LsYn zCjgyP4OZ*wmtU}{e9*HVIRvnq?sz4mG&L`~)=hV&0bXx{6F5QLP(pN!Q}Ep@{IeU`7_W`^2hd+`+lXZU zn}RHlH}g%Dg)&b+;r~L(E4t6>T*MW6^89qcaRkrbd`Fr-eFK}e(7#a48UESs9|nY$ z>-g=h44tnrbe4BL!_~zHFQnipbt8=Lj@H`tJl2?L?09|9dxHaYwLw0mPLL_biZE*O z_rdskH2yw}Im&;lCV*Ct*BJ=OO0hI#>=*Wvv0qS*v0v)CR!|Fi(M%BD({_jD$=_SS z;nbC5I+HfL(kwb`fgn1o=AJYhOq6_ild5C$}iC$ zz4=1wb~v0y1&uqDe@N{WLgQJ2Q*`Uqr=NJ;~GNeiaV ztv*~tSc2+wAGtvsz{w>tkd}jK2d6V4mswnLxNr!d3$UPb`rt5kQbKnzy3nL}5?59d zN!n6&Z3{raw$myo^ z4aYfX-juNM4nZ2tw|KQ%V3lnyDImy;lEk~gf?0IYVYPnJnWNGe1Sa1%U$a+84v*Lt z(8dEUWs5q(e$kE@n+hh`)SCMbMt~vb35~QiRMCg*#ev9e;;0!zFMXK-v?DTclx)P7 z;?{hCJ6qy}iNeflniy*Ud|eM~6ja*Ru|X8Bwo{qD*sK95?7fK(S|9*k^}dvi>7zpX zR4}$tKB=Jm@FW7Y0bf>?XBImuHiRv_iX$#q8a}$I2MKLuZyn9it|DCkWLXeReoW5*neN!uSanZZ|}eJX!aj*4a5b^NUfrLU7vnH zE*AZ>6?TChme=I82k{Ef6(i71u7K?w#D4KYx1QcvpP0aQLINAS=?H8$e)$-%EsVfM z48L8XN;>?G|NXo9iRa&t>MW?+@r{9NT5wsIU-rM`N56LNZ}TSL=+-1<`T7dDny1y2 zH3bD72iKP$2V8$QJ)C+k?&WmoQZL_|{Kb}HH$cJ-L-i+r2!IP9UCW_hGCqR)nrQ&m z++RCAV1Joc0+WZW3~16bjN!43wBJ*3skg-3th@bq5np zMoA*ihkFRr1O^b3(h%nd0RMHh)H{ep~y971Tc3+QMM5efWff zck`>Lp?>t;$O{}o4`{VTcG4tPRMZ6+8WFJcw;(z-^lbt3%4sOZxwtN*Au#Ok7mcWxJUdgga zqG@3<(zF?upr17x3lHYin zuo>Y!4awoamMxicP+mRUuzcm!)rRGlzhckceftmY?!5G><=yR%E3YDlMKFvymyi~L zzzJ;ctd-Cg8l&bGD$rrWdY7^}>>7G(P5GJ>HQ{}lhq-EwP^DFMyAjzL?dU_#DWTiR z20R*RHA4lFXeOM0oX;vZ%sKIh6PN9DvI^y3W>5VRtO=8M`*)iyNl>~=HGV&L_VW1@ z?s6FQrW|%hBOl0UJW9+|pV-ToFjCFc55ST#ONgB9{6+4-d4kg^B!ZiF;I>Gh5P3%l ziq7kUu;nNEcyDJA^4FdYym^+ttROnLI(d21bBXCWl_f|&$EuSht#{1!+F#Jptckj5naDv zE1mLl&!Fy8;2uL$fMiN-kg7`*B@BGjazEGf#FG2TYV7qs4WnG|g$-Ud4M&yR#fxU> zE+O9bb2#;EScBO(JD}>oARp58XgB#H;CrXa-*Lx+qh^UrmDkKxgcg^tTE}6WGv&8v z!rZz?I<#JtH{zu70BYdn^=B3w)@|#sLD3tNlk@wCF=7E$bpf{;xc6|Y$qksL1Ij9CZg_+b z(>?4MYWNO$g_7Q_b@(JhIKwYbrZ73F@f|LfEN@NNUZ)pk>w=IDUHU!}S`Bs|1 ziNmzrkZ(PYpiX)ooiroEPj!*2`(U>-u_})%q(c%bh2w%Fg(M`0aOG_Px<*l<1^r@vxMs}%;6I))poJ#XUAL5o}08;)&hT?v-TT` zns3~o;d9Hk%s-nz3R@boxHI_gO=yv7x2oPR<6j!B4Pou{HRBN~c|08_f0^XMJ%_>) zW_u{6rX+?4;pNxoZPt@Y>BDUFA#(rM`Ex|d?Ob0x=k(;iw?!u$>$4c^P2R zB{~(8((4piHsO8;SOy8;Ddr|NE(!xGsgb*{xU?do7T(y+F=0}L=xF@duy>Fd z%KkkdB}`@)2BA5gFjI4R0h!??=C*MnqRAK4ZYD3el$|w&z*Upv0##d?+|{bVbli|F zD%zoA$Np2M+I#0R$vxH;Stm!0RD@$wr2%I-qXHs_&?k9&%%dsv(#I`E&_k`db8D8> z@4xcj%}przH3f~{z6ZquLm6hTo&$k6jEPxcvbyy}m)85QB)H32>eg@M``|Pt>eF^c z?CGq+*aX(6`d9UALVLSou8?rXT^K=DwdH^nGUS^&S(eEHO%N;_mF2(aXaD|1Z4HPb zQN9g;%anBM-=YKDFoC9T>>{THK;V{FlMt_9?yVrO7yA&}uU;&QSWo zO8o*o+X!Um&9yHc%w|@mP%_6H+_tBh+LO+d(hm#7Wc9*m2?OV@QGQfdv$6(hoCzW? zIx!5l3V5uf)2<5mShjUgbYvM~`6biXo{4lm)jv1IwY*vut5dS_82(z)yf(G;tG`NW zX@w>9EboY1!^h;FzRwp_D2-kq!NGV9U;YX&sL30>(Bz(OoA`n?xM_`EFxqjf4-ff* zThizSAUpoTw|&9QcJ#tAxu>uC+Od6Ta!2~iclYVHsus|tal~j3C(9ysU5CoTV8%!Y^#W_f*Q;j$y? zZ{XQBK8EUV=8}^BRv;cpe-|mJ#tzbawD-f3Zn%)2Q0;MQ^%JU{DCEB_s{L8`|A?+| ziK2-J<5g}r5vlAr5XdE?!W)vor90^7OF5E*ZtxL&cn%lVvaBXSK>Q_P;Gad#hTF%S z;wK;;JbUk$qIH6Ee9%B|la5CW18S@k=Ky0L$J$2+h)25HWN>#=`J|BtqzS%9--$^m zw?xW z0-K1b9rlw-BVNkeMQ#a~nt=522ODU_O3@_aK=bUbG!f?CE1-SQn4OOe@PNImeIT6k*JTD1; zX$=X#5uD`*keibX=0?O889Ndx1wy|9HwX?3z%d@+ITkbw6CbRAbD=f7nFD~k^n#iujU2YO7%~lILS;`dR;NOlQKu+Xo`tu_dNyht%OfSQ?jlLihHbhh z3!w)M0x$dDV*W4|9Ir?7!L<0zpm`%BA!=ht#+zbwM;RqaZkzrB8?7VdO{Wg|Y%#$x zq%~O-Hnu{akvP7RTV$t{n3Q+VsBitlZ293x5JnDOyTtt& z-5dtS=;IwXjrzDP`pDi)Y9AkNuMf2k{~5j8ntHc5n9-!z1aC*~bW}`$I;XA?PM|>C zu0c5V?~A#xs4wCowi;Jviexy)>B{_%2#5UCmK0OMKsc~^cW1*ope5TFC|UxeZuxa2 zpIPY`3f3o_-qfpRk|RVX^)GRuK9zbnZ-y6nZ6Q7OvMhIDNE)LFXQkW)Fx_;RkU&mZ z+t7=i&ZeH?9*F=Ar6ZHMD+a+fiJ$22G&zX-4gj3Okn)x_95_oyhm2zw@h9fM?+inj zr|P-1({b%EnDKLVmxU_~HysqRp*ish2TS7YNS{MV*)ZLS?L?159l>Gtt4O!v7e8G6Ss-IG+i!gRy82AM|BOQdPyV1-gJ-Tj7(?XO|F`{n&I z-L!pNrkidLQPw{W)18j6ccT;tV@$WavrIRn2GvE?BS#?vOKkYDOg9pP=|}-dFx{pt z6+EV~=9&&P2&TJhcSlS&+u##3-GEa#fG__Xrn@D{;M%_w)BXFs&Rj@}?665v+#MF; zq_At$g`Q0dAa^$gfIVRVaJ^8tmxGMp7LH`;5Mr?0Ljxcba0?ng&}SFrYst&j;;E|% z%qz@X42W4oTPa|xL>^GlT`@HrnBo?G#3X%+%1T4brF+T1MRbts1en$rwZY4XW+tr5 zg`QR+DQ4%GDjG;xnt`+tyEx(~j<809D5Q5a+8_JYMZBNWfk-Bun~c#BPz!626FXgJ z#*8wSCL3+=O_5VH@Ea-!2}zw%(a%22Fk}SE8{pfl=Uxow^t?_B6jP1+8ssaQ0rAQ| ziX0lKtK)crTpoeVmm?ha?ps7uEiSwKtnB5TYBo}40G=)RWuw5)+;b+I4xk&>QiL|p z@iJSCC8BZtfx0*deY4v$EfzpsM+K4ao!-@Fhf7sTQO%e43q(=?8MRjUMQGr-1!{?R zLt_k4cH=!&TTl2-#5&nbQMI%D!A68j(1;B#AO(0M0u%f$-)kD`BVm+&qj3u>+Ke2Y z;EDdV*(nM$RxrrqLfR&tNO>pLp;g6I-c!CNn9>vm`SQQ!=cGR)y~OXu8DRd5u*cu@ zXW>uvkM#|{EIQy5ZI1#gv>G!Iu`;-TJ}G{GH&hZ!7sN7q50NFaJ!FBm2rZTpq?HK^8Fgh=B7b0Gww8mddiSCsQ=b9n2{^>N}q?XKu2J znP8o`ZRIejEJeGb1dy+!UyiOs`enB#h~7=_!}}rk)ZWK!-Ge3qRodq5NTe8K@b-YC zc4U_M6U=fE-GObYa8hm%BYIM`m>NC7mKfi}c2&YAWb#drlk6m1?s#;$FyGRo*084t!gmZDJ~;`20_`UuqzkqI*41-itnzV{oP!5dSp z`$2uTh|qWD^**St_a`Q(6TpdnvEEUM=zau~ zU=MwQPk$!5Ss%THF5LVn&P4hkxLU7ybbI^g&X(D5SKQ3@x*QrAIdcf$WVvUa4NtNg zNhpvzAYum7W6+ErnN*kr0cHuGGLZ#hQ?88nTa=jsV4^0riz@0P6wB95)c0ToK;|p& z;3Fz_QVI9F5QY7 zXjo!d5k7k>Nw_e&o#|)K>mGo%+%;G?d^ECXbujLM;o&!^XnXf5_$PW9w;K?SU@3q zTT8MuX^|TvnU~bD^CHuZLvg(|Hh>HUh_ahT9bm{?$Sv*}A1pAx4#TyO0FBCT8;4Qf zfAxn)dD+38*t4iOjMy+CAsMQ!?rqKzA~oogugh~yydBoWJV#~l7vkuI=k?+)q!#fB zYNcUKN9DA<9)L$&%$GoWF6Rtz;`3$)Uw7+j_1SQ)1-K8hnaV!6E`*h>c}^WvsG5@N zHf2IB0kMWVN%XI~M`&UYWz+;SotwEJj#gZt+L7&_jgej#=n0+!p5^Dh2-(m>hI(+J zTIlZ2JY2v{6O}fN$m*E-Vmg|Hjlp*aF=jZ|%(i-9uv*S+xW2(ST8leIT+Q%Z7i)Y7 z(@AudRSnK!#FB(dBRo$^$j-pG6pLpTOOmAY;!11EZ=-fvwFEH|O_NK&UnLCyvzAca zgy7r@9-=ijzz#*lBl`opesp3~z=CFJF}X0?CYOl>Vs?i!(^%YcE&*cCj>GS$WgVP+ zpYb%EKNn=R?I(DH*|t$eN00}}K+}fWs}Jl+8)}?Dw}bMfUG*K5MRL&k5O?)i^`5IK z_`-&4=1+gLjuu~kQjQj1|JUGXarKGpSokrpN}imfg=mR+^&D4f@JQ!8Y1fMD{#(0N zT=QgHD;{~0t`+xpNgZA^9te%UZo zWN_}6vBy4mZdF`<8#FDvFxVF(|7-tc)x;IUNprT!+CxMpO#}-QXlB!{+ZbdZ@lBEO zwO%w2EwYQBP(cHc!=(Ucv`QsH$L_L{=okufBz_ggsK7Ut>ALl$m~LRrH5 zyH8uMvM{!rv9z%DBL7C2cmJ%(O5?7XME45j%q=WMHMz0j!rTWwTjBRnYWin$`MHhx z()d41w>r~7w^tbBSK!O2n-aJh;>)SZGbu!sZAr6bw|rALVQ=>xut?n>pPUWBF3601 zIm#cT#gSrw77%*0V{CT|EO&=iU`b_ZRs4b-;9Jm^ZGO;U3sfw0hfVu(KkVMBmT?P# zZAsFmd!zC-V3Sp0BOfh;W?u?V6FF9`Dy#;V1ESaVWZGmOLg$cNAQ6jTY1!Gzzwl6T zc47xozS)t58gq1-+BYcDA6{XE{8mM(lKfU|L<+PaQ8znN2L^~*IM@>;QuG3h;CuP% zFbt1C=T}b%I&> zx(ItUNvH7xtEah4&eZxGOb~y|1%Gr7;YEn6C%F(JJH-VeK${v>B3%{ti1Z+K8HvC| z!_Cs-Ky0&)p)cu`uZ+B0o1sWO5F1REIq$;r1!9XM`bw9-KTEq{_=ZS%V7q$k?L*FPSY&3Y7$jjeaF_!ZkLz=Nu}TJt zNb*&3K=9dVDX?fna&1*Yiv>jXPZv>1n4tZ04UuJFP z-`bJH`5254M94U1JoH_5mJXy5t&GRf6sKorK#m!r?5UMo^mD0Qa;MO){S_ft!Zw8V zEc^~^a+sBGJ%uu!?cf4Gem0lAuafD*YhDk8B`VlQK}rW-Xw5i>Coc!Lv}VNn*EjF$ zCStYqK1#|DEJS;c)ykpvtG1QHe&or zNDyHRL3+Kl!!ux-d$O{oTXdx%=+iq9ls_OSWLyJXJ?m~sUEvT|)G6}QPw>}U$L{bR zLWg{He~thY3zlBF2zdt;E`ILGp(aw*jm1nNz1T0rx`=~x_`E*KQ>9SOf#qRN17=i2 z+)!>P;1D-)M@MQ!|6*}X5>8(4MkMENyp`TD^fbNhrgRkh_fZGK6!4eP^OvEQ-@=7& zOR>L$yMIn7pE7z+l?Vr)khOwnH&q-{Ms!ZGz7hzaW`&xdyxyQO;KL~vl?CsltRIxK z-Ci|EMc(ERM&Be$&V~G_@AzVK;tgf=1wCNrMNv^(4aeQ3Jna<;fi6t_pck+&uHVDa zR&a7wDKMy|{Hlk6)(1k`-rs18T03m+5>Zu;GtRh=*vK>`7L1(3Fg9ry4d<{`rm5L5 zO|@JGZ=qRcqCw4FzGzwQ)rhxkVL$DZEdVn8m*rMz=|Nm;TNnzh@9KisADxE&h%4CzWf5K$UCN&K~j&Vc(v3$T9 z*#K~Gxx4&V{J@a;yUh@w7Y1L3EsAUEemH_f_q%pKbnTY}6c|I3qQB|An?YiTk|!8+ zV%#XjQSKv8uv1%GK;sFPoE;z|;R*KmMyardhK4i9ZY~|(%D9pz7}{GYq$ZigF;B2p zdi;CtkxK{2-=26|*t|GjH3LoY5P&0tK#G|-vIOlUA0=TsdHn%?doc8;`7H#oT8jJX zRY1qnv+W5{HcMUc5Ewx5)Z~P&dVYX99uy{;hszm8^Ps>sm}e1d{(J%QrhiNk0e$Y} zooZex*s%dON>4rI7mLncC-_U%(gt+<g~^BA zpuBwnu`L;UIyGi;dd|8qjb{c8ajlV&7B!%|evoj|x+XH}_>p4H=fV!jQMTMbv>O*a zUZX$LX)_pd7Cl6xnwG!t;5%(~C$*J=-zRz>B;$N=N_HW&QPG3uE}ovvOVNw79r^b- zoKhe*JII}7k~i>)8KRQpw0Yj%2hq+vO*{@1ga#*Kogux3U{UWME1+t)f=C(6BohXo zn>`rxIx9Pv4hCnW>^kXaaDp1bc7`3Av-+O`xHG^$k7Z zYe2*mVyPrB9^y-YtRvfD2prQJ^fm~Ps26Yg7#(EJLlhvq7jb!6_ZJ)IiT(=Zh(aFnmm5Bz)Q2~%Mq+Zm`?rWca8y!NZiDY7>gUd2ZuVO z2sy31o&_Q&6%(n+vSvN;V@uIMq#~Oht*0Pmy@7;GH1;;cO9%mQcF$#m4TQU?vaE$L zA6wt~V-Uswu?oVzf-E{8?MsxKxrx0^jvLZRoI~;)fP#jf$zL~{`2mP|7t;^Z6&?kP zY2sv%l}~hJ;Lm2);_s54JlLFx@(q#1C|_#-Ro&Aw6(M*%E%}F#RP;!azzFI*AHvJ8 z^Psm}&Vhn**%9HY9C!tlgAI`=HKcG_;um^gMp{kzt2t%>~ndIwL6nlwO284rx1}xN)G_UX4*`-1m4z4Y1oLu7i0akuW6l+K5iQt^*HH z*flbZ$Fuz-oFt5O3n`yC7?h`x#2mkD6P-g=;owO3@J!BQSAYZpr)O8h(v1`Yymhg! zzM$#+g$XJzVYi{w(~r1Zl3?^g4*Bg2rr0hLoHz+eYeln3%qH6f_H^MilR|_*;AsRv za=}No0qR+S6Pyxj@=3udgOtfXh}CWq0;fC*v#RqBlr?!W0XbEA08#`ab-hvf?*E}r zNeJnM)xBUEk5{?wbb zD_Q4(u=n59&re7(x$Ob#=-DC|S2;=k3l}~%>_YBHd1;zk*#HhNw~8b}LAE?wgv)Gm zAn#PQK?XcN8{&=DFv}IPviqWzAD2&2`DYRN|Hip>T(pU+%oLn!jowp^!-U99E!f0M)F~&wBC_ zZu{qYC`jk>s&{S>*KIo)SG>ZT5DJ1cHkGf7-RF#9umRiRyl!G{ab1*?^XBa24TLET z)=+%h%mw_Zs(ksd5+rzu1Og2x=@zH0FqWZSH$ZtjNJLNAd*?-V`C52AL-W>V&j%^8o&zd`}Q zf60My}Lo~O)N+d_h9ceuy8K6!^Bw9Je(R4}tzRtXDZR|@YT=|;E!1jY2QlF{$r zM@C0tC%qK_P0y3B(b|eR(jnzr|Dh{Z+g)#P*93^c7#JyuSZdsMV%O8rH#UwguzYZe z=bllXoMP7Y$M52go|Byd}Qv^ESLlQKD zM*~FErfR7izUrdI)*}PDmx5iNW`%CFzMwtA^U_C?FR&A*8Wk&rb{G_t1!%evvrDoq z=J0NK6u)ik?2X{`6fcVMk-2e{cI#b|$f?q$6Iu&cqKOSW1KJ12?&&V&K8_AS(3J$6 zxQgxtGq<_?gT#rkrg;u8rWOV+4&5yWCCvex=77Nm@ z)objRZk4x?Tfn^s0L`Go`NJ5}IS@4J-N9&b*h}wmAf@x9s;GOEIkS-z!&p_`^y zLKloI!UvJo(J8<^kxn*=*^{}3!i*HaQ>7qBt*#%r95g9a{?pVxhmzII0aI4<2 zY?1e2@8I|uk3K~7No|9DRq^AAm#!eV-!l>l^ELZzgRY^h@|IBi-}i-3P0B~c zhhb<4Z1#*JM%H`)F9p8-QMc1qa)$o)HfJr8R=N0uMhraXY-@X`d|O-wi{2-Bz~z@P zk$ncwX+kmk$w!Q5l*xC1B#xBfFyVT~%#h5NlwptNzxLX^Zzr(qk{UBeK;V;LjsNIbG4a z4s(rL5`%d*W*THf4MvKJKpb>vcH>;wGqdOVj>B+r*kh>+cB5Oq0v|bx!BHYYX$)f@ zEhP=lcsuOW9Ka3stZAv)?a}x&Eh#xPEuraoQY~d7JQ6|j8UR0B;6h41t$hD!fdP%f zO`>N|GIo8JP*5v0egWY{E>JO@c9O<#Asxo+0wxmT5vNPD$Y**#Ozfv#D3E|%>rM#E zpQ&M|XJ+TttuHs6Kvyswu@b_atG;Cq-kne}rnmmEvC^KX;tOq<`di0dI2125(fDl* z$;UI*@E7sIG12&Me-};2w$a2#;sy1dV}1BzUl7}Q;VUloMU$+0`y>Uj$>i^xUN{^tG|~BO z4M+X}C)B3XACDKB==}DDzx;=lDD=OM7nB_l6sFdg0!9 z0rp`Wa38P+F@6L%d55u49Mr?M>EtJ)2CXjv$TZC4ubXQ4RJ_3Mv+4z#XlnR$ydWPi zR>PsO7w(G}*yYAwxW^Zo>HiyF;4x$oN_a~z`L7>kMM4VUvfUkUj!4@8J3y=uiT46~ zQs_6>)cBZJyUjV7#!E?gASccD>H}DEtZudu--qA70*VF|zu4V;bZFT{{6a7KfAPwx zXJt*AN?AXQF=Oudu1y0Xgx}VVXvt5cl`yLw=zUVzvA1zVPH!(cBzHjx+0EvRDGr zoj9!2?M9YG6m7RLnz@f=4=(1$n zCH4Wu7psm6kh%Pdcu*X3@L=qjzg_o`aM%d}tE+p1DZ*`LXw%Vk+Ag15}#>W_ZxwQiYgy}4lxjp;y*L(R?5}J}WKoBj@ z|0gP8D_rjGE&sUCO@f`SYZ<~GNC~@&DLMz9{_`j95$p1-;{r-(mB&7UNxi7tNP;(# z7Q?J*?CO;N-v*%HD}Ue=EDH98mX&4~-jZYRtel}d*hL_z4fb}4r)vaH=5pV>=Gb_l z{3KQ&))#!`Zwx4bud%*n8r%9{VAwcRgD^Fn<@Hw$J1Pe<`TK^aj}McGmNq~K9OGlx zPNR;7gn|9&03Lw?(+saLfS9;kdktLBKv=La?5lYTz_j5E0w!XwVbEl^BN~c_E}=8H zu>7=;Z41R(CX}@O_h1VECR8B4(L`_@xHTUNaz6Bfs0bsA97g~VQURo9fFXT`RS|50 zCjk_N`X}cEe&?1!u{=HKEO%7+=IYTxkKUl|6$?F+UYqIqMlGb{V3VtWFjsbf4Gd|rN1KNfg9)<=2G2KoV1 z&mYb;QbmID1%qjeFJz(+)D2^p5cS~}`{ki$@I$mA;DD;g6wY!h?}N(4`MMO8aDkwKrr86U10 z;$#r^pKkOs^7}f0O_(@xNBNJCJp=3fi|%?V!s+!1pHx_zAl>ZFVM+YKdh|Sp*VB_p zF62yu#+2`Ks6Yx89zZJJX@G(w-+=mOw*1H>8mCURLHfYUpPxl00L_ij1VP+PU{<%} z;cU}qw@uQ5_SVU2MqSo4`Xz(=rxQmS1KZB`ko2uwZXktBsI!t)*PhfjzrNw|c+SHo zc>5-5NbWdH`4%7rmaq%cNwl+K!6Rrp?>~(jMz`l=&?okv8&9EgHpl1!J4OQx-;%Kb z@>(-MurH~-+3XbP`6bg>-ZY7FFm^_ndo@=(%Y%_p03{Qc`Gsye4e$u=wP5DTN+8@p zeMv&MJHo2U4Bp40B6%XGDvDzCu&6(MEyBv_#PI={KUnbbA|U3nm6g+?&$c052mSRj z3&_Q{?W-4oC$-MA24y66tW7E5qrPpBS*L*hxSSYHd`Xz=|oE(V<_W zz)lzz)zq693Y}x@JV9b-GYsgloY)Ri{eprq4yVc=xH%W)>p@OhWY2KL5;_AFD_@Iv z!wv2ltb_8yE^Y|r*v1WYZn~{yd0(FT=L#tAJh?ssZk0E3U_}kvlF1M=^90afq7+f? z4MmQMAnLt8f?|EmhTnb4=wo`qeN;?q3D{thqif=E<{@(Z@_Q#Fau*$H@w)A*$VWg- zBvF63n=*mu{!nbDJ)tC1m6vbUr;SCxZ3L1+*QqKS^)0% z$~(Jx=cxB^wBP6Ivc0bZc%$ER@7@71spUsE3F;#8TBFjh$vm$H5g)?9V5p+o4T!Y) z$t<~;>oa0n!&XUkqZ8J-N6}1OPYHT7o<hcV%D#$YmEVjE=jslsvc7cgtV9i<-TJfasW1cLp97{%fa z1`Q?`_5uDCE=r1}I;{@C~MC|F+~;Zk0G zQs@|(D({S!SQB6-L-J2EoI^iwQ`~HS9ayd}BY$B*iu$8@1G59VNQTQB>ON4{*Lp4i&h?;l;e&=$=WD3vbf$)pJBXyl zjB$5&hjmIooix8&{@);HFo1i_LNMC1S>u}W$qBUY>GGs(5gf72rXedG(kQhbO&%Mv zSj-t8VDlFh$xZv`b^r=Ba)&IUV|3cK<23f@C&y<;)i-#hYMiBdBTq@G6r!Q&0gAo8 zkb>-XgYzLVBEQ`c#V#wB`R)GTdcZ3vc&k@7rTr{7of~_TjxgHahN^9(WVN zA22d$D8#$Gy9?9J+eh+xoeR-n0k3yW*J+R(2Ng>0MRW-4eXO!g2=EX<0_FR(5FwK6 zA8g@Dp*$Nc;!x-jEF7IYJZ=D39zb6)jk8i+#YvSAiNGigZ5B;)!OM4Dho}$8s*Y2dh^NLVs?d3WXHnAXb zz#UVY$cXU6^~4TZZ=|5&3YX-5R(`(E5`u1S;~d9^i$HE^!yCi_Y8D5=rnF6dJd8U! z!^>F74oNb%rbZUI@M|-Ldde9N(TLt|-<+>qEY&68?}WxY4Xe;j^!Z>`&eu_gxdhSU z{6i|(>^2N)5^zD-El(EXgyjm>kV)E-<5R`*lw3y^indRF1Qvyz9kMsdBrj#5udPZV z-;D2;Lp(j(m?SYXFC)Vi(~l2HF_E5E!6ve`^ec>t9!FI~Wv z!?)*)W+4T)FTgO|4;++OJ59B~9OWh)ht=}r0w%Np3l$9~ZXuk%+Ix$xG^=W^tCb+XRSJJ9h3#b z1tS}qY%w?>K>J)LVT%dShAjp_HMSUHv`OY8O65zMVZ>3)BXA1#1rnu_O3zPITQn9D z7bQsDJJ;9jt7C*qkffE$1A1yof zA%K9!^R(6vdD~ciYLAtA8|y7g6+EIp7x?GG@{g3;LyxL7((XaL#`HlQJ0<}@OdwwwyW59a#n=XKy2oUA7)=No_=pSHJ?3DLeD0rqR`%1Z2}F%?hiCnCS@6kA zmzBoCg#C(L2yIp2t}b>SJytmJHvBg~^zX(3JQ+_K3ACA8u8a-a+`dj`*JYMbg zn{=AgR9@i+T~@#F1A}B3WS`hx>Df=Si>ji{VGG(kJX^Wjmd4m5ua_F}jqb*nqMw7g zwo^Y{asuj1mRC>v@)dI(w|$>0?W}peuhXlDS&Rf14bbQw3qf)qWWk<^@{@Sqg)vkn z9=aGdm^g97{<69Ot)=G);efZQ>YqL<`(G(Qq+AX1k)F6yK6;XJ&x7wrW3^b{^yWtH zVOwLHr}HTh2fReQ>85dIW+v%3FTe;!q_F(A!DaGoxB?mhe&frmd)b3UA4o?mA<#^=HoRS=j^PC0zLtuV4ARSvx(;BrzQ6 zJQKAIn6h$JEHLr02<6G$uMT=eJlXG+>TdGNB1PQE>z5y~IwYP^bx1u%@hId(b-TH` zt)QKW>JYr5IJH)pX|6+9qd2H|Q;HowR_r$2~fLD6A&nvyd z?w2cDqAw@pFRDYoKI+|W?yc@6T&V4ZR0axO!V8S_VlGs*g9|mC!zHbh`t?!I*%UOr zVy#;X<`ip@)&SqlJg1h53$@4#(2o@^%wH_gwDDCqQ?_=tTbupca~rBw4_Qxf9q&li@64{YHjxe>IG{#E4$Y53a2#j6khA% zcJjHm+YJV|%d48&i)Hn@%|^8!s+!bMj0Y$@xPWXTLs!Sx9t=sLKngB6){KctQZU0q z^)B^yZsdJJBi*X9nE0D)orawRQ52N}aRYM00&dg^Kcs13L^mfcvxB+9 z-44fUhK5jLKPo$g=9;B~L5=&7Z9y{wzsE>%O3v61cn?vP5HyFUCs=)5Ni<%tp3~Ka zTZZc{Me^8i95;N;>4=zWC*1`r?;4Bk&*JmFG)x zXR0!};uDrReQABkB|EWa(5JV|Bcqo3;g?qt!z;v3s7_epdyinj{8a198=elta9xCD zTww@{6y*#}fyri>*13B(_X{u`1&f4z44V)$CEJe%7)4SANL>Zvdz-;9ys@RIlGCZ2 z)95pS0oN=1s&%&kI9L1&uiDf2ZksYCv{6jy=@~MUzT5C7NM#I`RyaomAt35TNRZOB zbz@@!6m||#W0x{NVucOi0nW;trB9TViqTWh157yJg#O#i$t)EO>E|?)8J0vbHtJFp z04H$$8eSAu<=-?f`tEsX1732n!VOtUheFCRT@T+ZzR7of2m-vqcyf@D>qruKJygaC zXkY24>Qv4V34T2s>XT(or&~mq>y$Z#M@`J>PqToJ!<_m&nA2mQ%bb!|MkA41Qjgp&xTu}1*#FDX7x*r{vN~TwS6ezj*2~hIb z=RejcS^c=6&iSn$i?!wId;e!(aX z%CliFMQ6hcO;uCaABG!^D4pE9A}m~0ZCrlz2mkcF?|l99?|(GgbA?X9Q}APOVVE$; z3qwS0j+Q26d4!2VUArYSLxmh%Uz1kGN-=@I)6 z?(Y2P$l0ksL9_n>(ClCTu9^J=&;AF%v!mU7I{8tNC!)#qMsT%Ugn#FMtJnh8~?6U&BH*dLbYBGH?IS z7ts+%MXzUX*;U?(`cS=jjE~BIN}SOm1hV#=lx2d6Fi)vw3`OF?pbP)R+p7Gr{>G@a z7-00$c5x0DG_OnP7ZxwxtkBe zftV4u)hYieqTAa1ZUOUv)1n_g9FW|av?7ZjWZlsR^IE!GR|U2;-g`j|T*jEX2}W>!Z-XO~;SbFdR?f7O2rwfyBjBCN~Eb*m2w(@ZrI@ z@$qh({kl2uq{{L*B%n3zBnKHi*Kn@$pATk-6YKIK6M|46dh|29))jdtZwl~_N$y>M#HNwae4XS$P*JeQDW* z4xFC)i#W6B(d?gU=u6KtmqkMjQ*#ry4X2i~=UGWL_0nPgS6=*Vay204r6zcNygq#x z5-m+%_m`*1-hbOm$z7&+RZTGF(p<0UYb9PV<#9TQbyO1~f5^-g9fZ`aYGUFxlcS~n zT`}rk+X8Qo_fKQyc>gAD12)qyyQ1x1NcWTFcW9B>g8FjlLn$L49(ei3m?qf@hFSgA z&wj{=cnoX4b0KzRF3)FOoKc%;D?fJ=7GZV|=+>iQ`@A6N-g2_tlHj}OFL!1lD!D!q zDD?+FNp}P|(y46!dea?+uc!`4CeMjSuc(4hGW0|#n zTFtU*c7E*krrRoTUx|n%78+iOAJoGL7Mt)3KMZz!HgUau6^|6QejIG^O&X72%8&4_ zTsg4v34-qqaLK+{+>N_TBkVIdkNu2Yey-kq1fHB0zY@@u4ockmZFfF#qzmi6_Jbd+)d z$=k7UY2=rFOL)9DPLNzvJ%}bDVDXgEwU1Mk`~`|d`PCtJjF~O)Yr|-u8ExYPm8u{t zEE=J|O?l%rf%76!FyXw|sbAANFE+s!5wb;Qi*R1-=-IcM*M&UJi*UISHAbrY2r=dN zSsBiYI53CvVyC_#s>6A4RNW!&t?r=L6wQh(8P1FG8P1DQ9bV8e@=lHWcNHLPyWKu` zFdi`Q_5sU~ap+!1zYvc7rEJ1>5`K3F4X9fWr}Uv7!b5V|!n?4IjcmC?rRoe0YuyA% zlP0=7r3cIK*kn?@WBAAsj&duPd+zrHjKwNvJP4ZMx=D(Qdb0sV%7|t!!Y`6LQ-vaN zacAzIGBDgft^=Z{ZhVG$0mqwQAU1L1XWJ%lMQfTkUfsv55%;3w)OgQRsF5A{I5mF% zDb&a|9V-f%TAXsoM?cpNnJpHlapq(-q+r^Q{bt|ipWqwSAu)j}I{^C1wAKXM)B5tB z#^00qTHf2-FCymkJeiD3y@!4^x(nLJ2Tg@Zep%uO#0qL=YU)GLe^&o8=RS%KAdT*_ z;CeHGjIsi8R`7xLc|jaW*kS^y#Z@CGxZ}n+s3Ls84t25|*=Oy)Nc**JTbKVP`;(LX z^xtGZ>rZgo>v{A~ce>y2QfnNlC!lT^z2(>WOfaxLYZMHNsPErI7bVdZ_Et z34O3qtTwr>@&~8IoAFWH#Y$W$7S^mJa_-OipleQT#VCnNLn}*Y8hH zPtSB_CMOGqF*(^uZ%n&r$9p!`xOhUZC(`Xnm580v*?C=xpw4MR%oQ4uEtd0snOn_-(+HDt~m z$pO13dQOyAg@iOZi%ZoVa;pof@ksQjYs5hNbkCRR({y<)s=Vlpp@yqFvbqm=xVF7f zjBFYv>s82jJBCwjXkbWi=b;h{nUu=UCv32Zp^R8&146Oc!+;-mJ0cVS%}n_Lk|37<|8d@%v5p_W1|Qp5_!28v9OX;%3XJWqh_2kGsu~sk9jx-?MoY!D1z`sS$+aCN~HQ4uDjvj@5nBH;<|N!N;tdk0lxH zM!CA4M~>~|TOPBX@$Dqlm!hyZ?wrolq3dFjW``N@Kxx}Vv}W~h`j}uthU4Qdk69wX zd7ja6S%~4+568g@m5=3TWsLBYuSqk_!6{nBfvK1@OZ;)l7e-VdMH$NMfQ>uD<`^u0 zw(hLo!U_P=^%qH^CjYpkP93N7U4zD4PuqGGa0x*-tG}7L-~i|vZJ!lwa~ZY0?UF%O zKw(*6!A*}EObxveR|=F_eC_E7jpKa4|Lv!w04P9ro9A?+MWuzv!uy$S%4%x90{!7p zgLYGRfPvU>&f+C&;~-EAPM9=19O5~ISG$`|4stp~XHqBt2`JitQrsvark^Y(!~=HA z_in(={3C=rgAYSgrsbdNFrtzd0i(RxkWw_`9oee*5%4UQ+0u6#&*5{3tU|HF5j#s4WDt@c6C+c0BE~I<>e)h`W873GS zcE}Q0V4vesK1T{JKk+*!QqFkve~*uu#4Xh(l!gC}o!^>iv-nxJCORU{tc&FwvUFAKR(3H zpbwI3hbEDAZaHDkmd8bJ9J&_~o%HS!1_INqS%>miyvPWmcsC_Zh?F6!IRo?6xf2$k zKm)WFwNCQeWJShTyD72Nlcp(TZa~xo>m{ z0GJVb-BJ?VNCFb!Krs+Pf$#;2C?FDe#ep7HO-7RYQ^?NbGK$lqVOPOiKt=KSLvjGX z;X$u_PVC%d{Q$_`FW-HV?LVk%5!VNZY4Q4y=_KkSY_{cFo?&o=AcCR_O3Y${a>Dl6 zj>PsjzkRG5>fG57*@IJ397AR5JmsP|gTtJbXX307FlLa_=dtfUlW<;uL>{tFoXBiO zi=#=67PDxPNeB3=8soDRbw)9a>L*UD54?dqrT?dnAW8IuP$yo=0^Y>Dr{)-X5JN0vSUrZMJ5KIT5z!rppfN_4Uh(F5dQ z?L!DWowH4yM)%yKxOADUsg^ik-;JQDh<7J`i%qAA-;(UXM1cX;?uQ2vjDlcuPwZC2 zAV=y>lrW@Uqm=lpkZcJPicd$a055t=)rN{u+LHUp+N?n3XUQjGo!Z4lMc{uIn^TMf ztw{M^pkwd$*h`?c+bc_!XzzdpfNsuFjJDA%CHR-Gl6xk{rZe#-gXY;eNNUKY1#%PY z8CfREPd~%f)2Gs=qK4b!iv#Xo^v>L>x7sB4c2`~AiB=D1o;j#bFqGxN6s9jao6 z%CEXiX`GUJ-<_b`u)dv3c@%cB>O==@b$1ZHUvF>_mahxdGf>PP;J_#6(Fsb&ZHfLW zFi46U3jpwj;T?3PAxUykzy5GA`JdT@f=d(ToBh3kl<%Mi*x_g`ey7D#sW@LLe!sqW@x964%|O7KwhwP@KV{gnE5+{|dwXuB`2AzW>sE>nSv;9~yndzl zV`Fub%%yGeZ!B(rv|*+AYh#scTq*vR#j~mI`IX`?SUg8DEMtAbAd*RN4hX^vC~@5Y z+0@gx64Mr`HrU*yz0e0~FBl=e-mUlSk?rQFBw6}XDS)Hc%3ED{CbwtrR8uW-<)D@8 zcs&wNexlpysy*A65|4se`RN%MPXgysl8s22p^7xN(a0tm`qjjrmak)(q6Ex$q>HFI z5h8DS+eWszi8y>K@>)#P4_{;AhD&(!H@~@5n@b^VJT3_675K6uh05*^6mW22ei}ZzEclEkHoj zd#@#xhH2m9r|c~^+uSk`zsnEuYcYQzD>*WnD5J-0hqF`ItV4ak@?Z}A;0-X(t3K%P z!DOO|GV%fZV;cFLV;jlF8i7KX7E?u!{o)FS3zxG^0|`xLPe~jcDIzaRc~lbESAS(S z`yyxP)s4@|Qbf_l?4_i7FjFtAyTO#Z&2`u%*yqVy_BV{rxosFN-iZ7_@lyThyGh5u zQFCEgSo4lKj4$@=kH`oq8R6JsJSyPV$7+Oi6F4w#Pws7Toq49i7m@}@YzfudBz zW{L8_>55J|QS|NwgADruJQWy}-l&r~9ma;%;8)uY(LTUM;^QO#Tf&HKG=@~Pmssnm~%04?8rvTZGmZIAWUPLUKax^a$R4n;I*ma9K%kQljq zOTHv$-l?}=;${oI36?*XXfdbdCxg2`Kh-Gkd2<)Q5V7R^0r>k*iX~znc#w@Z?z|wg zed;uu=T40pC0V^^)IqU2=TGXA*x<-lvWg3&8lJ-qzBzy9#gOe|^*vb{K4VS?5H<5J z1PVMk^!@KOUNY9D8f;zOG59^JUoq;;a)>E_Lv>xzPgSivj`CqoV;?)w^3U&8nnJz8 z2R~Dk<@+`^)5W~lNLk+147@1!nM0C+BDsE=7<=a{lHjcZ7sWAGz8UY<&AHlCR)s#r zYEKn7OjK9dtkIXqyXh`hzGhua4%!nKa$Rm1-xxMD6LRorZEs-G^0pO*QQqv)at5wlB)_8<#OfFI6xt)4Na)XG+VI&|;09x%7pjKi`g&RSKb!G&|7cZoi_>SSB&@B()dOTttN z)V1Z?<3zSu2sG%t`z6nzBjEmG=Y(f=ra^*rzIM{ipY3GN>aYT<;%7VMvpRvuX`7F) z(t5r7G$)dsSI^SumwG){Lt)052<$IBSC`|=EsHx=IF#G6e3UfkX2uc8Qrj#-x3>k+ ze(V}(@>$*^3P2?w@(M+utKDaHR69qi9(v`rrILFqqk?##o^FT=l7mUu(r29FY{68F`4b-)uWg zibM9~Rxw1Mx8%=1v)JJv7o>DC$a#-YfYLEScbuhN|37)}AFWqeAA0V+-}jvJo}bx) zAb|vU-}k0>l2tOzy^E0y&9vEPMZ_yk@s{3UW-)8=hihFHVH`lp*cp^V37Bf8jg_{v zMQ>CzQK7}kC{=9Z6>U_iQ9-ewjfyr^R9dZ<>!8f%^L?KEp7$gHt=G1$pYQMI`vCb?Tj3aq)fr1W2HYm_;-8D_xAh?r7#*2&YN}l2CH@$l!fdVIH3J^- zGK&ZJWYoKhTwA#%Eo`GtWqoVxY$iRWSL;7L-J9p64sVfv^7As0Rn9tXpi?JOl$wHH z{=eO{dvq@JgR6qBL12hb)da@GP2uRvsCLg9ods>}9?JgY+C2>4PqKE;p%d5c(TV9G zR@ycPpoB&FL8=d=M*{aixS*e*a1W4gP-f-AJxv)ez$;%xQ}&!7v{jpEDU^;Zv>iipTQ2Q-eR7}yLyVu9+6g+)4WY5H1F_>URGDD-v?ixIUzdB9 z-$XiHF;M9OlaM8Bwp)q14xd@Zi{ zUj(+9X5WX^So+hUKmCF`3#!n61iw}tL(?_Z}dpF$pjvV8NqIwfUVBL zz6NZ)GB^8Zx13hNJCe*3XbE2)l|%uC`D>)hX^dQvkG1+aqm5`08!|O42Fg^XSq7(t zyQ&MyI%o3s-QW_z*OTJ!{^4(qibXr3=L#FI`%G33ILhOasFUm_r$u4IDL@Qix?BEmc6Ej zK{NH&k;?LU#@R5{77pBYD$4m$#d=vAiR+i0i#y6P$f}E>q;wkM?5)PqA^a&e!=Vr_ zu)Kg3P5K(7Z9Zd&AhBg(olebTuZ=^Mt4GNcWBt1JT-6o zA;7|!%j6E{Zf=VPf|Juvvt@V*|8)j5l&;FMZJ~wbT~kq9_h~q&!Sc2PUVnm}Q!405 z^Wku}no9Al?Rce8!zy_h@!D3-U{h6^Uj)xEzTj8PgY$|t)%Nj!ebyBGl7D`2r+XCT zt)@zz#X!D?O-f}e{33mX@u|N78qlgB%Ro-2{?rUpqRW%gS>Hb!>emmFHzd8a$mDp% z*ozK2Z>1KFebM>TXhghz08<8d^C5tGj>8zIMv6w%O%B#Rjvnb;3b>qJ(m}8OLjY!y zNxY#f)L&-d1w2PaPA_?+13n}{xfNSMNgJx9`h(L$!F0SXd*vMz4?gNEFIvY$34asQ zl%mGWU62trJ)iJ>v_aZxW>{$f-xZON6l|*gYzSL2S6kZxYLyu<@ziX=0{j6rAu`Pj zT9F8*3brLRVL$Pu{ebu_U1-}VVMLHwZ%o>;OR}21tdf;^cfCT4PS$T22#U%)nIs2q z`#@3u-|*NsFL2&QU71I3HE(HYgXUpu%UtEg^{_H6@DG&xg>_a$*f5 zf(;k^sUNKmXPZO!-d{97Q{UuL5KuppryRQcrcPhHRHXa7hutYnvo%jbKSreU*v}0? z4IGgn$RH{(M1_cH3N6H5zer!y^LK>eUJOgIks$;Tv4b-Nfl}+1D9PA^bGemu1_Q>F zP_^sv6Qhb0r!iEGH;xn!fjiMW`X;*gb9V8#kr>1Fgs4^$%RE<%*1=#Ko#y@@X}HE= z=r~u4<{n;5X^ub1#)J2%mEm?%(ShFKdjGLo&Wy=armm#PrtP4fGxu`iVEPD$SkTrI zA2TORgvo1%RI$Jle~C1xQ4_5CLcUO5E0;7Jcqvmod_sJHu{Pa{)Qi-~u9hbRm>n8C-GuW~X0wd+EZjyeQfE}c zAtSZi2sl?FJo@J!h8k%|H_aRuKEeoH1Uvz%93;lEE&{6kHq^50e9^b zI+acN;HQujDuDH{Q75&t9ZN3BZTI=8fkK*!fsMK^hkMb@oC?}jH6C5xkT~QXW9O!um%rTwwzZS zh;MBw4p-+EZ}TZoeJGBxgUD!WbF%-rm*DXz%ywfpxdkmgL>;@I9#!;PB--i6J(5SV zg{ka&N&1H2$9HYBYO%f2%L4C zpW#p&C*`|Ba3re2eto3J)miTLi=QdyhG{DahNZ8$iT~txySSE^J+ghK&Pdk}nW{nr z>E6Ifc;Z~sR48%^_G10J0>~F>2el>tv09G}!zIJ?0rGg|>0i0Jxtmw3Ys|buV%sn0 zLD@Y0bm!`wXe{)xU%hCZqcl5U!q_HWQlwviC;Kfsd84bCP9;84#A*%?l*yV@7_p2) z|LL$xL?~Qh*=uP#-R8SbpDJfht&BLNS08fn^oCqX0}2GFipParI}ACRGlB2)3Z4&r&oGi;B%#$gJBxi8(=$E^40547x(Mz@r?gWX3F-?a$NB zkx@IsID;)b0u#7X(r07>9v*uTMW7!oz_Vanv!BnJm#G{R5L4_q-)|uJ*x$;rVuz=k z+rEL@_<5zzoI&(0H7IaMlBt1C2@`v%q6>;yC0vPybX6J;|C$Q5B?XQ+yAn)uxZG(@ zD4Fr)aG9n74(jFx{UsBj5-?loqk@w<7dpF`G;G1Lx%fFyH~#9pzjQuxZ<`xxIM29Bq5oZ@_cl zd*>BD7Y`kSf>IRlG998@y=KorqDLP&%R#r{NP^?I#31UjqId|Ia2!b#byP}dCE_j=WW0`#FXe(vANK0&b~v<9ON#k zn!8whV$7m+0ZfJ=Drazo7)#iU^f%IL%dx;psRhMK6&96wc5yhZ;`AkMe*nkZ0Y!4y z4k>cjhT9o8tfAZZ?w3+28(I!X*n;I(OZ(tn-yC$NbI=uNpTbMWNuAW^a3n+_ds9)l zPn%&n)~}vZLT2BAuJ#ZwmqqSUM5~G+c5JAYJr}1UV@iz#8aSIA$o0%FKC?cBlV}Fz z5LJad!?ZcI+SyWk0RNkyHya|qB%^TITnS9zUGHp>L!t$vvO7mq)8TaL%<>Knh=?uc zqN&B1-aVGNdGRWvj!}Zf#`DNj5E|cQQfb8ae#+0!c28UYpUVCW8QSu5tIN2uPv2O- zT7|~-TjqyUmfP=-92(6+AbMCe^E+vE4i8S3Ym8hmb}cq%ZFPiYjx>H2{AyugZgyt6 zH#NCxqT8v;Vm^j}$SSzC%}85cPk{V+^YgGFQm+_!|Bwdm8Gq{f?Ks(h3I*@>Q%T%g zkYUA>xV~UJ@sNMkq;`U?=qN-T&!=yOW)cnN(gly8p3O0(DU8Gw{=AsqhyxWYoA-bt z-G4rV)5WLO4kv#}7SlQd%Vc?@T;r$jPrRc3Y7#$1{n;7jJ=@okg1D?wve~)cWZ2_I z3h&3uw3%P#+rEr=JHgAu{+%|dd#^tYkO}mIh2y&Sd9y7Mt|z(|T_>P&qI+*QWir+- z=C6>Q`tZrmXLN}r<64bO%s!Ky?XUjZ}s%d?A-jqDp{XS`udG$ zGN3&9V%RtE_hsWu0DQTDTWs|=oyi4!_x1fS9UTB%X;&q_HP$}1-6jL8z46T;>eR#f zHwV1P+Qv7=ZRJ|;zb(Z-d|w6k3M#5yfXT^XT?Vh zHAmk>Qxl(C+xkvl2Dy;Dv`{evW6)T9N6&%YQQFunT-{6>pW@=#{@G#wd$v#5=MV=XQ-|T@tLgDzla#Tz=6?YYhGVh28^NH`18O22!%z%%E0}D< zn!I47!m?YW|LBVYMkN0tvu}xT4zBjNy20cSOa;KK|I^75YbXOc+WD`(XTb|N`7ku< zy=x3v#RK(2QOT`9s=Q{vm2iTNHcO@3u~{mX3|2-~Qp?3vHx0{+=mH(jdWKvn-cG** zB>EDdLoKO89tyiB9Hk<$+FbO#N_jvJu{~e4oi0y_AeaULh3E-=X5oI@=gt=UhoYwQ zI`k%Ps>m4YiFsgEIeKC;ugQo_MyJJZp+rdjKJ&D1=ZoT!zHw3sd<|5)gtPtq6~4zaM#QIMDb2pLy31~Lry+Z$;0pvP|q3~Z)7LW;>(BIRz6Amso@k#dL6fRue6LCTWH zRHTKW9zzNvp}!+AmXm!FHe!P=t^;_!j-n-$tdMH^(%yh0@=dfCtr0CVenEB^`*>n$ z<8HU?l+Ar@#OCyJ1Z~2laW+&i?{*tXD8JHAz>-B4w`;AXTAec4pPIc%XxpDGg#r zWEObYEGQB&o0KdFOQ?T+f{9COmyYa67A?uJO!DI2T;7Y#1&KUnE*FgBQZ21;E?10k zw#Ay9ceWy2#v~vn6UK5Rzi0EgCF|`w+Y2_k_1wb7ei#uU=5t)z}c1&uIJaVF$c2N(*70PQnIPq|x@PEGP?E z4+7h~U~>tG87(@~DCWTxXpSNu$Q}5~t>puJDX-Gi9{%_`_@sxXWWcSlxvz zU^w~Ly?zXA7tW=DD9lIq-26GaKojF#K-8@0LUk8-w7O;P0*$lep7_Ru1m7{Yp>}%s9CWBXO#i?ZbNYNhgPm$jnhR)^AzOI6zs&9D&hL zdzLQ)Pce7WahK_GF-NAvF;ANaH%Fo9V=lX+#ay;!#y;t4Lwp>^K1~jMF{dlTsl5yd zY4AmOF;-qCCqCEwTk$jt4hokK9Mi~*m-Qp8Y(#vA3qd_R{3-7<*=WwodJk4!j=e6z zaj@c(3qGyuU}f8@yxg6w|Mo1TR~Rg7>aR&p=w)f8)~NL_%qPx4{gLuMuzmr}v4?B=fSZTc3l(p?V>QWC^NQYA?O4z0{Ex zL1Y$LhX#Xk^}=;-677`JqL>bWFd3RNvEZDv73sO5#Po${gSu9>>J0mB zYppYv#hZ84@{D7iKlI>I&gNdsrz8P&S*pzixuV4jRLwgA!?W&#O-lQL|apBe9(oq@-K71nqOswk*8S5b4jfvsUoXGUJp-0hyJ?cks&qL4=fwSPuoDj zs>Cv$CB%6^=uqG=AnULG7JgAXse$XgP{P*xowEMHb9e?7GAZ;&M+*Hji_#F93sYHQ zhLogL6uLzL);AFX0Tdb8jROXO$Yrs38ptq6=lHC38_pIUz^lL0bz1#c?}cvmV|*`E zO^7`?_v+7t&m#L`1R6rDasRN9a7-e*WK1UcKa3HU_0l?K8}(w)fgz{#2G2v7C4|WY ziR4Ri;-pJ+98NfuSf-8H^HKLYs40RreRvs9#{C zK;_JuQP~to6a0jD1z;jB@34Rs!<&D!B2?4y?cK6gWn02JUiAapKl zxT1cHwNzmMidcHi)wCAsKlv?e8PO6!seb*LTTBw@%|c0&=Ve z$rhv2jlo_p8-@%OaonGR=c33meYx8mtO9g)XLC5ouj2kmp@gL%Q&@I+2G!nmGvrZT3Ih!4?W5@_Pl>+`cFUCr{O|NqX% z$ODhulR{8{YbURz>ZhIN#;bHY7xMVs#IDKBuW*?x-q7#e!sdR1nFO)`lWf({{bX<| zF=dw2B;y<07Or1d#~&nW(@R}2AK!I40NV)=1894*O?dk=H-+)EY#1^wLdILM2uk$O z5io}+#Nveh02Go^g=SLkw0pZA$lU{JQ)DJZqd0Y00zybk%>oW`;c!Sa*R$`chX$ANT>R$A9L$BonqYkaIG*p(Loiw%p%v35#BDqa51OgpT@Bel zqtsF(1Es$4jA3UUsX8%Fe(6)JM_=6>e&79RNwgi;u`vlnr&|x)Prl0+R~NI*qntJU z<|!}S{G3+EtJzsibZmP)F zU)wzX>5mr8PlF1IbRT>h-@VVTesBRPk-mq+07~cGiS}zKgmaKd_EPd~tcZ|Kke7Tl zhpZV+M<6w0P#z}Jx||G&z(Al*39XwP3Gd5mW?StC0zB(#bDD~1NI6fYku&`)c8^cr zQvY;BHDxBR3ndFqICbqcwu>NkVkc=GoX&?FB3dMj@Ts*CG-&$dHpM5>jgnmQVOjs? zy0`{QD4d^YBpzJhfF$mxUntKOv_vgg+?Dk&H5X8$@`cnap{Us49k}a{xK_s2IREql zAAM@ln!XnF|$5|LXT*TkND`u zLA<$`zjq-b3gGM6oIw-(#=XrRJ+?9$E%pxc% z3ne9=%v({d(?2i{h`t(=u}C7ZWR(;wgt$|{lHgi{RTLl~*wIfF>P0{zv|I~j!3ATz zBua7YCL)wgb)X%nt4fZ6KQ*8{X#$M}iS>pX3TO0fT8H?Q=?S$ksE7b7H&g}ujESH? zgoS|sTbvloI8OAnIRxj1+(jJ`&7py)TTnBdX_NJDE^tO_kJn^+%n>>h2;Wiv2_YYQ z(cN57M++887b2bdW3!7zD}j8=7d96cz*`q4CpujMj-A=X3J|)piyaR9>T-b5RCEJG z#{$0LOe8v^pK*nCQ}_qdR$CEEqvu|+7NOMW`9f4erjju!u&5CsH{%}u;6gFGNXA_n37|>ej!kN+6Tmmt zhvVQgO;gyMx~SX%PZR-+Cnto%ab=Pi&&+fP$eSt+w-9}><{&BZCLG9F{s@`LY-jYR z8Sk0Ji5JI$NQ~x$1+*&MnD5Q?thcud6#r$Ui~b$kkG1nYSssr6dQH7j+93tGzI7pu z`ubrBD}n|#KzAJaVMdqD{4eY7ry2?ru=nGIlCY9tZsG9QyR7xWJoZAL!*||mt#_?* zE^Oq0&8pd4q2Xq`9V~?nEg4d@(Hcc650WKd5f?QZ{ITMt!(P4T6f_l?V~-10?u_5< zlg;M(;nTQT)_0!TOkd|cb>Z==-Rt1B?TrVE^gN}l*1xp9cwT#L+e^_Ewq141b)5UJ z`}(7u7s8ZLs8CdQUXh-VnJwMQt)0k%?z-mSuK(es5ln6ov+JH?5c5=EY78;p^jO4L zWSFWbpn?&iUuV)IvSwH_E=uVgF|03=z|R!OL~|TDRT1|k_;LH~O2+08ha{G7zZse* z+)dlf(&yO7>A^=?OD6q)BfG%sAISyY=J0jQ>+6`;=j2~l=>-p|zruxzDME!Cm{GW- zu>(mrjOoCfG1+AFJ6uq~6GqcTbvoToj_cza#wJMK>mR#ewaez8!xl{cIQ!a!juy7} z2Tlbsr;A^tN)&3<-gRH5Z3;S;A>^<(1gfBenX@1mu02Nd25c#>_gqEd}TSN zZl}zxA z=B9cQAr*nqaW+j~g&Bzmu@Axla;hKcM<41>c{EQiPHyFq@1Dh#eVn8uv5nPb zHu93x2GP~j20`t3<8fY%H=g9AePhly>huOOC%r-X*&);1a3j2Sogo_@Nt+9Bb`Yd( ztnRm3B#%7Seg)Z(|qbv{q%`jqv6|f!{qvoz!w8n z^3(lB)g{drXBiv$@7d2~A{mWxhT@H}YqL{c< z9T*t{!&Zkv{=&YBdRL^MtrZ_B7--e|l!FgP<_6pQRN?d#^Gi3JTix1T&6uvH}SnM|7hP! zU!aSa4{tk@-~?ezRQ%-KKEBnjjaqG8;Yawm=`jy`1Q?cTMk2xk0)?&;z$JilZ?dMg zTyrC&E`>E9oaKa;y(YBG{y%w11tPSgM^Yn8!U#lk7WaY11u_?slfjXwhto;fV$WCf zAN6CkF$^7sNS4Ng(_Ti`*Al_6(s31@DjDb<6rJtWcCM#lG0Di4pqb2QpWz^+IaV8@ z#1lKW&Qn+nLY7`)x!iom4PkH_q33hiMSMC-5}#jtGLO`6RLI2K@hB|N#lFx0T}3BVUe)d)wb_fYyw;HUr) zbV3ke`J2>nu@YVf+y$QU2O2mA4JN7UDGO2fkyJR}Y7Baxd4W8kW-~g!zE3)X2Dh|y ze>6oxr?gA}u3X0hWpm1PLl*}(Q;bb%2oE9W&q2vL7Y5pRp)dXy6MrX&hVi? zM6BwBqCiLTegqNI4b^>M@xZFiro_}uKGZ%Y&We?tcz(cyi*D!k+u`N)vzXHHqG-p= z^&`WXK647b^arQT!{+TT@W*EcRcCwq;c9FpDFx=NS}|Hl8tXnWycy?FQ#ww~;>5!c zi+PPKGC75QQ27~}#>EmBVsRxB_!+vxoX4o9ExtKg7>p%|k01SAJVbZO)E%AixjRK) znhpPy?+u{uso6u_YCgqv4=xM9T%5slR)7LIDFzk3uQ03-23K060d{3p1dfIoXcGxB zfY~*FQyDm^n&08bq&I7@DX$@jQu!olz;1wmlM_z`p-xEJjO|JUOyLd+!+q7_WcY|D z`WBk=P1MEDP~@OFm@)x*7&Cn>fdG92&B0O`##nWfdM39qk=*DUT_^w2q-Kzb$Shwn zo^U8Qb3i%Nw}F}v-VUYbLj7=Fe=1cs@O)R`tlICwwpEMeC1JyKP#u|@pmtM{*WP2C z^hQ6hOr}Ra&~_*Dk4oS56D~F-_Y4&MH_-*0)8`dOW4GcTqea9d;!%8!TGZ|S_#Ujf zlba`wWZ!CgVd;ylvo(#LDgiHoCSuZ|KLlRt4?(|qc&9j09t=;=YpLlfww|5~XV;su zU)=Coc%mR+91#CH9+HYKtG^UgD%J)ifE5_udbm@!S-;Y?hXZgplft$6`C~HqVw+bpVDF%i4)zl>pGJ6U(R*NMXwX!oS0w37FU+J(_{GqwEsH z(!*^dA24SirC;g+xe7vK&B=x=X`oPn$04JHBbH@b2q{bg5xG?gQ^HeJ7l z1z(UIZ!X8sN{w);XfquVQZzD+dg8tyX1=q|zL*^Z@aXS|4f@WM@|DZa?OZ}bZVN*b zvAl&&=m*t8bjO>p@9WEot9~ zz;A^^AWxj!gRSjEiVm<;5b>o%Kt^&PTE!Bc9BhevOAHyLrCwn=&@4q*?XMMFvEUDP zw;GRSrqxc;+KGv3JHsU$iV{`7Xvzp zD6MlAoW`G76G+YX)7l~fczgx5flnLdg7peEQRg{W6j$3l3h?BrYL)d@7GQ0haDidd z^Gz^er}Psw8nlWajAo5UjIo{bCebep1k^IF4xy=y{3JlIfdiEWEFg@2yB54Mtv(u+ z#E@6ErE00oMd2{;=qL=q)Ssfwz45J9Q1TSm7{g8U$PAzU+~J0)y>D!ePB3ov*PhOP_P=)Px6Czbs!zU!JHRr#MccT_0G_ z0~c`A3D#zR^e68^3yswi!|CR%`q7BBk|Gr2h;an%#;P7QC)W$ne={3^U<(KQ`x{Yx zx<(;{tUk!TGH~;LkG_Zpz8j_9S+OSI!C=YM%S>>CS2xPj>u*pu1o@l7NoxlXLDv=E z(b{-htRGmC*&%2kfUQZ5p++hLJyqZ3CSiv3451)uav@*U9F|+n!0v85A(aC;Ln?f|TPCHa@Om%z^JZBqHeWU0=MHR@E2t8&*28L27snO6IBg9s zJX8{5asW{;;5K&4jxY%?QeCP3JnE8)0tzx=1h=sjpzqw<0t68W&;xNnfOtZH-p}#M z5kTrf0+c|!&yf>Gf`)*&3>O77kAaJCqm>E%N(h6&Y?Fa8+wU&XS2*57iMIM9l;VQW zQM+2uiQpTLV9MmZLdm0Sm9z`Ek-KpFd+iflz45a84W>ZU$7^f>^g3&+9Dilr04 z4b?_Bc|kSgm@WWd?3=<}2#j%Q9t{940st(Gj29s--1jXY;~^P9+Y)0J<0Z3YNM%X0 z-|Mt{!$-VOVzNqxYiZtfw!vJjlJ?>-r+PW9P5I%*FCznc3amKn!<{%B+b33^}-TEu@E!-pogrtRg z%N9;$CctSpGtj#s&YT_n1ZBInkFJstuKb%ei3$s;IU8z3=|R}sJmbUH;~7Px^gdL3 z{QbQpKEzqO4P2?)0+_QhwLXzb^+OaML4`<}T9B^vODEZF60EmHAi26t90kTqX*l(~ zVlx-8>{lW!T(!^;Blq-kG|7+tDJJ>G=JvNBXiRsKv;+7=UhR{L!V?S<787v3&~X!# zHCe8~K3jt;*6|)kL7V=WQc$892I*+*g9{Z&IzKTA+Vn#x=-B)J|Dm9Va(dcfb!XBY zLm>DUXBZ^N!op->zD$PpKaTsuxO)OW;$9~^vt~~|?v5im;T99~i8vArLX8YAO)kUN z^y>c65w^&yDA3F0JA!%RG+^|TQjhj~n~k84lYD%8$rNClkl8GaenKGpp&)erz96X8 z)Jy*Yu)|4nFS?hNWE0yyN4}SK-cU7$cZT-^RaVyl*fTdiHu-d^dqRsrn9*jiB}#pZ z1+bL-GsxP&T`YfR?;w$;WpEo3*jNF)O9ZDz;4SgxjCI_83GWl&4~{A?#%`FbzfY*L zKH$cgqc?)jCpod@iuy0}at}HhT0LBo!BNZ=Ax1fzlJnN^zQ*!N64$z_)r7tfGlRpo$heJGq;wQGV-pKD<9&S z+skBYvA?Q$y5_5>?bq)mi-*1p_=wqja~{^>NH0R5@TdNW+u5Tt`h{!#^YZ%JYMSag zQKqYYA8q_hxvx|W*j&7+#HmqO;ogVuDgApd*@_Mr>OAl8x3-(^va(oncvC+X-$;FQNh2O8 z!_;5iThqciW2XMMvZ=p=hj9hM-?pdM(khSE&fiW!&F0TL+0JJ{nUkT9!OAQ;*3J)A zM?ER*{C?Q^stSOW?EI}bvNKZ%JD&*PSX~bZteWH zE!+7nvSRpjI^d>WHuEp+%V@NH)>7@@M>g}Lxsdjn`FuRA{B7CIFoFbxF+!-rsXo*S zGao?G^Uq-Af2LDTnbUtaQf>mfi|v7Nnnz}<5kWrQ8_w46B7a*a<1UK#>N!rXSPd08tTSjy`0(|1Wi#o)*2e_Z z!3VZ5qaj^OLuBf8z*$`I=s*yd+Mc=Beava46Zl&~%3RbY^T+p^N6qYi5-diF;vZBc z1qPW;F{KLBdHqNnuy{t7$?n;?(3_l`m?)}FiFt(Uftk#o`WCX8J4{AhkVu>Ad@q9* z&SKpcs?75-K_F@;Do?>M^)~SoOq#R$zJ*xsaKd|R%jcdGyk0$@8C5<1nt99?z=PlN z=X|rUHW#H=%JW%eg^)pB%ACoA`qml@1W zECDZ2=GE#CoIHDXx9YqyW&*2Qrjt*U-dII~uGU|&YGz;n_PYOSh1B9{yBD7>ZdxSU zbobtU2bU-*6k<-*oW(JyBPeJqx@tZ4lr zN(Y|~IP)N7IB$cI_<<{3aXUlN;4N1+TmHA9d0zqy&pWn>1PlxTS2pismp{XUzarFE zG_i>k0|<_T?~$*-w=n+QR#?3SQ$Eh(8J4dQNt(lO1wfnz&H9~q@JCgWrsXTlNDkq8 zM%L<+Rzr@OqpHIcQBC(iL60R$;D;vGG4W65ci;{6fi3j{gFGLeKvXAH8<$(#NQ&FV z9e-%~=O1(C7#flH+ffJOt=)1#&iO>L52CB67WCKxT+&LL_RqjhfYaDUN=Cjld{`&~ zn~QVYw1YF^SW-w;O^IV^$-N&ePU1i5wL^{h{URC5^L8noi$r zXF5jfq``W|0I-J9Gswl1WzLw*GoIz1cTg|DgH$HCMmnYzPSoG1Q^$22_2Eh4pFea!xmEwJh64|lyfIO~T}#3B^MtOG!VeKXG4dxC zN=eF$RwjBR9qikkv@3|!1Lj(N-{IL+GMbfvH-216rq?R3FEaIIm(q04u{RHRXcXaK)YxN*C9Wkf|ct+0$AOMeatm|Ij z_bfo8&6I<-qjr3a!O)aGh-?=Kn1W-`bVTiY&?V1!b{_XyRlv)9V|YTkzQ2!p=Dc~Aj2kTb3YA3Syk=+}3W zTzmXWtjyDd1+w;eR#oa)uFwOeR2VC?`|6lx+u?L*Nhw?&#J(ffGfo*q@Ji`q>y_;0 z%%fY`w-9&<1F@@uit$pl0Pb?%MHq) zk`2&YK%+9FyOa)&rrrisalM;{n%|F_!rmx-EHj(!54N{^p@=!gVE{#ss{X(P=O z`x*Z`K9hC1<8R&5-g9Im|dqvGo3 zQ&yaS#AuLSK@V&hO#7-jL(uibOk?oa;3f7mdXTDNS!}UHoJm;l&nW{$NmFe)u8%M0tMOhe_bzBwfS3nrz;@;6a#u)W2x|zYCx|0N z@ZIG$ZVq1X-`Pka-)?H>&~iJ-lH5*@=bo{hkU(U(TsJC6fGi=kWwCe5t`#r!3$KpG z=;m3}{VLSgetFliIO>nE*<$hLVQ+u)`Hy}64Zm__zXu-oU(tNz15bXxxUzZkH~;u{ z#NMj^<1RQCyo@nCU^h(FX?hL*vgY2=?-6G^>x$;#J6K5fq_r| zH^$^zW;cFhjU61R7{;F;w$M%|S{Lq(q1x>JIILKmj^d$jE$dHCyV`F2fg3-?17eK_ z_QwO1f*XI}jkcg%8nvMQ$0y8R@Dso811ga`a3EShXBuze;8+W9iw9;_KJeAwL1yMp zygnYFWZZZQy9IIu46c+O>t<3Y5)5yT77ziUggp4S1}8noJTN;t>H>|udcV*iZ3X`w z@v4UVSpQz@1G)lu;Ldme+kE_iL%L=%juQfq0OQa-FxJ9d(Sq@VF&GZNi59rzC;lKF zU<&X+Lh#-64mbzZ_}wuw38q8X6n!n>5F7C>IV^%K6w)LeXN$;SRGl} zgTpxq;DkL;wGZI=ODlp-=ISZ57C>efE?m6+%sl;WW74;(S4B)Z2dPIF>c60TlX^=a z(NzHmr5F-AUB90_(-@H0Gwst^^}kyK4o4D|esH*Dk%`xCu5y|X@$WhswLxdtN$(`R70leM5ml`DVm55Zw zA#HEa5`gdM7p|$>!hulTMu-UTHgFHz^*OMfPUe7@lQp+=v74O;A78Fk08Lff{TGvK zIH@kiEVKLsEF|BeQcj-ecyFPjl*`c}eG6}-(-oro-fF%8!*Zt3ndZm`k;?nl@pSzZ z>KAm){gHnSQi~EY1$V4NfFq~=dL5gH(Hz8#`0)hot-kwIs}!;6MJH)0qwj%(SU0mM z?>dNGK9`C+(jW~8Q9OYUPZrOC^Ek-GtQ1sTOFd~~ z8t$5AF6(gm-^Vt9(Px}F?f3enkJmq-#E%3^ei_0LN6&XHVRjCL+@6ODOSiZ3GKX!v z@+?RSj}<<;*7^*3UvJ=$ch7U@m=r#) z)O$}s8EwA!K`hGCnx*?0v!_nOZ!*FRSY3%fd~8oRv=(-zPmvyTpk-2|)=j~rrX&P% ziQGgqs!y(Q*Nk)0IZH1w{UJDFE^HzSWCSyCMM|TF1}98aoPt!i{Tuk1mans$=oB~@ zyPnw^8A@nJ`ch+;2O=k0_l$`Ngn1o-mj9Hqh3_p6&h2dFK!B5=9_{UN&$FrKb_|1= zWe_0Q@lLSuBQaWB&N_IBV?{aoDf!hF-hBeLj8_(yAK3;p`MFj0roPkdm<@sv!a`MM zR0MRYdEht9s=O2+B;K{>3TS_7Q^nZ@fE4T6>MzU34s>Gr&WHya8977Zd7L5iE10Os z{j~WM`ay#$uYST6CGeZ6=1I0QRnYTczwrdjVoS_|zcrkR7fOhZj3AP?C5W0mAJtQ_ zgZE%5um)*}&H-4_yqd?zN`w1Y<}+5D#Q-91I*s zde1WczTQblK>yIV-&~Y_xJ(~zk(j(9*gV4+1^$4*6+i2bojiNw$FjJ7Tx08`|595k z8u+I*wE~2HwwBgkbR2?zOiSyjPO3ODp7|6rc~~j=>evxDPWxBSmwl+d{s8shg2RLd zhB-YTX+09F(NV8xCbfH3UA?)u|1QT#0IC)< zn^%c`uuOJm{UmPns3)NB;2B!~(4l5U>#JUvTmRvW>%W9q70sc2@KwNo1tvo~LSnJ@ z9EF!T&eWHyJsU1qs%|L!nE^c(4dZ}53kK2>_-ASN*%0uo?Y7xS{c85zmTZe9kOv9U z^)!v>2zkobEA{J6GJB^>EYKt#3*QZ9M8`!`!;C7^3}R>uuzU?6*Q^p|(wZAC@P^`y z*r=to@KuED?DG&=U^LJ}jt}SR-$%;({3CMLD9tsJ}sxYMdQc^o@T$7sBKBrmBB#aYxAw6pRZwXan?c`Ls3| z!RPaeOXJbvjTl`2D|fL8uJ;fLHNB+&DWT)i#&obF2=i?m_C|k}JDhq-zD>{cN*Bgw zOaRRqYNSw4Kdcp#KO!+*J+If?22Ablm58ns3&-%F6P?|t)=s2|lnn?pgG}~eMprqn z_!$n=5&3U9uvr4>-hH-GIGe-jR9GBUk2NY_!+zZ-REHn3W;bbejLLIa-@>K4vBxRf z?Wyrqj5MTC^dE$SvTRP<$lFqXj8M^hJMy9Xoagxz^PcYtD;qx$)wS8V z&^)j(Lj@sbhI?|$Xw|g|`YFV}23mp+ChFHj@O!kGv21?3<|BgrVOB8H1%8o z5m;O&pud6eb1a2LeVR=@A-VF4=Ix?|y$grE#;gOv8U8U^hCotDGO}b`={so#21JKS z#XTNKdz|qblM^ezNhxjcW26zIHLKr4T(Rs(wJ#y2d4E;^2g?}b-ftn;z`T3)nY_)V zGD5SDleCkTsO6>i>QBr6(CVXW*?TdTs6A0oxnM$rDy`E^{v4Gs*gOVjYQwj&E!(}} zi{@98{;d6(YO$FhWTI`dVwZ2n^&!TJHtNLU&+kT)H!cS4{B);RzyIW9%t^a`1dHh` z<(t2Qsb;BF@(6gN0V23uHq^g$t@D5W^R=$&QD`sI+_=(?;eK2S*lgS4o zTBuoUSf1v=yOf@UJJ%ZW7i^Uq#_m}rmVUs40M&vCCJa&t0iNpOVZ9donx>BvQb9_G zl@$A(w&G8PVd8JUTQwhu+LGEyd^?n)qPhK}s5l2<;JETb!-$REL9`2T4;Cz(iF!ro zMPRCZ)2{m>6VdmQ%GJ#t2Z@vqI&b4c@c`Nsy@T!mt)d4Q@@hz!Z`sqmTpoHE`ZBic zrM>n=-QJ^y_=FhhG~a#tR9#QEKYi8}S984W$#ebr#5?)O z0h!-wK5t*Uxv$GF@VUeyet6sYQ6dX3V(8j-bM{ff;c~l?WsK&l6u`j6&pjsG+6so01i|oij*pTRO12gM-SV2oGyfo*8Ez;QN&SWq^0^tJ})@*?s6vTB*VP-FtYt4IEg>L`3; zw62a$ZK^IrQBU{;{_(+IMuuLuetRo53Q_>Thhbt!~b*p?GIt&I2k3*T~4_4IZ!bUG(VYC-y z*{HF7h9h(zWlb|LW#o1lrfPGs4Qk}p7KMb!sgz{5&$v|t^wf~Q-#qZuLouj$hXju3 z9xuf1zRWQUD&Bz>z}g1zlTe@uUm-uTZX5FDqJ)eKIbZ}|&wcQFWx@%0)X09~0 z4wBB-Dw+(8LnWbV&@)z5)-Ctu5@HmGDisGBtpze5{M8+QQKv+4Htjj#w)%?}2?>2n zL8ySkJbLp0F>k3xy0@2I;pv_gG7DeYf`Z9~wXo{a-{%bBXYg2e0I~-di{9^AyL@9h zFEk=IB#tjk{fe`LQLHxb!-KTkcH;e5pb)b$F>|$jxGnXvHZ3X{1KTm< zp67$10qSkBThiDs#$owaLK`uq`U}qy`h++>fZw2@!m;fY&28y~`)ljJT(3JF9ns7& zR&sqirwe*67Z#QIPwyQOu8X~UbzRG(B)M7nOe%N_(qcP;Zmcx{$w_9Zd zo)BvRsK@0*KbymMz9LuK*zf4iIEM@P*e>=#C#{|;PjQdI1TUh;&MZ+erBegfkzqQ3 z8a0j!U^`Dh{Wks>Gjc`aAB4-m_qhcJXj|XDQ}LzS%{H4yn3El7gYM{g6Xt6Dxy3Iw zHG@p4TZDk*gAj~>byDehV-(8n$l2`5;fMV^fGAQo(mrk})cLjGK!!D`S>>7jlv9JLk9vY&{OZ)=eL9ERQ4)P4Qn1@!a_jLOhu=@A(HK9!6bBFh(*h zF^T0o^h=*Re(3*x#B=vQB=G>{@x;THus@u5*a2)Z7eC3kMQZ5PbuILrp$|VCRdQcx>T#`3_ z_HVM;YT>w%4{US6dJ+vmJs~0hB_al+{ymMy@T+*M{?bINN-$b1U}6g(-*Ws|QLBRK z`Vwq=wi~6LDU(rR*CDcsRIKBiL>}Ge<}`eCX4t!2|7^F@A$F~z*=9JHmxSx#yy8_X zPLlub;Bd#yW^nMuw8~|&c^8z4e}r}o6eS@u*}TeATpW|CZujv{{e2T`{0WtNeG3`} z0(GMPAirFp)kz;t+r(uLz6x=?qwp{X#TVWXE4Rj8Kv zDTnn*iQfi2@M|j?D~C|&(O1K@#Vp2Hr=4W5v8XM6!A*dxPldz8OFnuUlvNpf8_qaH zNJ==&;geZc{mz>0*=ayqQ1vgCj1|}xC}5Znn~N*QL1i*wBKzm!4C;;q+yx1^%h7MR z`4aSQ4wq^~Q15pz2jOF~ND%EtkJdr=*P{v4X?{VAW*og|Ex^ix$g~w!Ty#lEn@`zM zVRgV;BJt-=j;iYiJkq~WfAoTl`h$rZVec@?u(?z$yK3!~u7#>OBh_=mez}xiOar>u zJRAlr_R9(b7CR??o36KmbK)I+4r@|z3`e_ut9pIJ>tMvy3q ze5ThbY%yj_RlBe@LbFx%=Gx;UpGE2HLvC$_)o}I_Q_NhJ%2S(*4F-Rm-VaeS+=;5l z^G7&cldF?%>3NHU?Vb$L1ndki{EwTp`KSPNrzdEu(0^ z3t!bDLQX+!&01~FjzqixfDji^^tzwUp%sL-1R;-g32Hbt8JT#KqSw5DYuQ6T6}={w zQO-KyB&ZUH^A1mO zy{LvAkZu#Yu#GevP~0aih7AncU|^F#$zK!q_!Rts>$>KQ@pJ<)#*l^AvGm-D9{bGt zsc{top{b{%lDWfsX-1cz%`+Q@lbEs+QBqjI5eW5#bJSMCON=yUy!iBXiKzqKup3S4 zBX8yx4eiNd&{lE-8{J86JDCr?W^JGiu;T6nm2Y@x!cCE>p%(gcu^Xu$zZ%=&pa z(`ZQ(jE8l(YnyOIA|+~ui)&P1MEOzSml;CV0s*O$c7gNnebj1VRCCg@ZSZp=5s*X6 z5fI(__*L+*7^(-)^xroVsjz~&ecR9hLb-lj4&;YlXsx5toT-}PoI11|w@?7d5Bprk z)4&>XZ0bXJPa}TRZO#aPWGIpL3hzRX49V={W+uUOwZ_@2@{DkQC>wD-y%~@2Wcpx& zHm2R!hc9nGd^sOREgP7Ve9V{i>WTOKVJa~{n~a+xc*O<3D!@ z)<^nJ>(J1?k`z!SFffKwksZyCp;BU$U7$H(o%%%RMdB-R(n)SgCbco14 zkcyptn(s0LxS%Ro5I<%OYV9lPZz=VW!Dandvb~MYdP>Zv+=;enzrB^FQal6&a~$a4 zYsX_mm+0tIpkn+}Z`00s_D{vUg;bGw`_rQNn0WO=dKA#^sFh6T@|>P%e+VclKsH~t zI)LaU_LQ+$SKq6BiL<2sSOj(uTkwE;x@=%Jfpl+hrqR%_+7ElJcJ?bvoayL}Vev9r zV!jM(84VI*owQtXHlXpKN9luX-&oHIx5z*7vT?gDRkr&~Z*R0n7i{KE6o%3S*?s)< zZ~pnl`1!{4(?F>Y-`4)5fEPb+_a_30#;yn2BsRRkR@M1e6vg5G65mj^c$ahj?kejq z)C9U9i~Q>IVerw01sMQQVh#+{?)*_Lc3upZ;wo~NKmV3z_%=d7(^duA&^@=2yZoWF zYoa*Tm4yk!fR-|#cSXH^fVozPUM?ut`sd~KU6De;sf)l;w{~Y?D1YqaF8P(Tl+3^N zZZ=m;UrMn1H4ynGI_%#-XB1T9YxhRaN5$3dWAj@c3!^#JS8K=SQX#sOp&lF7cTqJ2 zXXz{psbYV!?dU|IK5V@rrQLKq=y;@}2lKFBE`Ix?pZwVVJ)ird?-VzymU`(MUwG}e zfBS()-}9K4YA&UTN;Kw+kNwuSKlAwK?t9!jOcO5s-ADiYrqAB_$a}u+C7ErAnqpY& zmpFIwgmjAec6v*apbf4+BFf6C)2ZKhniv}W;H)1ih}8mMpFHvAG{d<=+@4D`$vIJE zZ%2*9^xR+f0SqyAeH#&ezE9@pu%pC1=qsMtWwmJTVl>xpJXLlT{IS^YMXL2lPFw*m z^}AT8hD7lOb4r3zq~;q!%juWtytEQ+zdU-4^zYQKMS^-~H?>JJ{ib#jJ=m7@V^T*@ zU{XikjO~F@wGUY9KccUjNqtPGG$!GQ;pm)48cE=Z#e3Su?rj_U?LL<=G}1R%o7jFM zI3f3vaV1!J5WXxMsy_j0;JL7(U+tD);R*9{y{R8tw}zU}FA;+ih_IIQ7dW{;j`&y2=yvSwidfP5qRk}9`{XJadkBK7r|@J&1@F=r>2bL`kI zfsRc=g4y#k8NQ%N7-f4wZvY0}RSmsG7fh&##0p^Z<9o^kTIfRjX7*`Dh0Ec4>wMyz zD6edqWW3!%2&^gmifMw{OyZu=*VObQk#rTvq!X<;jV^$cN7l>|yrX53r~H)8uH<~F zzxA9%e~voWw|ZR&Vx+drV#Xtbl7pPlK%9x7g0ChU^}8-<(WQ}BXhPHMA|`3)Dqrjn zC0{b2!ok!s?umbv2(oCXSMOdEWHQ+tiZqHlRMSBIzO1g@o{zVARGCSS-Re)=TYKX& zuBUw5%~7=nht;y<4#|nPX|ld~3fe&CUdFyqpux3j-?adCMWX>Zg4Yf zU{mL4wK(}=gIqL;$3S9Wi7Co4E9XFt?ip|01D9!ms`rM$bV-=P{m57WnoAl@+>}L4n!=t3V3i|3i0>P&I;^8Y~T4uQ!~o|7z9X zBwgU$;avZu{lofdsPUu|)QDTd$l#rx33vGb4^M1ZLhUP~K*N*!Yi=H{wp85eXDk)B zx|Kn|yV~tU=KHHtc{T#Ab5}RlV#QH}A&gCyP9~$1ly{1;(6!Z;i(7ruV0BDHtesp0 z=j8s$$JTsv9~2hI)w|DvFtgBi#u3-W5S@T?q4rH{%cdj>(G&gZ_UpUoysun!)2{mI zlQpR=;yS@1D)17qNNT>p2}(b?z%rq<51Obr^xd`?!-9J_hMT&5Ws zU4tGOkh#wc(>#{rIpMWnBT=Wnzzi8Kh#BD4N|IRO9Uie8eQ5*F_5_J8{f^9+Ea%Sl z3Nip;Of_@MnrI%59W;>Me;Gqb!pHbV{I35HCCaBZxV;NkZBu=lA6X08#OP7S({&s zV@en~EnkWwmy-1n`F^~RvI}zg0osb+0f(Hh&hN%Cxi(klOL63q6VqV1c*vV)|`8S$<2-@!}818c-1S-U+vyz$6+>1m#c8{&k0al464s zGJ2=Xx?qHu?&-J2)_@ z4$9L~mXaXo)L(~l$N@->z^6j!zXMHb*Ca{PGBU+aysJ@jf|uhRG?l0gr}oMF%m$U0 zopA5^FDdvaUvn~W!v3g{5{VS$5jqxqpp!dwv2g@9FedXk0uYsZ^HZ&o$AKDb@q)e* z>#vo4#183~5C#nLUbBsbafQCA`4U(k%lero3x@tidJGo074X^ zUYY$!PhtZnen-!!H{p-~i+Q(R!vhd7(%S%%k15o^WFLVIZ((l$*EKV{@k(QUTF%Hi zw-Lr@ZmgnCGtB?`G-HGDt5wr0uI^IPtC)QChfUAbUvdy%Mz({gQqlgn3>=_EZ#=hy zzs0k@LA6SkEx=d0Ve8*IBYbqGJ4JD%lw7M;eal>Y1i8tQB-K;6(74g~A_Yo$yCwbV^NY~aQ)e-Q*mkUf*clzZ%ckT-iT6AC4uabheny@XA|b(z%Gj( zHXzD4^an^UgH{pyUIS6{i|XW^KtX@r!9dwEqKz0en%y-q`AQCCa$ZjR5Ea_wCx&ve zu39-H?P@oIn_n{{lnKO4W)~|auz#QxNG1t#$^)J$zfNhL*Z_H^F;-n^ZGcO-5G#$feDWP&yHXHXMAIvC(foWM0T7EOlp*K_4rtJG53|Vc!-HsVJ$6%&;D6K3VYo|)fPN#Jmvf{9Lm?vbx)A()@ z+Tsj<_FAq@H>==SR(B=5t-HdSxA6&v36iLrH$F)&85#H>2Z#mZSV*H|xxixEv*?#- z*Cv`=hWN(=i``=c%XWT3U`+v5@4pl*v{1paoo53p;pf#yVj%O#gP#EdI1QhN9aOVV z|GgH$%k0v>=HzI7*lD%DPP-|{$+#`M6O&WD>6zKN`Gr;W>XS}JNWmhD=Eiq_*y3WG zONGEPcXGb7e;0Sc{A}+)(ecim$K6?-@8m*UW37>@67Rh0J+y|jT>cKO(YW)6-a#Q) zzC-=9xRdLejoqQ}S=`Cxy2kFX3_tGVVrgS{kVJ9k$lFMaT=AW;8fSPin~(h!4=C7B zEbfmIU(`5@SKn)gS0D+Q5qEOgv$4;$Rn2m}v#~pq`JE5gS_t?Su{ax}wOod6>>Xpa z4pT0HHg-oo7I$oIMYmL(ymRQdJFqAiPUI9eUvS{SO_IfrI>1SyRadkBy4iPj}3z zpgu=>viIM2)}|*n@ML|2fdzyVW|X_&z%zd9u- zq(Wj-h2ut;-_53NLRP52?s8H8!Q1rY#Z1k-L_k#;wp0>e+!^#y^7guBwky?|ETK@DdB7!Mhx&B$o164GN$SKEQP#p*cuw#eHxy z=@?p_NLW!I+z`Q9$@#;9Dr5|oeK%sMtjyh&>-LZ*o-G#9Oj8^nJA&sb$DE;=Sg)IH zc+(|x`vw(ab5X2wG*!FQjTN~Vs!#4GNcWc~YbdNi#ojP^mQwB=}UDj3))pZ ztQCz%3Gg<6<5{Yn?>~)XksBfJSOA7<7Ex=^A||G=sKJa*0Y+>ZmV|+#6+;Xj@fpeL zc<5e)^moyJthMJ0yAOc6&#W7=%d`q4Zio!5>9UHpNqm3dHS^l70bp)*D%O=UL461BQ2q&Fi;9x}Mp)qo&rQE@ z-GF|BKtcex-sJn|ki>On8jB~1&lLUgXGO+(3S*WaNKAGl!^xf-SkJ##3+qGR*-J6Rlzv;W@@E&7Hns^ABEdRF_F2_ zUr1-L7&esh8r=eZhE_J>=mi~UPvNTgR;TRUz(dKcRe(RAa)nDe2Hxu@*W#o=$$&ID zkUf%aA|}$wIr+HNBTuU+@Zb5vZY*8qHQpsq04+gikZtG@PnXY+93Z_qxLTr(JkmTh zVFPjhcxXoLPq7#;zu7tt;p@?o2t5Xx9zoT7SMxPsPar zUpLe$%*IrBo5XGVdt_$mFF}_WfmrcgJOtfHjw>30T*n(>On4VX?U-+o&N2R2{+6Zb z^lsCw^o0xf0%Nk`*+@-X{-!R8NRWDhrN9x9MBrfLQ%EmTa3k=A8;<%K7|BCzbzDSO zUQxephAW0FTl1Yj-KL6^tzAaRSYOCM98T#%)H+jQPa@&?^C&@=2iqHW&_Es-=j)`B zeu)Occ~33;mvcJd6hk8lq?r-HW5^9k@WobPJ=7#z@wh8R74SW`dd!p%1lyx=1Q7D6 zT$N=v8Yq%#zN#4+a zu>ch)l21s#M}y<@xMM+MHr7I_@0DCV5 z8^K+;jl!6?yJHPll=G~YJ;4-e&#BM)7`(=6tIBGu1DMcbZ3^7dr(J+^53M+04!#!9 zeIEI~Yq<=U9BS*p^30(sl^2M*vfMj5S|_Z!9`#=1-5{eNqVa;SfS}%Cqn4#jaG*!T zMSePwptgJ+${?2*uZtBdVbX2ASHQr*+17gn;2k`P1Og8od~CsRVh-^>+|9)PPIFMI zS%uc}cc@L_znskeOX)os_6TjIq*!Wa2!1zb;iVkV2`&+RFeI~M(;{sYQT%}_q8Fya z1sr7CW{0zkI#Hp7T;EbwbbV9js>KPy(9OXLrx=W$0Q14h0JCa>pN0>R)iA-;m^n~v za(Dv9Oibq;qHCn6{f7%%BZ1zgvwqZ~Jg2O%YWn0uF};z{WPu%H%LpF^IfjLC!5@>+2} z@%Sk+8i*h|w5XA6oH@D!f*wC*Rt%vsFLM&Rfjc8F{|Qj)@112c+|jQdlD%E15mJIT z@Xsf-__e*0#xEZ4RC6g*WmV~jUnGVbBhKiCK9@EY*P^ppR4`nWFzpC`iOZM5v8#qE z%%Q^dHEgQp2nwx12&zJnAU-7C334Z(bTh<{rbGewuSN@PYqV6&VZ@73dIwq7?LYKe z9QcQ;;lh4%rWQuqmlk-yMn=rzpNh(&=*QWrdFt2;dp@0?K<24nWg4lPeMB@PEi#da zDRbH~RxxUp0BE*9SN|Q7(mAuRSeY&nkk(J*pPEb$wIb1;T>-&Pa7gK!EkJ-pQK2G4>;eW-t#PbGRBe{%gA(4_3_uZY)LU4Q=Fj`l2I1@OZX%l1Wz(E zU27*X1kT++l0T`K$5V6|(HOZEN=BUhkV6O?=m2g=gsZ$}z|xg=MEU4sbA#PQ1<#y};bQZVvT0{X)Cc#Ur!}ua#Fym4a znvZr=;}R*c7z59(?(j(WAIQJ&&%f{UxQ|I2V;ql=`AIHdydCS7pzOq0 z_i=+;WCtRR(>W^abE|{CK$;p#P^ziJN^e+t{hju{?=*u@hz>TqxGkeIxsAmMl!p#7>*7!Vc_C(pt$R zqL{Y1HN@{G!wQg{nWaL=s#EXwoY*Jcw)!2aLs%jv;ZQ(kqS=RXrEZ&l!Y(|2Xa=#5 zSxa}wJTp+Zm*;X*Fag?{tY3=<(+~BM!m;NTyz!@^{m=r=wPJ|SWtb$cP(3Fsa!pI4 zeYpJs!NJZxg+Jmlm`}{(i7+0TB!)srp)D*Cj_ObB z8H;0(#X8Te?l)5*pQE3~?f;Lxw-2_gEDwCwUTg33vClc(tLX+CX=I(9o|@A$P118O zBV6PrXLTWBB$4ELQ`D4yc~}|`&fa7MG%z^ z)sZcPtiRX}pN{L$3~lty&VpAO6>9pfKe|~e6^vV)1v7{;V2Q^ogK~S=HkS${MbX!R zbg0ZR8q^0WF?)AEQ-2{M4HnzMGhp+7>usOA$Nx|K`AfOGzPtN{$OD`##HoK7nO3`p zFK!lY+5K4W>dO;a!$?A(2JR(>i3MNPuM446)l>+j+LoBdIq;?G;1=?`=NUoK=GrS> zz)cKd{TbY4vg&*e3^L2GF*SWg4h_rfqdMpS5Vut2&mlX7Gwf2wX>)PsMgqXD>-Oq|131SdNW zw_wj;61bSigNq&zT=ak_Q6>iCh)>JFhvrP>(kw5Pam-`06lcVMGoaxkdkCTC!@vA*sEq%4`Mgp3l##Kk0VQf-(lls-JYsUXy0?ic}rjk*-9t{<@Nxe-I_p)Y#Ey5`b{Q8&@!sU zI)A@PrYfZ^m>AFg;c!SCa{CPil4qlHmS#Lq_yJBnm~S89At|uh?|J2%lD&V-mE(l2@`}u} z&npwxZy)%=d#|jXTnt&z!%4#Ojd9z*Eaxxh5HpGnNox+ce*Y--Vo31LCE0VVnC-iH zT>r@_6B+6@A7~lMMP}OjyCQ#Gby+F3CTGzR0`n8S&y~x=`Yqd-?zn+-VDrwQbiLvQ zum?}!Jx%R0%u^lhNR}3hqQXZflAF>Pm74RD7cH={)ur@Em7@)OLJaI^BcF5y6nr7o zD|BUJ{Bo>OoJazLYqka2aqp8Q9N`tIud2Vbwb3Dq+ITT*?L7S6R?z-Th7>Lz6Tz6n zL)nK^(zPlRx76LpCa#DiV^glm<;^-AG|Y-udR|nVplXeY?U&$C(6wq!z+atauO%BY zw1Cm-k9zffwZGlvX#f;-*h~H*Y4E^PM|fJz<&La zAu|DvJipbSplu)q@csO2lr%-2U<1t+Bi3Q?RdiU+I>K(8OZuvO&I2&~_(7mCOcd!s zt9xasTF8ydMU2gWoxwxM1cRTGFEZ~DJRQ#0gM+o}F2s2vlcn8YtLYjlsdckuN|Wf-zo4T1xspCO9m; z4})w`1q5PZ-RaB`d9cgwNoXM%*wEg)GSSbuog;rI11u(H+7$kCSc6bk?Or9S`c~FD zA0UU2t*6}p_6LhCv>U>DDawHnu2vZUs!Z#v>5vydaUl-BbpAXkp6Nay_obER)4{3VbB^#P;E09)eZgjR}Y85M+X zM1eqE2eF}5dmU_GN?a=~gE`wOhTh;h>eb)clmOi&-gdho%;odFc~G^mF%$>tRg05< z+tAIG^1N;kkSNSHQ!v((&k8?_jMwRx6+IjxAqO#)?%>3hxg+XV$|kXZ5xQu?o$3rQ zrHErLuCfzOCihJB*QG_R24_CC_JXCFAiKqscoj9PUT4cVB?7%Gx z*u#({=DKq6DLoc)TH@h&59dLlc1YQ|1^j&~XnhOI1JI1amIPerjNk}msY{G(Db#;! zeOEvAZDkzk#%uU2361*=&96wg1U+NeCU=FZwQ@H*=rk@@=G_Ea*Y5v~53!uYm7sQ1 z8?ORIzIQ7NAet-cn@w3y3GoV8#!v3mrQoSpKbMPp0s8h zJWybXFYx6&dNk<2S{CR(9Ju5k&PwXdIVEWkMMlO*r2i(L;1v*z`goMP+CdOU)ozEv zFpSg3W>*UGPB8G!?5@PR>w(PJtNP&5Pb|9eHry@3qI1D5*~`vl4ApY+kwv9R4Ey%w zI+(wzsXK<9RXp0nZe_MMy1_08W}Q&oM&#gLW+ZmeNuUFdpkpS0iQur$!v01wE(Q_$ zO7r#K%>twzGte8QqG?saxxqKG1Gj`bO)~d74^o7!G!Cno&^v-Dsf}FyiMnEa5RJy{ zo1CD2W6a)8SO>nxNp_BKEH3@!AYCiV2!J3N&w63CY%y|SuG!oiSKo00+}sv4p~2c( zUwy~PPFw!TmD-UM>=+$~3jl?JwYN2!s6>CO3>0fopti%);mp60y^9A$)D%xp!!RDk z6mrpM6AeVCs3Dk!P!1=~UeBL}*UrMbg#zI)yihU@KTuuB9L}`&a3y9fdZm3_Do676 z0{IpPZ?fpp(V1Xa#wnSZcuDw7%hA0|#zwVk=!MAbp&JRG9YiCrQr_6tk%X92dvhC| zVK9-t%GHFXP-NI2(Cla^k>m9uBBCk-V_eCw<^av}0bF*-;PN0mYpcuJS$uHXxu+X5 z)w`^jm+8|5q}52_u%hzk|7V<3zYb2>9Hn4peU0WJ6@)D7Js5s0kazcVIMT0h!A9)3 zLsJ`a^;|32h2A66>36?HD9EY=K_Iej_ueb7+PD9}!NYs6xZ03CNjef_(4e`#i{!ZT z0ZYv=+iJ<7J?5903z%;t9?+aYb6kqTn`L0?gHJH*ErJFL80uhyQPBYh{C~b5?kG69 zvuHNCg@*iDDbiUos*dLfpd(W6IAF{zIna8uMYmD-i2VjlT|c%A0PK(3H@iR7Ta&=; z=8O;IJbRY>aq^s@_+bUG^xH>RML^-g&-7QI@2_Ir zle7;RVMBHZz*#jo29|SIwBYbj1dLoD_Tez&~_LBh5wpzh|Vg2kG@*SpR1Z0+EoN z%_VuX!W*PSc4bTFp^v=T#gLsFzqayg7ptLU?(08#5{MSFtKtm{ykIIrw8K0c&_$~$ za^MZ`f+imN0gXL7nm~1vS_4m9Fx6CGI20Z1Up$+lGm2GqWe>iwNx2g0k?<@Igy#t0 zR~%nu5`68lLtkbh9;`GDDZ6|GKk7K#^M#bqZ+aZW!j57$4vxrnXmNf?U5{Sjn67y-P0cWG)nLr|B~@odscb(>bCCHjs3F3XM4=XiIyk-+JOt9hVF@$ zUi1P6guqbt_=bTTna9uwUi%e9_Vx?>G5Vw!6((Ef)05OQB8Vv*Jq2V2AM^p<1%VW^wpm~c>^AdFJ6`eUb1E&$BK6Pw9DbM;jm z#VqU5qsSpyuAtV(`Zm@N<3UN7p88vh@|1PRw=NTCUpQUB9(l}6l-jafutRzPPv$i( z#35Qnd>JvPaJ{VKRhDtE5+T<_MVLPF^n4DsAQrAV(_oN9zD>38%A5%+d-ccUu-CzE zq~i)?SCopFk(k-F3Xc#9)rj5H4j49gSfVgbNi@Q?IX6zOjJ9EwXY3C3i$^}Mf6PiV zow-@R_wY~>IruZ>R?dPEe0tK?IjlfFZ)Z-*(z zE)UW9ryfTU1pj1P%eo!CI+8Qb-Xz>J6irgf{MiZo1|y-A`RLGnE(`t~mZUb#kqj*S zIm;#uLdd(AowNL;yjwme#9f4SzuZ}WeU$3(=pk`J{jx1#2I{plA-A?aW+1ui0n**8 z--@cu4;eAh23EjO;Wxedi~git=FMg<@`$qn=7Xn6fa9BVJ~TpKR-jPJj;U{?E>wZbM0?}QO^Nm#_6Oo1jtq`?dovG{NEr7cng+J|otlOD zZabIjuJyYn?JGChm$&;s{q6xN%|rKOpr-qO-iv9vTl=<}l@aI4}a zs%x%aM{|w+P1yy=@x-59T);o3!hZKO9(|@DD^(~KR0X)w&cU|gXXh-Q+0Yq4Z@Q-V;!+O$MR#DX+&)@(j^Tw94;flr z1lUu!^%?26|4<+aDmweP-+s%-A$NoQean&wbq3?tZ~u~-4yJj_dyD!o z=_<69&A6=2EMk+wMLO=|iQqY8M;Qkx>}`WCA2w#(N>m;-h6c5Ml;DZ{56{(83xuC6 zDlf+BKDEGWJ)RIzsvC+cn=MEtY%g_4K<>1GCR&91a8uSe3pj$kyQtsOcYG>&P+b1` z0Tb|!tqaS&Y*Vx#*v4@gwEr&EFpu*GB{A(zeR9+n4Bgr?AKiRZ8P}umvKZxJkP4d_ zf*AB8*tI8Yu}ST)sH%}g&1-QASU&d%Sx@)!IZe(Evc1ABfnL%4oR;AEHJ0G1yZ?|a z!BQgqUWlI61U#Ef!1D~TJs?nLHfcr_PJ3dRB#<)m^T7v&=D|O~1lgYiZJxT-=vy-| z7XmL4YK0xDJT)IsW{vSP*%;3cP4rkKqd$Cw>ZAUxIG{Dz&IEVz663H7V(P*ESo8|| zzCc>9Z#$8Tz}a19+x$ojSovbHB3eAx5zCJPbZ~cY8QlKcYU}@2&FwC9HE}e;;QQ`= zqAdrZElMcL;?!KUk*WuTfx`0=Pt2g{Fyp{!pnngKjo=5X`hl>Rny&>;Fap`KGp@?K zNm-U2oR3CLxGQlaTY!9{?Ln&1bC=l;Yz;Ac$Pz1H>h3o}K>p2Xks|WAoa+?o7>k}? zt$VNi{ZC2Y32F%`KsI`B9Icb?Rj}_&pW@jR-(Kq#koJ4MCBELr&o!T4p6~sf%y_bc zTTibVJ^;j$VNAp%y+I-QJl;Ted9`c&s=YPpzQ<;O^!fk`%2`n3;wWE);*O=n4)|k66Eskuuh~7(~X+ z!AJ+)q`*N_Wh|yA^6QvFKzg59EH{sHB@NR8Dp$+Z_Q-cWqfwpxa z%z+;>HN$}70Sh|^D~(w1G;v}gkICJT5J|j_ic*`n~g|D zZ#ltswmKQ|MwmdH3jZjD;*^?ZYkTNSaoj=(*yG=o`aebz4pijr>?LjSG<@90V5S&X z=gZTqt0MNs?%ApRb2R`y_Py_Z=bK;o)O#K)_Fb;MW;~E|fMDhU2pg`@MW(w2yjFBr z5{D9(4P?i8Bc(~q8MDC2NPCty!1|TJLg2wUs-(rP+WDu)@lUL%(IyekUYuM@oB=9^ zbTp#}5-M$sn#=>*MH~+HEN_lYzL|-DT{+GTIYTg6GkeLX-a~2BlDE`f*}ysA^_~~- z6ooW34w{V@j%r$HYHA^rk%O-39m73`>HiWUr@Y_5JyXfjBNz?{H*rnnTnLuS57fyM zKr~kB&NPd8B>E)QriF@0WK;_N1rosB-bvPLA>fSRQv(1aJA&_y%arYdGl!@-dhv-I%&rzS7&qCno7mHrGr*FEA6x zj<{#)Kh(s;uGpH?+ej0NAG7=)8H;$c4fZAU>H0y$S!q11!6#gTg?CsOH1(0uH1*ju zNpr&OmGqsRT&^d$?d}{u&=m%q=ee%?wzu44)rK!YgpL86jlfKqrIlZiI1jr=7uP~a z8dkUfD@C=eIt*go@R$j}ED-@MXFE;fcov-_7`nE6y7t5Ncs47<=K$hOD6`wWFa0*p zdE<{~o+Q6#O_znkm)t*8=gQdPqEB{W9vdc0UXg^Ip*&>E_1gCqPp`iKbBm^#+}L1& zCk{XK>0b^fnTQu40=^2#cFsJO8V(p{f?FRX z-ol;kY^XqXyF=F4!`T_C#vPxSVzu6vu--wt2*si&M1(*gu?My+doV?x9gGeoe35jv z0#HaEo^s;NXm*!|sX=haO?e=4zpBSa+W^H%!1masgA6Qz7+`|fvvUanB~aZ(^`F@tAX{V${voafkh23R z9Lyj>b>n03yiIPibGJZUcQ-HDx6Jl{WJE^JBK<;{r_0llK5mSF$T+mFTex7tQqeaI zS;StH6A29EmiH5DQF}Oqlp|Hj5U!9b0RauA2~Elsd>QL^!9k``ijYV91^dis@E9jG z*w#<<%D}Jq5Dmtmd!l4Y(Cj3I00_6=-Y^dPpt&8SgT^zZ4d*MHN8c9_!}gr+L4bgW zQ#c^a{}53^nf9Qq9jW(ENE+8|^tCmGfld_4c)tTJw}FbmYCl(C&;T>RTmW=t3@Dod z)n^0^w%bE`FK{8|!La}ZD(E44><)86sl=Q?+$D4MH%{q57856cg8tDv;Of@s@}u zOJh88hvZ!so7iPizfyJ<@!;a!k$oAZSN&}dNjCN|b~|zw14B~uN=mCVRY@kB0mrMDEi-a*w=5TJF3oN%Iu^SoWY)S>~U3!dz%`3rroS#_I+kFq*a^6EbJX9twomwEI&RiZ2-YouPfkyJj6QsNXYV(hgOtB4kN0!{sjO=-R& zcVsu|ZtdqzD^BOKzher8a!mQqDvpHB{F`|yS0eyHnmfk`7ETmjf`yq-2{EXx7^^^7 z8>S4NVHVI?A!{ZjSlK=SBPS{IVAti5@c=)Q!-!&jC(0gO3YY!@Kb`yS&4Ap;rcr16>E|K zfoC6s#27Oy-KbX5f25X3zaG_|l{$-k*UsWf0NctcrrP?OCr6E44}*b|mBX_HhWO>n z-O3n8IxrjA@3}-f1>t>_E{+X22maHp#$>ZqIIsc)(UzQN(Tka<#h@xY)$!rl$3ior zl*PjBx78)ug?jBio@Xf}y?F5@35~IYFZCCA3dE{*nVRZX&vXN9EwoF6R@olN^&|Tc ztk~TIR%l;z2`7fVS`z^S3kRKRwiBu8F?eerLe60~x9b5Ke+HA%?k$y#c~l>q-3Vyy zqu+~uj+hf(SC^6DRtV#{)zK$P?S6j6AHJh^DXP-;(pVnVPxotj7{92?p-Xi+Gci4nQ&%^7 z3k!c;RdX<7;WL3lV-;2v2w8di*_XWOSLUDj>f!1e&o1J>gFp4g*N+zS&BO0`?o*rb zP5Xa8^-@liD-fuEf1&;ZomS>AhKduhpuDeftree$s%OH%s}I5exek%wb(9j%=~+bT zsN_2g2!r|~>~{8#Lki25JgBJ&w%P`sdD8N1EMxWXqZxG?YUknKQn&z=s^>%Yu<1d; zwz9E>wfY5gz~Uxg!{gaTP)Nv2`StSr?!uiFp4Di+So`_LG*kdA;K-Q*&Sw+AC2U(! zR%qbcN*H(jfq58M(vDPgvqA12Hp72kf>*Em;sX^ibeE47evlL< zTWcK3s&E~afeM{m!bTOiD01wg0|dgZ6q*=ajlls}nEmqna+NWi4nbkgE;7;tM5OB( zps+3oH&Ja#qr8zjc-4tQk-}g3L%Gcln2oOcfWEvUTHxNbYljI!;##zN@>(JGs z`n83_<`(q}REP;OjAUXOAG_Ouh%^LhO+y)BF#?)K0KAb$Vvg$`l&CZCY;Iucx;Mn5 zw+vD+;26Oo&V;HXhuM91&VHO)G;QC!0aCiVw`_u96Q&}GJrfEaKV?K z?4SDbJE~QnWX)4h5+=HZbA@Sa7S1dT3N}(P;sZgYKpf!~b8}gj6bc%~cSs*8*cfi{ zZ59R<5jS9fAHQ-4A-{4EA-{4MA-`zeKtg^o`!ul0cDjhdf5RH;Pa+C`B5ogsSLk2X z-id=^Vv&D*dW745V}#*%=j@OXjCN)+0UX1`JN0y7AW2iengtAtfo@<^nYsu>R?T@b*d7G7%5;Lb#17QR@Kp+CH1&_aS^oM@Jqv=dJ0y{P-Cw~a)%g?>SC zG-b$*`P_`OQ-BWd{wzkua7oENdNK@Ljg;E(b z&Dg~MQ3>J)R!*$5+X}=9?UjbpX*FRy2!_yDNt>o}9g zF=lufR~Te~0B|MMGU-hcy4nHDqBwA6vtOiG)=VbQ>gB!jHx5-A4moOrb z2~0CCy(t#nXUaQ=oR@ot8Z620d0E0WVu6E%bMY{=ORjFr^U#q{0EA$qc)rr4=+soThRi0 zm@ES#YGy=DwM(BEfP=k8#;6ptRqemVlG>EZJYzVa)r@A_GzM*8q4nIBvi;ZL>ctOU zCyfi=!uaXi!zyfV`|x{<`n7f7@98_bGkMqENvZba^dJI$tLfLwfQWcB8^*IdPT0k& z*h)lwVAyk_`!7rrK66uq@LUNcmYKM2R zd(3a*2BHJ;`kr3>pxpRD`c&1Q;e>j0rs+^LmMtV37AZTk7}i4PQj}|HJVNLHpWHDA zm=oPkGxb#s%YhYhSdm;Hpx!|k0o_}?WmppKDFtY{#|>OnZioVVd(ja45h)dNo)Qnj zF-8*+`WIqp`ZxgXzP57-#`KkI!qMramL|o3pGS!JsdCml6QUBYSKoeOFbAP+xif29 zCc18%G^0yG=RSXv`V#tbHr3H-g?=vE+a9Z!br2eZq#~u0XxH98&!8}S&q`Q0G1i_? z_NltXn<@dtLPy8s5?rSW!xWzt=W2Z@6h@+SeixG*$`Q0yjJeA!$jo$DaR78a0Mpy^ zxPZ{kWxdX{XN~h1KCs%vK`dNdobb7wmW)FM!L*;!PJ^IfvD=u^4&HiiXvxk? zS~8FculxAAsiQKD;29Sb zvKjv!Rv+pt9u5w!)0zDjb{T&>hw(4}S8y1gICh6d0`y?-*?wwnf_6FmX!US0Zjb!c z(T?3@?}GaN-jkdf*9yE4#7XC1RnmMk&KNhYX787du10ebjA(_$CoekM{r>*p7?IEC zD>P^4x!;cEA71}p|8TO!FQ(6#^we$YOsgI%Poj_?$>-Eewl6{?#@^s0Omz#)^<6`k z@2;d-_VmMqM9kWaV2@M~JI>{$7Bgw(*z_z+cED?6p`+>0$j$BzzHv(@Ztdg&GqU3I z?tnQF>{Q_lv|>Mf<#7 zMJ8>qh8}vmEFL`i3(hR?60|G3E~HyQfWqKG_lO8pqN?1($*g4*DAbHG5h^6f?R?l= zSbvXmKSbT~Prl=AJ~z8Z94TeeMt+UxxC|OONj`#sTW$i8NnI$Yz&@VxOQVVqA*_Dw zsqMezL2)h$r?zLgY6Nq_;hz)+wjl@pHl?!_5ZOd zR3Dsm5v<5lsjYk(ALB(`g6Gi=S@KC>If_%5x`7`pE4AaBJt|KULHW>o-VEX)4%;mO zte~z_i=NUVl^odii_~J4>EP#hQ=-C6&Zcc6SOCcU@WU;nQkMh<-E#$)cGsl=JuP+x znV$OE<6+s`o|;ks=ddYx(sLXS&oX#wB+NScJxSM(M`?+DkMUmk zlW|JE&I!enibgX;oTEGfIhm)=<4-D?gU=CzgU zn{w2-!z@M=)(>j3)T?NfGKOv{KBuSP2m6-wN8u;JqKwocf~(630AWugBeCkfGhVW9 zG~}3rDxGUgb@3^}ef|E8VuWIu&rm`wW8?J>vCj(w&z1leF%=7>+qwpQAxnGMEb?mz z;7c#PW>j200+H?BGu++0^zu=U!qBP>4Rq0)p`URFVcB+oj73u)R7lUiDP!1PKyT64g3W8t+EjTVDPYfhG~ zX^SPpvO*8`b+m~bOe`Fr;L)5sI2mh>abzfo2b30Po5h=uRlGrq9AK*2-BA?G!_qY* z3d56i!{d3fqGqfdh+wS*qy7+*Axy2lPw=&PIm+h3UE&Z|zEGDgCX2k9GeV0rg|isA zAB|VeHjkTGa$tyq7|j=g3T^Qy7gshqYB9G0ehst0kBcC?PyI$HtE}7}fvs}Inqh;! zMa7f_4BQ-1;A9w*z9ML4(?4HZXo1pA?ebk+$U6`rw88U`Yp4E;E#)*KLnW;b7alve2ndC7`$p%G;!5Tba zf$4rwFJ3_{R^<$x5!y&SPs~6F1n{VtmIg3WhB{c_(}D#K#URU}48aFGFc9?t)F$>$ zvB0NwEHL>`SbCq71wM^NJ=A&vZsvf`Sjzz?o303tk08UD+GP&dWGiJ5e1_7h7|*kg z;($+^;()s>XOGVS!xUgU{7#;~1LOGvf?oYj=SF0wR8OE;*0hV!nmCslB zm>6+@Z;@igT)^?lZc&!>fXbab(R)gZ=*&ZwiNX_tia+MR99n9fLFL-wFj_J!~3!$a51LvTpRwWn;6@$mLa ziM-`R(6TT`ZNa>B(?F42fEn(-OI1!@Icp3$K^o;)-aFLQ5giK{{9sU@Md|R^@N)gw zJqd-JlgWwn3|alfCoyhJoZXXbi@>udP)JiU8bk)c#kjU_&|isCxCo&N>Gm=GVCCoj zqaO)JBIj*in&D7dROwC~h$>C^jINz3tpwi4S4D5=#h~*?%Fyv$STdrWu8Fd})f~R-viic`6gl`z;1C6b6u(hGK*p1XG|ki`6(u#7WZ=FDv)fhX|I{SRAW zaiY1AP(V*4tqh+$tgE9%=CFq~y<|@P*AyIAB!^Iw_6Aog+;~Ct^g_uY*>~Hu;grYVy?93&rIOz1qw089?IYk+;{Y`h+a~t3UdM~+pI+n$#2jPT{ z4g5O12%NF_VBFiu=~f;zDxzV+J@qQsmKg7PpK=5F9N^|SPllh%W#|kmL?WrIicw~J zOoqRam4zA*^FGF@$BEGh$VH0C#j^uoLr6~u6=6-sPK)645Jy7{1cwHaV$F+_T-Ty2 z&QX07E5Vx2>Fng=y%y$UFr6#%Mc8otl#ty~)dF+}&05p(L_D_f(pkhv!r76FoJWmo2$q;?3=>PD)q#9$W9r^pI zG1OVonV=%7FZrj0}2dTePi4(3Jr*ycmJaq)nu<4+e&eTC=3k^e_F2)jWf z&f^K8Z1LpOVnYthg&+`A%p9j2){=7)A-zMUuShyI;Dj*~BjPP0{vMYhB5YEKR~mLx zmr@tZd)jzhTd)(0E{o{iQ1^xbUfQP?MF+0nfB~%Si4dd6YSR;@%O@LO&Qku8c zA@qq;<$=M}v*<){z43fWo(=-<#S;eaDL@KX2nCZ=uiJ39>EIEUA`!q@`HK`1B?TsiaTbSzDNHK&kQ)4K#0#2Z0BC=f# z0&}qe6>g}|U2~!wY~Zq=z*05aBV>U$yBEb{B}(3IxKO{uS@1@1b${YNyNk`O)q z68zsL?eL#Ei^0|ML6|SRakV7lXFl!ktaiocXYoA3zP;f|iicJ5L+SCY(HXZQi%XO`XUf0tDXF1)^Zxl1UO8gx^Z>9n8Tt8pAd%e;Mtl3;T)XxW) zbhmXdy0n4?v61aA;NOz*& zxUF4li{-YEKVeRLdE}4j_HW%)yx^o{q({GL3dOw04XY5F^AI94%%dKg% zCPK5Nb8>PE{O<`D0uB-av(n#d@u zV=#gg=xQz7-{8@p{a`S%Q(~+KdLRUkOS*LF3V(ewSHBrbv!gl)1<~XEe$3ziE!Q$# z9}8sxuRQjwLaUi&q-3}_JX zdYAH)BO6i&Sac|G53>B(s#4d&WsdAnQ{_2cCYC`Bod8 z;+bN0MY9O<)j0$J<)er|m0!_m9%~&8!oMqu{kwZtM+O28FVsnI!BxWNv!rb0%lWBA zGuv$Z8AzJ$lHha{xKzPMqhV9&79+<2=R(CpuL|unJZJh=?3)CzFOeZp=Ovg9KSNpM zS=WLmF54zw!83$#gKBZn0a{AaQoHxi2eStYZM6r+chNjYX-R2kY1XWpKp}|mDgtv{ z2gxR=K2MXc5@*Vq4-O2&QP5R;a9p8)Ep*_jbXbUlteNW(l`s5FW>zOm4y=q*goqhq z&BjL=n7oiGy5~|T)m!NqOGkGxLa>gfae+AuL#WP0^m(UWG4>@46@Snd{Z6M~KMOhug56r4Ny2J>uGLP+dT%7aR=LNegVJip|ry zW=ki&VuBNi{(e9UZ!{U2TVQ=HcAumVnSzyb!<$*%emYot6Ig?~jXzvumvyjOD8o88 zfwid?mKgw6k3Lw4sc(i(euZ#P#-10fo{V#gV9jYU@jm=u*d2X_9l@==l@DX&^)Y8U z80q$QD>GyBUDY_gH<^0UOeTvet-j(TNa-F;jSD_I%6#UG7`!B{);}fTnqz5ku|vPL z|E{URE^Ud}Xs7D-GbS158NBU(q33T`Hc~qKV}&=oVuBuVIc?Q3570h{fd%g<+zTscN-3%J zN$N9U8dLp4EJuC+0;3o)uKK9Rt?>@-CVmm%D#yCj1TN-e;P;jh3Cd()x7ntHQ6mCu z_tkcAGU{MkfrE65&8q>m_@2Rhu6Ax% zULy_*VoqWYI5}{~p;s}<3)Bc{+-&E73QB;0Ca}=#TPtG+^Fci`)MQUI!@g)v zTbB{tQZi!PqDEvxDX=+HHoGWwrdA4Ki`Jh;u63*SywoEcSgV$^+WuE>V|$_qf|-qH z&pe6AS7R^Ri7l#8U8S*mUu29b5<>H20js2&;5B}21Ied3h&>c9N5#`&QE9Zjue0D= zU!*zNQor~3_|U{tsit63<$tUCP#-fk6H+jsOarxY4Cka{{RP*Or;#Ky%~t zb%m9maV)J#xWob>9xJ~VH2Po=qCd|JJ_%k1(1+Dn=WhpVLfBdvk62Q zB88Hb$`8~-Y}b+@8;2Xjq&-w>8K+g%E0%?RRl!3fhC@G2%WdSR+ucWGSy?~^oN1zCz9YMSF8|Oaot-8Ay zLqS8Vf@Ztul>I{Uz@!1FkxF-7k3!NcyX|$a&%dZX!&^z)k&to%$Jg7}X2oow}DJ>VDLnYOCvZYI^j~ zxKpR#{l1g>N8_MiG%Sh%f%-tV#IXeh3%YH@QG4C1?kegl<0zCZpg>s=9O>Rqu0C-p z93M$5gCRJHcMX1m^{<^wCEHbx!ntgV5Z}Orm}nT=`SBUuBxFMS$RE&{q%s^~ba+9+ zXp~9f53Vm(JE;GB0bVj#pVPpFSbd@)(VVQ1soH`YvQqd9+?o(j;?%)24D#_Plqp6k z*rH&xuvU%KV&O_U+iZxlP4MwY`JF1j0+!D`o~)BliYWYtoy<&s$_$xR)amrDhK?W8crCe$p1-gN>u^QLM# zq?SeDkQzeYV2^ZgQ7%=^3dxJN;hN!eb*VT##fO%sWUW^J)-{6GD>1xziVriL1uahT z;pZ7+fh0)~&=xgp%*1vskeH?^cOOvXhTTxua?vPn0Z1{@-+7&|6N~}k)I7AS2jzjD z^LIg)m!QPGSSH8*GLcNytLqWwt7sNdidVWas1H7|e(MuFv8PWg+%N!OM)G}5Zpo~% zW}K%TMV#ov;F-2-!33}iS4V0E1hE+8PG~|I84?qow_}MZo#4Zq00xGtwjQ70Q)VSu z9N_aoF?b+Z{l9RRB)IkvTBM|E3;!@Q z>q*8{j!UZ0kakPES*r2G|Bq?h=AQOY!&> z1KX5d@ZoWV6TRRgJWFZ&d#4tC12|={_zt~cINHJbBcnze?d>0>@VmDmki>keCddec zCp$cQ&g2|=TBwHHJ8o_=HY`uxY|HScp17N*x)3XWG5a%S>+W@bjz;nH__DnhAliF) z5Qod~Y;7m+f1n$+Nhgo+EIN7rl%x{4S0h(he_3C4a=ek}6dZ9G>Km5iWtav?N+lDF zQnA;5>C<>^Y1D7#F6H3}Lj{a(yAcBg8-W7fNd+daNLG51>gPU&#&C)Vho_v$EFGO* zhK>1|%mDI_) zpe{XNceY#6X%bh4^6Sh3!M_1tAI}Bb5sDr~W%Led2aIi!81lNBh4=;`y%i}=kf}ul+p&9Ipu8d4xI+b zdekSmAu3ssiigUH8AI}$#>y(9tAoW^Kj-yQ2LE*+np8>6n3Ov?Xh9h@gC|gCwd}Qz73c7`c{=AlSg`j@j&|so z+ZI1kk{Ps!F_e8OXG##wUd74D<7cy}oJTH?pUoK7RK>~4<7b1U)i;O1_*tY&fT*>5 zYYZBwx?6@DK+R&^;5Tr?A0%@`DBjqyj9!LB1}{*=DOjEAZ;1k!Ck#OCZG01`#0OBQ z_U3rdq!J>DtC?wKaRuo_%lJU8Gm15s4-T9%6%gCYS|cmgJF2puG~c%(b_FGNwW_7W zy*-Wp-dQd$lnM4Qzv?O}Kqf952926qOz4F_d43SFR5 zC}LCSk*%%Jjp<60Pmmj#O@l|~J^H1yZ%Vf%TPk^`-^>qw;u`&AoT1}4TpisyWQi}a z(NlonF;2E zAoWig$)!$(lJJ%Tev=i8vO5f2kkf;S3F}B+8rfM9FNKV&payD?(22QfQ5_@=(#%+c z#C`;YC%`c31RQ%i4HB(p4N@GX8=5c5GT*#O8l(iSp(H#yOD7z*y9){!lLjf6Sd7Hu z^&6Nqo!gt7Jj64yprPwhgOmiY018cz6BXl5KZ3%mCt}Bm-qaHn0aE=94W$XUep(;% zI8D=NlD;yFbkj4iOBS^Mn*OQ9+2Awye8dRSsD=RM;!+lIf55ngOfvM+&<>YXyaTwL zg#f_iG-ia$8Os|&$vyDI)RL+P`qnZd&5{^%;G}!E=pEj9^>rt}tPXjkQNxQy3#FQk zIx*9%_V$aoz$HHiU|4d`PIJxa^4O9HjHOw~uTl#ONQ)ijDUU9twFd#++&7Ap44qm} zz~L`m#A6DUNU0>!Njgt8b}FXTfl?!=rK3jE&`*pGJlaG-b_z=_UUHhHnyg~?th&6Y zz*?>7Zh-u#L|Gqe0mOwmmS)d*^qf_c6>Sd|(@PfSb9r+;XE>!!Q`fVZ+URi?LlCq- z`5V8xDorcL*8FFXZj1*$rgQ_ITqoVYi1;kdC=CLvbVFyRq?`SZC*2sWxn8;%f=Q5W z=GtOPx*1MMH%`##m|wk$q#?>4Zm_xyYZKA$Pq9ye)RXqr)uw>d~qQJ7S{2%(lzF67L1w}Tei0=cif{lk3QwD)tV zuO|XT6%XL-bHoqaV-m={{M=ohu0Vr-o%ordRo<)GjRqjHc7w5HZV>3ag9(C^ozJgu zLV(r4OaQ=vAN?&UhzAwU?yYE?FU{a-@u7+TEV6Or=*p$q!!8Uf4c3d^5p6NL#cZlEM zSxgH&O~~j)ut3ZW2-SHg>-R+n8sc{Sz%q3P^SCi>XG3!tgEpTx8$;ASpnl*GqZ&Ga zFXZgz?4`l>qQ%xtr;AgI{!$U!fuG@*$90f`;z)eRDRb~{5e*QY11vj@Jn3xT_$_q} z$*WX)ib60RQRv_!2vW$atcFx5PNCC#4f7%$o`oOTDeH3gd+8z4u!lOc1h=POI6W&U z50L!Ba>Oqe>ZV?ityJxsY=8{|pOPDh_y!aZDvl8llZ?IZL)MRLf}USgNj2@YJj)s$ z6?Ik`kQQB~Q&6)Z=*O7_-bza4V4k35BXmRK(UCpxTT6(2$L?LyrP@1wt?L~G)!tc! z_C~t2*#6G??kV)KJy~qC2^5oN2pR3EUO+<-n{?qudDCEA?qySoI@ya6mhtAf-pTZ+H`Xg)^SuA*LM$O!%;V9BA#NgCUuP&zKqm)!bV#J&_ zjV`MXE$lw~_Y`t)j z&qb_tapX7^fiC5?nwjWKcz}vzBMM{K4ECVnXUReXQWVBadkCF{!&HKlZsvCvg`qA3 zk|^Tp)rWH4(+vzOYv{RL5N)2rMKlTDZvVL3;6b1GRiyYdFdP`Gz4>))xR(%25%=FO z+TvZE-p#Nc<|x)JXQzh<21?^N^$>B`61NI7<27h+<*#_@7hNMhCgYT+r)?c&}pXHBqK><@A zHe}{*%=bg)?uL`Wlf(MH6S|LVB|w~fgbc^RAmDfwX|??QvoE^jntAMWz{z}{Jp?%@AHU+;+@g!jNnkk7W7?Ee zGfPs6UIAk)CZ8>HplY;NzwU%;wPXz~S0X7pn+D+2Vg)`6GSE*}IK%F_)47Gqc3jZ8 zWchb1gTft#I=X|Sr5u^0^kHxfRDUbADyt`f*Y1$KGzq_i<;%Q?5myuz$!^@tU0DCI z$Rw?(aI#yL>7yL@OsvT9cU~%bE1d=MpQTd249^PIh1`#epDBpQ9*2?-g5|VJNNm1V zP8L81v%Y_$%bHnq;(UC2FO|BDt0Q=;SH>IdnN!Ow)*q9p3(Zdbu@k72MWeh81g=FG zxKPMsUl;T*Kq17vl&0!%gucH$b7Re#u*#T9fcW9VD$$5DEL#ltgFgLeVU=V^|Ix!L zWl&l7;#=0@B&;$R;hNb)b3j;S#J-TM!S%pbvZkG-3A*M{vcG_qztUoaf1usf; z*PhX&G47lS+T)Ob_IUbBsLG)}XK=aF2!{afcHxC4fr27}q+fA1w^(9jy9iJ4GI`#V z9M$Ec$f|kFH!SDJ`Q~xnOjXZRmgg`rv(ErQ%W*)o3F>(T8v^{mmJ_<;FIz6#H*rK8 zLo(a$&^ZDnSKsGYSRz6G5LZ)nhNi3H5?qfc>0W}tal^vpnY|T$g!utU^(uyn*YA7( zdn38AL}TU|pd7ye=u#3Sf+MFIW=XsS+EeRqY}Fzd#v+IQ$YXc15t)uK{P5tU&Icf= z@B2K`41NYzv*j^Ya2bdwAU541LA6>x6~yZ6NiNTher%J^z$nQa+TKVL>D=*gtB3dA z_0QUBpi-8hJ-p$cw=I!&m@)1xQyfP229K4m^<|s5j%(w!e&-4D4E@CB#~u;GyAfj+ zC>_%pn(JQuW?mv8XtIO~hKkTpkMXU)8fwlY+ptr?*GDMtw_&tvcNbhXEb%4^A2PK>v4|cJn zKn%Phw+E{U=rKN`E0)vh+)%GxlgA8Ez%k`BMr-S++EA7S0>$e&HMkA-*UTo7O^Lw{ zZ%XvO;S7?((y(Y@-&kgl)W3#dqba>W>5Y!ld7ShxSU3of_{R@@?87%*`|-Da&2(|9 zEEm_NwrecBKFgVp)@3=9=_Xzy0Xa@|1}JPA&_v{LSvW?bv&gdBz(y|IWTG>QZy9@Z zun<7uXdw}F$Q!qWij=%;S6;Pm|AB*t_x9GOQ6a*vT(y(R3Boh&P7ks`YI5noo2N7? ztWppmA!=newkQ-BGI;J`9^c`3eC0-3m~Y)4_;*yI6&5>)DqhnIRkLz@k^2nHL^G3g zWvm9MJR~zId4l_bRXs#H^cPn$tFQ$_L=CVb+7uP*+NNSbph4;Fe#@`^AD4W?S8Dfn*V=J z+zh%rF!?H%HekP+6YX7&lB9grEtfCDt@U=FbouT-Fa86)y+ZbI_Z2@UJ4Z{qe`-HD z6z4A=&F+Uc^Z@gjn~)j5aO2WNZT(Bl;HEtnwm+qKdDV+#-R9f9bM0eTYIZ;B8FleW%3!?&UYFdp>*}$U{NX@Bd|vrDsa6dJ$soE&GqIZsRXd&MMLY>k;>egUArv z#!P)nmGwC7AXX*krrWM09CW)fB*4pRX0N7zXcvWuk-ch;;Ivnl(q6?!ZL(J*StO_v z(Ura0H!&eNj^sY;_NtH8WhA8V`n~F-b$eBu%Z?LYl96!6jD*19Mr93|F=^=-8#N+e z8*~CoY}AB?mKFP?&2a9pIBwLXX2Uh3jc(M9KX{`iG@myrI5A;(R&>Jg#7_{sLA-z) z75UV#R!7wg0D5LE=7G%z#W1jWlSY!$C3?|&$<=GJA*D?kujxVFq;qs9xOa6UKJ2CYiAE(k_lV+U_rvXqE!^RMf6Oskys}WeRVv=Z+PA)H{Wx{w71Je+e z+-qEfC~z?EF->$cQd%hI7xkx3j3A}BY0GD@;j2Vh5j^wx2g`FTIt}iO_`sd4BOfWJ zhV|zo0AR5T!|1s|^;{B6~2ys0hsF!Q|&ItMfk;3REu_^7vca+SiuH`;L5h}Tqk!X%Le z>mbyN7mS}avlpSg4I~q4*VBb{_Ptd(oAhx9a|l07O(-=(rJp7*?Q&H6){3%%?nISufcf1~-QOF{b4p)l z%DBE^kpa)H^i`NYSR>oPk6d=Hw`MSREV=EmB5M_=p%UcECZK4$btP#^FU+Dl|COg$*};gu=eXAFAG3F&5#7o-B&`j_ zRXtk)KV$!P_h3;L3$?N%x_{6gycb84_c!I+l) zd@LsSlQw|!sNeU*h!1vrjs}l>hZcbD3M_X>Bp(Z)ier7SEvlpRG2g-qj(~!pOPho` zSN9w}iqf3IR-I+nmV6?x?@V3ny3SqiDLpk@th=-6UcV-xnWMwE!n-%zW>BAo+su(7 zTL(3m^y+u0<6v#+LD6G(@Z$`HH>VajfeK}H2d0zDlz}(dHIdbm4M`>MiV9An0)6JF zVpmj=!#ZumhdYoEih-^YLjK1^6pSlJCX z1MY9{z?6f&atY^4D%_S<)YfscuGtI}T!BTDcl75AjVj(#0gyW1oXzKwU+7 z%}^3(t)iZ``?eGk{ju7HklHqBwE6Gow&NhBP$(R;ZKzUe zTisQ(-EZ%iv|X~VRDAyJO}g=rw@OU`h3j9RWiM(H@MJx9B{2ey zLF`ZH*H}9nh{2bvID;Fg&(BkRi`J))S$}(f6fduGsR&Niz0G5D-1b>S=nScLX#EM{4RQgw-FkEm?~D1LbEcoV;L6gR0e zH$ULx4UhM+PUJuG$KplCQmqY$qpJp$fE{?~k&xBtK#1yP3k=en5UGyt2dsgjf2c0U zRXyHVJYIK#>0=wf2htJ(|MgGes!4v~)^YGm_LERo2rCy$VJ;^nnPvI&yk;G9@wgN& zTSlnNS$8TF`=-7EJQi8U6u3)3V{({zb0f0FREnADvBqi)nM@@{T7_Ur)}Mo40q0TS zmGW04IbdD3pZ#5uH;hQ%LG;d}WZZB}aE>2w@|JT?wc1tf8*92(|L$gTB`n?~pW>kj z(QkG;-7l8eu+=Kd4A@1G>mU?i%G`|UH!wokou6qKX^gJ+M>C8IyM}tf8z4Z9*}*JY zS~#LJ{#n7wmcfCEp-=RIes-_oZf=1>I3}}v=nB)oEqmUCHuLqq9|MN}7H90U{~gTO zXNUiyGxmp7uc?iS9^Koi3@}yz4v;f79nKdmA8+8{nkR!f3 zCypPr@^K{t@}t2FPCX&*6Z@KPaNs)0V`=9E#++yJ%+_?$$eeF3c~*3!Leraae2*-n z{iwSqsx6mfg{r>r$PH7omDCfj8Y+RWT2m=3(wa(F)>f)%PO&Q`MVkUf8{wJ{<;RWz zj?@q;LKia-&jE;s)|HL$k2SSD5+%C!7Jj3jh}MB*pKVVg9^-l>U+U_P_QGanpQ-I+>7)Qy;5F*0?r0@zgDC9$OM!(NTds!*?==045hkGw8 z>C&`4c5~$*Yuz>9n+ctB7}3)(_i*wg@8w#cOkwj*XD8z+_*msLIPKkAe;#6k+5s@( z+UAgB7$j*`OXIk3m0@sS>zi*W4_@MZoNz1c)|$OHiN*mF26_o7>41_?0N(nH(;y|| zsk$cPX}}{id&}Khe@+>ciqFRI7Le_$5@Y}sX6Ti29}URX881+O`-zr5S5*tP5XmfE z8AHM-Q7d`fJwFehsm1QOR6f!-)Soyp$#uD!_X+5R`ZF8i^IR;>Zam;xSLDu0 zn8afyK4rf1z!o;tl$!-sBzmpqFVytTd~G;_ChUX7|WJ+&^0 zeb-UmwEy)RmL2tLQVU>`7$WLIWAU!656I2m%KXHbD^aG6o}i&w{TPu)k7ptHDReG8 zix{{1FFEm(kZ!#j2-mN?KZ-H&&g%XxH{hZ&j0T6#X`gCwF&%U!@k z&|H#W7=A1mq1<9P%!@+eE#b#TmggxzWb+fXIq=qmo$368?QsKujoUzWJ0|o(%`|Ul zIL)ksXS8UC+QPnIUgDSnyD-(I_(+fYa5RqAJGkAoA)pk@hjFzo|1i*gsGkh9OyAg+ zSh53;^)IGYJ=vmy;9zEUZhp9cTQfa{1k%&ibar%>UwO$DoM+4(Gwo}$?yY+*Lg~IX zqu#pLLtis~er;yGb+5@RiQ8#-lx@oD#hWg|&mAWDaSOd|vmuLtvvMo8)~`Poj$yR{ z$ukyoOK-s~*%Vy0`YEv+DI}vk_{k3z?Z0a8=2CxplV`q`3v0t`jOFXq9}2{^0tSd5J7Ib0=dO0^ zMWcD_r%3>11u4>b{00{s;}r!7u!^9TW;W&Ab5$}*;S3Z>iO4&H0wgoUXnWcAOreaf zs$UEq;v$XJODK4eT={%1t3{n3_TOB69f8pGL(2+@3o0{JQaJVQ)2X@=I!81{Pl!E< zC!DK&jiZD&;cI(&_yFc z7SNJ$H&g$|C%QD8uTJI0tQOp1?A}8?PEu6#j~r8#r-dIx;G?V-5kR@OO1MP{uleDp z2lC0f)(X*2ay5^T z=-L|x7uFwS5ptq3HAA!q^&3dO+}?}#=&XnDjE0%_rkWk)Avkjjwhy!I+$_|&p?>WE zjf>%Lhvb8T@RGmViu$X6OV5}a%fHf z4p>WsC{p@1oxptBN9VXesFG?b-bq1TuC*p5-8NRdf5Y44N#uX~pMtPn-o(8)v{n9NBotFJO34 zs|-ZF#f9wjfCZyPRhu8@|ro!ie?8mxlutbOC4{x}G;-En5IxjpdF z{9^Nk?VEf7=iH9aiAx@^rG4w>4;3qsh*1h~Vf$6?ccgR*Mf>^54X&u6`cx6BwvW3l z?dNROrnX$j!l3f{4fS#_Xp&8UkX2Y0^&2)tLJxyY@XQ6|)Wt6+pe1ani)R)ZkVD3b zu6o`n?WsA&YcAMK`tS$y^&c;RqQr81%DBXUz4ktUVFiq9i@nK6ok*SJTmWjTPL*}z z5`9kNk~>qhzdP=U@=2POQGn5FzbeQx>%MNk=~LGOTpYi5LSfCm03x}F3)-zpH5OV}-7gbZn1m?>Gzq9;$yt;r_H2bVb3P9Uv z1yb1jEuMlrjy_8WZzn@l?|&jw1=)oQ0eg5M4Vb(LKI0)UUBG+d8u*I}ne4%QFe}$E zu<{Y%VN~)bn<(y&dyeBdQ}bLdOJ^3(NwuI4Ahm~1=$yeNcLRh z;Y5t^W$}NVUZKgMR~IZZpS*uHi4msWzZ~u6VOSD;Q=5fICGMawis8J3FYZkJ@r``O zT7{RXZ#GxZ>K^{2tPf5M9%cKrL!QeorsM2r*fZ1g*g}D14Q$S|7w#oy`kM z1_)w*73=8PqZ0FF_5?udD0dJQ0s#i|ke1>*VLs}+4mZkT4S2ZQ;W0O(1P+F zZVCo$PrLp3s(%z;=nQP4SZylp3x$jpaq!_=d4@AiEjDU33sLo$TuXI}3H8`zl?l^rW-hl&kUz!ehdh zGGVrbe;lK=)s*XSDpft0ES8E9l|?$>Q|(Pca#T)jdG*NtvL*1n&kVIf7(*w2>ijs@ zCa{OW0mrk4znGcg)1p9^K#wXw+r-Q@gIhq1YCv#>e_v&~ZpN%X(Tjt|$EmuRWmnTq zE;PTw1p`&X3NEE(f>j?zz|i2Q>r8?>bXnD|1a;2~o@}Aa)cVcsN(g2TZ;V$=r1i)G zgDohAuD8yJ#TAt3A&KFbuKLc{ymMn$0T^BeaFLv5^?Ob!+=G$F*BVX5t!J())RWgh zG?FRycUqTcOo&^ez*~dkbC^`0q8JEY-++JXsPOO@#)*-mJ&pAAI;p7udn#Y}FBRo# z`d7tOAtuDO&Hc%LgF(Mv^kyp6Y(Tm!v*}UAEl!|RM!0$4y}9JqI%i(>dzg=e3B-XcxY!cup}he9mM8AD^=9Na+yk4#F7NVjmSn$Xs$M?SRN_oP3VfDJt5>K5)5l z!f@F4z<{4u2HhuCSt)O%?hc&#)hGFAKjS!l$Xy zIM1Z_u^zhlnUJZO`#2di@P}alF7HZC*mlu=G0g6&F)IAZamh+AO#txRi0d8q z3bAi{r0lHyfP!Os8L1$4RHV5FQmLNy=`6f&++E?b9^^CE$$$NRRTYClkG&s9$oJ}xkNjF(gjea) zq5?iMArQ~4(3f>0SrMq6Xr(MtuYOJA-cLmM>s$Q=9FUGw6HQQ0&!^NQR!6(VS8sjd zLZEojb^U=8GrH&Z2h(qO6rbBL7=_Ko?W>xFKOAFx-I;?8hYDj;08VG>$g-624AvzV zQs8-6l@V6}ToK-I?}xm`38R`wL&nrEA-Iby0?UJfxc*@lRBwgp@IE9RZJ{pFNJTI= z_BdeWi4b})3a)C=I0CS(;UQt$@bw~6{-y-2Oll<~XB@6-@em*<(@&dbu7|=N<>?9t)el%PVb|v;AasVQ-DhuU9Hw8*e0c0k1 zC3Z%)ONaq|_0MYk@*iXBViTlfvwRJRCY$YoJEo95zBqPU_Jcp$_*kX{Q3z!J$r;R7 zeY3;C-wf6DF;NNI_qF*t!elQ9p(G+AL=X&BLJ-dC$U{WPk5_HA_WmfqoI^eTcN^JC zC^>LXB=F@DD&2UDu&D?UCd~p0@i~Vy2Q=263%|iQsSS@8C$+qR@*Cm=Kyr+y6mFF< zg(Pd@M4vXYxZw>JJX6C#@B~0HHv{||24o;KTib@Kmp6d*jE%0F`lxUyXA-Re1|f!; zSVbJ(F=(^qnd4HP5FWbcm@!FUj4-RH2403~fyL49R`VV+Ni=;V4Ugeat_LZlq~Yii z3{^L2cx9Fu^JBGUDdsEHKro1$&h)yW6JyeFF1RXVAA6!dwffT(yU9h2DDFNACChd$ z(BFnAy-8XvFPT9(RHA4-gp) z_HdpOY#{UXYqn11(6f2wWlat}MrjYjHklQxV_e<0u|ZWclzZ$R_D6H*MZWHo9lRe+ zwznha*6)>LC5N7ozuV~Y~1d>MB-(_ax&7W4dQ6g^SyRm`Pk)&~S#@d9~m=3p><^^zLi~VW8cbnus}dSc<~$@ z=e|MgrlPgssCU87tdMe-oyPT`bI5+vtBGOa$&EcEzp>;XldY_)RFk9_b0uV!9u67& zD_h1s!Svd>0w~JH&J6~-p=+c(A`AmWdl9&wrh=Q(@hgzzJR1@k$_TTQT#2Pz4iDCu znNP1?Bq+i3;HxLhib}zl@e!!mY;a{uw?`2~0S&5u7h6-i4bI&!5y%IiPQS!UuD*5& zbq@+S#va&0nVR`n_VX6QOC-$UKqj*ldG+ZSZRrcJoky5Pzh|TeV+XYe;CU-$rBtuJ zLvz`|5JSE?4t6^{NX!JoUg$WG{~t!^2;tbs zNWqKU4ok$urc=6QypjS+yLDbIH^W>tJnrB?6$o8+8fYvM7wc|&1Q>U-tnc@Vs&g+S zytHnEO!vOq)L=LK;sMmPee`WUfGP5UnKoELJNc{+B6MZ>OXfh` zm56|Nlk16*bivr%L$kK_(CjfAyWziJV*#H%xa~)&R5jna9^jqFOv@21ys_#n=_08@ zUR|(z3H%VdjAMtvm=A@ng_E|5i84}laI+wK2ff%(T0dl96Xg} zF+3+riR^Q@8+9lNeTxiTeP2C}mEkrt4R@% z;u4LlEnK(fY5@)fRilraTL#4T!C>2ch9{d2HgWizu2s_oFylA65==kq`wZ!O`q{u| ztcdAnGdy#QNRt?{Tt;qLzGdmaM1hecg|VFEO2EHtmN=N23y6`OAZcX3y*wLD*l*SL z!a=}t!T1zzc0LLOVG3*E0E4xBdJ^tyl0tYP!}|BY#zN4DNo-Jqm8v^T!jQ+Z*(C`1kF7T*8r#oq#_o(vg1R0)Vs<8i>;&w%TX{n}Bj-388;F z^aR{w26i~)NkT?FU&bBZp!)zJ0Lwr_j0f4_5Yq=9F31`5<;RH(1S|{{kk_Z#LHfj}|Co<-EuP>ukY_O^4Ux%K(4MY7yIML`>a4u1#nF(+qtL%3=;r zsle6?+ehrbr#Juhk8UMqiX~T|MaK+eqk%~ZD`p{&c#I?Lh@iksU&Q5(&wd|MF)06H zKVmQHO@*wi(l1$w=O5on9FF@+)Bu7+Eg&n*%^G{~%zAq;@PHf~Nfw$IpNV#0m?+<{ z5|UB)$d}d_h4c9#*(e-)(&GO=dv61*Sydit?!CY7{GaaLKm!fk%0AzmnmRpc%1(wG z`XY66b{7GR7`Z9u7BxlHI8{`Q)7`m6W5;l7P#bL&y~K19jQA7Nn7)B1#*Sh{gWg7d zM1$BGR1#5Jg9a59BPOUQ^E~fb`#aw`-5~gv%$?B1+56jj?e+7ncfJ4XT`?t`mSPNW zb_%oJW_g~M0bMg{2)ayRox)R3ep&*6P(CgN)(P z0^KBINDHH`rwS6m11tvFqM-bOn+m;|j}QUT=IZYZn&G)4K3NBP1`~btT6Z*NyqH+3 zqEw=2q^o%J59qY%Dnj*2b`6CIO;v4Nia|++88EFlhZcB_pQ$P5ifS>F4Car}RJy;a zf`p75PsvQ&*_W{L^&ErawvX{3HeZiB>#NGg`M?yRb3Oj2ziIpS@N~#bwWICo8RZ8d zVJ3t#0|*c*>N`#hDms9y20aZ$RasH0ERBKKX$UK%+|^u~lVm_^@9aaadW(s2qNDgz z?B6~>AhJsl4GwYLfik&J-K_j{uon#OsyXM!vpS$8^~2_N8s`Jl@VOpW7)m;PV%g!A zxzmWmOPvmNdlFEEmr`K|&hy7B!*WIP!Pqm(FP3wY^|fTgYT^fx4!kh|cTVm5MGz12 zI+zA*SkBDo=-IY1m~L5Va&-U1l6K_j4G7Q}&VUo6)z0FVs6A?75CKRxAOqsP`n!_S zUi}Voq&DNvq(d}FnC5iWfh(8sY^F{w;ogGQ-U+)-ZA^v|UF7a1)MNXK+`SVmrxjW; z-aO3GDs5^}t|I7l*y+vP`)4_K@2UoTNmd2cEZA#%&`HS~eX?VA%QuO-gpiU-u8KX$ z*&or9?!A?Gl9=UrNM0DPRvy$lHA^M2Nuznx}@}44LDI&K=;7m z;Jy@)cWTk1OmLA<6bV-07aGJIGlM~hKkZ##CSyoHXDR|t6VGKGY7L_i$Sp;vX*~85 zDd@FVr43|eCIUe$73n4AT~ypmCg6g!;yf%M94{o2)l3C@vM%5r6?SzQuR-qhdm2ek z0g1QOE>4Sfh|)rShkWc!ZAai9E3^JVWX+Dxp(iU|lQpGc*@RU;SRNB1pB@LoAuP1} zzHvv`cIxaiFD5OV95uUT*ql9ikQT7439KIQ$p|++;$`_1g!1&klNZWg!%A5ul;5@_-^SW` zDnj{QZ3v)}P#d`W=ZS@K)zxImLL>))uavB$$R1MUGFwkUEFbCiQN{B8Zj2SbpZY($ zwhsODl;2_vn__BW`_9$#$%4k7*^{S90l#YXnv?63k2&_ZlTTiI^6@91e8Pz*uRGZ^ zI((Y~0ZkNr5(pJf%mB=rdH*c<2AkJX$4E>H_wiKn!@;&psM6K`d<6h=x-M5=Si^YF^DTt z61>GI!&hWe$bl4W6!g$#uQ`NrSvN?*Vt9@4t@QAChPMbZ4;e}td)NZU>eo#-70Ga+ zLR&zePPAUVsqJI6gr>B>i z33xqxk*p9r-N^TG<}GpIZp^Xjt>ekK5rIYMl0)_Ha5OM9P=yMJCniFg4xw|5w6V1! zJuZgCWFg^YYTEwsAI=ttKpycbP@d<6uH?*+%ul3&6a{itNLkKzBgpeWL>7H=WJlJ7 zI-2pWlThsmDlx2_bAM4G&~ov1p`hSon$Q=>Uo_9qrhd7=GUg`7!{zD4#k@dAx?XkZ zAQem?&P2Swh1wI(C~oo%LfE}={pIRDuX!kFR=kT-u;O|dKT&k9;W70Wzj=D`-cn7D zPPH455+>SfJS^gA+#scC{|h~~>r8yuokqNeO1k^YTGHBjBym_cb5OmgfJ)cZVILo~ zKZif1xO~5TK)g6i2i!~IzDhE|cufL6mV>aXT7I;q&AZ5xoVb>qW+1WnLV@pET5yTJ0UM`Lz z8&~x{ICM+1Qj$R63e!rFqb^x(_4@jqriT~Y(RE&$1)vJaFRN}ecGHaz1;hRS+Ot(^e}!oPjB zTrb7_bseyI>K_JMlHel;TizJU42-`^e>CCm7QK-{c3sIn^=pu}u!3O^OjUP&=@7D^ zJ-_T}xkm(BUOgHnI}EmW#fN0t`96kWvh)MjbPl>a82)LF^@}t-E5c-l@v$VSF__sk zp`-~Mw9SGt#x(P5w@_Ib&vY=8_EH zVhZQn4SX=snC6%)s$QC` zz%iN*0}W9hKYnEFm;nk^j*R`et)-Vg&RY6vgq{B!*3!#kdVa)O`YM?CuW>EC{%4{V zTsi#|)q?cFlUEB~HoZbE_|Q+F7F;>KOf86?vWv&D)jtZ2YIjeK+Ujwn8!7$NRDzK% zA5|r|=4UcB5A~kn)T9rd{M39EyX`WK?e?EwY98t>o0|Cf1XFWA1_9&l5hPV%p!UY^ z)gLFP=2KDDMtXeInIY;wX9Jf7mGedYrBgKhq>vw_^+Ko4BPG21a^+17FDEDQgdT;M z;*$_2=4Stux@`zbTKaqkcd6@4$Va(#A@$*4`K7fBj z>8EJ-5R10oPpO^1R}Yirm43$)jOtlKC|f?|$qh?S9OG38{CAZN|29_F5d4ow8~6Kp zj=YG#1VBP%L6A7TdelcS?MJ-w3I2Oi9tJdYSq~dKplr}oGuIvE)Mm7c`en2N3pUa~ zh8$ZmjEmt{F*l7oCg9WLq}@yNbUrqYpVuH_-auu(7m?I@yx_s2$e)8N9bQWj!2f;+|atav-=87_Uo(C2=q}aY@u*f z>Co~93D~fz2vvc&8LA9w890a@s@?1PTxQhM3b%M8Svw<}xX_RJ5vSOuZaU%(+w9PS zHL|)TFslev_KWF>OlOw;c$@Q$w?M=s-og$Nrvlh#mtrnZX^_M*3&+O%3!0uA^Dp87 zVf^;ckCB8fyyj(aqf=W!wI$@!-L&NpymzEfyMPemnd#DB~17+8$=oyj-5il^$2FS&|iEvt03E7sAi>GnRD~G zh$3Fy<)HUi$sxyVe*8vO>lk4j6lSnO!VM!dQK|%0_>XgqJ1nQVi{WlY#`Pp1ViFZ z?8f;Ky2l!fwabTiA26QZ`35qve`O5=;2eu-9xt-@*}(9~^Ju)IPxjR1q>_ zbAa5CgB}vp5&_%P@$)i$mUiz6RX-yRP(lWZiPW@9r&Gu$!B1|!3;6(o2oqx4g3O60 zVivB(-|3Zot#F4ia`zGGjM#><|1K**$Yax%Jw)UwGFJ)`VJIPbVF2|AH=K(RATEPz z_=U7$FnCN3D4+G24nPpOaW+wgGLlQ(?_)KUedd}4-MInp;#?yz_5A1ufZ)fClg8j1X&$3@X&icn2u2a6GSkb znvgu$e^060e}H9rFl9v3lu9|o29W|(Z~r|qwISm1queGIlfcj13})PA&-2@J-OOMQ zr)v9)bH<*7k-tdUb~AJfC_%SO@S+{8-P}w)%9t5{x$PG8tFc?ov%AkBw4fn5ZnVIw z5VmcLglzFG@$Y;)7T;2ynOJtTg8FSM=Jv2-`u1d8SRg2>TAP!0q;wb)-$ zW6q^Y4`}qy%56-eKt;7%DE=Gcy(Wl5S%3K01cr;bKu|d5<09Z-awRh-bhPLh5BQGnp?IM1AKk;xT|6SIT9@3e!Z zbNfHCj*SZic}7`BTyIEe7s4b19`OWpOE(x&xTzmmXRJ8?pFQYtf(L7uFZrIWpwMD5 zC}PPyuj8C{3mOq>5VR(>nzbWJrSm*|e`Jq_4NS7ZG=HgFWIu2lv8i?ck^)f9R|(EnTLlE@xg(ktcFKC-1v!>LlpSeFcXiYyeWC1FHMEU z)I1ld$Z#^WtLDjA@djIUHyioQ3>y8E;_vQZLKzZn+=|K1wDzbmKo;Sbix$F8F);_$ z(BG)I5Q&;%C-g1~$rih<(0Dl)s>=|gU5l|58gYufM&YbRUe;Ny0J2*GFlH(ncO2*4 z(Ab7T@hBky2A2%g$6)w87^;ud5$Yq$4(UL@YT5=3EC%7V4tAQiL1SqS6S2@IBEbWG#?i`ujZfKGd#5R@D-Oyn6AW}2XrrYuM(5DtG zA8v>isHz~m-&pNZc~LX2f8YkA-4XHe&{jZzP?fs8BoccKKj`I z(<1mmp6ch2b74ChAHC7Kps zp}q1np12}yVOWT2(Cd~L;z|9f6t^oOfDjLr1DKSv<2 zs!?@D`oX3P*C^w|#G3m?vmw)WeS;Rztf~lmHI4cpAUJ91+Dbx8mn1!GMZNk1=)CU6 zMxJ*owzd;gUZT-r!}YZj>aDX77A_{BgUqxK-_B{8=}ivwWgKYrLeCi9w4Vi25LS?e zJ;YCAeDJuuZW+?X>H;_Pg`%xKPZv<~wK%DEA9|-2C$xJlPH4YcoX(?EP>rOZr!C^= z3LrYGxhYH&IVjD?k=%b)#ctRmsj%^Yxl_rU4iQ!IyIh@#83}7nOV^>=?cUd8Yx>M; zdcR~Si{4`>d)(gNb={BK`z{URu=lFA$;{Fn%DLN#4>QXlDC`|{0wu9M_~?hb+#>(|MN;GO*xK ziAfYS^MKl%2!mN{l3&@rGMR7%%Owyz5cZW;eJ?QVLRw&!FW>^;pT|ROETj$yHjV9o z0f%*j$24ej2XPBWdO+^6M<$yJYAZ&SeJB$KoP*I=UTaw_ zTxy(`p|?Xg+}Q7g%Fo+<1T;@4(SWYH#;|p0SRAhw{UnH;27Tki3#iMf z#km8V9UPOwjzB_16_N6XEe`Pbcw=vGX&M5+j`8P1DU=m&kxAoo-7KZ@k|@!=uNux^ z3AuwE$mcRsaiBeG6hLW>NZ!;L-bv87O8Z%k_17cB6G4LsxHiWEvV|_^Q_~+@f9+Te zj+>Jel5^6jon`Ji$Iz-l8B5bvoR3?$_`(ceY|M7iG+bzfNPGwD^s4`p6%hs0Io|9?Chlk z^nw#J?H%T(;r(xH%&v3ewS&!91PRC-U z2P2N3p#Gg#!V5mPfp>G|>Rv@uqnt%6`~r>-+VW-x9Xw_XfYaa14qe#x%`=u6sdOWP z(!E=<9=4>cC=5<#bibarz@+&<2dn|gsc;61Rya9ZnGJm4*UBPT#bW8Ke2$eYLA3or zoZ{S8?t97yx839zui%vI?!ool1BMzKl7ConN_q#*rE5&)pbAkegsWaU6?!Z-HejL+ zR5aP~hZur3zB{?jW_YBx0Ua=zk!nU2J_aO!wD@V;fBK=j^sV8;xrUFV8j>TN;-UzT zw1bSs{TfCr(>J+{6+L=HMSpEYuEAlM-H%0Mk-Vb&Zcl!u$+LTQWqQVgu2XqfF1#4e zNT;-#a)=oFsPhPye`K{Qzv3B;ZRE3=*MNCBS@6)X3`22k)PGf0iz4CfvZEcz^4qvR z!+by!5lE7@#SC>Qli{A0_yz4rKa#N_O~U5H7znNg#Wg(-L;NGC32A=h5oux6bFuAo zrBKp(=MTmrS^jnH>R9g`72fRlPAy#JNXq{Zi4!9sb(bjGmPUD)Iv0 zE>Y7niZg-pKLj&Fpn&n*qVKq8UP#Y-$zc~Mrvp3KgU^#vKR7!4oVl#8C2y*+OL9f( z2Y3UwSLcl%#0bMYtK|2i324<{QH;ZvBC*=W>b4SR3%?JR$`#}yFk>Bh@QuNF7b=9Z zAZdro!E`1dNel?)m92@+JnBpK7*orkh>YLJDX$12{JswdyH^bB{Jp+3KCf4QgCntx zGctDx%hKE>#2L+Vfx$Ff2uvacScCoFfFE>s1AYkAG2n-N_Ao|G{E(zT3PY4UVn75J z^I2{nFw*|^)m2%VY|{Idv@`V9zRb}Z&Y7~05d^h~3vJDFp{<4sZ9y|^%b*V0Qmdqo zK@@BvRxj!VTa>hnIfVy0lBOoMnWeKAzU$8Yihq!jeA;~lU8DWyt|#`Z$6=+NELFDu z9E23=*A<{bNuF#(!zAh>-nAX#nE8+Xe~ULYdEY zR&Z!(@Y~LczxU|_tl#XkiES>G4A$Kw2}7`Au~t|u>6~F;|It>JG;VgHo+5eoY{9gq3|?T8fV0rK}j#3`8>ud5taK;GIpk! ziShNHMcR}>EG-wA{U2F$w%LE~uz3Nv4bXwsAJv)j(*SdIFwb&)IcpIHVk5et9R zzxMb@_&6x9YkS)Xm8i(^cYIkBp*S{P*T)<)F?o!qak8&4STWSOKE!4BlDdz3!fKkRILgz4z^ z)CvuEPyTZFq><-gD9%`ESD0TYv62rQfyC>{xi*$C+ar z>X&hZ4}fIE2+o2sAgVx}jAjL-H^qfW3|E=$B~%t^H(cEM8tL`j%U1>C8@q(j@^RRm zwDw?k8gKu;c=pa!E?MGxjV~ZqI-@K8Gh$5toSnZ)&NE1fMC|@z$M&-?apSoZH4P0i zMw5wB$G5c5*^$Qi;<-dd^sO1l-LUok;w6I#5B6y$u45FZ{FYMAIIn>e1~7z;Uwa{$ zl4cY{Q!Nq@>w&i=>D1=H+e2&G2Uqjvj^bJC`4Dk7FduOH79ApfhZe!_)W>0;hrgAG zERV3i?E96!(IfgZf0`9Dki8d*84{V1Qdu>_Ru`n$1q-l}%YfQNA^-I2KbiwwjwDe! z`e*TD5-nX7m5f*Jo$JzqnW9>&XB4ZR$w`M%e?|S&n|i-S`D;z*vX5ogcYm+xaum(I zf}L~$35rX|LuS#YSCjRD6IBscR~6Z7nZb}%!Q1*PG$kLYe|Svj-6_ao*sP)no$MjG zz-7?0r3#ez}y5EzDHrsTBYNH>5n#`LBSx? zXn=l|)}Dq1tDp`$A9zm$_G(>C1}TnV0_+($Cr0m(8c9Z3QLYi#RdH%@9#jb;TFlKr zO{5-58@GiKc7S0jTQmo=^><9u&4)}c>7VO6IEl)$tjLnEg}b7@optL2X3ku13lZdB0 z{H{z_0l8XCvP{$(d4n5Tc~kQK_F9aOv3~i0rGDoh!GQ=5h0`FoOR?E@?6bG5M@#}K zNBc@Qtu%GBX+Xr5&^LPt);&wqJGbqfv%dcKNqxpUm~1jM6;K#BSnpW2_2+QfAyp1a zL6kSBa6@cdbdNKS>bD&`pzu1=xL9cqmYJzFS;?oDsu%*;d@WS3qolx7Cm{SF`i8RjVlszMDD z=N!5S8)dEZ=ZlmGgNiJ{q3)S71&%V)|D6^mKcu`yvAy>_uz*CP5o`oYH$jvv(b*YP=8`I zxJppBGN1+bS#a#=1^J3I-|14<*4W!$!N_LXyMNot5T^820;^kp`_}~$P(aqgM}ixM zu{C46-mc8?_WHqNOUnp4$FGaP9$!c`j@fxrT`=5Gx107d8Z%_~XpqexVYzsc|?ItdF-FOQtbs;@)ugi_`z#Y+)nCBASgt(l^ zulbZ{N$RMnHRu;)#Hwz5cUKh;tm^7`U{yTGRh`GLC#sRI$_L@_&_Ql%ZWrTDQ}LF# zbDu?!G4LC{LMc?kYY6_&)P_^k%Mqd}axdwf*XOK&%pZKd$8k6|8~CLNa!}Rm98IIrP8@`Jq*9lt zJq>Y>LyV}T;Sd|&rP*PKbJR_jZRd%`FdJhK>Iwca8qkz6fOeun8U?aW5gmqM&YjzBm0$Gu4zc@5@ruh$j^-lma(m4UO4V8j0u*Pj-#|9)MCSt)uF4gV}U2 zUVn+ByD3Qu6uw4ju0Q0tuQ^c(!mtut+PLc6-shx1BJcJ3tL#y<9oKk$AS}x6@{R5y%NF(DHCUSJyVoyuA=%sE@pL?QMKI78 z<1$_tH2Xni4eBLGH+K}dm- zIu&sid=@(t;<-{)W+0%jd_Ocyon|SGL~_HvCUf8CkTIt+^~5XwI^4`pmDP_n}A>kA5+N-_=sN@De;gY z+Nc!aJ)C#Mc7*0${T>rx=mZ_BKY9WbEQH710Xe(_^m-_wUBpomf|sd}seboij@8F*Zb}rjw(c-ksF+FVTJhhEO{=aH9%ZU@u5LJVc~$ zIC62?cM|vosSiIt;csdw$fA+f<6yYOzgU&i(!B%OEza7DGbEvrEDB%|W7Ad-v^3Id z1U+2r7$AnBWEov@7&XT%L|8$SCdxj6bl_FB$Rw&*#=MTVtBDOD+cCPy9QnD1&H(CB zm&W{dCsxX3aW=Em5Axra)?xS*8j9jdZd8k#ZS}8fe?`xtCDfAL`ZO*Fq*~|YG?UHD zbD_KWlaa&cmlei?Zht~=30H+yN2LBM4OjmrZDZ zq>z@xK3b)ti;^lL?FFdOK)QxziAfrzv1sR8%?Jy*NYHnFhc};V<8!UoT{!x>c0R&y zwXRp$R2@Wag~dBwYjAg5%bUd#PS?}ZY=~xX>36ol+agir5+c8q#Y7!0D?-W}Z0Rd3 z?ha=v)+}X^Fg+(}s6m(5qLZ1&qo-JjoJ)Pw0;WlT&uN4^dI7`QRX^!ms&bw$P+FE6 zn|W~LJZq$na~;6UL;_y+TBpA^XuyxgrzV4DaR>b|5&IN4e`R%ThrYU?jeH%7ngu8Ym*Rr^C+ay|8; z@z%3W=ti}xo!CY&=z!yin1*NZ=n?&P&%Oi;Jfche$kPVtL=MBKF?k4k3NrO$j4P)f zXC--hlS>3brw4k)&fYmhBXn!No*hg>AwuH=@{&@fLyEWWdj=Ow5_CoY61~hGVEH06h3y06k?q?WJdvKJY~kz-oApe<*_Y4FcAFH#KDj$He=RE* zlBp^N%msMe8Cy4H1g!X=vU@cdzf`i`w2}M*s>HvwajuELXYD7`F5yItQQo0c6UiWT zvNsW{+5^EdxxvJ*ARElg^#Z?Ro>*MPLEQCSXA#*J=^XZE$V( zT#s}%a9*)sEe@9^08w<3p8N>M*3D1z1AgS=zr+yUbTMGo#iGNgLJp!Zs&wqW*Y2YS zeUSTA(-h*Xe*N&$F(?=|RwCuu^4T${UEt z+@=$LWmE77*b}dK%Ic1F;wtw@wRi`;(}ejMQrWx^(vkSq2TumgFt@U)sM2h3riD-jA5tpa{ag^Y;%Je_X2j__< zjKm0IxQ5d<6#;JJWbPFR>ik=bqSvGvENOjtX7`8#jqB@;S)Nvtt1gWLJ> zN8iBv6WjZ}tm64`?YF$0=9cP?YrpTWVdeKv>k=DQ{ta7p>M6R`mhm_aUw-GUOJ5%E zOX3ZOFMsHloToADmUicEK%e;j9Yw3MO|>WZC47yS!#;o0_s6x@FZKDVPefa}&#&{> zaLn`>W;3k(T3?Q~47D4+e1|VRYMPc$q-9=#@esT3RcYQ1U=JNnqJR^BY5{Oi4_JdN z+!MHz&n(v>WP(y0BOyw80@DCjFy`K*SJ8pnc+_5xJ=nmn zdp&HXN6)n&k=B!PVV3CnxPV=`iYG{&^*tvf6`e!V>@dT~Z;8q#L@IiD{g@J^p?c~m zR)|2;i2#H*MQzSNKm!wo1Z%08@%AR-F`bb&9tCqC4j{yd5<7Q_;9m9f0C$-T z@96QYBWmQ;2S5Fc-2<*4xc<9oGS6mc6Y~B}aQJ_8`I0!RzMAY7wxP?eE@Q zkO8k^1|WO9V)<%P2gTt6%m@&(+iWZTi#?YECeLND&I6u7um zUY!mW$OIvHA;WU%&y`+0j+u*L9$W~Jo-2BSWg-?+C_!bM^rX&j-zbmj|3H;;kit2t z;2u;5asG)Ouh1u;H?s_fX- z9@ZkI^}`1SvS=cotO7$ApPR!l6F)jWkI6rS|{cY^^+$EiBFf-A>|;yq6hE z765FO%tJZ`M*AhB?-_iG6BJYBz1dU=NFhigrb=AtfmlHS(g!SC>KrY^kdKT(c5`oamvW)Di>ZvZ)jX-|1ze~Ko^MU^d?=?__DIyD zpCMO+3TrK!Q!NYBLdkjFQ%l2zTEJ}$blS)Xbb+#6~Qgac?r!N zD2SZ7nCb&cco-y*pcDar7dZlyiZBy6yuEnBZ?(?!>Z_p%jDYBu_)wdKxD1H5IxnNq zFD^%wvZK}7@TRdx)LQ@Z)0TST5@zKfoTY#lJ@+&FvSfy?AC9r0PRYeZ;Yl%~zjH2& zY(f{mJ*Xb|4r!4Z-g+x?$?@Jp36f7|9RmVa)`Babnt7NRh!Rt11V|Zw*2lBrsLv>{ zuC%9YYv1aVla+anUMch{DkCveL!DG@3#rcbUb_JB6=10PZ!sH0)$M)0fDGgo{&qt7 zyD1pKPotHn>?egnsszZ?Zw@E8K*C`oFAA0a0eA2sJMUYv_ouyTpq-QtHDav(3Zk82 z7fUv0YpNezTd~{_)Cm;nFCvO7{)35O0XQ7z-HNPprG-)+?!!qcs$A!g11p3S2xrVr z9BGdvhoX}4zS4TjgOT`%$Y+5L+m%qkBS2!GHh~gOQMCu-6EtSJXS)Z>wijjr?oUhm z4o$^{S>SaT>CNQ?LcsNHh;JE1&}jN3mx*p>+cER1{!WXhNee=MH+BRJWxd9%AF-MU za7fC{zOdwz0%al~J;G-IaprF$E|qgJdWr4`tk41Zcn->kOllN?=3*3a)dz8y96k3` z&HCmib+FkcIHc-0qujwIY&v+622XJ6DVqk}MfNq!07o2dN*B?5q~yky(nXL*+AZB= zK`nCG9VdEWnn+W={A8>!s9T&5!dRq*pI}G#5B=zqv8EpPWUR@=FTe>!m%dEAreN`vVu-0b~{XD zHs+@rr~|W&x9f6ar4rd*GkTZjoWTtrU?hw^{YR;Gk=F3{Tn_(sR?7NetoUI;qcx-z z?EH(T(*cMQLIJf!=Tx|*-|6E&MK~jk z$3|m^Hr343cX7OpTf5hqM`lC1uLlI$u4`t=IQe_Cpo~>d}Ido`I?@C>2|fd+v3#--v?-7{o^)wxbcRU7dVP3|ovR zA$Mz~+P~vvS7}IEi5EYTWlyw&P~QX*|2Wh|ORY8vZjcSN1=@m2Jt8P@(DVhF=Vub= z2Uu3p-h8|?fFBASald@OmYrP@z>gAMe_>U4gMbKCvbHvK8Ugf(b)QzYQ&=HSMgxFX zgFgR2_izN+fyPL0Ho5~(e$8vR2-(a9n%V&FPPK`kyX z)al$qymYY>hL2`vQn4*ge{^G+CEkrOV5qtZ^OJPt5J@%93Zd{vDu_vl6#12cZpe!B zZZNzLhU;IL;}k1w4VYu{JUACe{0s1FHlLj-hKBR$S<~o`&5|qt?B}evc8tr^4C(R5 zJlQRGI|mMd>@es_Ycjhmm)MLYEX?+km^elc%k*VAk+DV-0h6JL0M_D6^xI?4C=Bvt z-H_nJcg7L%j^r3r3^_*{rDNlvmkW$b)59HH4#&pt7bG9<#XNwIx4S=sN8<;a)7MVZ z^Rbzh4zk6ho!~;;zzi4Q+Fw!Cq1}cMt*C16uqrIi&=@Uu06ILk708!}b41T1gHI?C z)QySbJtx};1Ub#t@Af$BqI8GyBA)Mg)a4XHBgB5>nHMTNVA~@oMVxto0<%R;jdexJ z4_2pImN{O~52a!(*0MYD0<@~{-oQf{D(>Gn>;m(Qzc`J;>OusHkR=KhArI8sE-0Fhx&TOV3PlhRLbX8a2wK0H+xE85@RkR( zlhznR7yAL?-SD`&_>RQL*vJYGL8I0AP8^AM3#V6yefL1T8~UV)YlsJ(a+f-Q+V`L| zXmLAcjSpnAM)n0B-Q(oiVN|BAW4X*MEf&@v6}{`Tx04y6eqH3Z4wajAzzX6OTJ-D5 z+Q136>1|}ch7x#)qO;LH{OOTzV^502B^)b+l^*`#ZCEApx9buU*x)j(n49){emjxh zHtFqrIG}VOe93RSw+rd*rtm-^UbR&9{fDrTU2Y`p6LcH zq1NtqMBUrP^!6;tZ^(7+n|wW)tInM3JQrI?NbTkK^12(-`RVKDxnd%nLHnu8Z&~X0 z1?lyLGq9z^iMT)tKzlTN%~J0freKf&x}un?rGITO@ETb!ES4j_!ZB&y7(*)33QT0T z#BOCyjB+?_>!6?}U|yYxDqn`uGI=h)U?xe`Z~ z@a2PF=uOt|KQ8TWWZgsOAfNRIPZ5N?uJ=axN6{Hsv$1Cp)>?lWBbb(&V5I6OIa2{O ztZT=20WR){tq=n6y76>%iE$`!+5sqnL=AmH#yQM7&_ z3@kxuCOJtnO*Fmnb#C5X?_Znd7-RSy$z7E~vNAs-wktSS)dn#%S7Ydn+Um1pCW5E# zQ!^R@qpcS0%DIRHaQV@E5I#PS3KQaB!WSj@rt6V$2s<1#0wF#WXz?ZLJHjQxh>}hK zuGjajA`vyUQz5)s(F1W7vLPb{3IPo_Z867x&7F87QK!jBkX(^0%`n4%gdLiRKOIgv zGy`BvO5WAkos*hQTo6QQF{)sxqhSK;56b#>8fRHJ&X(ZUm>h^*>N+zpwsqZq6y!W0*-Kk6PnpgwZ$DP>T7qG3DBT1Ybj_WCeTed{_tV99#T^Yy8e1}pMjK2|No z`)0zVB8(`m6zp1=n_=swx=^kS~C^JDS|Nj$AFUN z26*<8`fxpp%M|*i7YQ1f4W|iP1;_fE%!)i*(&NM+ky9e78yl z!oArbUMcLcZo^B01tU{l;RV_%OL;>Xy%LZ?dC$PN8^!$c62e*^t;&|ftQ z+Yp61*j_b+Z8s@DA?Ww_()Ow+3ZVjL3aJf(&GeEqEB1h#>gI+%-S|d$nnV&`*(>|T z87Z`m6nKvXWS7GNDY9x!?8hP{WncL<*k@zG8u!tpQ46fmcO= z6hbv@;tmVsSg2P=ffPnHEbwUyprKmBe~khulxkSu^A=E%p}C*&qyDx zBkXP}mdywp{?P(_V-3F(H86!zlJ*C_N#q5gpIvO0ih!vP_NuX=B8bTZg2)%dc|=%e z5G0LAO?r;G0FY>@FiaFBPD?YU>aVWhE{I8-JyX9%3!($ci_-?YDPX^g$vmc`{(j z9YrOhkxC`vdB1V8d&LRTh~c=gEV-f~)89N66r?zN&6AibOQeF0oah2sHc*YiLq$$M z5@95lE2ToYFiaK=DG@etK^s`ej&D;%xxt5c^&s&&!u35V!zC^e(%fh>QR9!UVOeh+ zM(B>+IlXL~UZ!|7MC@>|^y*%}L}_SC8M81NYxf->-DEN?4lr2H4ko~fh#K$hf`am0 zF-L#nIGYlol-qs?fN3vd#J}f_HBEdPDjC)i)$)hlVJJJi%dp{j9$;4l1GsTTH*x3o z#;_mrG2kylW(4lK268x1(1A zh15~9Rm|s6^W02evGNjmcna0Ktc+4zc}S;?}CBj+MmBI!<_sb!2+yUS7xY9qTxLsSbL7Tzk!{ z0jlDB0N_nCD{0`X|B{bpyN{OOBr^j7UESaMGR2NbAaQ4H)OM{jJ&{F%=pxrsT2d~Z zEaHe$Lp_}5K`y&gGiV(5t}%Lg%-L)PMd%igNf9*~<2sDnUONE$VmU}CGfqN8gOYY} z+q0|)sGRF3MQjhlwG;Il3D@R;&<|qegP`sVM0e2wMkFbkhn7)Gee(%yY>^P~i#8>e zMo7@%ppfH}`O`PN>|D=@cnQFtsWYp!-uYHjg5tI30W`Eufh%X0;_v0o?>NW&KX$MiM}zTRr$b z|8H;adM&H$n*`kY5}R+Z26E8FN|(1NO9NwkgZ^TD+b^I`+x$TwehoDny&iC#A55=j z{5)8g11W??C=l!Brm98Yfg5cwCPXkmV-MMcl-be`fIb=Oz2yKhBCFC_{YTU zofH!I41hCRAsNp!2ik9!G(rs{eUy_P!Bj8PXzwf&=Gh^5yW8ZiKEw_Z44LA|?6H<0 za#3PXtrrajrAL6lXb~iNOmbok=J0nBATnu3`t`8rR%A^9ZsExqc>YrW-QMF%GO_#IYnmg;EV*EzvHqcn_9d*K-iv;FCp}5pkeI|9vT@LMjFetm_qqTA zi#irnVwAMNi#24UYj;0Jt^P^1a@i2IdUi{fAgDiI1i+KfG#E49H)I(NM@{mj%15vN z0Gampgq35H`mwoxxHQbSQRPHFjTAua;oSlXVlLzd^;hdT;&vGv#^kU%0ou8W83JC) z+7S<}FFTxibK?vOSIqtI$Ci6q`>55+(&(0%i-5yedo}OsTO;>69u$TbU1!CAm5wSa zLSv|Szs0VKKno|1f@|w{JUzMrF$x+-kdg$8Ka=f^xj5y}K|$2^Htoq}{W}ImVqXU7 zB$)J6V-;V8g{~1DYKEcx*e@iQU-=_R!BRe6=^;$%V11vBLT%x`&xxxV8N!=EsKAv zPwzF3$v`{cl<9`RW!M2d_=58pee5hDJVK5K{CUx40`r}Ueb9KBhTH$PUW06W5O>VE zO>gTTaQ_gp7g)aaHQevx9#vrLtGGXe@W>{#p^b#F8|9aR^R8zKS4q&}alwwa2;^e- z)^nuUJ^ex>hY$zW!wRK7%><;4=5SQI@+aDPPa3r1hJB!?hV4doA^tst5ni|VXw5W5 z6fI1i&C=-mjpO7ST-Q@TWo(;te!A_y=+xr2PyHITQ0jlO0bJ+Xn(21U&fyCkmT+5= zFJdQ?<;~E@e7onBqh2TSx(K!%xxP<#KddYzf21g3di6GIcYeBJPL5G7sQq33M ziA2?hD1?P}f+E$bk_tu&LtiNzau=nc9pEK3f|TuT*MN>DA7!ObF-&Eyi1k*PezYlN zOuCf;OHto=qJ)`~QzbT%XnHKUCff}7-I|n??%@cqPtgi2vgFg!AcsgT8a)%i$hcui zz=l{wu!lzY*dp6rjR_;V#2|9hz0sy~o4uql%5bo}-d0r;$-1$-3r0rNUkXQvg^}p_ zZdU48{eA?IjlJE(Noj0P^xQ&BOQz?OX#sI&3?0F0q2M72VO46G1*csb26AY7@JlSs zs59{99&R2U;KtVAtOz=6l#c+BRu_cMVF!TnM4BKV3An&S6(c-JLEXuI2Nf}J!9bv|w&&VnfmnS-NSb-)Ob0Sco zf4epv-TEw3<+t`64G~K|1%Tv*n1H!lq(m8-b(lml1S8Er05dAiq-njDe!jU3&`TE` zeG2KhG-YepWs}nF0MihZm$fDK?o0iY?+x9EYWfnjU~IVApgWV~edT-AW2(O^#)QNO z=79{uC(Q(d;5)b+`-uD?LM@Hbvaj0yu^Z5U&FvQ9J%3Hfllv5HNChMh4BsoY@JTpB zK-2GM06$3w0rWP;G*oJ|R-pC)@g)aAU?eL#$kpRJ2vjc+ULMaufWb-S7yt&6D2l+l zC2MhV#i*ZveEkZbJx2ah@Dsoe>dsi**Mk5ct5##RZ#ox2ya`tinuOrzwJHtf4WK`Hb3&vi2$2blQ5p=H?YxlQ zlB9IsFeN}1@7SiC=qe~^w;2K5 zIxVTi?MTPF!&gp1NA(~=9wloOw?`q1$FaA0Rzv0v&uo@BmF597IC?I~J4{kgSjVDO zgiIY?-Bg9ku8@wv_J&M2@Oxi4z}{RXS3tAEKq*ZKy3jcRCW^8$J-OC*>(he`WKb#F zhu?6E4WzJ=<*%-PV|o?lo8_av-+ePr zlD~Up+1pZ=sf5jG(ECJ(RBgnZl#0&qxtUiC&x=U%KnIru8x--u`0A?1{`g4f?jI=_ z2`twjm?0xHg9$gWkF_Vg=%{7 z@MoJxU@$xJg#zLN44%NjKOCK-n0FbI+kY`HiS zH9HoB)^yq|84RURsanW3Jut6!*Sw1$$pcLfv6;8+ZQsROq*UMf>&EWaUyO5ZM<11+ zY@7Z8{p#PZQ`9Yn^k&s{Sk{_VTTi-j>tn^smmv0%xiu^lj`RqVI@YHQ=J5dX>SoOq zgIR$*yY$I&AQSFOIxi%xu{8Be(rhG4K#q&tE4>$?Y&1R6uXtwt4#+@#eIIdaDd`HL z7O}dkkAS91KEfCbt6EIqe#y&|cGoDai4H{LhDZ`p$T(#Uo#(s0lD`za_o8-U2e*?P zxyXYTHRI26o($o-Gpt~4Ue)+8{_OSj8>Us>PaA{}X!C&CsKPz7MfJ>AXGX#feeerB zpeyrSkkp%|xAjhaAy6t!1OhdLDG^Jz`;m!tdI;ikSRNC|QwkhWNSzw?XF&SVzl3OM z71AscuB@^HG`WCg>VG_`e(X42(%GVY=?fFkV*$@}KY12X3NYh5ixpE5LJnquJWvvw zJ60kL>c{42j|46^9hamP8)v^iwbciEAmogxQ}pZby8ftVJ_Ju;eRmuNIDk*%My~Xb zj^T`jjANEd2#}ym$a#tNQ2R}(qX;Lluh*kcdUuxEv+Bpld%$87r%Y%QMV2bsI!;BD z>t{HMf(%tS5VxvwaZ@&zK)A-VUP0O_wF9In^kAY~W9J6pCRN*9!Wg(Kz0;l!j*b3H zK`G581nhph*uHwKUrtUcC5^XV#=K{Cgs&Ipu#&%7oO1~v`UaO(1l$<#W~gma&c8#E zUi&5AArR`?==+Oj_xlX9thT{^`;YPLD?US;P}}dfUkEE=zfE;S{k?Wv`1X8;r6mT_ zBdCRVigwI!*9ZtH8FjDS_f{CeK@Yu8iPA%`MgPlih*>(L@YImdO$a=T6eBRjiGUn5 z4P^lwL8)TpDMyrO{0JLmXk`EwKFRq#VX^a}6Za>W70bqgfT%~~{bNe?E4w|}e)7&+ ziWUm6R1b{HFWGQ^MzMy=y_9f?p=@UMA9r{)$@k6sH7r0jWw=POP4NKBk4>O@usxz~ zuYClE4D~^f>9O6=1~%GLM^kj(!aTC*k5Gq2G~-J>{_(nHDnhztJx|oF)R9*o4u~yv zWDZD8Kt z%Eh6fWETtrctI}_`C7wN%CkAc#%Isw`u3L$rac@2)n?i(7}_I4W-tc$q6u=N08z=c(BT`!f69<}+)LVaAWlFq>_9*H#3KMaR4b+x zlEgOwSW+EDJRbxdSMfY0|sPI^dpTnGERAQPtB@nLQ;57kCS4 ztFJvVDmCHu*mXV}+uD=V(rr=?*6+e$#S-;Jl{S4OaV%aGjFvJVUT-f9FXM7)jE-q9 z>)!)Ad~{{W;A6t0Pu;zZL?og^W4xyp`y9wS8QH1DwfU9`PA%SI1y%mI+ss0j_-MgY z4E!ZA10l8zHL^2{+a+LKXx}q1KfHeCZ~n)_`1-RPlY-C_H1H_+o?ibf@ts4OBFCx* zSPgvrgcxr)Az`_3d2T3$$e-q)%`P>r4V%HZ%pL_- zu`!Y4xI4dCucq>0^)|Bx`Hhn}HGYLgAMTlHOc!4=_X)zKH6-s${SOm#U`k?@jk`o0 zL+cB;27N=^cX^-Bh2?!71JHxx3Y^dbO*P4PBV|PJb}a5!!=GzIGHq;~`kbhgv5jFp z139fy)2I{!6qJ4_1VtoY)b!0``4P+fv&VDCSZpeJe%zM_ueLY2wPYaodm2lI)gM&V zc%t7!zp?qI&2?Al>Mgm;bAUKS6bK%g(3^Fi@naJpRqLB~C|qM3pM6~MNHV`cu?d36 zYTE!c=E5<(zF0R`Fh?dzgV&a@xsJAV)Nk@SY2T!@FA=+5G6yko7p7^;!jb3D>C`L< z%hEwamD6Amg08;j=}XeF^zMJE$rF%a7)oaz}@ zk^jyG>vbNWZq{#--Elk$tEj&Fgk~}lf~QYiF}B&&FcP$oYA^-Ic>PLLV?O>n*y>Yl z{Bzx>%8QIKbvz9;#`s4~^p1Ygw;;eO0yN{QgI`8UN`NBf^)&t@lzvA}6PRoREn9aw zbo$X((wu;nEb+u{UdR&8IqHtjmX^tU2He`U^)bgD$07xvPxbK4lBw;@9v2UOu^_t+ z^nnM*#)JR096mTE9{fA(g1JN;55kXM$%ZP6_peVF@3^PCd_QYp3{y@I1{04+)ZvMHTM3uwv@hK&4rom~(zmCCPs1^bF!p zk#E$_m^x(>Ck=Bm&kCl7L=QtGNXUSu77-Mn>}ik~E}JQdAgW~$St4R4U0kH+pn1H1 z`V`LOCJq(~D`Styp85`?cGi!9k&tR=2}=wdJEB1a8v*J7qAQlAd1NV5(`*f20Aw;X^8p69wmefZ%*5JF+*v+ZFoTF<0B;V=yvn=p%zeM z17opsL>BNFE-=cKHKpCW%WJw)bd7z%RTy5>$4LN^tY9H1vEx;IBizVc$sS!Bfot(@ zHoZfZvbT_|eAs!~5{wLYMzIC1Ojuj+61npltTkV$QmoNlgVqpBgCQd7B^D8Yt2CX3 zaLUW&34^rAA-TcMC0NLR>BHpfqO$Z^COsUj$M&J+d4=ifg#c%NWJI|Dz# zVl$V+Kt44{f9B!&k+2s)rqn>};1RmZB~?noqD>n#In0tm`IT8xNM_mXu>KbYHA5EE z_kYQ;{)>V7U}OezZjTCTAoxE3s54gY`IiOtLr;v=;Qmho)a)gU-Le?RpdZkRiu8qp zEObBuvI#L+7f@3=k0Jy{CVG@(LAClm?t!3aF4a;kL6FA7ewz)P#?wg(j(Uz~mDMh( zoCkn%32my65stnr9R^yed_`Q6jb(WpCU56)1Q~LG){vY8=|oN>f+u(0=fqFpyid;z zwSQVDXAWlyz8Gm6lwAu_^H;kD2)z!t7B(5@g2ir{FIG#(f<+4HP(=|Tf?3E*8o(iDV)-Bk zyGfx{F}Cp3WaL_h$-L96uRNJMw6SL(wH4F zsk5_eo?Yb+K0@|igKTkl=kz0;flLcFLfWL*2GEGV{xB}2`eT@Wu*8C{DM~?!0? zjal?q8Zb7l!ZQ#yaiM6#CCepA-0_GdTG< zRspA%WRf!@+TKhOj>BL!vwPV*j3E&^4_e%qhkP7DOadM)<>xQ}_M8N4hItZjzBmbS z@-D~m4ksbb06vWeX%fPGET#Nj)#8!==vhwwGFg<9U8u}>%U<{?b)dM57#RYf&t5g5Z#3@4 zwQR(l$%oQics(KiL~eNSJob$EJo$wPkVd33us zE82bEAew$tdzTjka4GA1SBX%ZZ&q+{vf2@LF==+-Qc>^Io0V{>;TcnMCYMA1=<&@Q zHSJ11iwCdd8z&ET;hE1Oh;-3ALj*hydJNhcs|uqUKS-(JQ6$>&)-eVy8|r()tcNOv zNz)|}uCQZ_-V3CJzY^;>Jd-2TS39f50~HT1x%{L@>-@oq|HjpH0=l)3@*jwOP;Sib z`M?^3=y{EZBr#YR#$Rb=84?F5vVj!&cj%wY$DF1G84qb-BR#}Oxd zxwxHf*vh#%H7&RB!Z5(FnA)=bRzzQ5$k26#Fazdqtj@JFvBpEa%B`mr?h5U?!?+0s zgI-|?hGm64M^ipkkO~QkAxG)u1v;|972PzfzL5r6`Q@<8zq?DV*KAUc`5|5fG}NNJpXo zke1#Mf=-}7grJx0>p9#cLeR@(jWs}&BZ)Db5~G^ZpMxzX&t;0u{#B;*=ln7N9%H#E zU$(D}dSv(6V7MjKf>2{E3r=#HE^28~EzT2j$fP)6g+P8GledH*Gb>-uXn)XMYmg!2 zW89x9=s#OaXc|7|J~pN@0uhHPH^MCN0DaFg^S$2ke;m%(A3dCrp23GWoRJ&g8}T!N z@H-NwzkrYE-$h|4A|DQvh7XoXGRX)VeGg~!sYb2taK>Isv@%cA9&ra3i{_#@oH3?} z!x?++yZ7hA8EGgEXJiXICw$V|twJ;YONTS22cqwusx4f|;+QMhanZwj=K4ejB%>C) zK4(0qF}RT)SjLw(1VmP!UL3{PQ^W$?91j>NgS%vTfP3hMGme?w18!tLorLNt2tZu= za}&;iCnOcm^*eHoE`1}hR!tew^exzyB;A~ zxLZ+{8hG28J9301TGE|lY=XkM1ZJU0#{bcWGl`I5`Dh7dFST>B#!G*$?kzG|q?L7p z5LibvqR7H4|4cS@vnGWm@(K^+RQ;{v!_10hvYF6lOR1*e0E)QtOw{PYwz*>zn_snQCJ}#`4 z6tp%FjO%u43~4OKbwRL`&3ihUh#ec89KGG*#2Jp)?*$_rX@zP4E2TVv^fRByh>d-q zuYI8VM;~JpDYUxYi(ODjh9RRc)ZaTU1#0m&oOGeBhbTn2V_@&u?8hD8tj3DGt$xRe ztwGcH0P8DiB5ruDP9HZE*tMv&~PwJJhsZGt)b%2NSWg)Ez z4y#>81h*xzPPW^f1{=MOaoKr{63#%CIv^v)&9rZ;W+%1 z(g=ddaI5&Y%KeHdc%XjghJ=u8k$6V=)!qP+797Nz`qCGopFERCd})9wBeRq@+16|uLCrbGN)0~KTTVrWCyv)YB<6!^=>Ttt9I1bwvxS?n7ywmU zaV8uQ5h8lWWA=iww^~ERZ0-=&n{Cai;g5xF&FbL~2>O|P7hDCDclwYvz~!*UfN8<` z$T!n7@hBix(g>M>qZpO3K_X<_*+ew_5+~Q{sw!A93@b1l&3jw@isK?6(hzMLKo5=A zD2(@#PStvpevm-I!`J|q6>;%XELUFQgxv|*i^yY+W0c;ZB(kv!Qv~oHi|FmiX6lN; zw9(tsj~Bg-$mR0kBNYQf2hz5&jfc0j#xD-;}b{p1KAW(a&06QDgNNoA zKC1($)!&MIYgfwgzwxt^m$6N>nvTEL4A2d&+OI`=e6& zK?ta0%Hy`lvroGY8emA;ue$w1Jg`eVV1_evz*r?*&2+tImY9(hJmF03+fQG%SN47F2}BZm?v)&Utu0|g9obwKb?_Q>qZ8(al2LJDUW zgmP7>$`3H()_*1>t1jarkHJD07S@VMerd39X~|HN!J^9x2^}ga2~f|YLyYxYE~o`( z@sRypkk@D`*6E>840%d(Hg<@dlHCq9G+1pCl~(c=owkidc5@k9)o!2(jw&QXx_%5R zwW;Q@R!BDZfLiHc8V@6b%SC7M?!H)^(Utmcnf%T&VLY14 z6uNSEWIEm#${FVvhJ|7=Tr6pk#(Eu~RY)zzl*rLSRfE8Fst_v97R+aRJNusr{&s)? zQX7mVAe$5m1>`)Jw04`cc16p5yf~9eJQE`k&*ZDv!jrH~;yO5RN*uO_yqWqSTU3g& z4|GM`WBNII_x%L9znMSv^(XS|sWd6RZHbkd+Cy@VkSAFRkR&yBQZcBuON@O4WGw_9 z$2Jy1a~}K~dh-kXCPC#M@AsRi;MUc}QC{8Hz532Dk`ra3+je|dn|+XoKwqkieM?SK z1G`H2)g_m~V1myBJd|T$9^k)A5oa;Y)VF*5GBX1Wc1|yV10r+!0UVA87p5bj*;A=F zPSt=Jl*f?{da)Ey#1;I#gO*2i!hb&1ig>Ldh6;gWQsxrL>3Y^bvRf=E!0eWq(eBxo z989I`&3M6tIG5z8<03kXsEgs?K=&9lZZ+aCVqgTViK1#^RTh%Epogor@_w@Zn|;&(<+XbYS_&T0t8 zSNUQ2vO$UgC52S4){> zf*OoulBq^A$y8gHGRah1momvz$-GCy@_wXI>_4NKWKhpo>tvGAA7~~Sf&?`4Fer=0jQV3VX0sUnCukz_4%!c1Oj{W-1*g5WZ4u@Wb!Z@hzx5Y1Qz>4s%3i?Kx`R~6GBbEPo4M0Tz9ug6>^>x|VXLNjj$vhS$0bPSlPX&ClJ*Wrbnv-Bz z)6u6EpY8L3$K^6G9lpcc10|$^&Ms*nTP@VsQz%Wia6}PxXGXK+(uq5u8sJn4>|W_x z0S29AC((;+gUw~MWsMYJxn!U6uz$>Al!cYLAo_7S6OD{^0#r=(NhqL+kjCM_Ww?iv zyodbg;LC3Cqay}C6y=5^2H~U1izu$^eq>ych^K`p3c(5{=5~eX_Sja*=G*V@ zKX<*m1lp-f5S+=VyNh2)tGn=GUUe2f+0s|?pzrI^=S{`NzIdd>ebhIKu21RBNV6`$ zv!SW|X9GxEb0pTVhniLphDot9-Kp@U`xfJ+_r?HqTdW$@(+8h4zmO|g!`RX z&)DTxW#i6Rhu~mh-+r*9In=o))x@pfNXE~;L^Yo15o^{WG!g#oX%BzKEc5JDdUYYf z^bc#teSe-d*fO96M#E(jbb{r}&I9|HbZ@XC_5_C~(+`1||37Ped)HD0I%cULMZ+JZ z0^H@{8`b#oE3e!-y|t)6sIM1K^*aC51E2o}0GoLG*2l`1&yoE~OHDI%*OVs}$ghL$OUda6B;&`ii>1DAb&q%VD)U}xHacf|4NQE;^&r5d}#QW(1PFn!0H zhBpx33%OkRX6v}188;UCBAPJD=k38#A1d~o-a9`YO^!Y~Hy$}QYj%(JW^$PK34*T(RGch{`)Gaaigw?AT(;nL2|)1 zh~@4}&mN4gNAqR*21}0|TTrA)mMX`P_W&F>+u80AdvaqxL&V;@!cA^ap!cx=`33XO zwlF6KhnqHcZLctw*fT38uE_e=9{gZ(M+9AUikzo@{XI6;gp))!DENyBkrqH(?$)t{ z=h*wiT6ewbx#;!irisDWmks}=9YVs~?KJkHa92RDSkOEs!*kUo$&w`Nj8SRM80g$* zOFkkJ6rg?NA(CZ;iJ6{3`|)E)Im0FK+KTX%Y7r1&x7th+?W+VRx~b1l@XPj}ATtwE zenqiMpR+zCGVyg3k<##D_oXl7hOJ4fr^d%8%4&RKBDVk5x1QMT@jZ>04FWe_`*aja zl2@_`ph|Uw@Vt7wDvF}4*qUR61nWBVRam(IRmS3K4Tu)`O)}&S->ivT!s(&#|LjSm z?Totp)92e2KYcvwpE`P`dx;+#_%ZXtsIzZZP~iz6??D@>;9m`74ea8)93ZAWKZA+Ys%0}IPjzwGG%y?UAaJHJg|o=E`xc? z(#E)BqPDJj)fI#CGAYs4W4z@7@2jo#tC~JPo8H#uRhJDa3STkkQ-pHIzpANxHI`mA zeLnZ4U;16V%-`|yib3z_-}R`JDz50hqT(x>-W4<7tVn(no|!t~Y)%1#%d?$#0i!eB z^~c2Z-Z|-_T9EE>-GK9)Ozlul9V(&w&km;A&;Ipi-~3;8v}=Al`B?fZT`;Ray*^k3 zpaStC6VZ%rmYK(Mv&@Wsse2nQrKChVE4IH1ME&cQTFnleo@rCDrdYx&}4=H+wQ zFU<@?a|sr)K*Z#E1MWA|+g0weICP(5OUDQ>z;3sk+S}2R6zRcdZpBRSoGe9|rZTzp zVN@fU013GCXTT6373^KEpgdm7%s-knTEw0b5@DhV=tn`02~a_@f&yUm-jiLi{(?3u zyl+tK6Dx?l@WwA6U!9iDNYFoO@y&c#eolB)bWjh*L8@}S8AUb|9kxlj%=>VTovo{DQbUbyz*wa&s{3H5Xpb+{xx|BRl zO)}Nd+9oNSyJOKxQ`iCz=j%V2)72sei^vkX`6qJ?5se`ku|ZLLmTSL%jua(iqi<%_ z)tH(wR~{e32ZIad?ZWgmHVns0Hw06rkISlu&s)D?-*|4t<+->NkeV4?Q7PmGC%A$O zo_-}EQgax9Gv=8==X1eZeI6y(7Q#uMiW7|hS5NuQWy=6FXLd+&Z>@R6iE(#5ydUXQuv9COU^9%DKt-VE3q;urmk!7CYJ zfmXQVr38QCwtkgIj(>K+Gze-(5<-MVh`6#o9RxgJbVdNR5WgGEDLAJY=f)bt17-!} zQi}CsRVzxv4_&Dc;xV`g5u0gue@1xS!>N$D8`|GNjL5<<#9j^P=O+*&zU*ejJ|GAE zws6Btdoyt?SFGR!m0(W^Cd>B2!$Bl!+Iy+!zpYNe!H2UKtn8IV@grLcgxddH)`Ibf zndu+WTCiJA8ES6lbc1HO6J6DA&lwb`A?oDP&yepLke-LMNpV;jE^b*fB+jAU3^FY0 zW5AEfk_I=rZQwvH+$TC6k^p32#u`W@__NTwjK0_Nqke2(2UXM6&99o0wbf>R_isSR zERnY4AkF(@8?89K4@1Aj^%Aaybw_PBM4BiTGLxhog&j3S5Ogdt$?W(&mY1l+3_{P1 zTZ8W&LkA$s(M_Uu1E2dtlKG2NlB{Zzi|w<9iM5F0_O|;cWG);t2Be!dZA9P_DNWGj z{`OKXQ+j$?iR57<4Bwl2Vn;j?K?qlv^0euYC$2=%umN_0pSL*ErZZ9)Cuc997}#@$ zb-Vq_Z{A-UWXEGyMT5`+>k46YiF;Fx8mC2>jlznkQE=>#Go{pY7hxiI7A2%^pYsA` z2#7-a#9R5`nW+w~ltp_6eLp8?1pz(n&UNQtT7^OMl-ZrQ)KFh23SaB75`I_p$JMK5 zpvZK33F!!)E!PNal!qj2?22l@>3OaCxtg_VNn=TCbAR}l9*W{@F=iu z)NB5_Pt2t(hK{CK$5rrqQ0%yLQY`kG}#ge7WE-AH7xH2dOPCnR+keg3_Bj zV2<>p9W51Fa0V+FzJ9rX)JQlETz*B(1E4q?@cd}2w};! zV;Gj#jJKLf6p724SZmBO38o66d}4!tHZ~8Ff8i?bHLpKLXhf1W52_K$=ga11x8p*Y znQM1^nkab$4Ca9+4e91!^xw&PI@;=twd|{^qh^le4DTVFgf`pRTNSi&vj}1L2ZyIF zT^fPHwjWAuhq$|1_RRuH16&U{tJGe229`TJbC8G{m}eyF;1HiH#vk|7A>4fp#a`HJ z_|p3WAlR4&s%Zr4qCc~1Z3!&q7iI3#1VLfzLEnzT%axwke_n!05}gDw!I$wf4G_VN z+}Wh0v=L_uQf#va^Wk#!ykuY9421c$37YX5$EUY>jJ_kjS~Qmo_znswSQV~?^dSBj zX0URhET#=X`S>L^VaH}&o5T5~+IU`6L^uYQSmMd98lNIEz=??QMnk!oh?0Ds^Ji)R z!!U%P>z=9s4{zFoCBQ*yF3TF@fkTF!{pC?znzh+(rc&iaYw zenYufeH+I<9#JH(zJMEIAJk)uh#f8-z6)!;|2QY*Uk$(a{yV|1`|f{e_+3#agYC71 zuCm74y_g)xvUKf9)AVjre~L-Wst7&_wEwu+{G)67>e`>TR55Rb6V8m@Se;T_sc6Ou zxlgao{&?xCI%no_g>=h@bQ4r37H_UkDIWGIB#Irr#k5}$f}N}NS=DWE?^)F?`FNv8 zG={xwT!8W3?)KV3r-lnBbyN(w4{@JN2)O;Ts{4J1<9)PFkPxpxB-?$VS-jk_M*fRE zcqP}tb2wk*i4x*ghmsM`Tv2x)3P5xpOBa!5Z?6XO>^Yp?Bg z4UR2DHp9LkxEK`-bt%G1TtQSBBG(!gGzW_ab8w?&4obNJIU-kvw#bMEHhh;(1Ofqc zBCMwoNhWke>WyM#sM~0P&^G86)N@<=bfv7+(4>(Y4`>8wxI`Z29jT-ALoxzzq2vyW zxGL!|E`LePdYWO#_Qe3H=!>1hc-8KFy%80lk+BKl+C%)@#Cs_mD*`AY7Vp&frWR#B z>+rBwr0Plx0VdsC_Ma5bpm3fA(WWIj(t%<7-f1v!ogBR#Tnn!SKg~iP6n#o9{LeiB z-~4x;fIF*dJ_*y>H(Ugvq;=AANPSC5l18vXVjIiY)#gy`s0Y^x9wuFaUEqAOb%FQ_ zO&F+}ui)s{is#Rib<36%-lwE47MeU7k(erlk?!>Y>gX>=#q=)HFK+|lVIOF1v(4v^ zPuToW#CYN`$_idJSd6EH56|TfN%g{z(Z91QS1G$;R>l;cmVJ|!{rqUfnGD_JO!6Me zlM37;#D;FOp1O1-WI27bi1TL*qkNY_0Tp!Jq-@YfSsAQCPK&Y^0Lk*`bNHIkk?_an zNS%4XMJA6j81nC6N&BRFO*vdp=&BX-ji8C(JA>+ZY>9n~cA<_-+rkiu*{YAOlLE5< z3Cft#1mr~0&^v=+aG-)ahZt0&33-M-k}lP2?mId(<78b*6qoNWN+~c2(Fosfp?e5R z_dayj*x!b65gb5gK|cFJuB~`822QY1Buk_-VWK0lQXUis*sT*y8QMMrCS{HY%D~)^ z+0e?N#!O>m{(@#nJVFLO>y-Mc()Sw%!eMn3>xvIh?@bCH1`Lg+{3@W@aaaTtwy|i& zqQHUX8qurqa+gPl?DZU#DAh$IxYzT2rYv?(zm*=^IFC^1l*RNLvRm!ez2=+8%S&w? z;NV;$?jmi8!DZIeMh>v~O{w5R2=9BkBwtZL4Uf0sPmI?8s}~Sd?|y!K`{vG;`Mx?i z*1=Ihdr)Qa3Q%|dWN@%;YLiVDP}H&I^{j7kj$&XnY%3YYoj0n91t7aS7_j5c-cJw_ zo4}gip|oM#d9&}tJaq4XgK_8W-huZ`zJp;W?z{$z?tyo5)fEE*(Lvkmd{vBK1@Eif zMj8tSnliu@m&NV5ac9RNcL03c+2iLz_wB|Y z$_uNz4;fuT-J<=>hk!^tmEVz=#2R>e-9@KbFrk+OleDV^3s-6zDU!zEUF;N3$@#i7 zP7U10HF;u9`a8L=q6Y7{ET8Ahf|x8D(D0141Oot+$dXGkjmr%e3YVFzc5ihKy2Ns| zyMpY8&bJ%1r=Q)8J(cz&Q4}RIzChBeOZ`-r=;X;0YnlK+`N^&+m;gOQjsR4#wM(L) zB||op3py4I0~wj6-Ruec!Ecom&R{zr6Or`I$E~7cB?d@{LnOVHH?Ss+6O?H`)~}ht zWDA5Dq}P0xb*Hqaogfxauf1iD85S%=1-N;x-?)c@E(TkW_ZjY1XC*kLQ;amGAjK<^ zNZN4OR2nuluOsqB<&1@;)3ihs>mR|MK%8oDCuI~l1Rc!gOcTMa5ZhCHckXN*0+ zj5bBL7hM2cta4u`!e=8<1B_%?)_!U8HvW(@_znF<(45{tzOgU%S8`smYr zkS$Ra?V^SP&2Cm*4F5(D*sfc?6pAJhAao?mXVM|wAioXaE{$W|lPZ|OKtnPAn+)8p zYF})+4gxigm^~PlqV)li0{W&UgBmr&1GHa7;;-AIIz=a<7P&yweo;KjXWRd*3&mH8 zg;VgUKp>x8TOVBlFjaC4W+3ew4)?|eB@{3WkBIF2~1Bb})CbJ8C=b-7Irc?ym2fl>^I%-~7 zEX#seie%`HYJk%iUAF_jjubPh+uNz4Wlb0=X$|W0EJusV5(s}5?<|ABtOLV6L^cpJ zY+i1-7#JJ&tHcWd8|u!M&cJ~lWnl!DEJ*RfXthQ>fGBba-jQ7h&@$>G(u7?_+6d|a z@DCi)A7$AEU$^9eK5am(;&5`3GnPYTME{HRq6LW9+xcp9y}5$iKA%~eIqkeW2S#ZG zQaUg^|B4ApHseyt$h*+(j2ccAu`O8l7(SwEPznW!NX)I9{ZI_3Oll?oW}*d6C#VFu zN{!VSw7pYmh>gh4!B>MPa5D-EySlM;PBoHO`?yDS^B2b{cZLf27so|MxHL!whBf*X zHXZ;C<0nP6!|=Q>34Xl5jIaS1-vKeKXwEsX(GKPNTTSAy0rK;vNa#4t zOPahUJ<}oliYGo586H>t-T5vk? zKKKpqufr4_ch{u5fsw35g1=vbKv_0_Ly;kM8eg=f+*>rMtQ-(p?yYXAopHL?|5OpvIcKy`*7A7=z7Jg*8hrLh*GGtyVN(O@)e* zs7@3j++U%S2ryO+T!<)}UxHiU6@5-wRGZVkL47-3(Bc<)1U(@%J(kWBPt&8paJZ`)Eo`i_^+Asg^9jq-DDvW2A@G#nF zYhf_xy~s_GRlQlXzZ7cutP&4WK2oK|wwd;ck0oPUYTTtd{tQnT7L%S(H0AU5moL~~ z+N9xV1(53hRNU)f81(ag#7~>g5kVr$G{At@6C5f%=%9)WZiVniKX6CU4%@44ydydaGXaU0x)4+Lwn6t2LklfNx{>TpD7B2a*57~`@(06pV zmghq^5&6j%;MmTS{{~wmBnITOC=lwY)`zsg56!#55BTF4mC_g!{pMN32zU13z(#=D zmi1gg>mNtX5<`IkE~A#1mAtEuj3C_vBWFN^Xq8A&g;C`8Tw6q3qk#rJg#&0<4f{!5 zK*aYZvMrO&^+2x$*2thzgA%lefcAEvTJf38pwhz6m^JYWJ0BvjJMDrvtlDcI{A3Xd(u^--yz)E5+{PDHx=%XFI8J6RYlv~Mgw?6HCDi5m zTwX8=w_$>Gb3IZbnlGmUl!{&aMERZL5@V+k>}v*n z0H#~ta?!(@VINIDWY%7dua4>vKvF5mvtU;fz*SA6~t9yK<2;GHdxeEH4a ze*4|`fAj$_AsuQNUG}i$s}H>G+n@c`=WqL#chHKt^qo)r`K6z`@rxh*wwGY-Fh2uv zkf{KMS})QNiWRwF52V-uWn{6;>IlUPLInc?J#Y7fIJ9QA`OX@FfP(!Ovti~9h2C*0 z#4X-n!IQvtamBw@lz<_En z1E0f)3?GB^Y9%#%A5v=lQrO%Qos3tb)SPUPB>~gH7}R_N9~A@CUpVD#Nr22wH`tRZHLSgx(SXIWC4hXMROs_g-9x5FFF+bgx|D4{${bUI*tRtcA|mhrk%N|T>ZMa7)0 zCzi!2aSLMgDg#Gn+oQF5_-wiIl=8oEA*>!8Gz`pk;Mw2}0TKrjslw_JX;lUgX!VfM ze#}6jWc4s&j~|G8S>KEfC7Z`=x7hLc;FbAiW52DEOs{u)}f=B#u(N zu@>9eRHEz50F{>S&5(yigx#Y~c8}T4?g7dsyT>>%bvD<$LKT|TKhv3)z-f>1ur$PomB*^K#8h zTFm05aenyyAMghp&4cd!&`V)0Br^vL!9Rfo)rcY$2-&Qi;2d7Ao#c%icE-p39Pn7r z{2jRa!vQ-y@XEnEJYcCmVkP}-NRoAb%Gl@#5jA#qY)xVzA{Mbfcw(Fo*=97mrTE`L ziQ@kVI}UN1bw~v)ttFNUfa)|_RuBG!FbPFq&TR9D3jV1Q2xY%FBMPf7Rbb&5b2j>W ztR;hCNJ13u7S}?RcHL_f03MNW|91$kalX8@;k-JjSe@iFokksNN4t1BsmoMaXJki*L6Gpr<{n;2tsz23sI{dGqYQ`h_zz7K@U;E}Fjxb=fo z^34dz`Sl14&fGc6Yb|Gu4=2I*5z!H!j2?vxEly1(qH$JT6{?x&IDoQ-hrmzO2r{jz15V(7mhgdXc zb7o;3@+>64^Gppw;=J=!S($iV!Ov!|{N_Q;lJRV-lsdN2^tNM8Ev|ui@D*Yyv7*ur zgCMMD1YEGDS>c%DhC$@IaW?ShdP4AoKRE?#l3IjNH3k$fWI*pdu=w5kr;FeHZ3Wql z1wSr+_qSpnCMb*FVGv)01Fgm<;_4R}G?z&yn1*Rmwj9;)w8BvPE>+80$r~NQx_Wt6 z62CIe1`xL=uXo2s0TX(n_3rc#Hs4=^v;pgk8*_e(i%|oQl6Q2Qo)JDh#$PkG(htz1 zpL-I|46I8RyNxb&mtB#7SEjwpfhiwwkT53Z85Xnbd<(ZLOJ1qCa!sl6#BgoZArNbfkD z%y;4bkUd2W>N5-|%6KZtkzi;@beU4ay*?AspYx+x76Z*K!D~4XajMO(7TK_^#ApA6 z+L|Don>=c`6Y732YAEoP7%L0FIJ=X<4D7f@4}%5qQncDPI#W=nJ|>@hISA z!GZW$`wSpEqHcSJFfw&Y(U<@T*`I5Eb4`#d09JO|d6lf~9JICrRR#jL`%@xr!rEST z)^;RD1{uB#4E+e%HYWv{8A4x2mg-aksoa_@eJ90PG`}A^q}h|Pv4*#?bz|7TG*3D^ zvK4PZgQVY#Ma~(ArRHP&OXF{!_Fjq7}plLYk(#+YNjju7;<5!_-1#Xp6~ zYwwb}4F<}ZkY1*pl{5;;IR$+|7O8eI4*FUc2Yn%!c8#Q>6Dit@_ia$uM~e1>$|!nYl6+;v+$T(sBk)IaF}ghK-Zx&VY65g-j?`qYxQ}0+p3LNR82>$lBFs3Sz5Jm8z(lCRR!9k3~A+ZABv{=!8>uW?Fgk0Hmq>DT_ zG>X8*>N|(VNU*}<&Y^J?u)w%;Ur7(3(qm94ri9I4kF_m&*0wM{I%qonW8~zj z`J>WBv0S}$lyxh~8nSRM!AIF-$vhQFIvyf1e;ENQDKry0ke;M>d@FAclj7<%0l=L` zv$9iHCx13WSGxgNJR=%akmmlW2)7w*F zDF3hq;{dWGpUFK{h#qruz!DtURc2Uzj;4S}C2GxDgNpg9Nbx(v5c#;Q+>P>xEJxzc zA+`0S2`3dB5YYfz=ste*09&E;Nx6lw=>S^oWhGfti zCk4V`Xd3yixTun)=c880DNuPpGhYG$y_$nXR(VFCtlLv+0 zu_Ltdm#KpE*lZYFk=Xsv;Rcb2N$|M0~H=%}y^46w8t)M07YZUd*NHj?fkZNL45_++pHrElzf$0v_ZtTGmjk2JHLzYBWSmDxDB(`dC`mEo9aQ({ z_}MX3$>9FiLKX6*nWf!1f$Gi)RFO+FRR1ubO3H`e+?b%c;fIDQYQzr()t4ryLhAt( zp{!F-eR+cF%Mw&ydN5QO=MkXFoi0x&>XZIym9m00O!mN4)`+19;HQEM2j?hM3;jZO9U%dHfPx097w)^&md*FrwgH7zt^xh=#~z!W3URZ*G`PPU=xWm{n9T4AxHMO3s5QB!nW6* z)?A}Ed9D3Xh#8d4b;p~S@;#cjUEMCj4vZg-Y~MY@mGq&w^-a1 zUgop#>713yb+b068li6|74LuK4AYjG_4zHuud0`K!)sB>wl$Aw6b^XZG;z((K=V?} zWpl4=o<(lDF&rI}j`LExWlNOK8ushWfr)d*=M!j8!a(|cP^Q2vfTd=GtDg{em2@Zd z;7oy(5DbYASCMwooF;&1WYQA{5)ZmGf#BEJ$st^_qrt4<8`$d6cM$_fO68|%BN))i z!6M>#bLmQ)qrJfjPvW&jzNM679IB7Fpu8EvjMXbL-Bq4Rp`}@#A>MA@EpB+RXzpOU z1kN|L%l_qx1o@7mNA+3@i1Mr5M7pMYLiS$1Dw*-7_qQktf49E~{>E$SWauY2OfOf#M+Q+%jb+`X+sz;^7pPfk@OtfCXZvcXnU?gzk z*Lt`ohYe}_6hD+oIqZd1nS`^q4Aw~(I7N&JV+1{-Xb4;-bhs_EmP}Ah=`~jkKwjlj z76dX(WVIV186Vjc<&uzuPJ;yD8V)Rm`J}|(0Z3A{P$7uszI@h74*=Y0Uiix%n1~VZFz(AqZ@2v(lBCv8ZwXD>C@2k z5w$Zr%8%<}LizDn$|&^v9hve&(4qWi4(eec<*(#33lYZ=wU)quU;*|(kvqkh1(!KI z{m1FfvMbigWvfK_)4Rn%gkN_;d%^`l`}6qP#Z3EUvGB^@sFTqkd*a!B?NB$kb`YR< zurECM(Mxp}z{}E2Rv6=-dDvpN>2h*vr?BWBr}x|t>Yc8igFWT9UT;X;W!&0=&X)c= z#8VE-eG=z;a<<=X>)73?NtBw>$$ne+BO0dNJw8Pr?)6C77ACMGcaRIdf-UG~2!U1w zggS+MIYVfjW%JdsYrg+``sLfQE3Z&(22ZmZUYV)I=D8G`J=Z6v6dm@&WTT=hr)kS^%)BOw5D0c7|>KodbZ7i00%gnDF zwA)KERUX@bw6zjAL^u^vAF(iI%8@Q=0;9JZ4}?|)sT)ts-t(rZ0@oC!FIfx*(535xuE4db_*1$w)d+J@od$dl zEMvXrO-N!KU3ebr|kNIGniiGXGlV@=v4wwSr2)T-vF?uFdJzg%L zQpR8EV&iN7g*8GcQdnsenSS-Jj~0G`UwNig+xd=>wS0A9%X4?!km}V-Uj{QY;XY$w zh%ufMg(l3gaA0D<<2?{142|^NN|NXr^9Q^^(>}ta&}Tnm-D42z0fs~gp{xF+GsI?2 zeapE1)P9w{WJuL}9Reg@;m96{OL_)oCH5v8XBAMPM z_D3!XalVn?qkJAgDev#5<#Z4v1Ho{1f@)!a0*GLfRz^DH?BOOS zU&I}0;i4LE=D{CV6^~N_%L64^2SE}*Vt!iMl7r<#!#bqhngrqqsAhN6-ewzcEs3`P zch@cgus@4xs(cfsP}`&|bD1KfqRClE0zp~h*Ze?x>(ra<{t9B9RFu$y@PET2#eZYG zSQT;*hH?~#IXBm>65p+9TmT_QZV<7V+>&gD8w7*ng`6S2OZ~uSNF&44k-`bC zSXda2C`&QOrQ&n(rPmt6n6xX`eu}Kr372Dw58jddM_Rkk>8#$A_KBWNVvC=Q&TI*- z#y_DkmGS$a*kYEe3JemXOF3-*qVh+^tR0##qajfsVMSEq!Ss$-&_6Dny7}Zv7P1<- zVzpUpgeFKjAgImd$8m>`gyoUBcDZpO=8cIM7!9{(YkN6KXA$d?*DxtQnFgecGSqVB z7<7hmPzm$~%4ClSFfGv6X^XJ$c7EHrTV1hnm5)PvV&3VjKd_w968zkKj3eEmJs*3W zj9b5_RAzpgWAtoko5LK3|M4J?MTLBsd^`^&Np@Dw``ATD!5i=BOZ*E@LfPVUCyHd3A|+MPHrJ+2-3J zuj@H^Yus`UZd**PfAqNc&H-1VcE6PDwncZ~EM)_mBb*8N({M5J4Y`=W1i2)N##FIs{9p8p4WG~gcxU5bydDn~_oF{^-f9?B1z9Tz{u%~-MM70l%es0q+^ zt@S1!V`V#YY>FYL0(1ZhC@~$%%dp!${}df$)VQ>oMLOT0byWjkJ#PM`smV9` z^t{(DM()Jq>8S@ouHcRaF{f$c)^LbbBn7w-yE}PDIUG8J8e*?w#t{qeKb|b$jx_Vp zAkK?(b8`j0=-%uMA$A&cyki7F&^<~l5?XM_vGzg75c`$&oA=KJF(oAUj$>1MvF9w&eP2qpW)t}Y~jKgJIQpP=sNDF)`U2` z(vHuCaG=hT2&PajSDx8$oaqhkRjhv;?<%HWg;CPTi~bNfCs8V z#Y6rw^5${GzLN^2N%p>Z6kS8J&4c{f96tf$)F62+aai>FPOHD~v8>hqL6s6-yQQ2pMps_* z)>Q&DhM#3-Rv~ME_QpX7VGQE}5-8CKDFH})Upl4U&f;RQsz;F#rLJj@zZNoSPlF&= zFrsLJ8I|$iI8S!Llvst`Yw=qh+%nY)0|dJ`8rxvYoKZ`r`2a3>vqrtc3RfW}d=eQs zmx=AnRU5g_;vLvfjdlX3kz7nNA)OSIIbJ`of!)5$EHcRE6h_hk=#G1 z{mqw_sAGxFsFEORA<|WwlOBTb2t15A7$J2n1+IZcI#$DngWd&r=Xk+TWL`FV8*y!G zTVK%5ox|z8RVCW;0?JE(auJVh>`P1v25CxUu5I4AD9t^Y022-yM{^i~DS&0rDK|XX zl(K>rBO6JZ5z%!5X)vg_Tq*Iy!Lo)+^pQL$=cbSF&Mr;U$=5?DG=Lg*TRP43HnR{` zo<+BeuL6zxu7tzB30V6|Y{b1pbUXF>Q;ImIkNM`i$25QNO#Q=#pahW2Gs?f`Pb`X4 ziej(?5V?xkrHHC#OMFbdxhs1HB(2K1(oFA_mkz1h$R|UYpcr=^|6pdDAi#LrJTasv zP_|o-jwz3BwU-cr)7*jNUGxE9C{EmM{(MaYNg+Y5ho`xd4|rzYuv(Xh=)?`c0eDUO z94!G}WtD@aPz`356MXg7SjZMyfoWFN99oV9fQ2+{fX}Kh4Zycu1vZc}3*29~`Wd7r{K?cc8W-&X0DNf_M989-R@}I07mj`Hxlj z=-LzTjuu;Bua=fDFi$s4+5WGN<$_-u)!Xpu<19tm-PZmBz5^(epV7ovo!>ryLIQHM zEKdriwcC?I5TRm-w~1S#=n{hHFJ|Avd_31ZOu;jrTZNEa@!>=~!0KLm;kgp)Iw?aK z{`g{ffnL_CJ>dmwDH#ERI?&@TXnS~dp*n0+tc%2uImx+{I5jk2zY%9y3J>U_D-2tr zTS!*yAA_=gQevb(O}{=shZScI8bJRx5=kyvAog@(Yl?*x9~>=dbqY$^8xg`C^&0BK z)N4q#rr`nu!PpyR89)g)ePau?`iNVo)it0>oJ8;1nxAkJOPHnkX~5gr6Mp-G1+#Q>4P@(g;7jB0ahG$i-A71~?}E6B=hm;UeO zk5|xG>_dyy$}hoI`g|?SPO3LXx&zGGWm{jG^9_pr2QrhgKt~W!79%ZKMTfV+({Z3a zhBknM2@O=hS05FL3>G!uP7O)}Y|Pb24()W+P%*C9@65lDJmYK)OMCJZ5oiZL01pvb za&!}Snt!zZA|6d_wIC!-(=i0pKvd?bd5aZfX5lii@_wq>&Cts75of z7aV5oYo2ag#QJzlw=6tN=|scb1`7zu$CJN~os9fNWlawQC|EssRB~b3i3P!K1E{YFx`w$6(uG4B~Ue1gop1bG(Ob*-`4OD zOdTtfW*$e9B69)7JOR1?jgMmxU|c_y(YVC30J?5$2Z!R`E%6_F)trul{}D3}%yCp0 zIFI=pE02yyHLg9$U;>$Ay`YUWJy z0Pbp%Y+Doo$X07nMo8Tv2iSj~gWYh+gk1bjk#%N%l>C9atW!m7`k8J;5jz)%>VZgMZ$)DayA`J@=fGe*yi{*bju!ezmc(ha?rBtBRPB+Y5Ix@ z6}U}v#~@3z|J&n>Tp0l(Zwg(O4Tx414bRJACXu6rf7$fyworFs1-(WHdwcYs586Y z3n@!G;LQ~l>OmPMts^F2Fx-0E%K1V)Puv39kSwO*J;!k7bTuDzA#E3 zZn_U+kc|%q(8}hWD^qLb0j=pU?YjPjQK#{aq|`QNkH={tcSL{E*X}x|{~mEFElL-O zxfZWJchu9@0iq%eLn~>-ShgYdnBi=_*##8N&biaz^kxjHNhtd81Drv-!I+%572CaH zm5bNg*IaVhJbG}wx!ukgtth+7@p`Ws&2JmbpO>y%m?2-C!$f-?IxTNrm=7ru9=?k) z7SnMbfll$v+)EA-*%x7bQ{67Kq%XH=Mw z5vvs@nZwG2gyw^rR2zv06?U0Yprg7(s+Pk~nxskTf_kq-&tVbha1rHt4DR(|q>?j;U^5`_MIa zQlA001+l8ZsIE=6$>1hY>;_w8**u8v$l|w`2ta`*O{JAw*Eq;L5&?k=A2|VN0r9~o z>Ok`{BNsVkG^*2`e^UQMd1eBa_Ai~Ae_zu6%R>N4XUM!z$-a8O%suQ#( zdx%4{Ef6Twj&c!lU-U1W&kr{Jb|pZH*5sN^g9#KVnG>63 zTg+wTa%p_#O-CGn~#wHCapp-GDS21$pJEW0wnfS_G1Fuz! z*b@Gx$m-Xe)ZQ8U31HHje&EdyM$-M%11#3*2i{@}c}IfO0t&_S1Ml*IMaD7y1e|{Q zf%hKL0{nRTfe-os7%^!f#0@EU8pS<6a5TfZO9Ns0&ULdc7-qU?zwYg%fS}tGRz&k4 zCP4i$(wUo{8lAamOlNiu)JDHs}XBk&9HfLeWz?{W}3kI`ebCy+TVM6c(NYw11=B(L&ojD6)KR}JVN^E_q z<}B?5SakUt<}9<$Si3*KoJE-BA?7T&;(YVH&YZR8Aaj<#4>4zj_@sFYsx)QJk|09E z4{OeXj9BDnk$q^M)SUGiVpEQ2&cYgpj;w5qHm+!`W*Y0>Kbo`VkoDSUPnok|_=vy| zNlp+XHD|$ja$t+|m#kM2!V;D@ZJC|*Dz1WQw83;IOA0@%I^0>WS~$1qFu;lWkRxTw zls=}i9=v4yThW_!$C8Awu{z^bcmW+s?`KmNg9!0^clKXphrX4Ua9mADpR4=Y&||Mh zl4?FU)L4WwVB5+HH3oHpZlhbGpkNyz`nFP;iBrJgO$lRFP+q`aX$K1UvWTSBqPJCj zBJSW2V_sz_5dett&qKkGgF`DFrD2)6GV5tPZbNN31nlyA8jJu|sXEvI!*puG2%$fY zU)o2Y_!i}W$%rt8*6;P{0G;qXZC0!sY`)6m7__wjFQrEi-c`qGI?*>09O@*S>?T_d z;RMcY&k~{F03qBP>F8LJwK^zIVqpFKr&plKiS_c9*p&)))}AVYj&eF#b#3_3H+RO)$+4S0-oKnna5Qc@ksP6#TyBX#cG zRk@V8tR91~78{kZ+5wwxIb;f*Hi|kk{1E}>)n-W0-18AL`lp@85P+PrmitT;nC!xv z?{xTc!JVSjy^}(RtZyM=@ruh~s}BK17eEqOB4(T)2VG{KLNf%`tV*YwhQ#;*s8|nT z7hu1s+rYc1IF)QTT5%AXiqX&3}{VF=Gn1y&cPlQ%H zGuDcK5)dLjSYhyI5K1- zNZn5(9qPf$ek>N=`7sXtG+212c-fB)LJL2G(6l^+-S=Q#w)is${QwBzmdKR)XR8cI z90rFX^duA=%EZY1`b0Z#w|1OMzX8g1mGY3Wo~32J^m-_G~7Koj0_W=&o1CW(+81)`3R*M@&({D>Pg$naf#TC zyzj!M8OsTm5W@~?X^~V z)DZHHLrMjusW)6TD$*sw?p&X=a%_e&*A1P zyfDD0P?=d!x5pa!Px%)kmW=<}9M*TwOwT(#uDNRi--jwRmp{|m`BWY-3lF>PtHQ`D zsq)qKq04SBnh$A+F8i*t=1+7#8dqL%+Ll3$Xp`Oyxb((hlvj+VQv-Ydk$~>50kDj> zbe%$fHMB9Rg6AUE2{T)@FfLA`=nc(|LKYY^!T4ZhIou1=l?!u$zTg?e-_Oz-EWm2W zzy=e|hzO&fHa=-l^YLS1p+JpR_cl93&e&Wl2$)Mcn-`POUq46KDY0;Blg7xX2ZL3e z%&zpB!Ghz!@6y%qw>e_xaJ|8=w9v8YI6~bPQvnPfgb(Ss@Jm1{)+*d@M2QAHt=(%x z{KC|s*5Hhf0rPk`!dzW{YzY|K4NQXK_v1_btADx^Q(yD#i2fm737|lxUTLUa;`pys zD$sHs87&c5E5m@ukm8&RXUDCR9TmoSTi~O#aO>3+CK^{qGF7 zy%V@~B2{+6Z;n;Oq*BBPe#=P|M^P~CgcvE>)I|aRrQA`60$)G0R?0 z0h0uIeFW_PRkzoEChz|h>}$K(Lb0*cq5GbX_le8fRrPn3Kej-qz3`0Y`y)jZHur!S z5>kKI%zj4HOu`fHIV3z`a%CKzaL+n}zoSsb#x%#VC_+Gof=^twRbVHie3JGBP?(Hg zadqhb!M0+KOxRtuRKHZXO7AzRn9FGR`>VLgT!91#Fuy)Ca|6I8R`EW&nPqN(&_?q_} zkCGA0I}R_Uh1Vqhb=KrGssn=EOMHgah!zw|F&df+Dmmo+w!#;)+aYL1)t7N66-DoE zh2J~a?&N7Qr5#6a@_B#|EvavyDYK2~Gg$d7hpBHAT{u7{P|(NmxLg`p&M$5JrM#HO zHa#Gg-2nqC$K8&Kku1ip+h_sTphTz>gcdiGDhxrar(m2Q{bYZMBns@U+K^3O#TRlA z)zLYKipt^rr4=hzHAg+|Xo+EZP%?P5zw#i8rKkDpk~Ce#(oz1pwEM+|sYQEP_bXyv zU)%j!>Alx=zgGC`_1!N^mbW{)U#1+imv_Gw`_029{-_2zhFmgHbZXvCrLsM2f0hQN~}$Y1f8f5tGk6E#7v&-ev5Id zlU0UP7DZ}Y<};u)L(`f8es;ccQ)75HGO>Vq@V~EAWyyxN>0gW5ZFS-D1_D*go;aI? zeeg;=TCN@|{rfoe+=rg*LWN(hZmgQO9}f_3p}@4ckL_ig+f+*@aTOCo<6yd~M-`Wt-mU z*)3hq_QlT!%GB1kcrbcKThS-g>S&8d(bU$xQ*GTEFW=U+^-%o$R&I;@%>&!o)3tR^ z*Vg^f79D()lg}OBrzqe;3XMx^ojcf5Kz)<5h-Kcf^V;3p%ZsQy4xW&<6)`sjF&q$Z zagM{hF&Cl``hp5OGdiQhL1fE{*N#@2xwUfA)URJUon(pH;@rk-$^*@(kP~E3ZZ{9A z`a>JYpgea(Y0~pe)3OG&1zAk2Sp>E3A(#}5Pc|ujV-Djf^k0kmF`i=3-b2+8f4h)f$v?ip<0sR2!UzK`-5Wn25~KMb(1Z8Xgw7PKeOG=o-I`qU8D{81qeKb9LXn(WYN}#OIgV?|VRB&d+_ZZ#vra zbC3JL;$faUD2ViRzZ=ip`VGnrOukEd0j)`>=uV&Ox9{?R-HTzg*Oy)M(R+R#)cXe( zWr*^G_S$$oXcfrfc3esDhRolBzLga5bcb=I<$rkWL=AXy>DDZYYIDNQ zY6FXu^7@7uk3^gU)VOPWu zc2oK1guM4H9^R6obZ#14U8Ksl6xbH>5@hG{lZ}_!7Ekn3vLFSxG&`2s6(RS2hSmjKHLg zL61{KlIFKoF$mcdA%q$Ejs;7ey{-N4X9_4uMIQkWoY9uXNJuGC?*MAisL$juHK)1V z|9%XbvV_l$-9;_ul>m^;cy+p@j+eQtxffivV%O@lEP zU`+GGQNcWm=Fe3UQw|F!Jk4MVykdsyK1cktzZW*f9C##Y>YDbvL+ zN8+KS-howkxRg~uEx^d#2EoK}2|*>2g^ICX|Lx$?$&W(+;9Kb3*kA+bKr3irE0qSB8lbq6*mAGyQDBb;MC7HZ^B&sq?6kpUx!K`j%U5gT|3%^Z6=J4{19hb`HhM7^#2jZKo zeO5u@JcOHH^>k3j4uv~1^+4~dgkoKg{H%Y4dEtPvHjyZB*ON-Iz)Wlt;YbTbDnBF} zDplhz+c!QEQejA=J9~LwRHf1Gfjyr=$aB#l)}{xtSld0Y`;Z5+JnK*-7XNIG$tTiLAGn*t@c5(z$dPY2eJg)J@5`6U}h(MaN$jL@?D3Ff(7pbT_3KUdLa71?Ifyx zSU^f_(jJw;=GhskO@a(FiI-F^g}m5S&naWFPg64aCGBZ(Ei!|o?^O2tn0o=Z4HVCs z838iDjRv-n=C-Y+fO2`?E}m1a=N|Cosb!)$W}zwVqaV1VXou~6H{Ov79JjkTYfoq& z>MpoF_w8*|{UiCpxl{t;q#&Fcl2Qtd9;@GKXGm-$Q{Ykl}#GG4&66N0rnEai}(| zj1%A6zxQ_4t?9>=GLd&yak!7WF>{02Z24gPVdl4f?o7LiF^d2!eXH`)qvrE^zh-hb z(l34Aunl|QJ*}4R5z#3m+Vm^|o5(P< zli{puucx(8p-(2+QG6kAXzkYK54BqK5JiG!V&k;dPZh$*V5WcFL`BlIq9s-^iSfz7 z>RMZ^PRFtF*gUpIHHrVFzad!Wg4j}T=y+5G^YIPaSOPE>L^>__aEOYPMIoj& zU4D;kWmX}1?L|>=+qX-*FYb&llo5>+qbY8@xEr#Pf zct#~0x{T1NJQvKt@z7&eC1VTo+lQ)ZcAPkAR!`LInKBE7+Y7T0tClh1#APo!O+N(J zymqug)6a?{n|{`$mqhtl?26icSYCPZUF>$AZu zI899>+ydROFTOM?3)%dEw#(UAh^b5g#@X#DZwy!tBFm?_@#)grWp+*q?SLqpkPLEW z*v*s7FdPmH1HEXDXTpOG^;I%}{wNuQ@?+)h9zZAP0TsBSb>G@uwKFMHNZ|Dnp00Ku z((gu%G`9E+8jddJd*k-yMB&_|@;4W=7Y97q`!86&zI2RjuND^LD<%}SMPI?Y)rfi9 z@h-M!Rgab&>E?cqpxw7hz*KhI2iJf_55q^tYNq>+ORmP+c%V2XP9TAmpi@4&C(F<# z;Uk!BMaJTY2y69K+dMvyKHN zoJRG}m+#Xn!VkRu6y5_q&*4(EKy;lN;Yeqg@{l>oi7L|FdC783$B`gMOFW3ZAKKKz zZc7gDy$MOF45TT{2DrOmD-fIoGS4A%rVcj$vPR=|yu_W^v>i+HL@ey+2w#|{%!|1L z5zn*KeFqw4aalwvYqNry`T<#L@b_m`FQbq9L>MY!DrWTC8{bI)?CaR(f`XVc7mFko z1?2!gmyFP5Fhl`xbLM%;q7KunHYdPUEkU?rJgYV%4>57u_(R3-aWPVv6J=&zM|nE> z&EgFJHdhT@F`09XuU;`sZs}wp>7L~(lKEktl^A1PNbN>|h3*+sqxs^M&+NXKHmUfS zcOW3S8|!_o`3JYwNZWCEy}52Ew@czV{D~m`O1;{c4TVdFIHu$ZG3jy{+%_B$UugaC_ zN)jsw$$^Uf+gmeSd}Z@!R0Rh61(IxbTyE&!eiv$B6g_g;HizASdgpip>Pe^`>k{41 zbq@dIU|c>2By9yMaf+4fN@Zahv7@A(0^wlLm>P^>lH?M&S2xJs%hhHm0f$qw=mqh) z5Z~TR^A$9fuqhyQ>AMAhvuQhbt}jqjx>ZrhA%OUUPF7ffEw+lA;$Dq35>G^KK=&?A z1FkB{mFeaA+-MLn=o+tJEI_KEk6oiVh>y_WkV&D&mXXBha+orbD?+kF3<+U$Nk3%$ z11m@lQsqcQic~q$O-av%Xe)VQsz;E_B^z~KFHOsXdOi{D6h|Sp^;t%b(y?eJM9h#x zmqHRPep#b{o4yj($^2&_)RHR-pf26{i2!Oen>6pR0;rmx!M!Te$Oy41V|~%w#cCWP z#QkiK24bC9?<@U_uNbOK$u{rZTf(=F48YJc?kVA3Bx1M`0kuB@mavE)49kFif@ZMh zF+8cnIfvO_{$dQ(0U!l(hp)R?3(O8w)ZGkF;ror2@K)0p?heNEay%X$<$XO;3^<)1 zVmV@=07PX~d|9UC3oxS%EQz?70);1;9-tkqG{2`If;9mXk03v|u7*6s-&lQCWv00b z&VwSta~PXF%!|@V^upq|2;@pE&)L5mJgq(-Qp&0n`I-Jc-H%VSx|#GYb73IIA8@NT zDx3EWPb$t?5zcV>MHR_P#{XhJv&pY1ubqm(z$#wyd(diRv{R}VazM5_J(k&QbNkae zA|3Ca?)&aFF~c3*Y4j&mjLd=qF7Dr|s`;e;Ws`!SbhxT)LKnHR*A8-^2~HbG1oGx{ zQ=AF4ZHB%0IA0=sjJ`#lY z{%jINRy&3CIPQ~2Sk`rsAm~yiCPKG-m0MAJ%O-g(2WPTCRgL@UF{*w=LkbE2li9|2 z>skZ}AYxdbx)p|$C8^VsA^VD27s;~Rd>B)(@CecJja8B}kuXEF>^-M^W6~f-(nAR0 z5~#a$&Ikywyc|nvdCk_*ittB-Pzhm}x;a?rB+p!?p_i+3!5JR&9D<59;U;llM^JGi?`5c*(F zP>?PoaU+K3SYmzEbVz;Cm5f{Xg|4cUkOH}T9=~i6UnG;}*Kig?BI}LGY_fs-Jcggr zO{}41&Bvb>j_l+!@W`L~A{$zi_vo#U}> z<}^=60$}E0*H@V#5cb_`CTVyxs?2mf=r3vq8=I9 z!hQ|}HK;#7<;78ucI1Y&mqT_32*qYs4LYJ}PV zT9S)cw)`TMlb3;N)D=T)4iNT}5)nom!KfUmCL8Zom>HFm2QP9yUe`l2x(bh&!i}pq&1HwMMu)6uXwM_5R21gH8 zH(xo1=LmA-hN|4c;HW{<{LwQ65A)W%;XkpjbXchJFSbBQ;xrZ3kg}6$%3*LOMRQS3 zLC(#1!{RnEd#Eu$7P^!_x%ibrB5hN-lT$UJtGxtdZsf?>E@h^xJcn@X^4?_#I#s(9 zq8U3$2Jee)bh^~QvnwFp{Szxrh0}j0+0pA3oVSkl*xJc`s3Jhd5Q#x9y+=2*;eGM~ zx?MqmZ*7M3#UWSC{VPWmW{~_iys;n`0xT`s3__#~ z`p@sN5Q%K9w8*~l#z{4AGr)liU8#9<#|hHpmnNXQXDz7+zM^ZAM53@p3jyjQMF#4J49ChTymTer}HIc(PnEfaFG!juT*{6|6 zh;5kv=aFsMTru`?oVv@>P-dvxCvN;&?@R=X8a@bmK@}E^#^r*tSw$mQKkR{Ipf~xJ zn;Re6F2fUn*Cx3{tt`I_?>+yd;{A`DVGw8lN&DB)0T;Si0kY^Y5M-X@JsItotUv8Lt#{*>hEL6;b$Wvglrov=#6 zUMg-z9n4ukkWB@O;LI+ZTn6s}qKa=1%u}{X1_50JU3n0*(4^5N%_+*w8nI=R|0G6> zQxqn;08vt=gwyDu{ue7HPl@H+9jkg_7`Uz~S7Z|3O9ItN#WLatWIbw?NPC0i%fh+1 zI)QF|qWptoty&|B!QF-{LP|m^jD$nFfD3R08C?S!s2h`qBKZXrmFffM6w*{oLUwz0 zu?*gW%-ALgMW4|)GT(f3jUsGR(gaU=VN_+Ul8JIVvdB;tc(c|ydf*MJ6XGsV!+Aupo*_AnJsA8&61e4K^C2K6h){~0G`m-%mUjY=|~+* zL`o+6$C1oLQew2)_RfQ7#%N}Q0{3=QZdIHJGZ>_WyWKvy#$I&Pls%=Ukh<+l(`h8N znVXWuvx4xla}!9{&HD^pqH6$TB16YwJf*%_0Kh?b!eL^nX>Nt9%$R)zFwj8`Q;Og| zQ`n#R6G^ELBx~N(&*cY>SeU?|`=1D|5*Kj7I^Vot+5{fzp-IJVL<( zEpkeusxgJM3VK8exWwVBOm;;PSi*7QmK%?9VNJJ{2_aV|gZoOcU@~~6G37!J&#GR{ zA+z-j>B{kow2D{UB zEfPrc{^Oy=7@zOWDc|7xv#RZ0qF-0Q0#fRC71?&%-HeO-uO4U*c_3kUh;^V;7b79a z)KY%btofxMPuBe9lHu9rZJ3WHBmdEJ2*nzs*K+`(>_XpBxm z@{EBH&E34V`LHe=L;+fkw|mVOo)JQ}Y&|{l7DI^BBU!TNkI~P`gAMJ2dpzh73hLp0?h`XR2R{(5G(0+{(5#(NjnWxYypl z_f9TA>P$p2edxX$h%7eInTR3`V4;y6_{#nt@QR4dOlj_jx;E<&F`WW2bP$fSurfza zpsIj#D&JtnooK+(b%=>GKx($VF+^1^v4KI@nr%&=WY}0HBX`_9ylu1qlOHWbsx+SG zvt#&mS(z;zUJ@R=zTDP)te*y_UY4$WCo(?`?GE2+tf=Obrt{#PD*5KNSYpm9C)}|? zU~`s76tvM|`atvdt2lXp3vBY|J~_cMg!bc~H^@t96XYcid61v79K6`)$5KV+F^voF zaoXW_QMs-HulU29sJVxq7pJdj)ckm!e^eR~S;?mk!*YdVF|P-pb)t3mK=ZNGj{)8g zO8~0~1juGovG@W~Q5d*mR!Cp3&*CEN&c0vy$qrL;-}fLX+xJg!JgD=@8>Q?QgEE@% zm51OKit+WwCHit8g6$fA>F_wod>o9%w>~+Fe;4Tle11IW*91sGZmkyiK;bazTXbzBmr37C#pnG$it>cUZ z%r)zVZ5+^`Q^{A?`)AqNoAFOi6+dFvZsyCe>ruOVe0HVvnNH!M{VdY-`q7C>2Dgjyv z1}eI5OSoG(K9}9SEKqUubRNJk7jVIJNJC4* z0xlJM%etb1?WnDU1(GM4`;KO7RmV@5gbi;}F`SE_iNvtrYt8E$VZi@It?ng~69FX7`akH~#2yEgh+`o)+InLaL=TxpB1?%$>nUJuQAJ94Jcyn)rg0ta= z)+B(1nnHSo;F?XIe0JgMc723Hfm3`Fjx!d3R#)&6{{+-8HQc*X3*HKpd0Um7MgS+NV6NiZ^MiyaTC zjgw^_L{H>Q5*$binE(g4!oG!99UuGNwma-ieBMCj_FG?rUq@e|ab>&5&(GVN;1qB6 zCwoYz0Ooe@C*bn&aPZN)$9Ex6W&3T+BQX+XnvFv9pUSSpV25VXElG`bVh04@ii)TO zBc+qu>4Z1au3&gJT(K^qfVO`W6u$IlU%KZ1JEvXs|K2o`P_aeWe;#iU7S6P;yc)5y ztQA8oMkFh`#kiX)AG70zQS8u@lshpdZ*PCZ4Z@H}&)p`{z%&e&)$CAE&NZW*< zRkr;J-g&BR_s4BBeas_MPp#!cS5L&-uUwp)n=4#2vooNeN^JAs0DFMj=t9EN0t?K5 z&#+N$)dG`2g@do=waB&PmE93D4z4#JUK=k@&Zt3oN7{Ec&S;o>Z#W^IBD}Ht#Pmu= zIsu+5?bocUIrr=Gd0BsSkyDmLcPd$pj`tJCrb9d+pZ4nI=AogoG}jyzALY^;PU!a4 zZN7Ix|4)SuN^&MMo9oS8XFNt}k(G-xYKH#T!vmIGVz++#&g2qfvRE9f_r$J4C?vYV zg)eUa#g-7*&tZ{m7=R@9>Wj0e8`-8yY=KO?jtt?+mnyNb{QM5!;^~BwbxJXRLy&b!Y3rM)d&<~&-l0aL*G;i@N{`bFO%%n%O!yl{bWKDyqQWY zX)qmIWbi0iS(J}pygoE2LPHb_m4Rqe;8dtX4qiYgyCnwCfqn6+&9$S!>7=8k(s3Pe zMA^rqXp1GF%U9695DG@!?11$w<66lH3$tb_$aiyafbt4O0K#wM>R<$+j`7ZI<*05+ zs%2O_La69WcJI_}J(ZL|Pl&8ajvs)``_owo-0d2No`xIa&a6o6&O)(q86$?+UU_hEAgGYx~8g zP}nYC5YzF6M>Hc6Y6!-BH}?8Ny{(#0vkRaW^k@~~J6e6;xK%lW!IC%IAm+kd9&!I% z%TZbVYTIV1UFDI8$@qqToYZ!k{8D&k)40NCgoy?4g{Yjb=Sj$`7X}PI?-bjXJQcst zngfm>uev~mj$TQjC1nvyW0&&tm3rmp*8{1Z@;%q@+<0B4$2^Q5-F(w4A_z9|W zwQ2r#)u5;@+7izUBK-bXf3R)is5W!7pjP03P}lh_C9&m6!aYnIv^8+i#dm$G>s4w< z(8hlkQ=@fD@vC_G%X4#oUQbuv|?T6&8pmo+#P(y!BdremnOHK=^AHu&iko^9U6DTqqXDFp^Zn zi_YeF(b*f|lNZADeJBOw!0azPmt8!8ZG8sw`k0|IXPS#E*=y}Dk!TZjRnZ-Cu7%%l z!$JMHM1}R0u%V(ascLdyhPdK#t}kfk&f&<;4swCyOkUM*{(KE@zk6cu$do6v9i#*4 z4Qg`pv1bAWr#|7k1h(h`e$4CT)@q3aRMCO)2S-_FO2>5Ah)~pNp>A%q844bXcjX7_ z=JhNE5Fs@eXzDisBMk&4Z>~*MTC{v^BpcNCaz<7Zs$zWHaXA1igVHm@l7N;6_A{7X z)qM7ZKmajTPRBEsfoM^hU7;Yxkh<@9A~fNX)nSCBK#q_`p0>b$3Q7wLGqZE^{&H66 zLdPB;wuq%dAwu**hW^8-w~FNRwWF7mLzJ2MGv8d3YiN?dlG3Gx3uE!#+mCm;k-)zb zf>SauxlUrgavm9Ak>s$xx%n90shYPAeSxoZFWBlOzTh69xz#I%ia&B&t$W-%&1fax z+F>j4<#*&~z=-Y{gcyfCkCn8lNdZapV;Fit3yO4 zO`wzU8zLM7WB&Ov<}?vY-2>Kj@vC^h|Mn`CTiTbLF>%{enC5SqG?)Q_7i6sL(}Yt= z8t56n!U#Yw5GfcGQP$Yz_H_$cVap!Wicl?<>}cG#wo@1@ZJEP59@I&G zin0f<4?hZ~HVjx0p7h?heb^4}YnsL8$HguI1O}GN9^}<@c(+$EEpoWb77=&1Jb(m()iaZtDX?XE~ys0!h z*AKPe@)%QgQo$Zd9!>{&xcb5&uSmtZe}EeXdVpt4Q6I?DgZ94g)$n;u|Cj=tw|!iT z5^euKdG8)=Sydi-uC?~wXPI>E>QDmFtL9RA_Ik`Y*L-~Qdw<^qe&AiD>P#W$nIvkP@A`qp0FUa$8>(x+ z`J8zG24|;WE_wsF!pu2V!^@hZw$GL^1K6wG| z-HUwpTFmFT;Di$Vf$`48MNT}!V*86{R{d2Wa6S7+?RwBQg5K&c9Ldrt7x8#~3)4gx z0~e^6-|KwYM1A#YOH8Bw{s9|HUPrABXsoDrdU(`*;Y8A@_hHMEs8aYq>0h#kl=VGH zO*&7j_1|bKYaXPPXv#9M&8M#&pc}qHruwR5D3@D@RMqc7@x$EYL@JeVO{0N_{e<`T zc^{pqFGug?y2)!9L8)wXYvm!Nj2+RAIIW{($CU zduP33io0fz?R|EWLYCf8ZFDj?y!*z#{G@}}u%-SH;jdB!{)E%H$ck5*GuMsa*Rd@- z#qksnf*D}XOAH`GZBJ|}Gi&_NT{_B6w7)h*D`+k1CL(yOK4vRY)46=n-1XOHNKuWM zcX2QlJ2HMtx~FO({R>1i>PfnsfJleeWyh$q9ab3C*aHZ~fQef{%c})Bbl#OftAtGi zz(Z(7`;lL`Bo3u`4#w;k&npUh7j}lI#}LSGYnA$T*}|rr?<%0UMd&#CJNFnnr`4V9 zyW&>H!W;(^pB94d1>8?yM2q)uaf0~9xyy$7onPR_ImHu#=rr9yr%0d#gmgfqgFu>clN?HxsrA?ay>OejCurz~ zWUAq6XwH^$>_{q(yn?O6Bb-UI%%3`tI%!ArUDS++Ngq^&X4m7^Vt`W|-Vl0_*H_hG zEO=?>sOqcMC4JBw6JI{h-ZLeWst{7n&N2~fV01$uuXkb%MBwH^m=_aMVQaOQahiQ3ox%Jdr$>|*S7z9U-hfyQX_Fu3cA-fIu(8=jt+L2^=gaK zhsei9iSYXd`sp~u+u&b09C%e*&?o`Rk)w+pg=XA~7p1Sn#3c1=m=R&IV^-i@D(2KD?~OV<>2`>L4qa_zFaH zl}t?7q+lvT^$y!0LSTezq|59zCbL6*aKz4|hheE{%mI#9G+73Mf3m2?A-?6P=3og$2w^}a&MxFJ) zj_ z-%HX@a21)^Mma+!z9wmfug#n_kPZMCT#YCcC=~^6<+-qI#v&oF*a7ER;(WI#3F}Ft zS>K=MIbpJSwvf7wv=Hq6H7B#OF13uEc+Lgo4_;kUo({|6m@=Cm(gP((pp0a37&XOv zsh}to1+_)P{ytZ4pY>*#s;_g=fM57*n&0TkBzSC@Oh2uBpikE@(GDe`1Q@{RddYBB zyCh{$6~h>U-!vQbh1oMU6I`7xz?*ir>2`M(HwfeP=alRh z0ow|?;2C*VM6U;rZ?Ze`M)mji5-hbLhmDX`q&KDsR6(`@1-kw=S*7qgUJ2)rlSqb7C+WW)O9q^8|VMwNM_s>R|< z&$H22uv!p7ot;i!Emi8J{6{FCrnZsQ+}l^Anp1LIr;gGjSd>@!&B}cqXXkOpw+0&@h3yA!g!| z3Kv-L4xJXNi z4K(ZiwI*ye*uy*Sov2ZN@n{&Rz8es%?I#|I9BrZ%dW4LXw9oKWi7rz_A_&zFmMslc zI%Uo1By;zgd61v{ST0TZhzH2JG8{Z<8p7SLZ%ijZOw>_hG*KRVB-E4AAr>w2h7Tm?l_KGcExI6{=`vf_aDD z$-LQ3jdQs}!Q?7kjoH=YRX3EyaRo#8?a+n#CvsRPX_99WG7IuAN5uSN8ma$i8X)T7 zP?NY~1;EK>Bkwwxp1MPzxC$9>IuzxxP~owc<+VkRJzv4R$yNu`O5|7s+hxf_2x5bP zf}@OlfU7Ko@kDKSaJ*Hs>vo-$d9IdxI{BVc7Y0P&0v6E)9G9)iTbr3=hF#jkbxWFP zm{Ddms+Dm%F{M#12A{xpVMEj}ngu_3=H!lCahcMJ9SL5kYQDkkM(R}|tpI#n>3zRp z+`bzl3#-eAwSC{@uqd~a2ch{V-%t-aD`8!T1UXF13rGDRxCas5fbtiO2KASf7o0*B zFxQy9v0Nd0V?ssq1yBZ0ok=fg2TMtB`Iw})47e=M7SHsDu53Axc#w>MTOq!Y#~o@q z7qKg(Ibd5#hRcgX+)^WQFd0_4NFp_{$_xm%O+iS4wyg*f^TE1wcPx|bQF&Ag>0bc! zXo~H!T@CfSk7HwnXAAi9L5u-RZ1#BZ`Sv7$pg4$tsKn2YtwV-jAmgxcGB)X|WeQf4TYU$Ps3J~}z-d+toI@K)|e8zLMf2ju-=TvJnY>dk>SU`b_Jfh;ZLs5R!& z9c=Js6FaCj34tEX=tFPIwuFyV$*FZ^e%1L1lou{=YAU9+IcssIIT^roIz-vL_k$mY zBV|O`O+FTfd7#!}GZop1H8vKI=0S3}>BXDmK|1+Hw^Qr9-_}C+1m2B0u(a_eIm}Mh z(P(C!3Qb>WI}0<%56O2r0dmY_B%MT@5nGmgNZr|N!gQcc zT1>h#0Ax)oesUeUvyPD%N|icWC7H6-oh8K?%1j3u0459}Vu3&@gUXCXl=Q8%3^6LLo z)~g?$LKd0Ye4zgdd~6Q%FMK&W^*1g9KTf?2_u&Kmi--M}UDNE@@qeCIe=pWLT$oGg z4-$==Q+T@W##?#7d+85Eu({%`x3(r)c95J%oJJy{i%mZ!&~Zd_87u(1k4Ea|sY&z1 zvZyAhB$^7eX}P$O8HqOqH*@eT=_W94OhwSr!}0;O1;RW#BVmt}t49O^dD1XfG*91h zeF*mt%7dxUw5B~)1h(xTQ1m+ji7xB+{k3exAKLie2EH0Z~`e^;U)Uw0Yi$4 z(QLRGj0UI*2WO7vNQ3~RG3@yY*D`-*h;^NLZoI%B-`sV2Nr-zzPAIv2eHnFdaxEXqemb1vB;?R*%tI2^(S320z4Kd~9GMu5VZ|A{;xiIVCgbv>^&E`Lv#X5o=iDgF*AynCNFy z%$H0@3Ndf$7yBir9-pZCB^L~<^L-X!irc)KM_(3}#-w0a(i8_#&d)5iM@gD8X1% zmMz*i&bg)={T%`hcxDZVff@4y-(DQN{6IT+R@Y@7RqFc=itK=eyVX;2a`9#+nFS2Z zAgfbB=*5Y}-p@Tp-~*mD3h?Z?{2{ob2vdAB4(MRZL_i06tZ_g`tiXz`-nOrKGOcRo z2>snfSqf#XGy7xwpg=wf1wstEFF2!>0E)@Z6!blTFbu8?qx&;<9kV)UzJBvw2w1b@ z!-y_lI-Jdw9B}UZDEGTaf>4}${jhue=H8_{$Umk%T!Wtgl~k#1o&<$?=vaM6jI- zJsAmnDcny3#!o+#YE0fU;YVU17LkQkf$X%g*-w%A51$f=wr3FXXW}%f4c;TvPaS+3 z6-qFs*okuA<*qF|jVh+e1_qS%HwoG(bW{>B7r`}1Kf_?r3OHj(z;+h8D$fTBP{hDi-jt3TP1w*E}DA`09{y_sA)`Q6j+jR3# zD#+O6UA4qgK1K|`=%z{ZcJVwgH%+L4q798CDM6KS zy%BLBjd{a($Q!q|BVO--S%~P5}{<57xIf65X?gExP*W_*1ZJE1{yk%M6cPtp0SL+k*mNaza)U{Z$aRtmU zm?NmIk>rLoeK|t??h!Cxb_L_AoTgkhjpX_fxZ=K`i%RCuPZDF20yg;gB;*#5Qfg(* zV!-%i*%GYuk|`S}`iP=x5ShXiTFa1LX*qn_vZOYlIt9M8mM1+jBT)zqR9ZjWZ|;M7 zFAXwc5PYEipcoJacZwo7*di@AmaYN ztWw`RHc|yfq>~&z>3YXaILUdmL}wer{5{;i79H3aO2y8Ddpwkr-1KJCXzC=#Vek|`9>YG4H@67)O3 z5Gr}DQ(nj+NAIZoafR2(3<9&RP!>q4W`BV)bG||fi3lin13=5S6a|97Q8`Gh!clYO zXJME~jZ6VD8=y9cPJoSH(CqdV`IpTO)b5jj)3ekw7R`;kCz(R?6Mu1N<77^EUy(vX zoEp9z%+IdsQ0l|rXUD3;mCf6azH`yE{PxhjW%G7>3h)j9yb<|8hprCIVm5EP`&6b} zW&xEu6u4%kgN83ZsD*6aZa?vQ3nbM*{zR3un{9zNA5?(pkPB}M{Fwz@*S3>mf#5Qn zkuOXc0Ri3qdKM33*em3R1EOG1I6~8;2xZ|{L1TipN~P{4!|uzk;RHwmzigX)*oTj% z)}lk~Y{tiJEeRY_BfwO8D@Us#3W!u01itG4=5anJaC5anE#L_J;t=_fqXn{fzpC0y zSy@}KWhJ5kqhifATyIydgi#>BqZkR8uBmT1I;0@m^}FL%g_Mbg`c#u^_(0~9_v0~A zG7Wpwt>gVIx2cmR%+$YOXgo|0aQsfhEI{5(#{l=KAe4a3kV8#!n9?(Shrs&MU=sACgTFOxo5F ze}XDsNb~&cWY?$--NCQ-+x6jQneHka(a>!@t-@PSKRy;rK8Pz@>#Au)4AsyMt zCWcbbeCyoQ><^C;te=r~0?j1Q!_)_vLct+lP7Wb)h+?Ka@j`tPTK0Kzj2K6{iW*=P z&Y97pPOPmLf<#w}l+Z?x6cnHD&-(y}Ej1bZs6GN!VxR^8o>;6J(V%i&bwP5O2A1f0 z8K-#qefRnJ%x51oKjOIOW=Wrt1CH+wXjCpI`^%o}L$(~jGlVXvF} zKZ%<3GSn-rOJbHgQN=_Ln34!@V7ebe)^^Ac*$}r^l!%|aoV{Xm|6T$6&odvA23oPb zT?1AomYtE@?b-Cz!qR_90!JZ*YiVEC((toqyZZ}e(aeNk<}3j<-hp3Y&gvVEPEoH_ zhk}4JFQZ@-i$e96^{B&yfDmln1Jd09d6cT}HQzGa#@6(X6)n;l7O|xw%AZGqW8fYu zSve}UEyicjFsrG9M)3rg01bdKEQ0Z-;I_ zm3dWv@`hiDX*nxqB?*n=NeS6;#W~sd@0ybP%W;Au!-Fb;6!UxlDT-{8hzT=*av!f5cOdl+~EFdaUb`!c=4~e6x4Q*4XRZKEPYnG5@-Q&J=YC=s6``pH?;s^(|uYa93>T}#F!O3$_S z0~l!yXoex{of$}hES=yy$`}Q&3zm#g6)!ziOd*teS3DUM;NB6>8v6Y48~+jePE_q zfQ?mvfbXuhN;{t?3+@R%J@nj0c_t7ei|Phm8;7~?ThEDU17z-9>qnTU?3#*=&*@~P z(hLF*X(Ew>I|z18l@O2$wDU2}-wi<#8bFte|1uSI@u9&+JjNWPW2j9z)9pF2$u*yz zPq6NfOmgO}XX=d@o|<0s?K_x4NHjfauI@J9{LCV+{Elw@wv^G7*KM^wIY4>M@i5aA zz~eRZ>urIL+HMvJQUN*Vi56}-sDOKSqQK3|3phU^(OgwcObQQsTUYmhpH4v^SiGY7 zc0oFNFU#g%+DpZ|{It`2wY}`3D9lfL&EK_`Q_Yv!%l=|x)2SLRdhK^CRi^KJrM*;1 znV)uW70Q?0=tz|9HQ(`Rlaj~S-S2V_Y}(xi+si6G7Ee3P_u8l3=Eq)QL&3h@Q9W45 zKnhfBv~sYcO0LbxL=J$m-Ld$rsupZMvm|W%>G>3VeqsUsgTAHrsHK~KE)qiB7(#LL z)Noj#Ardcr`bcWYFbIPLjf0JhE67`G@foGrU5lTEA5Fts6+*E+S?zax*gR$V2LO}u zpwDU&VDi9g^@l>s6s)|~?s3no7OZJ8_-A#!Lr~e`aY>y~FyU34qoAQnJlxrcS&|K8 zs2+-na+|^!<8q6`%4nPl7W?>ZP>XK!pUpAaCqLz|cR`e_+L9F|;mD_6Y!cIMb3Wb^ zV0w}Y^S~xMQLx_}@nRG}4;0&M-2|qoPAb#o2)OC3_F0tn#o#jnn+&J62K9(Oi#Fd2 ztm|@0wqWrC8(@Mq%D@?nqb;mzg|8D^zc;GmCiL+}vgnS2E36#2+Zj87GWganO8C@)Ft2R9=FOQ-At#u@i{# z64L0Ut410{3-GlpZOKGZAK_ZUfEI{ zfas2rnd$1Dd!&tkRp*e;v@5c(mJ)Q`}vq&N?m--DH;nztIpip$kdBz%I=$ zzs8K2lP&_Rfa8dQm80YsfY5wY%{U*CpT3UULh#z2?2$HhUr_gr^tRcb`>!7%R0? z!=ZR|GwS791Md75Q(C`mHoamq-D5-*LA=bz3Dun?xS{v!)jeed-602pTs-{c28Nqc zD8$L{Xq<3-Ik~gPzCq1zE}b5l`?sT6C_JK2`uCdsy_k&V%FFP)GtxVjfGI>t{o}LfAs3tcGl=zT_CZ znc$eu^J(9Y^6(KPCR6ew9(s;?p#SI`yEB{fLrgG;I&Bqxh7^tv|JXml2GIkhuY4lZ zEoGSE)3*0-(~)W01nj9ded+JBm5Se5yLzVEMP}&sdbl2Qwk;6HXXtqp`px8AMax7L zHgjZJfFD76r3h?iGS{aRQT4|nJ7@jC5s>rrKGiz(twrbjQ}Y3TnF~myF^sRvnrN`O zNR4mfo>E^soS&^;0U9H4p}uAavo#e?Y^a^;M{35Ij?Z=P)0mocvd;CI_rLq&$T;<< z4Q_b{VTxi_T+&w6mxdU9R4R{(KbL>oMYk5s>_mC#1BisC-t8+~`08tq@Eahs(A;x5 zHxO&qA31(F%OALVIAvD@c7W5ed2{pe;J*-!nB9$%^KiD!%dTJQ7JO$w`pMAK@F! zG|vZxjXVq5$E*6ihxvSCvMg?ZECz>wV{=0=3$xNxXRcj>RmzN2Hc@iUH(z~(0RTI! zih5c(iuwScQ9pXPO|R$U?7xtUBBJKc@+>5#$3dlkj=UHFsFA+0)2-Ah)4*J8+2GW< zgZ3USU5(4UjhV$jdh=8D)yIc)>m*_GOrxz+#F;T0g%R(3hKs$)J&3bH3eF;^A3X+< zk29nYpmYK+u;oxatze~uGMNEu$0v9IYD~V>6<=@m^DJe+ik{hTd>Qr^oUM%RoLPB= zd{k+_yQ6}SB$XPOCwSVdAy3tqCE8tK5AS+RPST)Q=gM+~de#Y|gGrB;1V7%rEvo>p zD$Oi!>6f(_5O|R{DdU8!*9>G#GIr$iOrjP%mP~sd+!hg0Y;S(nxGCAWR7CFDhn`$F zBwNN0bVK#h`uk3$NvB9RPWJl`g(jWUpd~4u+RnmJ^D5~7PA5tfK>?f_gsk%A^&K>0H0aM>{)3d`96)Z&v4prDc= zQH)lD>6tjj1NTovDBoG6m+K$;7!S^*Vacb#uQ&?zlf!RPwK5+>R}h4=+ffK6^7c^e;q>I5YXzV@9E3F`8qiEu@g4^HDt~xA5>#B zkYrcbei;$I9Bt~K4bNf3L08KI;iQRDOtdBsP5aT_2=HJ#W=7frIawMNFqRQoRk03U zRXtYBd*Te-78N!j6`t&^#oTqYWvX{gw}19^bbiol`E*VT;v3B;y7kplaoW*Dx%XJk zF)l9$MHKAY_C8>_RV$Rsn!=OvcRyx1wWS;UZqa;FF*kkueXW=8xY18p7*y)VKebr! zYCRSL^zoJ%>&Vmwl#C2a+Nr-&?%}{rW;`o|5%G|;m|N>nC`n>*FF(L?wC@8AP_h$n z(#nge@}j)h-fvpcn5Krw#^}%zc`@~BQdXn~3bWD8+=C^uV!RK?YkTO>LstCm|8QG= z@ZGX1FKp92=p`nRoDcnRYAH*|ER(A)3wh=qK9j*vR@|8F4-Ima(3KMv)VJ zDnXOmQ%UF6U672Gjhm_qJb_$JUaj)g%q@!VpnUy4GNc?4%ZUz*|W>jWdpccGdS zZPEdr6t*Ob9I+qp%Ta@_!FHDPmwv@FzCR#-Hs`4TZ{HX` z-0cArnw60imUGF*b4<}qPLh5i_T*5obRt-mL}IN;nOqVx+eT>X$2@XpiSc+PqjAd7 z$5=)4Q2quHajW7ajBC(|E`pUEPpt9`qnNZRH+Q_9G&dTSpX`SJ+OI5)A4GN+!F~BZ z1C;93kC~KtI4XnugT9v~Wrl-GNtv;M}mBwzi?r%C*%bzq%& zU?{P%mAmC2xZi~L5kDs_&BjbsYT!9%o78xvlKMCubDU_e1nvhzK2O=0sr69s?7Tn+ z-@ZcOXwh}V1BK}mic!DuIJaW-@uMb;W(b3ClqpFo?2y<|WB{hpB@~$(wwm;L9rt&* z63cpr?H4~U;LtRKsJe!IPo6}h7gAc(`XKq5G(zJitFl{8c^H;@A{@|quz}Z%y^K}P z)^AM0GOcWA?a4Al+z-e1T9C810Eq z|1>glFmkz48whrLBKJac0r-98but?4SxD2ngZ?0ebrW|3&1>Y-kzUY_~&<7sQMYYiW!+p?kzlw~bNL~J^>o?^5@rb=(5inU&C!+5J)uraBlAFoBOB1j!HORBK9vvyE z$8DlpB#CBtYZ5_}-8FFw)%lXiRWaLz+;;F8Ig0DAy_p4rN#VBUR!ZFEdL7r>zk`PZ zN@Q+5Kz52(J+9Yty)(V?cF65&UQKbmk?Yr`SKe;0mS?i|o83GWW%M`qPKK50YdttG z{k$msydeGjPWm~E-u5-#cvz#C8@M_*u9U7`7+2;bIVY|J$g|_hIPfz-BYl-jobA}p z;ZdA46HGFiwQxDXohdLDQq;Ttk#QbT|9BlxZ#cw!3Gke>rTL)Gr|W+?f~5~}V;s0o zffK5eFlwO%h2VsV=oU*KYb)t^?q~&p?(;sMvXzw^-P8)k(ddS-l;!4?Nwo%#GX^x( zAT&>5IHTt&M2p3Ad4ro$bHbexa+0=F%=068^r(vmL-vLa zwcFfUY;FGYwuUpkh#=p}pa0{zYbj7a9}OI)Aiu{UW)GL!&?ZR%D;3K6gwVesdLDS^ zh9A2LfCa5;`)%DVem%4U*)8+Z3Lz;>sCKY6BCfAkMJ#~|(P5#Q2@g$= zQW)V_5jsfrqrYMTTw9DBFUN^zbh2cuK*1bh4&g0Z>VH@zdqZ!x`j^Ze{!G_@1}mh9 zkCuc}&xn05RSBtYfXkq3Oa*h#$*tj@I-Mj5%{{zXH<}vfr{kaqd}ah48jq%jM8jiN zWt=LYXcd?K?>%G}iI44__>2%oWX6svyk7;qV(SIx`a$bCkVYg>9F`1x=A)nI~ zW#2y%H2!8xuH=g_%qXcNM9r_-heC(0u57zqaKJ*c+YN^`dRw_u%w@Vbb|Ik1g38{|5vpaf71+ zej=-#1>FHXowvE7L*IFT-K~Dhy85q=Ot3g@ha%Gl^-n#&dDd?->D#aT*1etQN0d=v zOu!;K2xCiPltm0~?9^RNya5|f%68Vp5yrk7+B70HMPE$O8Pa4!fR!o1`Jv;HEFi^K zVG(STkZT}Rak)Zp)#`*W;mlBBRn4rYD@ViWTfvsE7)G^PXRxYaO`}uHVDzmBlRnsi zz5r2!E%FDGAyq0VN~-w|MS)*cL&1HFd3%+{%q9)A;5N|>6O()x{K?9~WU-upSDn(r z*j9S$99p5ikB|!dWkJmWs$8Gl?0FY9)Yp)QpM{HLS6skIV7dWQ;Acgfd}l+oy&UzJ zg(^Mh$%^yz{Pc2Xx%Ii6NQ0vLijqxJz%joy4#|rrIVp8^{|vu1+}~67fgxY1Ulq#3 z^qx(SJOsivV8{3Cbuf5Sui}t8VICbJFwaH-Y5YXY)>_Ns`A9 zVsDzFV6Vv9u>wj4fg+F151?aHVDWx;fxoNHrdz5akoHiuFwT`~1{P;zm_ngW!&Pk_ zvC&-pmuu_4I@%L&w3jmj7{c@22}N;oA+rK>7dg;tk@V(q!p#8v*-64w$ zCBSLZLrNp66l&rDLUxtiz$1*Wtj38&0ga$S98rpag1ulN%+3(1Z7dteEjer2^+2-n zCESEfI2}<+jwp3SBN+LuDT@2&V=Qq2pVYl-1s3dvIBQ;@DB-VZG>; zJ9b{NYtQyF=U|N}l54ij7c3mW{4+8FM-o&4J67*SjRTtq+M7$_@~fe zSIj>N;5&HKn-=O7;A0R0VE90sC6nVdM}27@Gx}U1frP@@?deS1injD}9U6Ga2o?cX zkW{K++PdGG#tu5YNe3MQFLBW6gbz&68{N)`rI=-Lk7D?W*V!v4QidhP5evfxfvzU& zSvZ*Ku+IuC@z}8yF{e%8g~Jw$$hA)WW3gYSe(%#*(BvINYmqP1^+QKB16EV|fD&vO z4)XV6W!=M|A(@FtSHJ?Z>0R+Ew(H;?V_AH-W+dElfeatH&IK86hwbzA?engwzVPj+ zswhwPq$c!d6o&Ijjlf83ZRUP2!l$9X?PE_7@i8%}+A=kj!Oa4#7eFJa-#twSl;6J~ zxvog~I6TmDLD4Fv*W)gj!I)6VRmsSt&uNSlYvrH8`>I7zTDhTWuKg>sWuD8`_8Yx= zAy*H)->Y-D+83~;OfqJi^Zb3>RM}HbI5N|tu%Y$?U1V*;tI7)vn#ID z$x)oiV|BdPPZjke3VJJOvjUc@wasTv)3qG_3W-Jl^$bXYKr9Wh%Ir z@!%7z;pJuY4=;mfR4?U{M>}~0FRAEEpHu^k4{ii?pj9pvZ>=Ms z%d^*jpOx*kp?8Y1VuQmNOgI1OH&=DTB`n`WGOO9mvR<{>8ba{HA3`kDJoGJe33?bd z4{!zInV(fQq4*=6i#Kooc=6lzh0^uiX))qpL49Rq+mYMAgUXjQiZ4!>hOl~v_yQXn zPzU`NHd&xs!!ez_TvEG2-3rl5u6L+W#$j{{<5W2+tK*aJ0_wL?;5ZipGOEpGJg*Vy=3OX0P8W6bVIuV%r=M(-Ve4oYU{ugdr_0&^|#p0ZSNrqkRnMp_wR>VaA@bD#@ye7dHFp zjZmI&lO{7UFE>;#%=&(z!XpO@f1d51GwQd`yVvAs`FJc*M`!NTLd~hgoDKOD@ILd~ zX||`s*2w>sk00N6H&WLnz!eb@VG3y#UP;~O5;uDu4v0%2aMSoEcBGTzeuDho3K@SrIg;{~KyA!Sf<_m9kki$JJy}m0FB?6tshA&*P3xvEwaA7VyzV0yCZ+c!Iq`~CF zj5GN!9Hhl$nvfY+ss_Lwti^m0j4Wq=hZYkQ5?aj5=NU)6wcf$mx~&>hZWRycjKe`_ zY`%4f|0)gCXR>|h`&R$1q|dyhn^t?%GFHQt1Oeg%TP7bd34vJim9CPo5NloksoM?r z$JXc=doQ`Ijmrm60H%UxV9_p^$@U?H@*Gf9+^WKLGziKvrF@`tpiaa{mnbiSOQb3H zD4LEhaAF&jpV5>c@vu5*q#kOd?lnEmc;n$Zx!veg($|i{g)d;We;N~(k9rH2DUlgH zW!}U8&S+q^%sRk-)&VFgIDn}%09fKo8&z{qsilRqI)e@eH?WjrRSt!ojAMkt;oR-q z#t^B8*+{dRz84MNS*uyq3q~%!5Y#kK6Bk`% zvAKZ1&g^JYsMrr~q2*A8BF;sKmF+agICZq%loyb|DD;Rd?lX%UXy=5^wfNwsCOpj0 zLXP}(Yz8a^`&~YcC;6SAmrY>9b>Ja?rvqj zxK%*aiPh#|upcm^Qf2Vg-d1Pqx4<)Px*p^eId4Tgni#UKsWUx(#i}Ab{@_oOPlaq_ zLttJK4Xezz(s|5$E7CI3HwV7!!eSt3;9w;Y=2!Ir+J!(bfxg&h@_GE3UXn$nLL%{> zQ>+#(W}0Dm*N@^HWY%V83A7pwBULayil+oBfUhZ8)JCT*SA+<#Jnc&E6V6dgMS$tUXgD_OV+r9>mG5&3ZGuq4bD@!TqohkklK=tzkG-Z;xZW*M$o_ zgih|5Rzg_~wh%f{U?g69zU;93S#nUV8SVL!3K$TMK-yBqoWcN%5XxjA`B#i_6XX~#L+WmU_h8D<6N9rA=b4>i`698 zi&6iYrb5-TxjZMln~@_+)<2jQr;CH#{&f!6g~yck$)?m-9OiK~pk9f3=eNCbVyEhN zPpt~!&Er{^?5sGevU0Kh7oGH@p*8STG_|gN%g|qrTqBMngB}1zYZG6E>0rqynm{tt zyq(h&LQQn4gxn9Tz^W=1>mrj>OT^Z#+wbcufCfn0SS#FZ7aeV zTHp?Gsq427ofnZW-;t8VPkfc7&pN{(csvuoe5rQ$No}&npcfvm`h%nsBd>CU`Hd%s zZKI#~gQ9VOve4Cz0XN*K|8qqB-(!fK=28~+B`Cd`lP-Afs7q!xN5ag?Lh`PX)2iwn zPs?RY_~Nb7Jhi(jSY}^*0hzTJ$|X+=3O)M=qY6+@X#gENexcFKn-DkfLpM~DFZecQH1iPlQv5FD_jKMX0E%+Kn0-`KK!-;D678j zc;&TtVmTjk%Px>NsQ(_@hdVuDnB^k;KD8?zX2yrw>C6NXV5fdFM|UPYLVV;CvN~{B z31;9XMUp6^Iq=!~S^hzr(PATt=@Dzb$#vp!}IT|)ywKV{TA>K;$x z=Zbfk<8%||M0AfFkjl1E;p)bNoa?5U$`n z++%(;&cB?N6V)3F<0GfuW95BDbw8ygg9rTG_lT;-`?w6U`HX76mk>8R!-QQu!crN$ z$dqD-j#{q~eMKG!9qO;l!ZJ3N_r9D`@c^-ID=h4OksS+rQ>3&UFYNwb73e+NG5$`1 zT{wZ2hIn=w;k{YZ$)NkCGMx>V%>XuoKbzdU2TFiB;ns)9KZ)~l50Nz>>0scxs)f!% zMQqq<9AADx5bop<5Ry#_5`f`5PU5Y5QD(i_3+_M(741=AoUxe0q~q2g$n^NPo*8Q)h3nIh}+JjLGmd**tBl55k~QZYQgZ6NKKLHe3}dd(Fd@WBFS-*!$0IrVg3IWPUZDE+*ER(kSuPKcMuvC^weJbPh0 zJB6!r;%Z@Q{XumP&_Kv{?j0N>Zt8K=ImoSN7_Syyc-O(#WYwkhI3Ntk-=J>0X!exN zb}^M#G{g-afi*meOtFu*dw2$(rYad^<;veD*ASXf`oIU`k@p>I^89zCzes~Di&8z;}C1QJNzi>tv&bH4{uPM*lLu{bDJNS*A))l21*BQLN zDv7!RME%z=MyX60OgOr&bJn)(1(T*MzoB}#j1&OPwUzM`4EaVbz@~*Zw)$3{)ZaXY zJMz@lxA^{TT-@x1_JeO92cxVgT0i(yuQpUD6Zm^$ZgoFpqE(E8sa1+bdzkn<8aT{; z^}l)n#;`7^Qk#qzOp&s+;b?NXYFJRHDGo5QY@chTr+N>qFvy_(%R8aSdUga!8J znMsfft+lxWs^*3R7!7w}Hwe%|CQ4yU^bJWH$q!T{gb*9@1LM~$s&_kOpzW&0lUY+S5X zK_EV{Kq7;c`pMxvc6juZu$h)dmK(d=+p$0Y#h&Gzn@Q2@MrQgevj9f|nQF6vE5m@S77>9M? zjl=~a%TMjbfdJEKpsudd!0f6RC}Ph+EkpCpGC;%+WPRJB@l<4-ZD=wyT1AlzP)#)q zVc2_~`QTkIHg+8D)vZ`Zwj`=e*)2_G$`He8Q>f_0rWy^E1ZIU3ivo%MAD#oZMm94n zZIwII!K0CwLR*^@CPpQQ?Yhq@D}`%M7ufL-Q?KJTt4V4hwmfaSS?h};Ej$yF`Nd@~ ztq_{UFq)z;Xi+veqnIz~0!Z$xVYOLR4;F6-PP6lVMH{Hg=3P8oeR6oyWSX&&F9*4} z0rw{kJs_m!WFBBy*hQ`84jx318qYSUFM!hVA-9yot9tgyogq)zYIFQt{=GJL2t1t1 z%Z#Wsh9@M<12FJV3w=w=yTjVTO+zvlCbFyy3dm9LA93_A;=$gu{w++dyQfYU}1| zTW9Nm4^tPyYY~uO^b||pi+oFdviHnFydK~lAz}c*0uGY!@VMhSi70zqk8p#e+e67dlOYbulX_TWj#;m&@jM#h6YEZb(|e_*sTV;2#=(?hh3-aHCMfw zDPW@t9rZUQXCBeQWtw?k#$er2A<-wMF7`c}$uptmVo)a*>y;US0maZ*>C8;G zdD`hAGr2{WX9|GQmzlp(-y8JEfxu;;;oMl^f`*CJM!ZfoRA$MCJkG}FV9y~#$XJ1u z6e&bYSE&3VJWo@tZZl}DZa2zgg)@vw?X^z72c~&ZA8_b#=uqV%J)1iw(G~pA7Yt35 zxfRLRvZJZ=z1u64u8XY{>gUW3=-L}vF)!2H^m?$ zTEI}TYXT>d5Dzay`b1dO-jytvS1EzL)Fixl-7YzuXp84IzA;{y$u%FjrU`)qzZMOKDA!Uj+00?E(;I-0b`^x{Fuwr~V#A z5S2ufqDBa;VxKd|HuBJJduL&cz($|GJ}P z1I}jJDCb(O=jT4&xP9XR972=M+BP+pUEqiH+eo`+t&kRYB?sdEccGAJt~zd2SQu^C zhlcO{7wpX+I1)gK2hau$hVeuid7`t3_D|L=)ghVeOMJ~8ZhLq< zP_%BVc+E%SInH2EB}+wfwYe_l>U&q?atSBItRX1T9nu&;St*c_nk*nNAS0b-)+L*8 zU2X2cpS1b4X2<7X;Qw4VR?}U=Dl*}r;Sp}2t}R&2*^l-gW66HfRZ&9BD+@zS($pdZ ze8S0JLv1kTkmq;~-g6C0737g=O~(N*tF`~9)XLn%@{is0Q>w|mK=CsL&SuT=!46gH zinS=)5HR)tot=+4w{)I;Qh)ULV9eQLm(P2(-0v3%8vFfTJ|DY=38wbSe!ur0 z*A#F<)u8@IPV8a_wO+qhx;%RQvOs8Y0g-C(iO!)xm0!lmz_9vA}+g)XJ^D^53-Xlr_zxXR_iYwZ!t~N6llUBG#a-8NXo`NRwFLcVHEg+yd4kKXA3A2vFcntM zKO_zv=W)WX@gmtd=Z)|A@=fMRf|}G19{WUdIZ*?;?00DQmA3n{%H^a($t5-zNLy*) zi-$8!OU4v;%odU>BOKgcuH*$hB{=}K{|xdt>9DL}aGpmsk2{Y8riS3@P(w@jV~EhTP#~hP;lR?A-)vG})4(`M2}4t} z@137Sid@@(YxtQ^+pH>&1vJ1AP-myyV4}9>-6&|5=y)g`e9aTr-_RsP0&Jf&IA#G@ zQH6t7tsH;rY269F2M(Z>eG})CNUqEv{R`j*v~_Dh<`;xYCRpnxxb?(fXpizKOpXUZ zF$G(ir-v<=^4Jt*PY&{pW>1THVP5PSG6dW@)Y20z4l(f@|z zM(Jdk(|gT8!Y;90vf$$mxkLi!7*<#KU%)^zGnLL_gp~8u6MZ7B83wJ;)BAe9PgX z3R+YRCSRu|1^RJ94aCkDPyrtJ9DY!)&GCaR-nB#BuF3+glopf1QJ-xjwk0Q9(021z z-+-f79sS7~Jk`NqMbkYoJ{1`-rl>6v+jb?k#|gWjq?1VatOS#dYTjf5tLEzc=HOw@ zAI8hzBV8Z8%189e3b(|QOWG%U;&$I|SU>AvnYcNg?6G&QCenCwYdpHfIzHM74E?xc z!}~1d`tIVm5c=Rz#ktmDq2V4Jh$7RXn@%VAsN;zpRKO`=D z0y$|OC|kEZ6+QAy0gs4{fCN(#C$x#-M(XK>K{hRB>~xt;#9{SlK>-0zKARmAX18P| zHiI=Lh?J13YJM1=O6Yj>tUHD0!0xm8x$b_s@&$OV@Sq5u>pY(0OZB4k^8)H*v+)^m zDKmyXhlk07!Yjq4b3~&c3)SwOWJFGS9Awn+ZcTa|wlH~k5XTDR~R4#5qq=1~A? zAoW#bBu4ki#^%SPE9s;&l#iTp3$v4z7I0P2^%YUwEjOV}cSdCGsl^-cjcB99T`f0W zXcMIMu34sN`y}VOjIS(3Bgj-~9~OSE;Evf-re$43WePj0W!&dDvj?fVQ}5H2v{sC{ zvX-+v{mkNgf098Q)m{C;W0}R)w--6GRdi9(=YGvmXWbIG23=g)?EdQG&@IvDv2H08 zSgOHj>Dm0?!_D+I_eML1RD*%n)>9I+G~_4LU@-}zJ|2ojQY#i&c*1CuycAwSt?=}&%=s1v?7oY~;2j&JW;N0BHOHMA0=!lBy< z$1|f6n$XB$MC|LrjT}_QI2FF#YETw?G|dh@Yb8;ptVf%C+!S} z7x-YKx)-=ZL0x@*kofhJ$DFs?c|3^)=GJ??#~u5L8DcBG|L7BobNGnY+ehIhP7mVt z3o-8}u@Qt}^!}l34p#xT3zC2^UccsOJd~K0WJ`G{kCYXa8FK@r-a5-L9G;!Uu;%7x z>_J+Q=}0l=h933(7CJB2xf7ZMRK+R1FrJ(#3@M0zyK&jl`TQm~x6twk&Xs-(b`sVC zliRqKdx;XR3#3$zrQ;Qbe`{Hq8@;K9{rW~Dig|&q=uhVpqrfWv={)O;UsQd?QR*|8 zvPTZ5yRpXK%=)Jmks%7GBNIep3D=Bp3<;%(^Dy01VKZ?xQ{Fs!q%s@?qH$rq0NWKJ zINHY<<}X)|O4K*9Y^rZk!y~W-6FiC$Trs4t@8m2?iZPD*Py6XoU%Kc>X1|QHaaa~j z3KB72xD9otqrdgH57(ZQ(AKbAj40lHEBZfm3;RUcg6=e3=xiNUCM#mK&DeD%JQ6Q- z=w?NdKF~sTc8Jj)aOFKuNNbnkkCbN>PI6pH>~M@s;4ct2fJ=a=4lu)>A87z&KlA=o zrg}8nj*M#*JuOOJFktmrcAWA7O3XEI@cwj@*@!-Izx~!6a}T_>sSt(N#D&*?b2MEF zCOnj5uGBbbf)O9Q!tW?HKq$>70>j}n4Gd%*QDU7ZB9d%LOl+G;uulS(Bu>anilJeW z@sbcfM=B8B&)IkSTi^0jwi?q3lH#X|*LK}A+TB<1??>}f zJnJA%+qxqT{3t+a!m!1?z#J;`#9F{=4OufH8Nul5yejTMnpP|8Jvz252v)UsIESUh&1lj!z(y!xe?n;J(o33t@Y5a-jo(@# zBv(}lC2fkub8wIKFF`R*c5?**JOhsRn(9x_%nq6!9(ptQ3h*@n_=%@xQoMeY6?xCPY%s(lOm`=s>A;8KlF=-?a5%eI_~jQ* zW-cY__m3bmJm^95k1^>_9IrxNl zG)SNiw^~Z*pIVD2tzB=}HI;wsgam*C88SWans2DNM%Qrp#fZ#Dnn;(ul+UushuAn! zrdoHwr0gIfMMo4`2@Bf!=?Z1W%jon&=(f9y+a0>0e>Z?g3jwHj4F^v`2h@azYKWDs z;(Vb(3-wj3Jqrmc$TmeFy@TX2UjG;IMfSrB`9TU(Hv)@%&ahMr?1q%DY_xy8xB$Mi zn5_cD_@}$IIqLW7E7lH0y8bcwK#*$D>zI*Cj39141W)3f0h=JI0v*eW^;lH4YVy@c z;|m5M>WiCb2Gmrg@dki1Meb&>Za-b&7ZPG*8>Oi_Ni@ic1QX|`K?Kq-i(PJ9Js|Xm zIrX*G4Zg%Cos7u~Knov~e{WtM{Hzu;^8^wLnRR^|=8396BE+QC--c!}Eu&7_ot6N@ z*UA$0MMI`2urV`5&Q=APc)(JKs!f4(=!49imXB9gBDX!oAXnFC=UN-9gU)+_lcK082je$6*2HTa;GG;WS)kvq3 zsj7g9zf_A0@$!cL%+(JbL47zs125>FAc(33m>rR(g;8~-Z=C3hF4?p?CX)a_^JYo> zABYdhBKU!I^K(`{N-T#2D0U94%DqFbuUZrO34N-F&UOrut^$t4D=-y{2v9m#0;((} zZ3w9BNX2phTB;PDuT@gHamZ}&#H|VnF2)W%Kp;Vremy>+iyz@QB#!EN*}UD)j*{O*u+IT0oQn%v2ktK)+sO`DVW$yfH2#VCP&e z8QTkaMaY2r6x9trfXouC(uQh514DS1CT$a<^^%YU2nDInLP(Xu{!w9-kU)*It zXiU=qwJnChr5Y5&zL2ND19bq~z?4Lq==e_ko}_9D{FOL=Nd<_9zO(eQ`vk;*eJ(u& zTcJo^te$1_b_@UOk&G;7k-GN#B!muoa^>Pmm-zuv2IUb)uzZYATn&9VFILIr0QLQ2 zIxXzU)Pn(eQr|;N6gBYi&-Ep;+^|~pt1$v5wu2Di6`}i~e+IfI)$L0(>?=d}gTF%1 z4f1L^imX;n(vEC9fQ^|vgkE5~J#a>zAxWi)m*v$OAj(+{qPUWjz|@nOr>qu4-wM4Y z@#msJ_o_}c!!i2|yhAtZuRq1i3&B8L0%l7hYxs1sg<7#Txgr(xM^1WCthFC4oL32X zeS0kMEh=IjDj|2Tv}W?im4P#}WBn*Y!L9>pWN?Ucz>9fkc+21V?eeh1jB#t^7=?kR z`d!AR?~AAWtv_iU!pJCOFqwtq7{WXiMTg#CQ+~Jg@WkYfzv-5p$t{14r;luw+#0ra zpwBJAaNHUaXFNQ4Ll?^Scjeg!T3ak_Mhqa@0S%k#! zvIi${NqRsC$EbvzSXKCTNlb;7`KBDkTZs&tKu5W#S+LeNK=q_Soocd8K8nM^s>wMF z7B9M#EkK0(=Ew@+*|jpTxR>K8xDwaN0kVhVTeJgkweb{O=XeU?V5)ib{&5HA$-B`D z97Ot!&u3P#HCeleN*69;VifNvRTP>hwuk3~0G ztd?$u%t|W2R=N&l@lht)P(P)-!YYTdm|iC(u(Zn6X4{LnLDBw*z2^JL`Le5m03hz8 zN=Bk!L$qgz0WJzuA|LP~YUHL+IgSrA3yC+&%4BzHOm@RPAGldgb{z)oy2a^EYo@P~ zY@7A0cKVk~!MYR233uP)P_XI+jehm&$I`FfTawy16j6(#J?KQ?F#(!NZa1V&NzU2g ze*!=Z6}0|*7gBpEiww}t-@1TFoX=X!RReUNmC*5 z*~AIK3Ut!1M2I{j7)B;3CW=sRBo+>|NKa54ptkXVY1<6Tz<0`&=Nm9DffG$bn|uE^ z;wl2`;(l+yKTc<-S-X|)A8Y<<1c;(bLuJ~Mi0F!ga5z`#NPyy3_g;cC-I51*mW}|I zOzQATbHgKDJP12?_p;12BJ zS#+R9)^Jcs?gNSCm??=&pdl1Q^g$WgPKFA5T?&>OhfdA9caiK@l_1@SXfcLcUAsyG zgjSX}Y<}&@1O$MxGnu3mC&eTpx`p|1OZ`=pNX)K(=IXEWb!mR^FZGbY3jr`P*crqU zQxVSBl3qxd@D%LfXXN^U2Czu+^zz-39$H~cEc|D+4dJW9C&4Q9S2=%PeU_N^T2M@f zj`uh|3OL0l3-y8-zQIE3ID=(}Oirus*Fk!$Ha!Dw2jtfeC9p$4#S3*;`TJ;b z@uE)m!U$QTv!V8#9S$xTRjPff#Ue}9z9Qa)de0v9(aSIdbs|+dwuHEaQ1_mT6XQ%u z-)hWZq;dVHwHjq*ZL5n@|Hx!Jdyv+bbq0#n$j}IBIDk-Xlu+*}8z;cc6Rdt=Bh#gc zXv%QUoPqF&ho11rXygzhTRb@cPLRPP#CWa_yLJvJ16cv!^=}DsiY^mpSq1FInJgOx zFHsjTY^HxQyj*4q{IgL^Vp}1ZOHvxi&VfwZtSyFUoXaB;TA&&4={8m0oYT0JY=b+V z@;JVkT!qI7hY{p3w2x$M!Y&x^ELWc^4vT=cvi=FXh(UqB&c`n}`57jk6!;k82q}mL zzG-v&Z(frO$KZjgxe0H$1Hq$d{EmD0!)TfG0L@9ky;YmzM0lAT_DU))=<@xTE^9`s z$fddU`tu=e?1~hszxe)#&%=}M|DA#0z?@qA++rQ9YQWF_^1P8qkNce+GogavzBn@v zLJ`sgxAqZJ%0C_f9J!QAB=C;tsKZt0(m+hvaz9F}m~W@*ht@=33(@-ENzsP-=v2`$ zdDWdL^!s9Cz@G0*{)K=guh$L+k2Rt_izB+T$|Kr;@Q8S{d_+9@r5w?I7ACLJzNtK- zFC9E09xWdckA9&eT1r-5R~>?^LS@Hfm3&4&OS1Yp2xnD!wPJhl(|ICVv70VL zD@I<|`cd2s^`!5%+et=Rr0T3uP*K{ID(btk65dGaE@28#q30OA^Mi4W>xznqJ2Nsat80VkQ473N%y5 zK232}=%mW#JC&yuOf|1xFb8e-#TW4Mq2Jin>_5@xMfkR&s);-Wh5UTD^x@0G6|}@4 zfMW2iELJ5&?W8CbbMI=As2B?jqmPA1veVt)!>t~YfxOpTS=OJKF`(E2Iu>C zzCBMp35b~&44I)?nEb~ou+xkvK_u=f61%9gWv}Y={V$2eI?|R#i&1u6QUsq)EV;oe zJWuXY=eEz~I$&mbfv`)3JIeNra?~A2MJd|PT&i3uPcotDbk4FNRb6_hiV*I%tUnK+ z!1TVJ{lHF?vCPnmb!7WX=i^>cTE$LCkhrzR`Po^Mxj5WpGwdkx3mok+p$X_@mFmk6 z55|>O>L(*;&2rrQ$<$z?A)Q*=JYjS$dzsi!F#id)015TWdB8@uO!tENN2a1&sR;XT zv55PRPi6$wwnF~6aS>rQsWz{v7L#ni%vTF(ITsx&x~)Tn8HJcQ-?v9QI$t2Bj*hR9 zB?D-SKp&c62sjQ3!|H)$5@pxx8^Tjg7Zt|{*BXnEyiG51J(2{Cw39L?tAP*`P`O*b zI%=&+7P_btt%NqD&9)B$wLt0xvI zay2fiXeKT@DN57=-H1kwr@h4jQ;Q*|DRMOmOfQC<&MbzU&Mpf%6}<&)0T*KJzb6vs z!bK!KtXc?V+SP!l7{OZvzm!q;4@aHNzi}}~S(NkBthN!3YUSYWFXiZKhveygC3phrH9DMt>lepi7H6!hmYoFkBTScr<;xuqB)o$ z$mc$q6%x@W17p9<4S-bOrx971A&{Z}$w9VC>7d&asvE-#G9n#1T2<-6WGyTddHXXj zc?+Bk5QCETQC~v4SG0Xu+8ujJC#wDlC%H69o`sFYW(G};Qzo@7s=uP&o%&)47Kehu zG^=cA8FMAP`@oanb0|E^D#~s3U8u%F-xWbbq-+a4mz`AKHRV2Xv!~n8yFv5gFiYl( zf4aMi@{+zwSB?OJ;Szlpr(f=;Lo((##eu65VM0_0eb?=}rO-D}O(6c`n0d1kk zV~lQHvFNC?2WLM4P9SX`m)Pw)NmiLxNjc1jA{GWi zO&TIg>?V>Y2_qw_}RI-aO3KP)!$)V!PEJJ(5|J8R0=|KH*-ThIZJeawstyTupZtn1c?x zNY$7x8FPt?(`02ihH+)yQz97*BrfeoQ9Z`;8e9@>1dB92$Ifp@FT!_8Xb#5vF-P&L z!7pGGuNpkbQT#w`fR!w<+(MH7gFlm{0&_5UB&G?YM%c@iapH-~zI->9UQymFm1AJB ze^|+4Ctf@k;T+Qyim(wNE~&`tS1uxXZj1cU%0<|u<05Zdv50FIEZg6U=7n>7B4R-7 znuH@d*%eqyH_g1T72QZ`v@!r{L8cv8<|0nx)^#=79p7*89)NA%6Vw74@<{?=rYGJF z!K(y=$9YcwOX4{E>{);*l;I5C8VJr0YzZf92KX0#-7{F+3vBYZ+H@GY@y9VH!{h&> zjY(eMKiZhcxb`1zOtZggV+uYgLl&IiB(l&%m`HoX4X~fUs`xoY zSbn*z`r~*HOek4ogH zG3VQtu`pI4vke6K#+9eyETA+T>H>g;to{($dq6=5pQRcr`s9&2>n(W8DyuW#8bE zY!`vo8BR8A#);q&F!a!xJ&C=-Yr<9OHJ86V2^75~P{au&9AIK9V-Ek~B1sZnDM@&! ziH?WJ6b|#rG-Kt|Oo%3~pSE)YBgjXLyknSEiR+Rp6sv^8WwE+jR8@&^HNcDKavETeNUH|oz$)NXEh|&D+sR*^1Y4)L#QE7H5nWCF} zs6j88J3d(dKRmgd(DU1mQ6moIPhpGTbr$KB4Ck0=yM4jh`%w^vgg`N zdX#U;Zq;0zlr0-#xze3Tid~s0bEkgjIFAjg`1K)a*Em57RYApah)r?}Azmg`>)*P= z5(ri_Ww%PS=E+{wKCc#x$Y@q=<&aYy*3b zC&uVrJ#19_a@$_LD%|1$CYSyV^FHRvKXdhK^6i|rH9@MWa%x6+iAtBx^O!83dyhBu z0FTDc2d`%PFdW^N-$2|0Q{(%~%h8nJ&E-b_3~@{c-wbG3e@1MCX3`}@%Wkttu z*h!8Is3eBEcv&^sm_Rxk-6K=a)rUZgba_dCK-9GD&v00QFDVjjHR~JrrxObjMVC0v zjc5oBv+cR#*dAFXuH3stJZ~t9&TlVGSh$-Ma6vGcBw{t|TaJ$<3@MXJM-~G4W5+88d$G369 zJfTyJiilbV1nY~>*4b)UY%X_(u7pm4FGQ7P^VKPd^hHxewUu0G2A<1R4;!LquQ{g`PPMLR2!D|X8KSg`ilz>9?`chJZMC= zafs1;XL2+@@BpD0&8NzAifpoIu>b)cP{)9TE?7I1+@J3M& zOn1DC7xmjnjN-vSz+s@&VA0Nsfi(w+5(^HYtrW>}V^(R{huwPj{HRNPR)tYh&!4lC zRVetg3Hi!Gp$=h4VMKP^(Tf-vEXh6TgW%Dx9v1~ZksluiLR~Vw4DM)-3TTU}XsEb@O=?bUc9@S=uiA9NnbLA{!U1Bi|L1$5p zV*c2oac(pxEo4_nra9tcKw~kiU?|7tq;$bLn|8C4*vT)H)%2KU#sufUjD3yKhSx2r zpS+8hEqbB~+_A+f5{?_=fdYf$0LC!Lmo$#rU+)FFA@im~1LP1*uN2Q9R=8gy1wihf z9>u~l2UmrMlN%aq zlIzkE-5f{wNa7fDlc>TmNdg;)CtlK(?%;2;GduAbk*_MHEg7!l({6YHv!K$9 zgW_hNgikwUJ9)I@4iO&hq~)#OI(Lu;4&uW4YOf=p08TJ|e@JD{6tLU^C z+T$6+Xo0Axn4sbvwN!*sK@d?vF_s2Ri5N&k#UsXwqN2fwf{KcvpXYtQx%S$-b`=Fu zCZTlCx#s1Y-{rmEKBJpP?fIAD(Yqgy-e-z@v8AMa@pVYqp6bs^#fNuW;e#P!b+h$7P-(B?AW2$FHXkrFog};UHwMVIu^A|2{y^I0F6) zGo_Dk7v`v<3;K!yQ%Egii9NJ^YJN#6_RUg$& zg~YI_JuLOSehE-VpM$iq2+tTT#l$?*)sx4rLwPG z(?Y;&bg=CyE9Db;ABq&DKvnW>y4Vb-N75sAe@Sbs7yZ{x$4a9;nnGy^UmMH>b#b~P znr>=ZY-20WP7i!#Qo43h6YjU(3S;_&2wsmD)_)!TH$SNxj=m^~F_2GQ>2u7sng))5;Pj-Wlw#}W%&fL??T^zxhf%L~2~{xM$+G%~qbdIfwJaOO9{_SqcHzr{q7=MHNV zNnXf>&jFXH*K&L^q@Gm2fKx7=&n1|@9#8;MtJ-9R1O?;T%+yJT1-qj+uR79iv#5YD zQ4o_GIWa%rT(C=HIm0~4&gA3$jQA`R0b3GS=gyWNaE|x7Dqt@o0G!O20fa zW#}}Hkm7!(C=Q%+hV{2AR81L`vS@q6K~$V;rE#-oN!M8rwy$h1hTzL1S!E@p3Ml7< z0ENJ7r_7mV%A9FB8YX$32qg&bdPK7i2xBG|3HHmgC>u=g@;4(2F>%v?m*xwUQj3AG zS}XHrsNm9t`(Mz7`@ePVf)pMaEis4;04@b~cnR&vdE!!9kWrB6ZDzp)VD|*ya$&WM z8AmLGD6c%UbeSKN6`3%Nx?h{<5?n_i5a;jZ%RDQS=J=#w;LIDI z5R@sILdApi~@ikDZ{<0V+4+lA_^WNv=CE_4T|&BFcEV4`cnkGObOE# z@LX0;F^GjRHgj8hVgzVVyhUct1D9i%;oF1m9b+@)-uYawy^^$1VEOsrZ1emG;~3T_ z^{%K`c<}XdbsfR>xqO9Q(C5mZW(2yI{uH! z-zPAQT2ol)x3E8D%EO@zF;&1tpXfr;)w}~6NPKTmJh7%i<2YCuQYZ*<>gi{(p3Vu3 zDSVTn!g^OZy0cF`bfeB)fnL!*3 zs5KJ7@ji-baM(!+Dg%Y&e1qnVv5%sKKXV^1X#=$nm`#$12()5pYvkEcm~$LbAqt@C zqXw)Np18f~FOjLm>OggEP6^lQR~b}@pN#TdiCM#I-MnzikHc_&V+=E^KnJ z0(fAeR4%q*%P`g2h>>}o6Y5)%qqzMLTMqb-Mn7<@q><9)@@7BSzVT|elk{BlRmn8X zTNteoCM0p__vyHUSV;3&C7FG}R?M!d*#a-)P9KMsl1=5b(!_yC&lr&S^8KA4>W)?p$sp1N+%I|6)$qB}g} zsWC3I{y0$S>o}eofQ90f`T+x+_Vw9N4(7{asUOh&49vz}67kg7F8DXStbV|L;;E@0 zuvdLjc_~OtAiq6>G0vrAn&{E}&CCT-btW`M>7EGJ+^aNWWxyVE}ayz1en4P;Y-hKSE#bWyaMMC5J=~9F*gdLzvZot}gLvw02kx z5g5pM2(`ob3E-*u(W5c7u(eZ3%EI5Xw&a&o-~cnqx(oEDB8Bm*0oS`2XQhUu?BQQ5&a(_~rA4h7{tUbK)8K<|PCT=VhIF0Y9hvX>b6N$*fnV@w>R3Z3t* z+wmmipwJ(b!(sfyqED8o=C>5G!Yux{=I;^PxsXMxn>QoQNKGIRE;SNJst)c^#oU&e zF5tCHb#Nf44l_JQ-6=w0is}$CMDeEOC3zFmN6{y?o+ovV)Qtc_I+9dkj-r_n&$aKm zq3uX$oCBE~15*N+sWd3jLyTmINsFWs+2mW<3 zv$1R8J8uLABrLS>`Dj6NKo@d-=jT{o;h(!Vd3U^4zbs(cX%~)Yfyrra__$I(qJ4W! zoCO^xX_6tK1GJaK#S;UHF7VPgPu0BLI@tFxW@tFr<6Zcff zCU{3qus=4zV}(sT)M1foy9)PRFScI(Fr#zCnfMeMj{t z4(i#D*r1j*caUTH20}~We*2DzdO5-6gP{&rj_ImZR|;R}ruxiBY)s3VJIFCzwRSwF zFYdEWXaPB<N7S9ED=p{#y|8$^EzdIkEqiZ>V}9`N5ngq{||uP?mlv61z%8jNLv&R~fp!<%D7w zxCFxhsIO7!K>xOq5F;CSid`lmJ(yPjS^>rfXIB)`B_;&Xc@XuFn}0qWfguRX`Y>bI zXpc>^`7p=LQEcmi1x|d_6NGH#XHHJiPJsepw# zGKc2(VESXxbDupGYiLLR8NgyQ~Ed}>~L+ngR=W&g4>_D!{f3ZWpFtU zw|C|yJQKY|x;!#OWr^uobHB)lWt<60VXmHf8IA%9u-9rdmD?FINnFx9P%eRj*u$dU zV2`js6^}GCAjUfLLz)QNT3mJak&UiLxf+!UH&dS_uWM)7WUbi1fPji9WH^4;-P?L6 zRZq(Y*d%X!XE86G#+qP1wg@!Ooy>uad{%T|3y-2n-A$-_5y5WWhq5eolm%lW(>ux3 z-gWqDax?30(<2R??HRyBKZ-c7uzPh#IU zgZ?rb^hp~rHpiSI2ZY4tNHoG}7zqt^?1|(upSpkisfbv69TtRQNGpamoQgm+jqP^-+Ny*+1gkPgp5BQx`S0IDfIQZJ zt2$|z5~}z!OE>^g3#*$3TIjN?8-My;*hW8*JFNtLA~!U4#M}grZO^$*OG|r!hpAZm z_R-DP=ClL=%f0qB-eBV=dXNTA1@gG_7Vk{%>>#Mx^v2K{(Sv>9(e1}PxExnj?Pu~G zDU3hA*xe%0pP&EePd8iR?py2T!%LDN_TC7*D`*o1iGY~qrbh$cbd0L}D*JJcPf~?f z-uoJ3*an6HO)-<;#I&pvEalbDJqmyZ^_n|$QDz2I#0GhjI$hBg71YP=&gw_n$aN^i z_``&Bt5e6rJs)sK0Un^;dovVI7rtF^DFf62zMl$wFkVE9eXMfya=eVomExH7&wm$| zpLC|I2dN2h=dN#ZCumZ)QdtX$Vzd^hT6PCZUA*(pA7RFq-Rai-oPP-05Kncjb?biX zkBy3%gov{4ol)pVHmc!+W&DwLzcH5r>4IjI;FDo50}e4l897-ZOR{L^){tasBof?s z`$m>r^>@E^WQpQp>@mI~vg8!j?o~%_t>)x>bqO!|lxAR-mZd?!%@vwDUGuupcCA}c zb8Fr|v!{=yNeq$lLq4A#&+rCf6^TljF~S{i>-5pohNN5A;KW?stT&7do?IZ#E+oi$ z!*GhwM=xn9R+6m4b*Uwu{Ho#FGkAyFvKqn_1ke1b0L^E4J?_q%d>5=of?bq(7!D(Z zFIzY!9t+?#@+WGi6CndP;}Koj#K?@pXR3B-mt@NN@K6S<(5o&~rcyE{Mh541*)aLy zy$^50WJKJtK*X%(mqb}Qmc$&c8VWr|`WYn!Q2&jy3#K5dMlrDDoM1J=csN%Z?rotu zZ`jyJv(5RB;|w1v`E1P|lC0d!VxxaH(bjFG6wwGwajj`&vwoTlIJC79!771ZgQ3{# zn^)ZOX~=<5pUia@=EU*s6S&S;wy=tR=tqDKtHd@shw(_*>p!1?`iY%4MM@wjh`tw9 z4S}#CW0;hHF2v^}{&rSZ)fCc#NXoS^n6mcvdW{DQ5ls=A%cS&;oO4e4ZdG3<2YYf} z3O59m1!;zo=%I)qN2y@5!Qt=Y(~smgg#iYxL7QpNpgosSxWsC}VA2&aM-kj^3ze|Q z$7-NUtV?hAx-;n;pCvval-kkSOtXVZ1IBA&D=#Oa8O<7QitjvhM21D^I6hS384OVf zS1rQ{FKp+_jo$z^F~W4l>5~zV*Pu8wv8`NzEP{u{*R?*Ky6q9f{UG85#@wQt9JmVh z05TAJ;RpsUE|F1e0GR%IKLGRiDFk1c6K4=9AUGcky#16lDoKGR%4WR}ZXxdcp(JqMT^$G`{>xXe9;%XCKe zy1o8=nt-*g-*=Vtb8&ozNxi)@u3<-SZ;P`{ob8FTA!mE9^bK-5+H2z)_VIRCoI#S* zdpCP%->*#=Q$45e^ArO;rp~@>%7SF=xUSp^RT!j%n|i$`^_a=5wa{mg zfR}MHHKZ_J*vwS-k2}aJ3<;oCOR}{t{j(=|d>ZY5Kc{gk9hyCH2FF!E{jb&ks6y~> z(EkrEkz$#QLI9)Fz1v&~%@X9m_)MMWtU>bbpH00sSTXh-uB-z^Ih+W#n}!6cK#7p( zTbUJthlZWh%2X^RT9Iv_%+y@EK!TWo0^uCqRjW^Qp?l96_mD>I|3SixMA*Z z3Z7hOP9A+G+LNS9)De{2o5jRi)EDVFbaW4|WLSVV&iA=C1(t}m_GK=XOXZW}2P4X> z4UL>eNr=ve!V!)<=vI`a10SE?MsNPO$UfymxT z$SG1X0Ysk@DiHr(%p?lzjOR@mtcSGaGQchv7Qn`gn%&BoMpNcm6m;77Ec7*^k(e<0 z$C#Azt&vq4!?;)3+90xa;FvTw;x!Ml4k;6)Qi@G;!7Yk`#s-a7WiKG1} z&^0QUHB)*Amp+ZH-vdnTLYFB++kyJI4~R1}MJH_f)EJDcFTw`wz4u~raxje5>GF1* z^yaQ9!Y|~f!wf~+=5{y#i`C^j z0XooACV+<$VgM`#raZy?W@->NTh<;yM*iy}rq?-!N0&TKx3^u!=J8+NFd{@s3}=c% za3S17!-GNwpPA>tyd!R#@gviY$rn2WHL8O90Zqa%D zawmA7D?&`AOJaBIB?Ea>k8#zD4s>T-!Z_Q#MBga#7LJVvnpnwrZ??GusT987Z+=En zFcG2o4kWGlYJ~Cat=l(>ykUHCo%T}OK&dt?Bt}Z3EDKJt)lA*qT{}B@0a6OIccl?> zu@2{!i?uVTz^BWQ?nY>s4)ROJDP%VmYDE274Pw(-G{oqV()6^p8--=Tq|bCCC3}YO zYmlq;&>@DX$@>-!nO5fMUX5i$r z8FoPy47p3$srlKFP9_lK^rY{FewE3Q>F2a0Xf*#i6Hdu|9rfTE%&-_7o3|~9>}0hy z7e@3wK=4Ba^oUORbcHAw23kT79aq(S?r{pfl0=LKbUn=atUIRab5Px7Psae#3`6mX zkanK}Fc?J${wQVB?dIm&kTIqNd}A9`mO2p+pHF-mNOfnjo=_2 zG&imYuVKQ}0ES7z=}~xq!7ptn^%*5fSJieZT*S^iE!sXkqB$@0a<$VBF^90CoyvXeKdB;HcXJDX}<*F{7Q(VkeVFa)yOTp#?sV&=NDhE(8^((xGDF zToO`*FXVg@RS`X;QK|(jNy+SMci%qFd=J7istZ%9VM>EV=~qYS90A=6J+aexMf89s zpr&M-3BOF=RPz-!tV1)|I<1=&M1oN&Pz3PuO!KuT)Qj=WLY&9p?!oqz+(Hm{0Mltj zEK%&#y!RE+4SqP)>=?2>kZAok(B^e{kQ9TdeAUfsk4fIhL=SPkQ67klmjBr3{;GY^ z{Y%z!3v~ZjQ5|9SAyP6A$fRnGD6dWt>Rd@_w2+WE3HW^-b0$i6gmh2I?xV=i-Y76| z0^lcwV5TAIvc{9u=~<LB0pQ*F>`@{5RDkQ!Iqt=4-Otr# zWJVh%p2Nwr^dO)y@uM`?-uz1}k4LmOy%v;_fp-^f?=Ar4ReK4;?7nUmINus#?VY>Y zB?$sIs)C3r$M4v2Lj;KOUP`L)8EhfDMLz9)hS)kuT#j*tlh zX02Zyj#|HU)cW<6to5rwm|DN(Svc&HVmS_A=vffI zp!Qy%<6dC(d+ks3`TmqYtiBjV`0Fe<9u#4^c{e-Ng0{$~6ylB-oSP8HW}9;#8#nVE zSVDO?n!Wf^+(&QYkI=R92?@aGpa`@)am$?9M1@HGEt_6nd*71iWx}bmzCGfsjeGun zAJ#GVbSS9vE=M?tYw?4WUWCu!!!`E$>Gm$Pr+SIA`N9;oSon-sg$N_ti-C`SBl+5+ z@o%vX)GNQ$-0HJoQBSJx4q4}<>Q0ZK$le;^@uD{~2V2@3I3(=d@g^<|+grN}2+9u{ zv5DZf;{|`tXM2AXYRP2OW@kOW;G9q`G^8m32wM^-vYR|nU?#6qMo;2G-%(}7%$jLzqFi{-e+tg_+5r%!s zq?=rMt7R2{uTer6yn|du;9d8Sd;za8R8QtVXfB0SH9y9=O6`Y?ZLz=nj}`Uop(~P# zEQ(vCcS+nxbG8BV6`W&VsGS=$EyQl#h545~?!G+;v4JDH?oeyE|g|8Si#JRj=Cn z-U9~hMi~qdSiMW@8zL$b&AiSd$1#U${{6*B7ZORDS09bUBB?{Es$blK{OykFbh^}n zz3q-BPQhM(>@b5;7dB8DGGSPhVLDpzl}3s@1)@0i;C3Iuuehu)iRw(^lyR<))k{YfRS4Diw@N1{gjycXaF=MJqwySYkhZS+cHity_HQn!Q z!@NNfTrUP}sxvhg5tN5LAukO_QGyV7-J~hn%)kLu7M`Zo$Ar4-P>`I;3P$JR54oeY zR746>mE@^H3*rLBXw{9Fa=s*gV!ky&=~5)&cxd4`4cFOfj{{mBpF#yy6X?1}b9|I9 zi^%od=L<~g_Za|`;Hri(@HsjtOO7@OXlUNMKtu7s$@##EaA>~2k;9IcSY~xd!apXe z&0GMwNbvV?3J(tejS?JzK}j!$*Hjv5QL9k6xTc~;YPi3U;6U_a+BdxtDHWO`?qkDj zzAx-gH4i+>+v`Aaf?RkxlO>RVJE}2NWRJxTnGhZi@ArFEkT1r_JPs>2C}A?(K>)8x zUX)iE(c(v?N7muLO>O)y{T_!xR@Ic{l)|GdLtx z@p&&Wi_taSvdv(bAFtrVvDG#9AXkZKOEhLoV@ylG`KE=X7-&jADY9ugpEn;3ADrt`7_d zTG>y^Gl@?0FD5U<4QI(d;Y(8)Kx}H#{&Nl#tJ~EnpU4H^WtWVXC2Qw)Pf;!QF=}Cq zrkf=tFv3&ThE_7MPjyUvDTP%$5kqEFK@oE#hjrjBhxH3V}0MbF>yspEXoi zr|dK{p?$I2vpT8?hO4UVQ;o)lnAKc#lu%meKr@6pO9kQ{0MFN`y(P&m0Pn;+j0JhQ zb8!$0Ql0}pI_vvEEy(%ZRF9WzwFP-a_f*wiRG3(Ng}p8ao^AxLd&BNQpbYoaay%~^8!R0NQE zOcsq8fH;d4FaiQN*Es?1B5o><3(G83P+N4>um-wHpHp9C`TbD&&ISU)|a5#MhB;pG*hTKbDg z1%#MKK%dYjP6+qFhi9DWl-jpS8udyrQOf_NR_gHHZLj$`>c<C_!xTz`v}f+)id3{;*SS9ckCXh2JJ{O`()ed@DY| z$R;1S^JX3>`g44O+ewpy{g2m25WA({8MaxJt$hutb^8QS9BoOT_K(+UCLX7YR=|O# zVnpV;ef(41%?!J!Jix@Jea+ekv=e6SCxm6EGgwChth59yI9jkd=r9+?T4Q3B{pi-p zErz=6CPh+4asIMVMAppmQC$7+WE58~jpE~7z#SGY>;ziAMpLI}v>o!V7vgHYJlam1 zLa)U`kfCQ@n=~YRBoyP&+SS=LFw@kqx4}X6$jO9k;cfVTI*ty&-<8 z@bFne?c!&D?(d2OW<&w#0W9cQ45Aea68cWBC(1}Hb}sWQBA|>ti{iS3jz9Tg^OH%p zB4B=q-HI7p@S7aZZHLrNn&bJb!dE!sw&VgizeV;?um*!+ICWa;>kiq9Qy%=rLJYl8 z(129exYvVDcE7PfdIv!cs;n^sN_5Q!ZuChsuAlY2ghHz;Kbn%5!!(e-M#NpR&fZ0I zk3~yf{X4`#}xGl@Mh1Zc26aViFyR?1<~w2f`+IExV8)Q#HnTGgMpuVwTus8JW02T ziyj&X9u|qdg_a@7j0Mn3@_rUo1RKErvc5T=C;v4B*ZJnJ>jl&S z16x>(l;UGy>QswAStmnhD7_@LLo7P9V8ThfA@PnkI50(6m{SxT7H?e*^9Mc_s-Ok3 zP6-$Sb+7{FEWHF=p^s%v6hU|}oRk3KMR!n7^IZ`)Ox=$ZKSS}*(=At|M@qn<(Nv)+ zG6n4=zUHPJevUYIb%3g6lXIJ{+BfA1_nPJ#RPN?#TR+{H3~rv>O*>B>SDz4D0W!I1 z&)w_BVZ+(qfwBO2yR@B!Zb-^&vwasU!pAFCg!O!Lr1vS=mMY!1O5XcRg`$0--L?Y7M zO;UFjjt-tSvLq8Hr=%9J=(@M(;hd;)r&oUMh+iwGtiCVzvOd^{X%J7^KOWoSa&;z) z#&b&rfU&slSs>D#?~&EVWDGhzsovocDO>I6F3-V*-qP!PE0rE<&vd3fjZgtyBcKL( zIe{UhNNjnI)rz{I@$~RFGYx7z*hPu@m{2f{u{BzVwnpi-;iJO@PIhsn0nK^L8%v&0 zP3vkok?-W&bAE)^MPA-C8bKHqbGHXZ&CPXg321l`bjBO=WiSvNId_gB=u&z+vHPCE zRlve=UHE5&K|#{XZ>X_n4Kb>0yL#ypMsz??phhJCDc5Xk%hr3&x!NdwLltP*nB3Xb zE$I?1lOzD=-`<+z^I9*Ez zHV0)(Z_fUoyv`?;h-)Ur&U>cSCP^gt@g_GL3I6ht(#tV_5y>Sdb@LiW6E3wa9Wm&u zPP?BO-FK-lHXcWICyGp*1)1mr#SzOh65nu5;4-(tFh+82w2xkHMLYzzr)?)lR(?WD zi>T-^6WoN=l*xt7(Q$V3V6zc!q|pddbGNyD&{Y8qQi4)aSK46st;GUrAtz7AZy%Sh zL4e+jkR?_d+NphkD-_~i<#ATVhg1StVtBPyhFJW`@~HcL9ejL{*B!cGFUVY_vmz`; zJ8`2-K`jv@n^JEEJR`))l|ck;-T;|4yaEPLV$`PEy-1+&f#%}1+`E-~7(v*3Ng_cF z>Er5KE9@Cl|8sqNg+z?f`aJI4RUx@#So)OJ`u1pZV&~W0_8bwr`4uHZ8L$ZvQ|-=v z0C#)C%gc6858&Ta-^Id3ciU?pfW`aAX`jw%uNV0i6Hl-=H|RTyAEzc^_S#*(;vZhg z7uu`F4e(kOKWQS?Fn+Yxwoo%ENbt4Xg_|}GgE(OX1 zzX%4M;D;~(k)q2N=^@?8A06S&v6-#%rCvbeCZ2=#ilCSCkY<6}VyPMKKELgXXmEFr zZKpe|p15>k!O6U|qv9!L7*SD&0;T5|=bl%63Yd|L{j4vZBoQ6OAk`{HQ;rl?$kW8x zZQ1&Rk6rPRFTC{DpM0zLQZJmi^}ci8{E659%V$4x-HTs(-ZSuQ4w#l9ljD2w#{Ivz z@}hfg{Q3L;TY2H!zkb~>K7R2(+;b%_xa~G;&ukzUv8_v(4^rgmE!Z)pi8VpkZLj8! z(s)n9GbwE7-pwW1kZ;&Q1_wr&Ou5!smU*zQ{$FSSIjJCar3(emgPPj)|dhi&% z8TV-djUFSQ5eo*Gji*U;UC(Gh8SIo3SQP?~BBkDk z5?+j6De*UBVERs3g^uDm0G1NLB8o(v##xryV(A$S>>}%LWvMMGRnHo*S%NA{ZAq(o zZap8FKy6l=f+8x9Y^1%tpBk5+YNLjf^|!LrmNH0B29>lkOKm|rxrp5)NHM1{qkXDP z{f*V8j%+XZ^ioL7>}08}{f_hEzv(ieE{L-n=fwtlk-XI2PlG1z*@X+ecmfx5NHNYF z<6ZGoj8QQ@$C)L?hVkk(UR*iOU0#$&Opf!urE$jOJdO7!N{W5iaXzNKhQ4;D%Vpzy zzm{c@*CGhg1N9Jp4GKkYfzh8W1vBjHx{{1bhl_z}>J0e#)al##?BI0&oDrv|Zb0${ z(G-j%6hT~37SE6doGu=T)Y%>QB!^9PAw6KyR(8W?bORy*_jN!xKD$=OMeTskv$ z=>@kmp<$UXZ|vaX%Wyxw-qW84^8*h(C@;~Y;8T(l$x=}8$!F&way)AxonQsw#dA<8 zNdzgA7|j9zMez?CEXW71$?HG}7V=Wqq0?jy$eq+=gQA8SduN1yhRoTiu~IOG(3Oe2 z1!_CiWATzf{<2Oa(%o2(eF>SE8efQzq+D3hWHYjt-rq?RjuVrNg(~cAP*$i}QnsQ_ zAsj;5BEhj0xu|)^JgOkb?Ant#p#R_T(1+vb9*$5?s4WeI8?Bic$X#cRvj%vHvuwvISYZ* z-#liQDzXSd-Q|+OgT!Cq|M7%U{)nfNbRyBq1t;S2I78CV`cbj7h|~ z+HxAQqaISP?G1a|&l>68i(BIDsNX&yt{aOdHk?X!H`(Q|Ei!VM#NgJJ#N}PSJnXS8 zQh$+_DDnX)bKrFQS@Gj}ht-UD07Che$-Q<~{+ z`w}AH@3iNA8Nu(pFozVa6sI6=Ax_mPPALe3K_O20ViBjxmKg4nsW>Gf?85pO4eSm11?=7X3L0+086hK1?=>z{Y@GkT*MG~V040%Kl&ai?+5HcGx zXFLxupE><`uDn)8$9q1Ig&+k?5MTL1??`k@y&RkkWtnTa8P#A;&=2d>zRbIk9ITR_Ab!o;FMMrM`)rp(FiUi*8^Pcfw4 z@CZ~xV`k_XnI$O?2y&W!^aZb84K1=StLAPBvADQFr0M&5MuS$~l|5UB)BsaBn6hVt z$yd$U-2fm@;=#qv!SW}XeBm;UcYV^5E%fy`_gM^?K`6&J%l?nH;d zzl*$1m1Num)`f8s6R$)Q-78%aT`>3DjS|;1GypfkO8$fFiOmqzdb{IaRs}~b)=>?b zFHj1mBTo@0l(!_~zssFa>;MOaf`BR795k<=YnkNc$LnF73@EINz!^{zX3GhLXAvWX z)}f!1M3B=!f#8k9s`&-NOr2Qp$&9Tj=7=zC(te5PHF)W31OT!+WLL2&!C<0Bw!P~& zKX?Kw=9t5rPd|%pS9mV$G$^o>Vyy4-7?45p>fsP^BzU|V2tqnc=HXy64{`VGEqEDJ z)}Xaz2|Ztngq}3M5e!_=7`I3)hvnY>FFNZSA+19wvH%2dimffHJ_a2Na9S`7+}R=Wmrmk(QU-o1Gin3 z6I`!4ojJD@Aj)0`Ay{CQc)Y#n`*6d_Qb&l_wRQ)bv09VVRS*v`87VBP?PP`h;jp&C z{$?(G4WjH|`L=3BZf1h&0Fc4KYS!LBx$qV4eMQE{wMP={+P=$g9|q`YN`0~N5{EDzX7in?Slh)$XiaLqS~ltA?G zLvI;a9~yageD|$(19$q;U4b~w&sFm*BHMhXIwei%0hWQMWMb&(yPP`fI6PKR?&@VYJ9V#9Pg; zoom-{Sc6%B!|YsJbC{WHu@THqBPMY$K{G&5TJV-Rimw0(C=~vgZ|6hMJCkv!f2SO3tyZKqDaxU=;inGr19Rx=xLA$TW zvnSK^u;@O=I5m3NH!+580<=!Zg5Xx@&{aU?sWtalu7@}= z2Jj#np#bqLFqymG1R-llMurg7?e5yeB1f?c-JFw~^KJUWD$^Gx389j%FvS+oMC>%+ z8{T5m%n=fKh$1TjzI`L3yg3}wDDSy|IIxT;Z;D#PPA08;@$-C(66v>w@M>|aN(^SUEnl4-Drm0el1v(sLB+vh9f zL+LWS(gbTQxNd;St079w&0Vpg%k-}l-l0dB-!Ask8_Y^LX8^(MZReZ;7IE9`g+g!S76YS@PjGO3*R+=+Ocw#m zY@>x1&loayNE~$C>*50qovnp;pvh13g(A@4a`#?)2WnqNvH~u>e=g8*g$Fv&}%ijA0RXCZ?SG_)M z0S(L++uD!%b2fi&B*V_1Gg)3kfnoxjgpEjx4JbiEafLJ>uyP&9`OHS+kzG#i#E!Qi zUFZm!ccB7D!<4lpg~RZyVz65i<^YKYnTKRx<-GUXN{xO9AR}ut_rM5Z6yU@+s_h)J zMghhLsCzIJzN^)T6`qS1-PVgo7uM8^(jDJpHO>%&4BUYy(F#0ejg1|q(;>iwjtVg7 ziVEYUO)W3_8@jmF0np9lR$iEI`Gq zQLUBv_Sf;K5FyW9*>T4)QDED_PINp-cyT)r zm$7nB)_M^k6twI?-VVcx)6TOS>)~jfP??!QT~F0Bu`8>hAdjtQ6FhJOLU99XbaVR# zRW17@W}9RYsu#rlhGV<4S3G9oiPtRT3qcX)@vrC4c^_%AZC>8D+4qeV0K_x_Ce2$+ zJZkOs7C>HQukwCsBiv(C7Wyej4e;%79*)iqlk$3$^B66a z&;elK?GF_e-nJYTqV0WQfo9RnV}5~zu;>W9uG@ku0MqDad|$l?fk;ANv8K9Isg;CM zH1=97i&j>6Nzo_RE9jlmGP<$G@DDy>V%+jaCRL7a`pDXeM_$&ql}Wwhu9Y8(M_l+& zJ`kyb4DLWS4>8ac!{R=+HSe=gb=~}H*qWoJSpZV^xD?zu!KF zd~+l&C{eNL`=rdZ+m^ZphoT_h{)f{Rk zzZVfQ;+d9y;LtU=?Ik+Ipz&KH15p!4yO(RZjcYJqJQqP3qOL=T8w?D&J|t2|M{tRW zCU>2;Zz$X6+Hha_4zukQmX3f0L?Y~({4C8wKt^_g*ImeSL>asrVT za|;z1TNEJ%Jz>hBXMiCD7?DB^ac@XjFrmN#E$5B~ferghB%gr|X)T6k{E;9cZwa=+ z+PDNTNUbo)MGAm@*M&?FGz2X>oDhBUZRM#Gx3wStM}(OvzT9@zS)pK@7m|Y9c?zim zm_4^}s4VXkU03*J`i2~ik?KH-r8-Bz`nw94UB_W*<~v2?SJk{ibP528{wM&J{){`I z0+1bmY9e>N*HAiCy;JBI17f_<>-4&o8HM6zC+qAa=JzzJL?@|umI4;P;7md0a{vrR zQI}YxG6JYi=eqCo3efE9kD;H?bR_*Dp9d-w>~11$#0LFlh~88(-Ry&C0V#Rc0J2eX zp()58Mtvo41HUBrZ~}x*Cw#|0+Z2ro7uutkcowjE<>LZw`1S0Z_-D};zn;nA+~%Z; z44!tKS}?RRL&itINst*^p{5ulx-37T>`+ z?xHRC+l{CZ&6P*QSg;0s=dV(u$d8_0K3Dtb2=q-?vxQun?K7VATy#} z5ppu#RCQ_JYAfHVks?=ATlo$Qm9|x^F%ZP;$%&X+SzsB!G$e=Lli{tYa;s*8RC_C$ zfM+p;ux$jkqL$ZZM|G7ual8zv>_QnACWo5`Q(Of)6gf>x<*qb_gnr{!Accd2FL#B$ zbxvpbu9nF7ggsozJ^Zq)cP%U3{?3ktA^Z#gedTA?86=FVX*vnvXozrtrR?uYvyQnt z)x7g?&bqs^L>&HvQrYdj{P9W11X+!MkIMQ(S$JEAlTIxf3)P2Pfs%McVT z?&c-L2+lHY+Ov$Cj-JYTh@37chZm;=jnNzCi*AJX5`r&N?`@UWvGXH2-#u`?-F^S( z1OY7s#K?9(^sz8}O$*KI3{PM}nR8gFGUq@cAfzg0k`M>zN6%+1u~R5tkG}GI$t*$S zA}bX3El8E$6JYz{bQ{)sNz3*g6FR??PK;2CcO2vCvOO_;YWs_17g)OCYr50-8b~?ZQ zC+sZUzqVh{O`Jm_+|FCYE7;Xyis4;*Ie0L+%c!1@xbr#h;0 z^#LUcB;;>RB&a3=f7`nhN)iL_h`X$CG<=VD*r90L@L2D_FaF@Lv>O+<3%dk6{8$E9 ztHKg!e8@rR0MxHrj)S9qxv^$W-o@dMT0#AC^T~YRZSg=-Kh`3rKjQ`Sfw#v4NdWV1 zM%m@vcX)Ta1iP21u}cuO44O88>F7WR>`#yCUMuz3@9D`a)c3=yoDIWP8g7M%;9yfQU)@F z3q(WUY(CG@06z;=d8{s}6Fh?mY`(=ekM@YX!IkEHvDFhhYCm2ZVrA$7UF$)4q9t~Q z8dU-3V7r;|iWyOII`&;{Zl5)9gqEJw`L@J~eV;Y(>x*mVtdc%iBi4uMxVV#LGy03N zWuv((W(!ldu`LpmkYcc$Y61oKAwgkV=Y3A@%4~S{UWU>r)EiM{*o$uRh!aFHgBWRR z$KU4&b^9$+xpa@3eIvd#9!zQhNoYCj>tBFR5V!Mt4Cl`C) zbeIFjHvrx|N-3quGyRsoyi!^FHKT+mE&B@zf7S?G8WU{!G+t&j->*|$88cD~Y+#jZU) zbH#yf9UedwA$7z48AkGw)r;6f9Q^ni#0nAZ?wPP@r;wC(Z!d(N z;!)hvtO`_yzMYfmg2mbk0&%yPu0LF)bvjyPhiD;Iyk2CI0ic2u0Daqw34_(w&OgiC zR^c(^z*ps?t_4QkT1cTgmY4DLO*Nl9 zwl_z&Cv27VVi1w4xjr`&Z6gMdkBmhtr51XZzae`$u;D1Gp!Xf*#_*acpCB19l#Q^V zA!pp$ltscY^@XsrDegxon>Tv=)EXF`rmjj90OKgb$Z`GBhN2&+qO!D&t|uKe@UB#< ziD`$oMkw(#$vfhZ9SO6VW(`3V{fViuhgwBe?72D0Y=r{M(Ot+lW;}v{s=pXczeJf4 z#EnWT?b+da9c&k12oA;t9=5Uo8oTbaA38Ap!6OUCmlr0}St*2Hd8z=ZX0)1cc)8?@LR7BZ+5m6RaN09i|Da z)3Mo3@kran=x*0nEY)2ewYJC1qn->v?>f68@LagS@xO+&Y5cnyG@*S@>HTT+erT&< zUPR?T$Rz4?Jb$?ANeY(!ja}x`Rc&mJ7%hKxs{J$Hz?Xa4%aS9x3QS#dFGMJk1?5v* z+GKZvXDxfel0Exg)z!K0Rk!=z_bR64-rT2`_{B2SVufN6G-jgE>yjuq7S$$I`7f>} z4c_)GWH|!N6!vaiO&a{(!~#fk@bp3F5eR zO%sODs-+b(FZbm6StTPhW10+K)Be|pXxmlRD6S$!*=l`4?mCL{O z(R;jv@W)ip*SFzf3X(AzG;hyxK7{+R1ZTI8qgu4Lc-_aO-Z=UUaw-?pz_W$sW)+`^ z)FnG8bSLvMV@NFOp0`pYE=58 z@79=`QuhVK&(q?r$3dXO+5D+xxX`)!vow9=UC5=!ARjW6@yq4Itbfd|3DqDC>C}v}9a49~bZmDyM^GXj!3UZnj=rg@Xl47nblQOE@7fB}x zqet!SmlE=TmY5r{l^O zy9Wq+`Kx&5Zm%enVQ9QCuAF;WG@@m^eT`QZm`($B`LY4KQ@OW2$Z{4#eMI-R7XY9J zQ2eum2PY-B&#BrQ?dNoRiwCa{OhXtCkl?|q*o!zv7y9OF>*kK7QgmM^OT7d;jTm-O&Q;Y7z67s05YG=Zs?p?`Je|X18I3h+LB7X|dkhf*sdNoS2WU8q3K zLHqbqQx8r>n+M=!H*{(YxNqu|1H+H2P~ZPc@Z z@FO^`Wu|&3Rp-X>N%egW-*p$_+Vj_9-(r>^1<(^%hl|-TyFwj*Fe9E5W>f_N-Uw=G z&^9zwh{mOTQnh2PX@NEkJQUeWULWhy$M~T;r@iCNq=CMA0l&_Q{@yp3?C%~WDf;{A zI6kSqR=61VcMnkTYxj3I&Tu<-ZI@b|O2>Ztivb~`1ER4Y)OKBc3Oaos=%YX_BjD=ZGwHq@)NiFdNmY-Rj=P*MIOwb8G5AH}ZGB!CQ zV)XQVS_G^YyMK{gefXfK1%ape2#9(nGZ}=U2Y8ZfEreCgUWEZDx;Mq z^+SJ&rVsRz1mS6ObMIefb_^mi>JxJTnk;}=899=q?_T%!iTUlwi*$}=G)whP>Z!=U z*SQ!9Yz)3))Z(n;R44?EB|-B38eDDP>Je`Jm40)cOX!@qGC3#WW!+ps8NZ+#+RGpH4A<#jeyUtouer0Ff1(Uvhzw~ua>8mtbp0d2Jpx>eD>zyn5db@)6%Fe#M%P`u$ z=uW4XT9{dSZMOZF?twK(6QzZHN~w!~9w}Q<$}lPE7-WKV%gnRESq~*A=60L zMRB1liqScy&fiCAK=+dY#<#-sa7oyfa9ND~cs@Lf zavcN;68dxL8WKlBP@q|>`B5QGB|K~m5Q#}bmjv%nX9Ju!)C#IV$)AUi0KiU0Ar>hx z&mwGq7!n-JxFQKctF|zNTWw(!eKK;F(sSC$a8POEn{BVT#GOrsB)wBVZ8H}_$Bn}& z`RiofnMLzg6ZXsi-P7XCtxgu>Ot=4u%&v;NQlCL$5!&gvW? z*1$w%-D%9ib&WZoMYxOY9^3&9BLH3>!H?pLLL$e2NHHF}`>)sohjPCBcs9C?_5hzz z$MVSKXZq(^?Y%yD`!POvj8}%p3g@{`(0ig5@J3$N|2KVn?^#xN(KOOfuih|_;D8W6+?@gH2K zu~pGycAK(XJbbY^cbY)orGdch%!wAAE5FJ!*IbD8!DrZey?wXOMUs08A^#EjeD#Vx zqq~GKB2ARb7@mxbEaPBqMxo0NM!n`+tR25?0lviP&J?m8T)t#pLi-IPj zVrDta>xfs;ih6Qri0sTgn#sMnVX+vcLj|Fz4JDHeLm41IZEH_1S1THgQ`j_imcPrb zRqa%{UblOQXKlXzSiZkIgo<5D!snEpftcrZT7wG4ucv^IOx`>jgf4_OG`paOV;Wf< za{cC&ArR}>IUtF6l$c$PK!5*}j1 zaj^*D7BIz}90(yxh|pJV0U08P24Uaf$sh#{;j$>$YSA3R;I*uUmY@$?`6IF^UBXVQ zhF!7%T|fr1m#7mi$1W*@?hewIl~5Zy)6}Zp7*Om2d(IdJ5Of1Ku_x>xlOb7df`gKe z_k@RY^BOFZ0xp0k+W{T@X7I{&_Jsxs{FQyNbqU!6My{5HE}j8rKOPv$zx; zr^oWHa0itbt`BDb494#*Nvv=<5CIopE5FO>kKkx`0Pg*p%p* zapEzdu4KOSsy;pGxmzz~)z-6!RR)hkDV)%%-N{ZiF@+OJdAqpQCFS`hkExF^h~zfp zH2^iB8QdWxi!hajY{8TvZ#3^DS=e{9=I~m|$pnkTaeCa5`;V#cyQCdl+)+Ip5|zO5N_Rp4Wv}%s)RqUS9HP3TRO6H6Lf9hOtwz2Ijrp zThS6==q;ZZly7G9cq5+QKDT_J8fuyx`!|{AWW0{8dF^jO|9hQx*f|M}j}t7GI#oCm zhpV-~M!|M7#EfBNo`QG(iSa<(XzPFwip%61F%)lvDPm&;BU znDHP8@LSNi=bdh^ivfFGWT(k-G?kX6kMyG0O)j=kQ!Ejh5-2DZxHP)CHz+Ou!vKSz z#>#l;$3zl*=)|4AJw7Vd#qGhUyFO<=YraZ4s;{Deulj0Ns(AUUezO_HaL6V&!+}|w z6f~Z@xWsVbDt7T{dSwjPY`bNj7_Q0fB_Ig^oA5E+Uo0_Pcp4#GMsa=hFpg{{K`SXB zfZIIZ2ZIk>fHT~_?<~FBZA$O{x`*@aK-*s&xPLbT!P&o(ER#KB9W7sZz^Jm_;e>fd z>EhkJ19Wk37g;vmq2u=+Bnob62A|z^aBt^&@n2eT&px*4qB0VLCiPb$&|d-)^(3znN7Trqe%f@a<{f&UnOO)Y zVo;e`pJ+a$XEVi=i=;HGQkg&SL#J&&!a!VNgY&5+VzVkiS)w6n|uXo zUH-MK407B4@()uOKz9DcJd2J-iX_1Dci|kF0o5^w@k6Ms%N~*(BN$17cZE#C$>o*$ zY_v&zon?=A{OMV~@a*P?QCBR`>DM2}FAruM-9v|L9J|K;Hp9nI5>wPfPL@f*Y+N4j zOigSn+lz{6+JkVlL1e^{l-fkBVkOGZag{#nQdp(Y_;@CeDQ+Ghmd90IvvvI+3*s)T zmM1FA$-1OrZ1Ev+ix?TeeFhX%ZM?7;$giTG(Aek~jTY1j-MV6Ni*DUVyBi_qcS<$z z{@egl)TJpdFDcelD&P*KDB#ePC)LlTZ#+atLjMk_!D0c=RSV)H!1BSdb#f#hCbHfB zYq9nHv!t$E+`lzT>NfU4VS-w9bf8{rLt2CqEK7|n(aS7OR!dFuO;~AuH{HJ^qQ;wp z=2g=4;DrD{lrsYq3{<0dndQtj1Fdyr(DIK!KpRRV!e%?Wod;&9?%KEFTGg8);Dllm)MkaUje}2Ao0fFn2)8A?;2@t2C=B;? zszIS3Ed{W(bCK%Nyz0ogIhH??({4Eszu#S(cR2~3#~!rE^jFoeu!7yiEYDykhv`LcU3J!<7we62oCMKl2z1j=wqbv#uJaod*?x++be# zr5uC0C$HXHinz6Vuoq+*j?5y5Yv+JNlS6+iM}lN~>MREKPAf8j6Ls1*GwU|>^yP1Ss9tr#UWrfcF9=OA!` zI!oGo&Kv?hTv9S=m~AO&N~8+I4}p&nrc!hyJ?soEwB#$X@1;i?foPmDXv%i~Y=RaE zutQkmgD0xUn|_GlmB}ro>j)Fkc$4q3R-8BAI0}D6>mC3sgcaK9kD5q)5j#tmDQj4W z{BW*w;df${<+)f#)D3&TS-W|^`H|5HbhoGM!T3W!!Nlz%8A+PPamp!b93OH4tN61y zK#g#vaDp5aW^_)8B+yeG(&;mjbIR$sgALJ*(a3!D&lclgttM=_nObug)M>xH{n)?9 z-rg<|h#`s)3{oAp>L7FSm;?dfTvOGi=FH5lL0qWYH(!lC0@Z`aQlteoNcj-I*Dn3O z)Zdu5yZcx88zX4<`%>RWk?wwf$op8Vy5FDlHvrQ8zR}+k?ceI}iT1zdZ^|_D{A6OM zqLtI`PzwTrQ zn=||`eXQZ4Y7k*y6i-IN@|0C^0eM%s|JGA)`1!NZsJZ(t~ee!h8_1kp)-Sj0X`eB?slf z-=W119h(o9+S27gAM0!vS&{|H97179o&B(y8*`2MK!alY12|I{z5ydk^D7kMbVJK@x6644aHRMXX*&?lGS2Or*t}fpP~vnU+$lMT>rxN zx8*|fX$r4siRTXk>eD4@S6RIaxPp!K5v0uF;}7&8Ps zl0(X$@&lWmKL`9Qk2@bkJOuV5+CZmP-dQpRKkV1e!DWk-@?$U`PXS*o9 z?J<$n6~p?97qKwZ)MqNEE`zJS;0*ngFf-?|o!QpDfO^tKLiJDQ_k9$YX73GHr%}(w z$stiR=RDqwV}=w<8+~HVl?Ln)qzsP6Y|dPCU)*5p&HK*3&C|sVT6o zFkZyc1ft+mNbA(Y!IY0V6Jebyg)QgwKaV=bF^uxc4_ z2^lMhu-ZFJB#-Im?X7sHo@>AK*H84rv(FEQp?!iz0I?7XM69!xR#|ch#Su?&K2MOt zJqO;Q%C=-0lk*6qmU(;$9JH)*66vmBW&c4b;w_=mlLHk>3Di0XVwcqwdnayz+C^3u zhviuoZdtP;%L0i%v${B}%8k_+P=@k`q)xDO>?nEfp*XSQm&+o+>2+dq7d}`U$->B>YZ`LN6(R_Owb*|U|7=&(saF6G$7F6qw2A_H$p)p3xl36P?<%}drfxNJH)Kh{0SFDo^! z=%)s({4JxgqlR?D8J7hl)r+i1ues_m?6OtWoZ>3(io|dpB^ChY6yk?5izq!eVs&P6 zA*s&(3nKgj7bc76AOjJbi-tp9EQ%7;w}@#Swd}`cC$&4a&x1+QSF#$edW;B_n$xg) zgnIkR5XKIDZ*lRD(+nj6u>Izxq151Eg+g(~wKpIjO4DMfm!i4f%rQEodogsk=>in8 z>>>n!ID_W3*0hSLj{Qw^NN)u6S!@hCfdLdd!wN8dXtUI!`O&QM8rqW!!!d3D{!X__ zmuQ0pQggl~QaNDKY>zkVBvr?j_1r!;s@re%o)&nt#si3g3Bjj&?Xk}XS>VfFtIlqB z{or%GZAIFQoAvX`%{zL3#_01k9;R>XHoBd6p4i*yzrUncl}fxjs`tHnL2&wU1Ac|Nr&^3GILCgg$FD z%VH8b@h8w~d9vc_gjlWPT?dUzm;wc=p24LnigO`q@tg zG>&lUEs<+qpTvclRK}4y1p()63ieY&oRu~_JX~ms1gEvx3p2;!Ybg>pjM% zP2m`>JFdqz^8O$XcYSFvqGuMIOBd(pY!qXU8+rKXt(+d^RpUTd+NnSg!(rywU;(Se zEQdyFwPr}foSoh&2ju~j!hw?gnI0^*5WoI}!?}Z#s?8jcP&aY7={tswY~-vU?T}OS ztcEtF#m(Oz1*iv+9y1e2dtoz!=FJ;;?C!97TmZp-QJ3c=A_N;zDOIgN_kigwEcAd( z8ras>+lSP-JmRe5dpCUf4`S?FkND3+NX7p?B&EIHdh*ML{jG!Z&y&w`v<;`Bw*k=z zNUqwq@A*`(RbipAYJ0l?@;CP(<^p=yV2~9HAoRmuqj0%S&*7lFGuV?${tt#d7AMO=F*8vkc1@`fdjiD!f&~~_LT~6Y;%-PW?w`jF|MXS0w-J<#na3)&^luZqg9G$`pBlC^;~KW6nOgv$a+xRia`SGJt_UPp^HVL&4By28agL6hk%gj>q_63@SlL3>jsxqDjKVKMA znZEt_&LHQ{Md89C(&MA|LkO1n%ba+PuTnwAA^?ruY^58KnkTiwg%*8|34DPHvp%#J z%)KsHDI<=Etr&cteY4vc6W!zI-s()YcR@nDa(;nU`Ns`(*>b58$h`#BE|*k3S@M_6 zhnHepg&MUYd;Q_Ypx29aVmhP-1>XI4oRr`*taCdK zKmVm!?S`MPBlh{_UP!(472jx@=e5uIPIYKd^skQr+chX4?TL_JS_1{{$vBf2^EX+3TxUgvf){ zhoHZ~-wq52AMg4*Pk-~r%Knn){K4NycYpri(|hw|ck{<8-MwW+cgfM~)N7$ZF3A5t z@Veb~wOs8)&fXMfTR`oy-#X5Y_J+6!pOhKO^zOgR=Vf-imRNygo)=zOSR)r>H*7I5M7faW6EmD+9UGw$<`1MnIFPTiuLEp2b{y>(_Y9J8-ClnylcsQVAt%kQD5;a5 zEqse*lA}=@M#E<^r4NoR&{zdvqGEXdQ!&ulr-Y;j6DP_4$=Trl2scRC(hRt6~D-^*UB1Ux9~r<6VePT+j#xZGuSn|crHEs z6$)_VN4N)(gO3L5f=djO>sy+HpxrP`_ZM3p#;O)(9LQjE|6^2J=W#7?AUnlKUCwY1 zp&*1T0~=kam_E328gu%322DUwcE?c@-I8lgUW1*`f91OrIN!Mx#vLj(ozi&QylSnp zse(2iMHOT$h(5}Mh3o_V?iK)Lhpn&Y;;8Zr-KwZL)0s1`swbc@#f(vTNQ6S@5Sc95 zsA5g0o2%E!V=nN`(LyZe z1>%V#9;Rf8NQgaWd%Nz>%rNGBOI}BmrJz7u4=Xn#r+qIz%|E9_v{95nb#^FpD%^2n zk?H1e%Be`$!zm5kycKs)k!wn-oHc?D`iArMR|RXCq+Ca)d%5*)AIn`)B5>+WnCXduollieG@3NwF^d7)2R7R67D4M5CA?ROpzSRW+{hGzbwF^thaW8e0zviV zOnV@70OP~Cj~PFUv%LyDMwc=*V*w?e=fzyAOmP;4-=jzA0N!ey)Xc@z!GgU zE#^4{_*L!g*I5w`6R;{1t{`FK4z5KC0&urV0)A#42n8VkxkRf)k3u@sWQ`uBqyc13 zh^OQ(cJ%&YI6nZZRL+z|Wf)gS2r20m+revO_Hj`FCZ7;e9tybI|$H@4)VV57`wU&dw@3y1AcOU$N>%HPdL!?=M>_& zE5M7K}IloX}Z4OeJW%GL|mi?Fm^y-sk*^kL?8I!VFw=mB?;*+(a zX2o)F{9ftTDpe{D{e&H88NXgS_8{vRUSF_eOQ&R4?O(kDNu%HFU0*K-D@Rv7N6A82 zp=h31Wi~GXKE21H|4hh$j~gba6=WqlB2I26!!pl;oJaNRl-M9t!#`(**| z=qDE7^;nR}Vgp_s4-Q4oR+QaYPHx{_dbUcLo#o{A%H>Wss zx~9zJgUC^bqFd_@0D7M&-CCEB$G+mL65vAtczdb?^y`v>s(a9zM2S7(+?}m@le#MYm4O=^|`y)!8}}>lk4;@TN-Ex>9|(aFG3y zV>w^J;eJz+`e#he~5}Z9S*wd!-Q@O*3M94h7^-9RTuwRVHkh zD>?iPg4h8Ua_3Zn*n=)4ML8l;Bdrm^kwQ-nJ6=fJsPYrBG%DV3tRgV;D8>rdhmITM zF??HpOMr%w8Il|~kuk9ea2DP?kRkHK6x&1EE~b*Svvk%ZS&^}gzJxa;%93@St)e1C z04Cu(sncttXuf|exTHS{*y2?r{^lHmmvB|c-MGRriXArhQ7}~BVYp52G)$SD?Cet; z7R|bO<9e#3;1vXO!x+Fp6@j-xA)qr|R?C!TR~kU{9mM2mKATWB)GD~&-l0~pi$4U0 z$L=_T4JbEZY+La(Uu4Wbj*!{VbPVPmYdYDD=D#1SeYNXMXq&&8nfdJ00cWO5mjjxh z3T>q!NI{()XR*FDA3sX0Rs?clo4pI_X7iM4)gB_ygvXY!KObMWFynz>Sqz4?az19u z2$#>*rwNO{;{tPWoBKC3x6e~99y0+oX_{C47Iy|uUC`hg!VO{C*A;mTx|`lyIF;rR z7S_Xws*IXII4qC+8^)z&_1yLM@{YdX6_I~XH7+fS{KKe(?n6hUe9d1DR`@r!3&I12Ch{&gs4}M1c4&VR-2fdpQ z669=NCEf%UrwK=7DDO|IZy*+{a}f|}Kka@GyFBh9>F95tzzJ!W{KeInG>7P)CXQF%=%FOaAc@X^9~0#Yas)9f0Sz1AYQ ze2RKT0ou&GGw`1SlfW3!sEiLZ7|ysg!T?7G4QcHMwQ5YP#SbwR8zU?b8#k^eP(p)3 z9eAY*JX2V(xi38gjz^j=$&Y!ubH$r(;qqq~Xd;5m{FQMO+u>3GW`KtV857` za&O8n&1BA3-!Wq;*OUmK5~+;7H@P{=uuMkZ(@SHb&fMlUu(&9gU&5y=dluZCyR}87 z39>KgW7BglD0Xmq zN-@VQ0Jn^+j3>TLYF%MTpC|1hqXY~52$_5el(7%EmKdCzd{32T<(bP!o*OLY>JC6+ zgJgwh9%mh56Q@0xN&qL^L}S~Vxm#da@MK;IF!3GWnn<=Y<*8+#rs#k!ol)?t2-0RQ zgjYKg2Jj5grJJRiL|N+$!lVHqtQX4?kt4Hb8!qB1?e3pBBG6xF<#)Q+5xpVCg_n!W zBLBEZ9K`q{OUejrlD%3Q{Wtlm=GUp#RHccy#M@jN_WyhXCi=O_B(Lyk3w`|wB_2M- ztW7BK5jkD8ck65}O8i@6A7o5lz<(<7pZ^GVRlZT;|7B?p<#PAlA4c`Uxcm1@dnlK? z*MFFIi~stE%QjGcZ6PEWPD;2a;u**p+pp43B1FbzN?7kD4FK{8SE!*a4Y?wb2e$pQtSW<%^?Hc;j z9*v__KGeQr#}1eVfyie?0j7nDCw5p@IG&w-{-}23?Ur!6w?lK{>h`Fok|)A*$Dg{8 z2~zEjy*))0HrK!SRoHFu8wuIfd6hm@m!NjWnAASNLa zkBp=oq5Pem7bOy6Var&zk28?sUWy4^9%jie-O+-V&N&Vek%%=@6&aso1qphng!#mZ zt>=RRk*WngpGP?>BSK({Ky~v)y@(KcX1%?W+(DQJaGkrUc$ob|V&jnAw?p+a7LPio zasVMDj%6#S?q?8Yq@k1eu04eL{_4?Y!-RrWI0TEi4kpZ@S(q_tjQ@wL7-`V0V1yi+ z-%}IH#rX|2XvT3jE_6W?LaqeDr<6RAo`xL2IHVJ&WFx4>guqxNv?@Q%FJeQTS;4?3 zoV)7xgB_&)FcA@_$UcNIz3H)ZsSj16BWQcQ2v{C$l?f2g2%NW%eoD`HM7lBL*R}7| zH%p9fQ5EH{hMe+p5#tON&K-b-+BPq!CLkmJd4qTl%HgB}lM_1|9zGg3n^HYwCWnW$Oo z_NHst`EM%X&fHfboK&U{U2e&0Il4#B++H>B|KM`=ho%7EPIP7qI)ie@C~2q+MCbk43p+L zv8B++(xrDTvEB?fStrGndr?X7Sh}c022qOcG#?l;nf#B@z1YDMhAEcx<;T>{YA_ixl=FT-bRv;!vUg!iQK7I>b&nx zy%$aONF`-K)zEbVGQpNbMp<$7ypHS~=ZxZ;)@igQ6nd_kHD@P0#U@PeclO9= zhqNa)-Hhxp1=@_5pK=OtfH#^S$i%iQ9FqG|`t=No7td%e1Wh9}A6OHhZt9yD$Rq6@7lwYd!ewy}W{lq7te$s?^c(pkIIwx%XjlRVEy{V{`bp5Y}trg%)uB@ zg1F96?n6d7EiDZsF$4+~5nWip_v?X?zTDIGw#h(=j@6+n)dkR)d{O?iZ3tVAsG9mj7b_uaf`}@<8LbN&>g&= z#TH%pJSU9ugY-@wIP7K<-iE+o(|u@24jaIpgTGI)u!laO_S;XP- znIsh>WA2Antb8zv=DaDPZzC=CYk~Ytnz`@;6 z#UIQt4n}rpk=8$EM_Wi`ci23B-M z#yRW{4AqR&j2i#`5@l?W8fAT|z=mAK?*H;M65gp}@zDiX$yJ;(wk) zJjexi7~${)CHDob)NN8zYDhyRQUHo52EYIXX3R;!*!G=Bf;EL~3v=#q2 zR%7bB6m7%UZH7xG?ozaltXm#~AwvQab}8Cm8w&K~dZOgG5ytK!hz`TP4p=oN(->)E zxzJdxffdIh*8xG%y%*e6EMO;FFNrssyM;4N9fzU#ybD3bC)gMiRlLPjYV#za_L%gj zDM7KDhTN4xcPqajtcQaa8|QJbB}`y+!?mtPxcV{QuBD-xTw0fk*7Z_99Ixk@582W> z69t@PXHvsPxPlsn@7&Zd^NvXkW2#IIuReR+sqh)1CVUI{plU6^mp64?Ku793F_(HgT1}muHFrM??eDn-RRx6p577sp?gjd zX4_pCl`xh5bUS4e$SchRu-S8?c*bOTpbvfwjM0{cM1``7CO2?C>J|cj&pjp|uP$hr z$T>XNdSSAdXUxF{w=`8ri^PfMbn@cS1wwFO#cW!9NyLij`VlWOlEs3cm!?`vK*)oY zb$FN_*4jKHQ$8e@5(ukVDlULOSKcLd|2mM~B^LY9H@r*Z2e;^sC4oj25pE?FX+XX` zDOd(TZS2gTMX@$$oiR>+X2o6Xl+7=e@=0+t1k+LxPlqL#zrem=kf@(r!rgV^3T(=w|adB zCXs)-f}@^mC%Lm8=E??l6@v%!IQJRVN`&K`F)!v@xUUxZuaW~;c67{)2V>wBN@TL( zM+~GF1_Pza%PbN|r41OQ>)!$_(5-))Q>$JoiDa@RTXN3J-Bt-CSb_;D26{tL_Z{1= z>U-vWr?Qe*Qx-mp-^nC+h5tx#mr0q+Bmn55-((VojEJa~Nv6!&FTwViLunpu#6{isrn#KV>8e^S%0~R3<9=0TVlomSl1$du*Hd$MpKlyBOdSkWF zjiP#^S#vaRX-aF30#a}@V={}ihqxpBJXi~>+aPnX5#R|*P^H@U8cag>wq5TaX~qBY z(HF1hY5B2C`eO@E)asZ?(3IKH+J4Cg`9fWrW4ht&Vf(e3ZuBK>Q-^mYyp!2Qe+%#8 zcr?e$IilBb=CNs=xi>*)vQXv2k*iMPPFzBNL>vsyN(Wfi{s^T+t4B(#k>12?6T}}K zmLG`2TREEsc}Ui7CeABGB;8EyG%f*275+2rgR@m-&g#6VVXSg$I7g3+!>bh#;&dGx zDLw>$;FnPe4^U--8Em~hQm}hWecwi)*~!CyFo<^0zgRjyGfkxWS_hEHtg%c*x7vG| zpBB;pJ#89zlrVGf-FGxetS0m&@{KWRbJFm!W_f_FTQj^NWHP~t$ydpBh1M7W9n}Gy zLWhP5?1(^02F4fz*Y%+U)}|$&;Em*gvD~!yECp3)QK5$)mH3 zwchl7aF3;b++n4xsr}MaPvSQQ1-yj_igtTUX&61VR#i~YO;E6WO_mFP7ORRYCD2rN zB9Wv~FI;N`pPDEXt_fH3<(0ug5yTcy5;Yxj$%Bdx@M|;*tSS|fp zckHQnr$&2(yeU4KRN=iQzk^Xw{F)pX73@uc_W8tgB`|fk1fy9U&BZ~L-SZQEzLcYF zU6+TA|E&8XTwv0VLpf5AS}Yf~qB%!p7Y3*$8~`|GQ*HGHv6T9=NPxGRMaa+thWZn7 z=lf9q@|X;6x%0{bnH=>GSYIZrSnBJ`yJKH$#geq2eeFvEE(+%z4|d(zV>c|}=-#C7 zzP?-?`*QSH8?}&--sF8jajragkv%=fzU-KgvESF3PsYyduneMH`%ms`cNz|w{pFT7 z?5R6DVs|jI3^=%(p6BkU*qfQQ2v>C6iQM~%*d6K@Sa-J9$s~RJd)LW&j?lS#Pu;mL zE*H2vcIWQry*nGSJwWH9u{#?whmN+J^i-QZ=v=f5DnCc)>`BsoJoaWUlJFLcUftUEPkHhvL|-)=)SR=UE%T^+0CBd^5fVSTVc3+xLkOk@MTYZ>0QCS`>q@? z!rr%-oSu{XB5EXT+AJY(YqH2dn_JSS24%OL6*3U6ftH(R3yqd0@EHEFL_(qe{{q zTpoC(oXL7q)x61cXdw)u(-7sgYyGim_uf0HJ0tJ-uJrUAdESI&ZGAI!XN1lO?oNg< zg6527Diw5sb#cIum;~zG3(K#^&O8*QQ#bRnuR8|}G598m>u0vKqEn!L zW{Y9E`51_7^pqM&3A=g*! zIkWA#VH1-Vtg#-}@r~LPTrchvs4t{OH{u7XJLpawu3~=DpD`RGd03zVO{7!u|G44t zg32udO!6@Q#10{7+6w1NW#zYwNnSbGHt#62m-`06K)McYm@hfj1O+&Zz%2Ss<77|8 zA-n__Hrz_0%SM$A0#ag+1P)+12Dnq0$jkx;>~o7V2quar$UQdcoTghzm`ZpD!^Zd> zdc{|GDb@o1^ZFa=ecGB6Qee_5zB#+4Y6k;xEk^@$nVBd$?B}3f;1jS(1Jh1wj0nR3 z7}keC=BcVGD2#`|i-ldTQM2-DWCGSGnHJ1)1>3_UPJ?et!>yuxC`0?%Nv2M}!3 zb!RSk$1+s_8emR3P+@G$Hu|(Z^}r8v&ziH>L|iFne|k1EF-!mhN%^{vubCG%ViZMn;OQI8}7)Xp><=!&1X{-A0x;^^h3G_DHZ8oRPZhGJ}>u4R+J0{MbRePCFgKBy9X zNKkX&*6D*}T;>F%Agbth7k|eWc|=0EpB;133)YT~uQ_ks`VAYmj-R{MvLX?h?)C~p zW6NL}yLtA_n?t^Gsn^g;^hOk^@LB~U7>aTu#c=%0o*BkJ3;l^I6(@M;64~`5mYH=1j!NKo%K)V#4nTmR!_<@@Hnce$zOn<4WSIE%VL?ozrok?m z_#37zB7;l`k7#?Iu?`FmaIsgN=etPL>sB$c8^hg?3JltYHfKk1&FB4fQ-c8|u zrW`N!zR%KayUr4q`e%tt`#DQhk%`jcHet3^mVn5F@ZsX`5&MV2*47 z!svqv@JJsw9@`sO{S8 z%P{gX!nCvfAhZS z1};UXO&sYV4AYNb+{oequIh$%(voC@E0{ISqt=i2MJ;zpMf6||%kGR;$(T||@xCYS z;Nl`KZiJSnA48^v;)t_gv89>eFQWzC)Pyi zZKqum|Hv4IkbpV0m2}>dKX#mwOkqDtxmD1_hrs%7Ou!Z)8NCB8j%Fgrtzy1BKqUQ~ zY#SJcZuYrVqHBaz*=T&xts;65jNpC-WB6Z_3vx%m-3{&#iBmx99a*naEKrGDJVJ5> zzlnHfKtj;xxl{u|m(EPQ>Ixi+1@*@B+JjCipeE*)?nSo@9g)b^i|{gaftwAAj|lk~ zV2(|og`}LRr(n>qnlun`!Za7x%#4i!34Ma(c#I8U(O|_ac+td@$u2-;JVee|i8P`x zE?+VKt$KcsTMUqi7etsu8HdJADRAor%76qa{b6(aYNHz1krv{A^ZCo#%s z+_6OQ7slaOt;q$Z7$S}hao;O}QkW!cfHj!$Hl&0sxdEAop1rT!`AzRN_tHFo$Br+d zFDwq*zJ->cjbA?M^CWoqzhDGYFjF?jvw2lv12VOmxF;G-K9=|`X3rt*Wt41u=Ls-QF@5cTo9gWsOC4#8BrO5e82H6f z3giMnEd*@&N^T4;qgX%TqcSl?TibJ{G=Rb17(Ms=(ZThjl^-Wvi(2sP@1FU$Cx7w% zFFl*Ai^c09Z0TERH&Pfg;k8=e2vs~#tqS?8OydGU%@F^ioX-nUI{N4HeR=CG$URY^ zQfYy&lKIS$MK+nLRW@r2739 z>GJbm9uyMo0THDI^AU9;n;wnIe;e7FQc@A60xH$Y3sV5pR$UUvIwtDNQaFc!N0+1{ z>o`<=sx)>$m*EP-f{?7A{;c(P2oTd)hrZ`dd+9F7LY)D87ND8)aF$P)Emu^uO?q$f z^@G(hme_g(E?(0Wo0)3WChZG*y--DQGarly)=rrxW`pTmCOSVVxh$09|+?D(*X2eUuKko*u}Ar^Bo0s-l*nZaD@UX5R1^svt`fH%?bSqIK5%bIo|v zf(`_5zP)$g_#^uW9O9D3`j{|7U!j;Q$+DtFALy=72`b7{NCz3G(;xc^SW=KcIFkIXy)tx=5V6TWtv|`ASuCFTkP$d>k3Beqg#%dy3ABV)?_BNb4eUxk4aw!Lwss z8Y+xhdRcf{xUuAb+h=gX#TG5|flA5LK^oa~>T3<{%NXNgazq90u-%|uWM zu-P)~>BI31l7$C?jzn2;^T8}(hi`8D)$MVOFuYpE4jk01U%iZ1K!vS{dP|16_~JJ! z6cqZ7!xeerHDW8G9wRmz5u}d7hwBav`ks!J`7%X0a=3ktGVQf-6z0&pz}F-i#vha0 zON*0OHi5_p|L3l2k!Bz=76V+hO!mCb8q;cCEX|xLWw3y1;)F{;#n$Qzy=^-7eg7Uv zLFyZjHLw~RK*WWQS+bC;Xg~z*MHZSmuxn0NNZT1e>6HPa^*8rMQgUEJOxrULMV-skGqQ4BVA(sX3#h1z@3I@tIDcT3jqb zZ6^#l>$uL!C9SScu($wR9u|@M62}2h(qhe@$jGg_sSXVlpFZrUBZgY5GqfrI4V)=}Bx!k?8TI(w$u34_C1gcBkz)$Wa6nP< zXc#eVb1(B=5CK|}8#Z`3ZUb6MnMqLCLS61?+)}TF>#nr9-U*TmqOu*Fo43w)n)tKy z2WUqG?P*{ZtMyfpQxpa#qre4a1!;r24Z<8?)MU>>(T9re5b5`FxM}fp%REwKA*al2 zEQg!1zL5E6Iv6)mZ(f9ogsN7I06mPcv@YzbB(6hB>76El897f${$-7&m~xyhJ4$> z=uY&Ild4=T5A&<8REx8`_TU+d6T}UvhF*^7;oZn@og-3&0@@X3@*Vc{77Fsr5!nbk zS3^)tB-M0u;B_!@ nc-wtFF_l|2FwJ$gm4e}@_5g1jhlnORk_F7b)UT&dXvBI| zlo7g(l^7aM8jY}!nFxu7Wd$X*-p&&l8pbWeU{v|x9;U}Gu;=AAO_gz;7i1KjXpDNi z3+!7ri#uDbTKKuqOpQZTVPFXLl(`}(N%aBfhYM01RZUpjr6DQD{Ftj%6<7zuVW$L4 zkQL!wW?wG{T)-596MSXKYYMS{P)U?#V8G;?FHBM;f0)`+p|7;Jbnn)f0AbXU7FV-s zRz0;@tZgxx>Dprc$Ud4I`+>v1+ZBhoL`V47#bGW*9KNs>arnYkFAiUbMG>nlS5*{o z2R6YL_@r=_xe%U`N+YsthWq|rVH6e|yN7};vZZx4l|i_OhvDQ@&_4MB^-t<;6 zDN+zVh~zbGZDSHeR^SZ2G0Ax9CRE{eIkQ~bD4gq2R__Y|d}%wN(jKGqMiYxy1}$F9 zg{EQbLhM|oilSKIcecz8c_rmesjksf(GyzS9!<;f->(NO;@WKw*y@iBl<@I+4+vvr@TOKyqc5sfNwfO%^S_cms9P`D>XpN}?d<>MHzqbP$pI0en)w#x zQfK@d0#!1q4R7Uj+S!on;tgh*1c07V!i8|G`IGZew;@Qt{f`N%D<9>Jba_mV1ap@D zAJ(UQ#g+@o#yTU+YDo(>HpUI6q)%giktg{Z}&{La!}K%v@|LybmW3j zP}T;cUDn0suTW|z?CW$6pv-C9kBZ2toRSf^HRUx@)X;VGp{=;#E}6y&V*91)2+kh^ z;b7Qq>3nd0V|mIu96&G*DA%w<_7XDWj+y)%_MQwDpP)RHhHmpF-w*7Ihn`tj{N^yJ zAG?-1isgZ5`gociu=GNz9gs%Pcf09@?5|Q~7FNqir2AV)8$o3&0zt*-o7DbI!eFNU z${CQE$v{Ej_5|7B<(8qE!QyAba@>OsPGI^1UfL$!C-w>9*D&_+5C*9f02y8&04l%f zlrgRd6W}pvMD(V(!MqYg_4GY5E}m5Ef>%}h0nw~j`jLKE1ekm&M#+T>5iPP)oMO45 zJo+jfL(@%P_&&rAwqCVB6m06jTWVRvyugqe5ZE&M;ydHuPe5e^{@Y1I5O5eAodvDK z8qDI!ZmY_PaJ4VcSzB}j?l+WF`Mg91?GK$h$fE90%KH52!BW^ytm*$8Gj zG=cJ=c95J#YeBU3JxYl%GpIQDVBviFFc6WVfqe&<=sC^yh(Hb9#SIL_bM`I}Js3P3 ztL5FLe{P}zIcB}8>#*UM!_7>j?r3AAiP>XhjRckSaFOry!Tp^oI{FtX5y3Ki4XE?k^k}> zwBlp)?ap1F=gubn$hCm0cW#&;{^v58TfO=D_uNYD&-hCnuwD#tp>>If*5Ksw0e@Z9 z*N8}BfS|#Lny;6Wnl#6om$hNS?Iv1?hbQ?&t{VI_xOR@Em58d)Q<+en zH3gcC%4pAk#~oMiygaKy4gISf#9lqLQs(j+RB068t4)@tQJCUmq$Nc01PW>4K9QO) zA*{)Q8opHmh4dw6UC2wn&Gr{IXT`U$x+=uoC5vLMy5du#1VQt#vDHFKQ&lE0!!x{v z{{U%=i*mQt1n6nJZ=QiLWD6~$?Ws4Q=^?%4(}Xu=j$M;(4>#J8{%tf_t5P`;6mim3 zH3M-sjyy;KR#!Y?Ma==Wd6mVyB`?Lrhl;1>6W^bf`oM;PHOz|vIL;w!z&@J`uIDRB zGuLQN#xz3{GyVr-F4K;x%-OrCq zm-imXo0~)WTtqiKRG^!?`l^+M>Xqb=`R_4S`l9j)ltia$HH?6LI)IuYuH>%03FR7G(~IYW}r%QzR-%M7ewrYV|K(H>JRgpY7`ZM81z#J7`h z*-xl4oEwj#DXbXbw%ytEJ1xEFy(1M;?_92T>^xdNB3B7m%NPI`ZYP5Y7Ok`aDr-^% zN+Q(cIq~_5Gtsv|96I*RK3u0#7;~4<;jtQi5WSS+C1h3`*^%wspb&$MZJCPD_4lNcxlGN+{7AnZp z)|-jM(4NnSCI0|g!-7sO12GTz3W+St!~tk*0A^uqR5S*O89rtZv^n@l_wkHO1)Lx_ zzIr4B18s;r)3_VR(biYaQ7OGjZELt3y=6 z&Q)JrDk)xiv;3+%=$J^+nuXWCOE>f!Cj|w|(x?)A5-SI3j9zE@fHp}m>=*f_#bajr z*n|PnfFTGWz*7;P*p zY`zhCmezrCg@27|P3Qe{Eq4@( zZdB_!l_e@0i0@p|2A&tmdF#ah;8|yjqd0pYNPPJNamiAp@Nd!urA?!T^>)mKxThuI zxiJyh@Cut!C=sc}z4PgGLmSGtvBiSx)T(A^9wB$})bm)$gIr~pa_#EjUQL1y#q8~y zNNTrktV9drv&cn69~9x?YZwqC1QPIr6C8tb0_=!&p4FMLkgT|F7Li=>Dsd5>reQmh zgJA4)tPMQH?xc5_)7Tfhwf@dC$Yf|p!>US815;rsQ5LHQYlGsCe^h=YeP29*p?yMA zFi`oW5~;v&tf*?bLfk;f;%!{i9J6R*piT9qKP6xRLFHNr6$|2fl~goDS1;E86aADI z39ICHjaW6*?n;H){&kJQdKjLyyTHZnN+a7*-9_0PZ}uviyDo83e{i3ne=r<4vlaLd zWGItT+&wQUE7nWo$4zrwSK(Q`U{6S^m8h@q0y1Gwn$67lFKp)w1?QM7Fh)YeB&c37 z<##;o7PTglAmx0-{~025;gV3!8hXaFWhif@t4-~|287XMO24F$QkAC-N2=>qDZsA_ zLTPwhYb)LkgYh1`#gT)?oA56cm}SZpz(aK_Zkp*SxGX*qy%KX1y-opx#hx0)sk{L2 z(vn)Lyj(Iuo>7*7MCtmehN^~UK6I*d5S>>uHhQy;=+dLvS#25OP(=9rlS9fK5-LBM z;Su5FsO0XeL&p+dAe}LpBaBzhlFM>R6o+#;hMga{H7Twv&?Iy@Y_ES-9~k3%OWi_} zA72w;_FV(|z*;oU4K08Q(qouIRh4G3Kg6w}ao;97uJ^aAd<1ydSBCi>Kaib>R`dpe z0o+|Nrqy&{ORsxO(%65uy4k>kKwo}jMy?!)OPdCdK|U#^3^v25FbS`(M7%keXK{cM zm3g;>g;0|3Prz06w3BwIQaJ|b9xhI4Gv?_Vbg6OGyzH=ZhgQ25Stlp?Y~ z+p{u9Y@!$fyv&HHe2gXSk_T$hWe3vU%G#Vdw5{o z`?4KVN>yjbPZ=m@l{3RVmw{WCXrr?G*rZ)-i6NcQK`C3Dy|yzYY>)Q`%c*!2G@8_h zK{TN=XY|=rD{dL94YcRhTy7~lH*-gE?_2ZgTY3Lm^Xpp~ zw#xd}VEa&{P6u{@0bE?>q;IU~$kQBDbSRxF1XAGACSt+ZQQn!R%Qa%_3vV6`Da z9&XTQ*UX`H)Nrgn5x4{t2l!cA3_?is|n17A5~X?toZUJ9x~+Gvk*-VBy4mbaD{jE?^{SvPzL z;Q{@lJqZOWt;xtgG>Sc8P4#%XZuqbkEews}VuS_pE#3w-rkpr!R;xS=CK(v?QOTPH z8;<7)JUaP1AZRCV5e%izgn=`|>}4y^ET@#iAz#@}K_R$iOUP&$pkaLVvd~-}8s#DJ zlv^`jKDToS7njYAt2$`Y}3=6AXf z;?-em7iUjns9a+WdpURX=nKj@qc6N*U1x4NZ}d+&&MW7SF1}!0xnQ)zuleP|(Rmyf zl;!B5Ty2jQ{F*Zgey`;*-W?x*dT{ONY(E`;YQ|diO|K8FmxqQ6d~mkTd2StzEasfI zY5Umq>(;TBx=RBC;hsnXxO_E$FkB8pD?6P%5Cai&9x`fgOyt|IoYpXo2H==X0~6qQ zHnr}IX6uHh3TI|YVaZFDBCKeYWaJ%@ohc>fU`g{lu+|<`5sgC+4?$hi!VPNq0_>6q z;%Z{n!BoQ(>&}$^?nqV;I1f|p_SF8{k{7xy1t$xw{@aonx^0PKsBA*Kp0P@9=(eSA z;d<%2E!m;l)9vHa`)^Br==Kb|J){4&WC*tb#mJar&q>0Rm-b@M@x014f$@(Edyogc z_;V~yEp{&!`iu*yE;%d|HtM2()Gqe3Fw<_&?7!{PnT3Pw_Cfu(eLAynu-!hm|F%yj z#-81t)qmTkGYf~wohap z=GyJK{kMH0srq8K=k?$AiKG;%-Jain+b5FBrgnQl|81YhJS?=^3;S>TL~3ng87FeF zChf@HiCo01Tr2-bC$bWSGG}aOK{%?3ujR(8u^J@O(6%PIs-V`c&stX45IlNA#iQ9B z%5?a(qYbI?2fGhT7UaR@9L4{D&za>ccD0s-v@99Kt-AyhOe%AhV0eY6zN?K!xS-Wi z!yLBXf5-R@80^Zw@{OPHse~Q(vzzTRhbJv>2*Y@!EYQCEr^4avpYDOk@Bgc>ze+|g zM=08V)DhE1zGin~k~$`RS{BjtmVXB`uL_%cHe?&E9P>%NE8H|!%tr=o(oS_CzQ(y{ z)tQ}(I1J}_>AOrDt^*wIsVYOEe)^}WbBIxeQMb%C zW_`VfDyy)ILcD-b;0bjyhuuSyG5(&!y7SY7sTu)7 zOcl5;YZ?ivc34(pi|fJ-A63F}Ns$@bLp4>VF`I(&fbX5EGi}>-tX-qxjBO1>Ii5+j z1{#*hK4CW?+kR^~{z-w*JcE4B6g+iR;MXBXMMdwMxVRojDujYVZOjdRGfYv<`2xW> z@i-3PC*A`=ALE~8_e5K?rv5As-Y|68_-K2)#E(XCsbUs6zqVTX0Sz}~d0F^PX<^k3 zp^TYI@&(oJTJ%IM``e-k8{ywELY~T32%#0x3v4p=Y^thaDWAuQ6)a&1gi~@KN-dr8 zov5h4EN9Bo+LcNPea&{Jcg$-F7U?H;DS9%V5p*g5g1&5&X8vkbqUd)*0yUvT`0y|A zBhE0)!0b}Su6$|u;qly+xZ320H(#gbB7Ew40=IH%9k(<*(kQ+&7@qnHVQrcWkJ`_N zzrj!3r26U=nI5=Dr&D-f-qP@MJyTpGPrtdptVk`lFsxEw693smG1JpYd|-(H*z(M(5C(^eM2e311Sl!Ft>{Y+Ze!A5u>oe-EC zmD7vgSn7fS-_+715uIpk8{2W-VxwKvTW~}XC@KmP*t2?U5nU9w1JDkhc zmg;=U>Q&VDDlb^ond&QgF@yec3r|j2%_BpnnNZ+?_3Kux0^e;9zC{oIuYUzo)&u!@BR8tyy}ci(Xvw`co8ghkwzTXT!-lkuG@=X9)H8j6?3 zQ!XvBOJ3r*DK|*NSpE9cTi5Q83L_cPy%ZSHi_2;hQC-`ElX}hYJ5NG=UhV$v06?|duM^)q^Th~)fGo_T0DRL&H(lgRy%_+@JBPBDj`)cF{~b&tDuJE#Ua zZvtm*Zzv}Npb*?vj|%CcTJdDu7}-e;9p_X0=AL;wQ;f| z=hb#&mPG(QlR_Y!+4h#^F#6bC-}u_*OTP1|$CLA=Cg{?m4_@}z6?Z>y<3qZH>!{?N zQisuhedyhfefyE`eEt#L!F9l;U*GkQYyai?`)_#@oLg53LlOw!qxMMlJ~q6M$ZnM@hO0hbl2VqD}5B%s7p9C=7u4wF@q#9T0gL1kWgTf~n zRn?M{Zq?YX#CL8T5*6{emL+(~F$uFp6tI$02*WKXDTYLw3W-|ol=fpLO0OqU=8Ryd zE<%n#w+GfT7?PcLs@BjmbJ);835n( zPv3)p_%l6AQVAr!ugGA81uM)J2m_(BMzDfj{s1os!$kXvh?~I&&}89Rik@BIj`j!P zx(qgYGi(J5NjlJRH{>;IH{>z!%-A>HDzANay4&Sz`gFIclk0B# zs=0w;FD<^f5aQZJd0STJJk<$5RWbJg{tObsaWbayll(ksfaPj$teAE{G zRWSy$Bf%6g7tAXV)ztHfmtK?_>D6dcFLE#(QZyZIwU0|2((sclXs5()jl_`rEOki3 z2exAN*~Qog@f9&R4!uhrNK>^OA9oxG;ZH*tG{sF*+d52_c8Y;=Jk=~p%6=tERH6G$ z|BO%!6>cEIkD@xKdwpkzm?R^Q3PjQYf2vA2mWmmp_)(AL^GGQdrAmN;Osps*c6g5y zhhO`#romKf6JK3PS{H>}(dRLNe3Q7!mBDB9n%>@_#0V=9jD@%fW00?Lg+&6HYHje_ zjI=6?UFhXWi^eAWbJ9_&F`uWIcjX-o(RogI;&Rf!hl_ul?pagrxq;_sfk~xP2t37x z(o_V0OfVIcP$8601pi5Z13Qh)JL7)+2oa3IA;x54dskM#d=?pM*iHZ-X68lV`Sh z5Id)x<)9k!B&6i*s)&I^PsYlPh&2SCG*o?b`*dz#ptUnp6+zf~1{jK8OjS)iJ(U#a zFy^H7CaYIzUMgETW!%~AaQC-mCT>mM9SytyP7{)Qvr2^>T!nbY^rr7w4QS3J2vP>QAoA zp4oDa%;ocdnPZ?GE--&{$COn9|zVKae@vyp5B2sd#+CAm}wTOB5>H-)PB@pK9%kaUJ~lVyt6Er6~E z#6YrQV<%)Zi3=SrE2KtJ;`ra^nof)tuv4UwfdQ=<)uf^D zCu3f!MT!`rMNF&s=@hx(@lc2Jg!zAA4F8FRJ$&oLUQ=YBp-s(_0|xEW4cbaHb67_w zkC6civ!tcQA_$Sqw6u71jxa!?)@B%6P_qreiYr4p!`y_KOA^&YWs!)IWyw~bMsRd* zxfwkwB;`#zr-bdnL)jM|g%y5yruc;LF3C0hR&FzC`#J`ivhCO;N!6+_0lr4y*lPkLxr=Ya^#f+^acPM> zcq@!&Q1Z+ei8kecXPVN38DmL5G~Q+cnR#3NnPUl2&&Dhv9;u3<(Os!;PPF1l(IU!2 zrti`Jisex&?!a(P=bLihA7IY8@j!CUGo5ofK}BuT9Jc6;(l63t`%ItX!ez1MnHf7G zW4Dk5dND<-+Tl=a$`r~hER36bej3KjW0fH0T_#vTOsV~utDI*MpR1&!7XUN!mld2$ zPBwz%vKmE9vm_(k^SmID0;U^Z(!wogm6a>w=(B{M<^rLSAl+WtZcErLm@y&dDX?8yXsn_s@l|QS zOhmMT)VQjdz#_Z$g8_?)Q!mlz1#U=37JiOO(X(y??@Z6S4L(kglFw^H0?}=?X5)QY zv%zmdLBHx-zVX&tGQgfQV_M;=ccV;ClQNBxScO4Rrd{@nx;-i@W!hFM=&=;G{)0h# zgUPJdCG@xnCefo;dJcGW_QDuQ&LmmQ*pv(ly$>n z3_O-Ou?MRhaM3?3xN?Ck@nKao!PYUZ3GwL>AJ>7t1Q zlT`#0i_xG!rNSExED;t++;Cn9#f2!vgNN!fAdGAa*6U^_#*=WBpKx!e`2M_(-Vau0 znQaG_hIid-DEQMkBJ)@oG^?mo4i8r*w0;7JWhy_C5Gn|_JV?~DiP;+-BD`6AbU{Zp z;6om2q5&&5B6+r0JU~%)E-J)MoYdJ7M07O40r5aBi8~UkcN^^W=*qpSjCw3hS(#P| z_z4qRiiARmXXW8h$?f0%Pf_hxq&yp)@t6E*tT(%h5%sJ& z_+5oZTg#j;F~`lw8&qU98v)|EM2iZWiNI9e!-{Lfd>)962vSi)tcVw>k9S znOb1L7n(=_ z-r75NdvD;5ZNW^#=h#40@emjdR6H}2AOZmLFHL4gUQ(=a!wc5{m~h*K&{X#ZVgS?? z@<^n}?$Zf@U2_ZRR77WJlyEToX}Ito)BI@u0S%E`)@t3!x4KRzV%- zhod=c{Ab->;untOaQBre0Ja$DWiVG)Try@xn+C>&*ugx3?>j*W0o+#~{J6P5JYQ+5V z#Ya+Pw)>vk7=6XL+A5_!u=En00-+q+3rmM)G-`DWcTB-@YDrARySk=+QD)E<4 zSjlv=;{0Kk5LWsEZi3jjf37YOjM4s3dUXupDMb_044#fK(6!1VPP`);OBI_kM}bTa z%_rPMIZNhvknv=tk4>Yuq!kndCAq+NP*bF>Nbhw`1=Emv$FdNQjmP?~< z$ug5mqsMP1eaCz$k4()*Xk1;FS|TxO>b!J9Mj$YB&_@7-#34m|BxJj4ne;IUV1t9@ zu*npc20w!WMgLx?OSR8WPU+!>XZv7x%Ka$MkqtwCOw1;U54he|Lz`yE?7hLOE|O4y z&5crNL<<1y&Em(HyQU*PX-R=7=P$_KpwaHMI>^s22ks%4_ckXE_D%KbV~tf4Cfkd# z%IvgxE_P0dQ>=Bccmq_p!`;i(gxh=iGo;mB=+5?qrDM#y)K2rBaPSg$ZlOiaU$H@< z8T2UJklD&XHKMQokn(=n;Z#|7^SD6XFD5D{lHTly%9*H4MvV0Jy1KB`Cx#-ls}wE1 z?i_K?Ez=LRe8Y$TP%S_7kv~++H+}4RXjy*AY{YTHwgnNAG~8{?{J>~x6I0PIFsdPE znGUj8V-(l2&qa!cSxNEa!HSfX@JL-NJ~O@hlWFHR9LrQlY&MAjHw_f;SnzMv&n#)i8 z(4={nsB(F3D8wNiP4~f5k1Htg&y$EBz_|wLsfr+)EzGk`XFUFICWzQb^F&%zVbn@b zHaCD15e!&w=2DWiHL@$ouy-lRRH$(!*$zkZt5TBff~@=pqLQq1EhjUbiOi%V%TSS$ zoO>$ZvU+-FYe2=$>6$&wAKO=vf~3U)w&h$U4e}@ra!G?!b0`7_z7$*TRQ^FTf#eu; z6Ud^Xl0%XT|D7?H$h_b_$e0gJw3XTye1$2N*^4}9noydC?GE2RA{*&({(2S&8`!iR zi4_3C8Hlkuh)aoQDS&Xit&dQA5qG#v9>evt|JT)ut&mYOLGlaeo|$t|3n5T+HIx{R zSCL&Y>EgrkNh(%PZ!~`pKB^D7-^HEt!l3ff6`faT1v*YnY^|um@s*<(EJ0{FBN<0h zsCB{s!XhgsqG<--bbwnZHCOr=f276~ALmu=hawqXdjxpWdr6g><Lw_!@Zs z&Ii1^rnjr@@ z)p()u;kZ7_$R~(50ZRo!>JU;KbSNXHywF>WHCq`iRK0=u% zJzhL;IM=Zzi%s)6`8+32EZmpLzHhSx072N%-Awj*{gb_uH}(h4`!Lyi?ZozJeHizL z=)?uMDJG!({&wOyA;F{jfdmgfUr4Zx5by6b^aFte>*hWGow(`i+xAQj_YC%R;vU}E zA99e35gsj72KJJlSX@cXE6Ex-HzGuTw9O4kUFfnoT0_X=riU_O>`~g_4XMnffw_Q zkm53SmDDOdR)R><#%x%rFP6R3qZrUv5_l7}z-Z^SlWasM*mkraec`ec2*i^9Xwyk? z69Q6wi5duj=F3v!p!L039fXT-MjUkqGF|!D;*34W&XaDX1VUEp!vG)D%30%y-&+`Y z;)9$NcP`+UHqZUOF5hcUa)Q-kcSt_|oNkbJ>?hlKfPn0H1h2xTz*$m1u0Sx2kyv&4(RJf!#Pci|) zZAXNN9T(~7%BBYgBy;!@ik`)1-F?kw?wXC3IaIwx|EtalgIVfaZ_&U9m@XvO$8wcz z&iu;aYNMtKl|AM%T zCi9%LIZ6Ivu3>e8PR8or^S^nQUchEhy{^mGW6fN3(N{ql#@*3s7m6LAd(Y)QVUp`V zWS^&sIv5?^d9D4L;tmfpBAj7XX(7Mw@cUz1*LCBxADlcgp)_=#;k3BvaLIGH8;RYe*6X^14{1>hWa ziINj125O(_8|drJ#Uq3o$IV)r!$tabWAt#9Yix|pekFucN3t$q=-QorEG#~Y0G6hW z0aVVG-n)}}TP7^uIZ#79x^IZ@>I;3p7IzuFL}pXr)YnujIkTiX+7c2#xtyKcPO}lj zL|+=ISe0gHxcJzikgAwFzx0xLJWuy#jZQkUZ>t10HW2gTew+!Zlq6R6rcz2mbSICu z#=>yl$UfLNvNt6aQTow5nbQYEip>GDkYGITvCTuof*yB|rJebylC)8SD^;qv-F%x8 zI^UJt=gIH7Ms45Wirr}~@AV;7)42Z`GN=_3k#kcw*xXN$lfrj@N{mlN9D9RrH?-09 zO*`v*9^KN_Qrmz3dIa*hG>Xd)=TBXNU^5w>zFsF0k0XY1RHC$M@bmXB8BA%@4k$I| zTCrl^&jSPOpW}b&qoD&NT2%_BHzCGC-H1IBVm{TE5OaW9?9YVxqMGp*ztq>_9}cDP zSL3?-H38&alG9vqT3d`^bfEYlu!7G1^X5!ZolYOOa% zaPkDacEG^=d<3z=hVQX{@=`9wQd?+jxH0hrN_j56cL?ngzrYFU+tryp!JJvIuca?^ z{*JlGdjcXaOpf4ynI&DA>fT+Sow8En@3>pYQpaRMEv`P$p?Z;~EkyN=Ko#Pnw>`U6 z(XC8hi}yVdFGuds+utCb5kPUnXsb|)71{O7!K097a>Uveh58QNziu|N58%jFwWJ)= z-|fWfX3}FIfyqwlYTNvt(**!+=7J;2^s=HYQo%(h55;P@{}>P&iH2NoKsK8KtDWwZ4<)Mo@cX>=c)Q7ETTa=`&_eYTV}7*j*QPKJwhVfRA2X_|9Zqn7Qv=xaZ;L-i4{&g|AQ6 zg<{t(yoPOTfwpjqS(G`LjshYn*9w5Xc-fZqMhhok7r7CdkDfb9KxIp(aRG~5v69wy z@=m+t9i&6yh5ZEDEc2JoRjH6P zT>T{56Y;buzU!(Vd{R@c#3|E2X~5^1>9&*s*|gvioS?N&gnD(Yb6!^y>UDc1)SDxr z-dq#v)q^w(q29c(b-KVw43wgJ`A7!4(NEY;KKkO*r)AZixQaQCrY+zJSrQqwQ1^e# z7!ZZ^S3%MFXt~M;51&kj6Ve3ssfP?<~)_>YXIJVB8mJgnrug+M-EOumN6mX_$Q4YT(;lEdx(_V7ejo&!-|8?g{hU0_?9{v|t z!Z_HFFu>u@W6hr%a^B{h@pE5=2Q!#4qYBe3<5mMt4_Y<{6^5RDmQ4_}htzmux%l6T z@H;$b%Q!u3rTAM1v>e>hnKGKL#TBL^VOTt>e=eu#70S*TO{tFFIu)ZyfwQ9I(F+K- z>5C_H^11CPqdZb_GBxa29e%o+QwW9;w@!86Y4)P@98i-&cW>~V+t=}H$}#yF94K7) zcglP6e~3rA6jDkSga@xB<_7gZ4)n2|`-QEPNrIC2dLt}c2||cv^JhB=ODwxsT6`iE zyDz0uSb&MYi>t6!g6k+NkI7F}jMAC{GMNg#CxK3u0Ta5Xnb>sIlZ-VhRl{X-Ic*cJ zJYibS%a9vdMY#WCw?T1>I4hUBPf&SOJ)Iko*-288ea62*pHzyRKXB|nOHXIWdcF7= zOCL>~>tMTj*3H~kHxoOZfg((;M3Y)3*#O8zcj1fDBZF2YGD7d&y0*PfH~&BqtX4$%Usg>Mh$QC`AUf z8c*ZOa0vD)jAk`LFc~Y8TLs}xUfjb(+-hlwNX`wGP#w0J>U~um!bYkd!M$Vht+q%B zt<@g5$NuttL`m^7Rk?Q%JA8q`pQhW$%{>Y3oJk?3fvpT~adx}*nu9FVOA#lRs_jhW zMe~KfaZ1EQ9iY3J6DV|F;n!-@s7Ul~x*?cv(-B&wL*Oerv?~w9h9@#5O?pVq$iH!+ z7&B%PJpvnH%$sBmabECUPxd5SC0SMSF6w<=tYHoqTnFM;=@`A6`;HAd*vs}UJFm_l}8XaU5J7yyR~87 zm>>+7xGV%TrrJpDaWME^Tq;MVt_vrn@80leRejphqbYN%^k@yj^EP#+6bCW!0t1N0 zJp)Bgno)mc=FZi(P~O+z^!$IteL1KBpKA z8WDMe#ky&h(d6!G?Z2w0ap6k<+5@+;H%ZKO>MrDJkR{?RzUR|FMt7`Q)UQ3Zc+cKi z#J6w#k7=!yMw2Z`u;ad(jVwTD3htUW?i_j`u;2B$<1egIUFLM#%l zW&UKv$=}aa&(J4A4Nj2#_VG47VzTT{1J8!!x)YN|BHxG2rTz?aTQ@C3aI#sv^5$;< zfoc}@YYzh)A~9!=BeVy4hN$}7A#G>XOxiqJSSe3)i^>W^u|rR07G{ivw=6?xSgtt{ z{U6J+Bb^PklN|7{i6XOq?3gYVkImo>Qfd>da6%Pr2_Axk;JIF~oI9OaRFH46L06{< z@|-O8O%@th6o~18;V6y|sG9^U&(Xy^i(D{crXB6qW+d z^OgPx4M9Jz0+OeKU%os56-UW^N(Hbv5TEpSa5L(i38er`gz_Dm(duJ7(@h1`$AljK zF$*k!QU@Rxq<9G4O}87x<)fe7#9`14&YvOcpLwiGypmA zx&d5`Gf!Ax$j3$0%m6jsES@%b0kBtnMd>@lqq>{ zYqo%w+J+4P1u67kCfz`Im02Z^_`239>ElREJ+Ba+rBsjA>II~sfk^hDKg-#PS?3tN z^IkDOYF&GNxs~DYa{ihwZ<$9$1AJjjFNyMV6kGFrHeIv$D@jBiGSMq3t6y}JaTYtM z$}SO@>bB1(5})_w?}Kd^KuP41gw#_qHo6&nOQn(0!`8*(ZEzJr6b`$pntSfm+~IAi z=FXwNn!7IbRdYvUJSH!BIO(tEu1kH@+>y%trR8Hlvn$GMa@?rM!hMhVD!|OwTxQ{I zfUr+&NoJW@W#Wp}U<_Q)1I|ohaWCqOK})C~CE0(qh(_3f3(edrKhCW587NaWPqCaT zt$+itA|tN8D18Y1MR+L6Yrb5_rIV8hB%v}&?TZSC9w}Ou|J=w+_x#|U@=MBIzq?&dvz=~+)2O-r7Yg9rRXAX?Y_YQCrO!xX;&B8in4HyVN_p$gr}xT9#7?lM{Cs)lOME|X=lLG1Cy z$rZQ5%5Oy*=LU>WSNeJsM->^*-~jBb>w8erK)BwQfP-@{Os-FX?I+QvGyO%Uwkk+v z_GihK^hNw%ZFX0IgD`N|KP-g5MJ`|ugjZx3vD%rqVia)8;wxBnN8}|Y0f)uF*gOk2 zJ^fW>FIv2agyFEY=eHKz;egP-*d+(k;c_U(Bo%)YqULvG6HEK170U-EP`o2^ScAXt z8O@;m87@9?Fua$y^%dsWzADsZip4n^ETJ$!!&@Y-SnO9#@E;i19|B8zfc=>$Ab>UY zJC+LWe+A}}(WJPIdaqDmnf3ez_#NyqGDlZ+u;O$^AhJwP+p!zAfS!pl{DCm+}JKV6`^pt9@(4RIJ;J#jKYN^?0ip|V_->k zc+}@koLgKrKVqP3c;c{zb}aC!(XJ{5>!fX}Nn)$AY*A{>M^{2vX(TLTUaoDyrcBsL z5NmnohWASlgXdb;$?8x0($=Kih$m&fh5d|B8tUKlUYAM+o`XO#3(QNGnb+^X)Z~e6^ioAHN+w( zmUc%Af|&XBWr<()j#~|4nM2H1#BC+2TtP@Wivz8?M_k(=CR^MgW`geqzGOh#+gzb# zYOd~$E$@D=>Xz%y*!1mYuKqS{b{DpRk)Wkym}i6F#-O*9l~t#Qv;liD?mMW}i*=Fb z5`j%$p2+zS92-apT!3D{i&+t`GUc~eH{VJ>qX(VBM;D&599GJXA7kOX@iR_du6b7o zlUt1yyg6mX^5xh%`N|`c4I4v^4(u&A#(UFNESDQ4XIX`o>f?jalpd8dMKc7>Qodj- zRD4YMo2G^sI+lP9PyQ5z#eIhiBCa#GJ8>N<=R!#Cv^q#ySh_yglmF=|0XzUU5$?TK zbi}BAVREi|fs{euj;}~Y!?qL(_%YiC#;VS>1Ti8pakp<`pT#;7AsOVCV=zLDTXO?=G%3ThZU{^}K2y+`1tc_*n$AdkR9|da zz51idocDJ3l&P*$#>B6q>DqS_VE~o-#8hk~CB-Q9sYPXC)h$~ePVuK{R+Mlggu{?^ zCCj-Z!{Z~GBTzDw#qFl(D;;1>t#&dolvr}ai;AO0XK5g`tN!L}Z!K5CLefek|IKbQUH5u6;=stH=QqEKlGm2 z0GMExS99*YmbdLG5zc{c_I;By>(_dleU;{fS;7qr0dYb-oG}cAY7?Q^)pZKw`1RdR zIBKs=IBJ_u_}|ttA@Xcgr{dSs0IHN^XD6CGt)n&IOW~W~FN@k0(;CrAkc8tKY>n*P zc=%g)9&}5Vs_+Sret@74H8Y(;g%S5!^)h({s3oM;3y|tS@!3Oh9muh(Pa;mFZSts1 z;0ALj(950X;Zjbe;TccU0O`DS1rnjI%p_dw+M`|6b^CAdSlh&C*r46C>;ax49#?13C1hNPzZsIzg3VZQ$5gHedGK#&=ESnq2PX$XHnGKS;>_~l z?S>*|kPswCPd1`|>Xckf3*X4_i0V8$IJS(f0|D1ZSM5T`m55* z)bn`()0T#vKUL=EahxGQ<*+{%vk!}T2?uit0t4Rznb%7mQ*~y7z4$0?+7SK*K=?B^ z_@t}mk`~Ttkh@wi3F=6D=N)N+98?9vepByOoJYvUq1Rt)ST`)*^D35Ok=Q8y06*0S zw#f9?SJHe$!NZb%ZYfjcG&Zyc?EkG6mFOtav>2s!ecc>gqw)mv_2QeeTL)gMesL11 z>eup`mYx$4{isVsWQ~d+yKW?NY9s^n0s}us3Ijr4XFe_`*O4;Dvlq_5;X{OyR0rS9VVxo(&8%7=~*g3OY65K)kh^|n7%9wD041iow3~js}T9zCtub`mCrYf~p&?o|T=y4zzu8pIGXO`Ak zvg}z*2>vG`GQr)&NfZQzlLSlMN$GdY+F=xyCxlLQ3OJcLPRfZjM3$#;Qa;0eoFutT zI2rSHqL%RAnRGt<#P4vGYom5KNL+@6r**C2*V1@x{Mqg`C5`Icbv@Tu8Ey-Ub$xwx zeJ-3ME?v_EGzwRsW?>8Rlavo*sm4nn4c_#sfIOujg z&Ku?x<1?uvUlnt3^-6YCaq(2(2ux@TjuoX`UHMG%PgT<8UNONzAHWzjoD~np;-$JF zf0h}+qU5fXNC%|f!t>>1>Y5SetWiATYd=9E!xR`zct?ZMcQPUDuA&g0>Bimux_EIY zaq*HfT$=J|BOCnLZkl39GApdNI*-p6==}ROu*R@?4-IIa7^YY5 z_*0#SNfTgFpb?E9wMZBv#8PQLdgb^g=WvBh#fKK!ZQ+#GB0zLc5q!FCAtzgNoscEr zQBoj4loVgDT4-mqY#VZCwsu|^R2M}-D^k?d=EhvOmhMT1ger1H%Wu?h-9-fXAp>OVhjaHMYGfGGR!`oX z<(e4=vi-T06$XtA?PR`!RAL;z?yDrc-6{zyf`WqmZkzNoT-cendU5tzTqx~SFTbvx zp|=^62}5HlKLwu|)0c(ws(xMJ0;B12mNWG3Yhf;BaaGZ3{Wljr=-p}L%}yOI3{cGl zL=>AF4Tz!?n_E?rh_|l)oZaF^Pl>o~KvS80Vdfq&VW_o zAN4qL=NK2z>M_&CR&-7WYD#PiBl7jG0>27F?*uSWRQ!a|L>2gG*mOt7U=ufgGY=E#5) zfyK5e1`8`2982yQcaTX84AlwauF;)UgCEW-Dt`I_*kHq!fV(&`ZJtyk(zx}^4PrL--mrPv`TGBZ2sf)MW=tnRe-1~t`SFDj^Q zOKPZ9!UPqG?TaJS>|ux6`Wk9`ZJ|ZfziNRcN7cN<)zY|alF+JK(8J!srF9FcJL~j< z^b5o0hk{FyGYeT27b~%kIZ_DE2~2L%BQlRlYA)mm1KZKZMMQNm8C9&dvKEbpz-xX;(z_Xrf}h0qQOT5!)sf>2 zY*9tI2J1ChpBK(Od$}&aN9@`vxLakP!l^15YsRP$OW6P>2l6U-{`hZI61W>Y52ZMM z9@y48C}HlH^UTO&-mgU|&)}O;ZM`7{=^5!T0HLo~ z$wtnlvJWseOxV7b#~(o(&KO3NzIk}uE>wkyt>8p8lF0-K@m|jxu9()OY%%f2YQ|N) zG%&i zd_gQ2!N!pUaoue^zDZC^!XZ=`z-k zu|mrPme2{Ta*_3)sr(9*=?;pgJ=D%o9#b#?UL>DqW{bJEj6R#LUG>&ZL*7sEG+L2P zXBe-n73ZjLn?Ln1BJ!BDB5(7K5wz6@>5}s_N_ACT>R7QQS4IsF7jaR zC(A+k|9N{CK)I?a&-%%Jf$*rRkC`t$O`1$MFOhEVjuJpn!KQ7Tv1hc$ znf6O)Tac!i`C14hU{KT`(4ag7c?1v?0Tlr?V89?KQPGa_Fhax#2(bl0M48`zt$j|N zy0_}yx&fQ$Jyoa9*^jl?T6?`W58HP857vihTLq0t6gG`^LH1$_sk^UByF4J%GtIF2 zsdXyz)@G{OB~rbDF;dH;N{}=fQ7c76;(Kw5Do?Vkdo;S2Lt>jWbShnO&bF;Y7@I98 z`8J#xv*l!?ifhx*czqq1rB)>_M|T%2?U*h&fyMoF$UiYNPhH%0sVC%F7mzFOHR#IP zE(OWhMa(lqkaQknf>4&<&=k{viR~x$;Yv&`T=K8VOck#Ij|tTAG(2$^iS@+b@JZt2 z0?{ro@Z%E5cdobpqPs`_O|e7fpZnwp?>A%cY#Iu*Jq0_%U#%6`)D2# zpoW|@{#QvFvYkamN?g7}9e~)Cv}&9=@}UJyeZLm( z#2%`~B~B%)%%Ou*V?pJIL>FM%qEfLDOcYZpjaMa@9y^aIy1Ec9(gP)!{zqKkSD7}> z+I0dZjkwD1MesxMyZ9F{@!zB18?IMLcID3j@Ex?~X})%s!ky}#FtNg~ES7`V{!3OA zpPzdvIT{25^CODEP%lmMCk1;P6Wq@)+eNCi{SMmYPwkGZb=fYuVclt~E@_)%P>6Y+9a%V^Y=IsdbOW+NMt zQe3#OWtqOrK9t{AXQvaQu};(SPwyIVtcbglx1|L(f4ZLxTNp#>gS8QlmClq%uwbo4 zv8I2Uka&#UEn+z3CLU=^;^TunHl&boszK>ue7E@|zyzsuH9(Vpk5aX>(rh&H@#ql4 z;S0jJ*oNlC@HFt^h;fsQhh^wxQ*rr(ErO=xwoe;>T}A)u=*1tL-vCfqY>Hviyb=vyQ=5IQF_YMuzs7T9WVru zmONDZSi7@p%HEQ>g)?&rfOAM!D&|B6CbnZlrMT?A4PZ6W+!%F!U9;q%f9ZSkYPnL) zcuHf!NeP`X#DrOkR{5zK|~_d6jNEiX=Kz=X`#uB zcP)QIn3mKkrq-3LXf8g(?LxazZ<`VYR4RC@!y(y60HwiS1zTKF`BxJY!dI_BT9D^) zBe}OX@OdVm_g)%)n1$2zguKA(Z~*)$3om?zy>hxRVrjT1&A%{{k0!bF?`^fTIvKB@ z{H(g^>g|_y%X@nm9-^=EcV0-?_>arpt+!2Cr8gbwT+S^DNRC+bxM@mT^KP%c-1bE> zNW`>VCcAW+ut3Na?);L?P_zemC=j-ok~TBZg8p@Mdc*$0L{S9y6ht3gPZ`S~o-cg}K z-;xV8-hgg9j{KaRmd~2@3b*{fTz*h;@PtHu+m4W{Gk^hz{DTGSEr@*3ZhEBy_va<1 zIB8p+YB#-7o&NycObuwOwiReoo6U!|wVSD}%{F&)OOK53{%do}w$5g1-K_Zc>E^V5 zpKeb7_vvQk*lu(R1}riOD^mqyCma6ZKN5?iQ?f2qSk;!7z6mqNAWg}!Ch`u2fWjuf zN9OVcL$Mo*+n}51IZd>q$UG=5>lE&`k97lCPsC?`on$)EG zYPedA`5GUe@W`0r1$a7DLT$MbR#o8&KRH8-qPheIBn9okF0E=`WM6&;uq6$kev%vv zxtTd@D032lnkhZi)-BqO?Y|xLZ?C&}3YWZpt zgz_H~?S)l1MsENdsqUG%Py8Z%MbA$dsE)=-pgJlf2-+Pu4hERXg=Ikg?W}=osv-dg z7qYM!nIx3HnLj{Y zpk^ZcS;8XLq)2vtwJ-74mV77X+tXT>z<9-Q=NmTe{{kzLkwlde(lFOZ%P_|k5YRI_ znBN$JK8aZ&*Il}k33V)sksQB^z~(xA&5h(m(Ts}FPagtG+fH|LLI1WVSgh^BrZZ4c zL_b%dMEs~8F1ie&7s7v~9=@eVX7L%9QCL?CS1CVEIt*&T`dUT7h@PXk>XnW|XDNUr zVb9_upqBx*Krj2^2z0P}?`y{W7AENC{8{2yB~_`J8cHITn+=0zd0@mX8z?SGxa4^t z#3@=Rtqg$5sJ{AQ-27~#$$vm?Hvf@sj49cxtM6b9^(xVFf7qTpFH$|d%h3%JKwKFQ zPs6ODR2VNwB@dI?1GDf;e%KSN%*<8cMcQP5T+o@FEq^8QC5AW^y95AavZ{uF9g3|6 z8|dOkA7A&vtzWzH8_OvdtpMT0cV73{ntML+`Bj&keA>z*1VENfe^@Yhn!zy=(F4?w zEj+z{P{Lntg#RvMSo!VJ?5OUFr$%c|(3AX4AcOQjt#dmIC%Z$}JPE9OG`<>3<||OL z9ZWk>xbep<{CylM+$tG*xgc)fl7J#Ff^BoehuIOntdQ14rNXR`W3enMq?Z973l?LW zkc&EVt4zm#&{O~gM~2N$PO~INsHvy;md`Q7zrO3ZLi$yn*T;30B8qr zhS{ZM0n^VCEVy`Z6ig=n7>NhkwzWtI78pGEGS4E_`sCa(xxx`+wI$euiYyF+H7n1+ zz+ddgAAuWdB4#0uOi5IMoi&E5**9=rh|{ru$(65B+1B65&!_zo+J=u}I)b)*abux< zR^f%31l)awFTvy$8NNb$7@{FITcQbWfWQ_@es#J^XeCjc1f5KH z%zvkfJQ7t^kD_5wLz6Updyl5CPv1Mf>4y}3%0?QS?hW+4(h7>JO8!`&-!>r7Cu!c6 z>@&Au%bRXHiBm`+Rumnd^HCm%K1b`gw2<{~eo~bA>dPAaq|N{6m1|y1Z!GMu`olK= zz{_fWQs#K|%W8g7*grO4^OAVo7VWy8F*ErA^GArbDfT>9$};Lx*GI9-n(hZ5GJVkb z7#mpRYTR``HUJ~|W)EuJ(u-QRG@(|-`Z*(z993G-;hVmTTDXiIe64MGBa!&|&5e5H zu-iFH!&dGNc*LtQ;{hgdZjVW9AS-_yH{)EFRPKwCn-!B73;IW2F6ak=&rO%#)dN2F za(625>CJg2#r`LXppQv5D=8S+Xz>p}hMq?V%a*aiF-N(cW;F|}loVxYT3y-5kJMTz zn}&H$U0#dkf?v$ihk$oAF~NLNgj&O4O<(OgxL63q-KhXf!TOWzVGr~`sA(sR$EOcd zZx2sHM5n)wP7Fc`T(b5px1ST^xv@?RA`GGv1Id!OV<~@J8z6@ctQ2H-Hiw?v44AGUmIB=$A<_f19M@M<$kv z-(l1gX~+Z(1WMGkSnVrj3`h{gV#H-ZwmuCzFPX2;(&w@x33}vLg<_+faksQkrns4csKLzmhG^Xq42qk=)*?SxU`N4&R5mo95bX@XBB z0#Dixh#qz}}8*FtQ$pZYBJ4YwPI%hUXa)ANg^8rk5@KT4Z!Z!s1O{Q-$~rjoMo z025UegOY+EH9`_T zX8ffYmBSFW>ONh|IAdIB#Pc~}Gf0WZ#~x(TNicHrJ~2?!+*&(SiK|s2R~w<5LEf-? zlfs9LILU8S&;U}962DA=(TRE%VHx9Zx*1kaCFko}&M`{Pre0zJ8G4GGC>B)3va(VC zCrhAGEu{EjsxBP&Bonab36foGnZ?RK{VL|d?Ya3{&sApz`mSPC+V1id7QY|woz*Hb zgGcE9P~rrxq$|w5YNcwZvC`a0D6?kRr4r zIoXXLH3iQoTDGW@UUTDzqGgAdUT15yJf%1rUUqIRV2z1jqg|HlcRM8wF-qUMS!a#9 zNl5}l&9bo6Rs;hgiJBcTt1UiffY7;w!Xa%MH=v6d+Z&zL_+=mh-|y!%z^a+f_97e8cX*@v>bs9)1$Tz)`a0YslFP!g{Qx z=DivZQ5|?Bf#e;|g80YFeB7sK=`B)A_FWpv_tMV$l(yL|@fsIHh{|X|)&Sj5@v< zaG(*aJ6b1E0t;lvD6mX0F5_mIQWngn=cWSHoiwRb9OR<_qM%Hylh30*e~gCe5$(vr}T?gYVmh;4COt+sE^3b`Wxt zvZ`EnEx2tvL_2nbUmkBqK|#wdTcy`)II|@gAPT_6u5H6X-oCU2^08Q_&u#owX;lQR zU}H953vv`vwLvKDa;f#-W>Z2AR*WDu%}$X05iGqP^KO3C97$$QhS<%g&?>=|l~#v} zRxjz%>XA-pV5&$!owKpLI19x_PLs&5*tg)dh>qNwWyf&Hr}pZYiHLtJzi$VP)Nu5j zk%4KdNGXQ_LUu*AnRZQXf8>?0{^v!3HhsIf{6+^XiPqF=hPydJG77h9$H!=Sc8Qcj z3tyk`Uo$y^Zl5^m5XxEZ%$?=pXj_su@{MdNLgZ^JxUu8$+H*HjCseF%@q*JAzwU!8 zG$`I&GJoZouQn`c4o(0V>b~iW_lP0gz@bdm;(Kb)d{owNtLUTSyL&#fENsD91AFb zhszMcPM9wF#*avjWX<2lyEUkx|7-yjRAwwx~#bjf;A@y{1y ziWyCtq|4}v=^UYHXbn`X%P~2UUg}t}tnt{=%INT`c4|CL&95c82bD7+Jr}n*Z$fZt0R?OOX%VhZulwR;o=Q)OBA( z;4Jiu_OB@PAX$MPEU+XiYW3#7hC*7rLyK$~T*?^mC@c^N4sWpdZ__O#QEBacA25lW zOtd)WX|!$UMH5w?|8O=<4@qoQ*>jy69mC6wgw$@`+Z~b=ZfZ0U>S{Nh4DEpd*{Flq z<&W7}l1kg7HKakPQJ`iIyV%Q4lt=6M11t!5;Jokto%lFn5!yJ!brnn)VvY8_n48HJ z$S}gtVUEERU1ZUoXNzzv85Q{|L^IaFPO*&`2sH?z8Gj-I9!=XmN(h#Frm%H6e2^hD z^rgi7Ls=6}2GN3sQ*GjhTQVSzXdq2hxefb+Ik#GO{2$al1OV zwK=4=X$VZ%ph5?;B=29R!z?Anm_Q||BXg;@KYUIV>XZ!swwnR)jD8INCjA=S<3ATt zmB!cpR6DINT3%5k4ck`JKYFGA*gKOiIR0-cBYd`NZ9lC@xvKBK9J}(v9L`cOOJe}l zqOoESOF`9Rq(wekayZy}0KsjxpN?p^jp~rWJWM0NbPj<@Q*ARFpv~Sw(p4{CNSX?O zt6Sopa=uS;)$KwA=t?BfU+LO5%@TSJ2KgGec( zsJr<^${&|+S}GK0k$SLmf5Pc6Dm^qH+~3|q%In0Fy_|rLZ5j2JS7g+^;<7$A;QqF) zczDTxjLHZU$5DVUz^NA|6dl)@6nIj^QB7S+^N&NY@Ni=^?mOa39T6QQDGPp}cS-s3 z@8lvE`g5JlL52=$fypF5l@swmFJPiVRoLTcTaFeTdh`YOlvFqs)YH>EADt}a2^ZLG z{`n0_{I6+tn{WS<*=^$8t+L(RGreQGQH6u)vftb&-@)FeoAIX6G2VRppD^Bht`;97!U_zki1+JXc)@tP22CUNHmNJzIMFNk3#2L(-1xgnxm>f8sa&o)kv^w# zxw3XM^Qn}})#+IZ8?=L%O8Z5jE|s0^BHCUYyoM-77%yksx9Dc zC4qLe`?iJ%S!ZhwPVsVAHHL2IwvW6X=7-m4l z@caen!atwG7qiBRWZW`T)f7RSernw20cm~84gYk&hC7+{Kp?+n7i0rgc8lVMQO)IE z)jVaM&R0>82H{QI-^^T2f`$ifz`~2O`4hxYeWaD3;ukayCTsVAn%Om;r6Cc3;y;Xw zV6P=@VyUD(vW8`-r3z$FQNu6pYFkmn*>keepf^MoxfwO6M!Fzd6wVYWN#v84t~ISH zb_!J#Ws*NLn+eU;H$qD68`7o=ox_}8B%_MkF4PX6=E-wR)!rsND1`?RMBJ(eZH~oV zT#J6!CS<(942D)PuIcvCCG!tbV>;r3%PyAY{FY-IKoE8&K@0XKL5s6X1ZrY*LMlI{e@`BNF720y`V9qU7e(Yh#T6LHLyx z7-k{fSR5bpb(JDQ-93;=Yra33!a{s{Xk^H{haWcaNfRupSRQ<;BoKcMw zn$9JkL7y28SLvdvKDeiDqG-CEHLAr8tMv<>PaZKh9q=u_lA9^^0DyE8*N|>DVvvJE7No>-NsxcW!=epE_1z`T9Z=T%yKNI7 zx@3e2tM5m2eshGlkw%GgKtg$uK*exwl=ByaTtc%rd46I3@CQRaG0^;O;(HX>05LC$ z-a*NYgw8CWB>@HGQ!0{3unhp^9MAGQR5mHe?=lToKQ02zLUM3JLsMFpF7#ptSXaoQ zRv`!4*En#s*(ew)U(2B?F+?n3D0*;xFcQJQK)LMIkNk8+ED^(ltuR8d32_EdNYWn4 zuV|TldnjMtb{{@39o%@EX?X-JUXOP22vKf^scqXA zF|OF{2WEIElm!?|fTA|Y-{)VU2ALO3hf`p7RAkP4&}*QvibO5Z1;3bEu@_sfHgCw)o#ge< zfUxe_H2qIt8UFErP0QQt(nIOMRfrO6`BR*+l5v59qh!T`=HWD~ny4I5iK#`;?b~QD zGjfX#IVGG1h*_-!fWur~az|FP>9 z3A0`oF`T6cC&eW_z*(mHtXL?v&T8L`>y`@?xaqV753{^oi@^af&}+kkM_4Jf?#9Pv+tBp# z0hNVqX!?`^n;wT5;-rnfh`svdG~1s+uOG14Z2-h~25dUw9GZJnP@=!vi*3WKxZoKqkK% z$#hxN$5Ki~I_KG6S5-eu^G~X-LW~zE^6Ol*lf0IbSut*?6GLG0fc!zZ`L-B*k`Gp;c3=1k0!)yd4c85DFKlgPV=&pGotxr)5c!q#1@IG9&}$S-mLB zyR9Ge#Z@?#mA?q1G}HJ?Ls9Frmf3Mg`ruhr9vJDSP?Tkv5=<}c3Or>NZkmzlZ%!ls z#yo5Sa*7B{FfALSA#%I6OflBHAWR1ox7jHs_@umTMuj%SYE-80#WflVQLbn)VjQaK zphk-N5xm9w(U~j#i=mdOU$)r_;-+{-BoLFzM#K3x+|K>{jCp2?S|go$@yJ^V3k@h= z8u)U$kxieEE8Q+?D7CM?F@}Bh00BZwqB2ew5PY0KqNZ^|Kf^5x!j0pU5CC13^;Skz zy6AsOpe2VX>LNw;a_al*Gdzj8>gxu5jdgebjWeK1rB$?VPZd-YAp!H9UBgl&V^IDh zJ0r(t4s4MP#j^w}0nFa!Dv{ArDIVAzL*n^uJ(GW_S%`_MWa#4B#1p0qHg)~UmK-OB z$Y-T;WNfauqB;p!5DXFm_PIBM4I)+%9zH7QhA{Ic*-2Yu<7dwT>6aL56#%dkPRovFH?R34dfRh9^_BF zT0fa1v?FZ048c4Azw3?HUMXWmxKS4^KX!`qsl=?W&}NvmG<+fpU$=+opI<*&HCvd0 zv)6>Ta$;of32y;*n(!vcQ)6c=#@yjfLX+^!S`APrBbp{m7_c(iK6$V=ttN3z^SEM6 z3|uVK-4)u)lERk8>(AE>D4V@-^AdJydF2lV8ZG0~4h|fAcUpL! z8NI;|F}2LCf`4UHYG_OXilectyS8WXP)wc@g{r=VLg0&90ICCNJKF>EMUgzbt~gEj zuZ;0!Mik27aGI_iWQ1bO-b}BwYW^NOJgHf8A%d|OjTyJqpAnw1@{GMP6)N{dTB{m6 zjd0&*xTx$LIh!kLMcp|nch|zkukcgME+lfd!>hVPbS=BlKp=I{n_hh*FAjGV2(OkS zzp56_*AtNqb~W95(BA9@oyYR3aDxi;&1A%Lmxj-!oy-&Dz~ zcgrO>uKoq@%?d9l`cOHmfa8`5IBu z`(;^<{L~`HE{})!u>*d1JMh6y+rFbbG;HguyM1XTkRv3%!%*gg)%QW5bQcc9=1~ie zUCCG3N*Aeu;E(l8G>_h2UA-=Wy==HNyngq$TJ>=Ag+N(5>JH)Bdud7SGVvY4jsDHR zuzdvzIyX%-w;-y?NJC*%+7ba2?Hbh>+IG{01!oT0q>k>T%>!ebqY@N)w7D%53}X90 zy{t!%R{J1VVa&e&P9V5rr~2bJYT@BKxD_`E3RrGYo^NyypI)zkbuwDpEQB2iTXhjp zu=Z!wJ81mzdRY4~p5cfHXIGn^3LC#{U=6cNKw^n)ec`lIa$$vs3Bg_20mL)3=jH%NMQ%xggCWc)-)?ZN@ z&cF8vCJ3AFlD zN!qBk7Bd8BehRWgOyOtAN6gXe-=-Oor7K8P)u8TBg%0K8V0E_g@y#I7a9C5YmC8=G#7Z0&H3tq6&=1XavMksEnh7WYz{QZGB|eH!7hA@VXoS5`Kfc@l7^++6<1EQ zLGqP@H}0ERsd9k?o{g$m&cM;ds$GDFM78L7byr)uFyXtW?0K~$elgO?Pu)?wxp{j# zd!jUCCUaI^yOA-8@r<^SZ@e87L#BiwL5Q+%Y(I6mPYj zuc0-D4U^(BCAB*;ZS)vd;>=l_Q9440dopxY43Q<4AP1_ZN+Ne_tF|KZ#~NTDVXt3n zI?Yk64w}NGZT^hb25z(yC+P##g63aF-?ilu`sgEu1;LKBTF|zjH6Q{}Q`a?GGsJ9c zi6kUf)ETntrM%d(>(8*)FDcypG)XAKenc|>ZcCOmMCVVb?pmvz(_Y~>QIh3^O-XLq zo90XT&XUyPs8FvgtI|${;oK9pls%|Kfhi&(a)*;p7;ygG-5QNII5aziDhh*2EGxx0 zmy`nnK_NNBzx%0_%=dVTQ9*^Tr;%(FTpQq2;741uPcbfruZyQGaQts47+?sbw$rx^ zd-E@CZ!wr{os}YV7M>TeLUtZk%8*nHP9qam$Dqt3OwWg)LM>XJ2>90KV}PSv0iWBp z8&e}+u@o}W*bP1qjjH9cbaNyYr9fM;7S?nvEXI+9FlG7RXvdJ*xq`15Vak~u)2&vt zh#vi&uhePsYwfV7gQftq%>tTL?*eMNmSF1`wrotcIp~kc^}}KP6_Ebg?HPskU8(+Z zAQ&=x&O-*0mVZIQfWd{l&(=E$FTrdwhb8Fia~V%Rx5-011;8;5B5B=1mWXGBBc zf@yE(pfRP2Jk)PuANw z=y86iU`CkOvD~d=Pztk-Kkhgb2bvDgzwX%ZlZBL3w#Yr^QO`zcmxtK`A5D~rt}S!s zd-=NPICYDiYr8bD`;bwXdCW3?@YcDnL+k1$ZRpuo7-B1O4BBG~@DSB2k_L+$FoKqV zXT={3qcje-l3Nh>LaRMPbA$V8rk%?;8O=h z@k?tNoMX#EoPcCCtvZW+!3f|MbI_j=E5Q_2i6Qd-e5;-mO~OmmTN3k33ku0wHrqut8(UZi!UQ-)h zoDD6mHI#gjx#X{Np83L8+@ULo0;QfM;@G>HpX8SJaXAHHjv%$8`8eZ%%@DA z>b%(x0r|2{q@j|FZj%Dgrc1>8{D+*LX<~i;u@;8m0s|r|Wq)#2E)U%oTaZqUgYA>R1G=f8;wU}hp~;`RB4n}CTjGMF6knZut1g}f|SUXWidJe z&$wmZ>`y&^UNvUK=0)=Se~Ee6>~Y%-wdV;%L0TFj87x!&7vTM&GMgaVZ&&r}D!>Iw0p9>Vw_^(` z0j|6&!+;`a%56XZe6IGVLwnG?TBAvV3v`()`vO}KfUX@nKYwA1q_84yP@akKRElT|iV}Aw8ST zh(4upYokkQkb)bO+@6$w3k98@`DrA<7}A3Q7qtd&SpkH14)^Oao0ooB504a|v83}g zo>gOO@Nd;M`0ojRKaO~~dN;5h<@z1a5e$vc2z@(>%c=F(rWEcD#9R}cOwdtBU$KA!78%~n{U{!}z9NjVmC+x>P_c7Zh)A6!ljFvHHtIwf5hmSc zh)Fs;1?}6OwUvqaZP6Jkcn;_1@8rTme)CS!$ha8`8N{9ZX3#+p(iQ|J0k*{oFh$E{ zoIEY-&FkF|DPtkXp?Z~V5KWgM+ttBI&0ZG}%0_0%EpW!>5Hb@wn;UCPT~Qn8bIgse zGN?0U8;rGuBp`dE(V)D}utiCP8YQG@`Szya8L)I4m^;o2}sE8^9z0l@M0Kl98^;75R}_p4HeTGTJdv|a}WoH;6;p3J2nqS zyH!+-t+0XZDI(@(eXsP&VX+S42!tot_4Dsh2G3+%YLa09`ssE8_-lEN)=;%|G5d$3 zCe+Y)laP(~FUj1xb$P~8X8C7ZG|9e@1!f^;;&)Jxket&7CPo{LA3nFR!BiFtPEO9{?zji&6BpPRCuJP$A`KM`vo%x zp^e*hoiXc8&^%2kq(R6Ezn4+469o&{^fM>Ueke7}4<>#RJmRe8{m51%+`y-{SHe^p zX2#S63>Wz$I_O=5EsPMs8z$omu0hLsT2G8EpmT9$B)b$NvCV>|54&hzf$J6`Mu85G zG5RiaSUCrn$Oh!-AnXu2VB7A84ub>h;?{(~x=C{R*a3cY>;T8$Ycar&_8;JzW5k{m zOIv&xWd4$A=ynW{{Ne2(kv@yfy2w4QSx39Ewh&PP;;@9_#yB$!>+upEE@75h$Uoe2 z!pxw~Xw>8F_^E?{JSM3N-l&L@5_3gcU?x#(wQ%oa>&>*MmgwcTQS65YgB6VyoJ%xR zP(ab#Qg3dN*{&SjjQG<2${ztO{-CzNjNnSl6Kse>ev^0`!n930gtc2;gUr(ZkW>l- zZ6f)C*^3ek5(1k71ASizxBW&3TLDKucAeE?PBQf-s9wOJ6S9^ntq}F^>fMa0Hf_`% z&0b-WEojeH4qXC{5AD2fwutw+v8Ot6Ybp=(qXSk(Q~>L-HKP9f21E+eU-YMrafkJm zg+G5nyqV^;?Gi^%XV-053}|*zr?q>hFAMv0wYCqf-7~$@8VxRgU#G=;rjKb+ zo`^ymU}GB_gT>Sw5KL6lG)pLuk(5SHB_)iB=CaMCgZrZr37Ro*-8py)-1A@508}mi z^>pp)wobw%4S6|k1q`~GFL+1Zb+fIsWuQ;7^j9;cj)Y8Mbnr>*!dO9sHdR#^Gn>Eh zD5FZzxrmXr&w2u3bT{0q&}G`9HYK!q8hxMW!@&memF)wDMI%}b>cmK#Ox^cofRhmF z6{WPXN*Te<;_b3fmpZ~(QeKE`9_uGQzh(AFo0sDXPJs+9Q4oT5??xNeo-t{ZC}vdI zrAu%Ejo41$!{F^8+7;}p4inJMBKd+QDBP|?)qX#nK3ECuwRGYD8B<3_3kSBQwx+`$ zu*>_7l6J8MSOarSifSn)-=Y6lf-$Hd{s+m5%j88==|F8QDBIez+LkdAoIFKaQhG}C zWI>==*a(+6k%;ILbg6*q^OUhLuDZ(A2&|5sM|Mdl;tUi}koX%5DAY#{lf~=BoPJB_ zGyBE_B^07WtmOuG#eEY;BS0yk|vaw5Vw z^!!SbS?S>5vG{pws|(M!RTs|Js2xcILM52_UsbIzoL^-#3v`dC^UrP1 z#?J(k{9HV3gk_~`jX~m)t(t6e`_a!4_0jBWSL}7I*$7HpzElZXyn^h~z97V-sK=Beqg%Vl>{tV}L>PQT+DmMq@w|Gez zp2_kv#LTpLnW=`)au_-I7#n6hob|c)p1|Q@P=C`HaM+UnvQJuQttO@^ zz|NYDW}^&Wegd;9$6MTt<-ft6T51fAXJD2Vb)b)#)weo7h)u=>CBc;Md&3X7?4N(0dgOot#kp|+)8?ZxMF%=^Hm-?q_KhY^ zg!PqN6;0Ko3H7s@<%puhIbAs_d^5D?0k{TJYb^1mp6}Pxd&-uMsR|OucsuVYnu#O2 zzF#w|IwLx>Yeamr5%ECxh}PbCI{@-ToUX~uD@U|Tbwp(MilFBW+RUP|8N#x3t`kTJ zHty}sEE?0y>VBgcEt`2mwV5|~Gl)K2V6J8tbxrD!vYErH%^dE{95SYvosxIbzUejxL*dN3|KMk7_hWk7;I8Kiqj|+047E z&Ai*2d1ui~M8T{2P3rs(3SQWSf_$?9@jzUyGV)bho%n4{JVd-roS&^4Hgm~ccur6N zVVop%a4%Xov2`s`ARG)^KjwrZG!B%mHL8DszQi>ndx*zrX$vD*Jxd@-Niee3IoGW( zZ5%ePL`?p@MjV(6FpL69IcsLMJPh403v*+67|Y(G$WEzRDU?IwFeZ_IqF0Grs^+yJ zz{0{K!36k3#Q^iZ8%eEx7OGr+WlOoDdseufwxkh=ilvr)iC-5nTrPXdd@pX#UGe|M z5*}hO)cF^;wB0@|G8?@1g?3VHR67h>EL(Z8>0VVF3G}y#fM+gy^$m+s-|yk3vEqF* zVazE~U#INLFC6xNu4&r>+I|fDqCmp3+PZmwCadwnJhyK8)a za&L3@L{g;0a7A~MTU*(1yUx%QDHLaDDv-#@q>5dt=ZYK`MPPs@tBEBdjK?m=w#I2w zkkGZ=uV*I{bxtavGgz0zZ5RaGOo-(21Qa$Q1TdDIZ^Fy+W*QO`qL`8YqNzrN2el;= zf6x(5X3#G6#n4Es0J&FV!X6jCE^q8``0|(T5^Di(YsEoi<_)}uv^Zw!!tf{^g+&Cp zBl3IfpD>UHdCwC&o|SzP>tB{XO70oe&|1RMMTJ6aS-CuIl!x>SC0eR4=W@(LxTLCg z)=4d7L1l>mS#61gnie@+Fa(n%Tpdvmlhh2u1XJ%!BSC|8R3cFTWLPF~rK|cFn4~O$ zP>@*2mcTEJF=R{LA3gFePQg#4?1>lX&q)4_9Zbg8i9T{YI&Z>aMHf)eg}bnNOs=%0 z09#FDct3F_pGX<}2pbBB&*(X($OuX(hoy~`MkL0v#v>pTYPb@z;f=MhJKBs+s`{vv z#B>8%v@8p>H8-$MslAO)ciM}Liv?5X(lgCqd)QRQ_lz>%;`pQ(jcLoY79h(mC;+pN z9fdOAQWiDT!!D$9y%6S)(&b8Sx#XQWL*#7W@Ht@MbRD#OTpSj>>^~*n65OX zstc&2dKkW6)H)u?U)+U6w(O*4@`*Pj_TSc%--RL0oUmV^wt{v< z{(BxbZ96+cJS?l+dn=FD*1s*Gya&HJx=>&u>HBY7SWq zWna%%gjcTwBvy^?6=}^(=vvuVq_xvu(Xqw&MX8eG7W1j?2VP7IRxcK_M^m>Bju*X} zA|@+w$6FFExrx9f47*U5i`-&Ta*p8;Xi{voBWjA!IXPI29nagLNx_P;QE|1TlNKs{ zed8|1dUz#fhIa0;bF8<-e>M2Y9c^c#jdby&$=kdbU#W06OBH30s*17)gMe8#3%x>n zTb~y8FIymEsH2V^=q>DDv|s{gN?8U~RvUTLnGt*~&G z|Fb64PG}(|HCicfbs0va>me>sDr-`Yeh~O8ya5KJ(#5O_7D5x?wLr^sqmC_Gr?e5} z;)`)$vAMGjV+&0jE?F$>t#B8K)pB4m`9=0!vB{0sP4M!TlkDyD(=o4~<2UU6B?H<^ zt0C6d_sh~>fJ4Ex5zT>v?HqB4LZ4g5gnQwR;k`2qBkGZN6$tw-6dS3i&lrQ z)X(~78_})R5lzz6nvc>(-kBeh`;u;9YuDtyK6z6=+)=u7339EBf(pn{}lL=m^TM~b1xl5QAtej05 zI+b3Rkh^>z_Afm*QpeaOJ02G+bT3R>ur&Yu4oJVyI1*JJ_oeywUey?-F|l0Og>ha8GbHByG_eEGgvp@IOJ;--m{}rj^e)tlotT7< z6QjM}Ml-J*%(J^Q7&GQ7gpx5Zm}iyUWo-IYWZt;$4WpNYg?VG-y`_3lh@|%rJL*w?n4p_|g2VNjr)Q9pBD+YQ*FN zPU?d@PB^KtK>m$RAgL~S2gn`pbbx%WjF)A z6=*GX>5!&|%uNZIS@j+TY%=|GEb*Q2$7s#NtSWnxD0eXzlfQyD;dwfA!MKSq(c9-w z7aRm;8By~m#rg4gOTT1YE<@z^RGj`Te3BI!q=iXP@m|%0*uDt7PQo|JG7$z5j@jzq zPw%FDEBesSX(#XGuQ!*5-=;-P2y5z`$(w?=duz*=vnX>qt({+%m$0TjQEe)^#<5bk zHft7wq8=n5irLA{hdMrVITQNI~b{k3LcreY(UOT7FMsw*kZfc zMj$)^5bRZB1=*wrSc@11#WQv@LHE#-YP%%VLWoJKcqRae_ zSJn{$Yilg(!phVu^brF8wntxKI8PGV-Fg!{EXnvLG zXr|-T`YJm*G)nMeD*4(1&&670OAKDIkjv0ti1cjI%GPQa55~LvyjCUtJS848r{0CC z9BSa$UKZ9NGiYC z&V3pr$~#4&Apa*xWqFFbQG$Q5$_*xJ>VCa6d!nWW=D^RZsd1xPrLl4dyLi-Zs-qem zM7&LpU%FRX6>ndgVtHs{AH;JNnH)b0Z<_8_o9Da@iRyxi@1v{Z2 zTz0S#^unq!hY;ZsDRpno((8nKbj(%ucPZ8p6-{bT=vNKP9bENPw-vcnu;&qS;L4Rd zA~n#QyV^=8oJr_~@KL;52p`4wF3RW&Ad;{S+mLx%44iXNA0+2H<8p{HU>=lU1*62faXE$whzGshjLw>`xR-=N zkLijbM`m;2mw9sZc{atJwE&% z-RW39?s$Stv^Kvz#bFAyf7@gVFopL9FuZte9qyN;kSh25x{Dc`7Gjy2;uG}~D6j-$ z%9_K6&F8mMh7X;^qx`abIBfpR9bRRp(>&l%p{qbZQFvHJsI}{Fm!Bayq+Ofucc8!d z&1otQS`WLQ(42N0NH?9s9Oy9#FveBG#qiRD6>+LEf3qeS0L$KDQACyYyg~-b=N}mJe0;{jx8Ms`sgtv#pRQ`2kHPaZlc{pW6K25x^`OIm~-hyqG#R!VVlaDKm2vpxf&f||9; zS%sQ0UmH~dquF0+%`j@7UGZZ%MbD`Ct5&p)_|zjFts_O-GdeD-_N?O3;g#G^PhSj; z>%TcG_`3J1HQ}W>FoyXBl{bzsDxYdUvRl^q$?`25!)M?HE23^gf-(oZc0# zFdcfYmGoX4Pw&%uQTmL<$zQgom6SdWl%5aX%vk)oRco4ck-Ckmo805*ULLtm`}ZaH z=~E(i0}Bf~t()8pEUidx(7PB1qzbTKKD~P*&^s9cT7r6WSm5tP?~u7TUjO}$8B*+m?0v;)ueES(`r^!lW|Z81En71Y4icUCyHM3* z)opFBiA*@UA~FX zU^p}fM(#-lln&gGsKk^zvtWC57FNCum%t_zB`o;3>|;=g#45IMS%}VQ0wytT3|F48 z#?R>Vq9s*etg&3!4LFZDZEA6-))_6(GBswTF9T=fsTG6@Vz-!vd9s0R^kfeM7D5g! zu`W%FI93)kwQK{!5H^wyX?@?QKZh)%$jm_?G&ob5tbG@fM#_7X95`{iI!I?54&|yC ztM54=;atx`Hly|JDNX_~1GGO>ro!+lPB5q0)!uG48kS$ag-P;@KD-4L$-bl~5ZEN9 z;!0Cf=bmSV?(h{msENjeZzF9cEsn~2;r8Uv{6)Dvm1b#(r-!iR1r)^MXCdxt4NjUg z)(im4LjtQ25w&P#w#TlOdG)B*IUqJbMi38kk===Bi|}*xqv%K$C(Z8@3(WFcchbEL zhU_w0GGn~9Y;fv~CI)pqSCR=XCtL|ZrYcb0rBYect{1NXqnV}tB#KJ^ z3u{1NgSCZ>)a-mqr^Jd@hoP|m+3|=@ofE477*iNFXJTK7VtyS6qWggslJh`pGtaTC z!h~dD0#2bigHEu`hM5S5j~5mmPp#DBChi=)ZJ^FAQa2iVq?gKc8;w1hw{)DsbgS^R zbzBmWhgA^`ZSjEMC{|)sQ&T7Sb@7%tEKW1 zCJ5Z({J_%C9}cLm`44tiDPZ4~CZXBiO+d5bo7mKg>>t^k0U{ZWgYnmUk$ta_v4_<{ zHH$csJ>ih!$8dexW0@aP?HUA)abvi>)z}->353G5WBs&aPUO(j&%kx9PzCF;+{GXs zB)Uuz5q`y@*q2Mb)EqIlPQA_gY43i1dl6RtBYZz)+Jt_AT`M)Y=8Sy&@VE8?;qSEy z@{*55Qyk?lYa|4l#*vI?z(buAFtdUIe?$XmjvvQ0y_RzC9t-h|f+H=Uv73Y6(Q7HU z^n!(<6VZ?3V6m=O6RUd#5B@-zGAJM8nz(b&X>{T;2bjjjUemZwWgxo}^&(O~)oTpB zSl88-Gd6w_clUzBmR?k`rO6n)#z^-xzS*mZ4Lzr!^;9j8v6x9Yknt$hi?};crQKtI zxW_Zk;yl5d6w|m}xKkJ8n(!}KxJRF33_(|zqjY$-_Cjiv38cOsNh>DqXg{&MIqfU5 ze&nBPX-`qr8?2KV$c}RI=Ly^wsUa4J2PY~(*Cp;(UQlMiFpbm3f^hS6I5^>+rYozuQett%f^rnrv|r%!>;J) zjd023Ea6rB$$v2y^=hM7n|{v;V&yQcrGjmK*Zf%WShAk9p%aPzFv$<=hkrj71p^&A ze&a}tX5CEMpuJR0S~T5wn4(oLgJK@6O7`RT$ay`arl-Zqs+FOltZ=CocS^h4XL{@m zhbU;1$!)tKfV1Fw+W~q?v&4M%m1f5yTF)jfn4k&O@?fLeniR3t=!r@+z+Nf2&(8hk zc!qEJ@j~(VAqzr<1C8&$C(%<*yzlllzKPAfB&XlKnkF{)keqJmCHNG4aBOJs)AjIi zMGHp;wzbN@f(7GhWmQc?*n4QZrcF=e#)26}CqzGBl+dnsK!R8!FiF9u4s_bsA5gN< zSV$ifCF2Qp>b4bFkyiP4Ey8cKiw$eHe~zHi-=t&B_HYjYFISHdDUOa10jQ(nxOG zosr-uvE_*kXjj!k`X9EfZjYZ{=032$`DDwmT$d=rl8KC(V+vNqDxPFDeHUX}hT%%) z6&tm|aN1zDQu3@Hwn#e|&{A2BvkGr<2x8AAI@^*-nl;tY1yBMT@yULk8Zj-FuV5}8 z%U8HBOF$ryOc64S@=aQU!#JTAh;+mRL5m>>c9}8+M6OS+Q?wcJaTNTu!WNpjXGg3} z$c|XR8(HOhQ{SO(jWN^e)NBCWkNFX0DT0A}KOnREVbi?R`$@f@lv`u^;Z|2adc^yY z_}JA?q80Xj459eu{ZKmbu6qo=n5hwRp78zR>B^hQ3x73lFl4TGh6qCWWEq{(_6tsy;<*%&acOInXN2B1u z>d1X_BnNRVOx_(%e*dwS(nVV1E*dIbZ;1yWXszBOlOD75v)ZwZJ~h8Gu2X0B8P}?r z6OJoN@^C)a7F}tE8XXQ&nxzcjwh&q77rjd3a{4Wk${aFxC<&!1;}wuuU!QOU9oRlz z>(j#4+JG&5wBPEio_KZSEVEh0RCvg}EiMd{uV}@BH^yxJo)zB=wPP`^D;d79*{Yb> z^k}aQFiet%`IB;rqH4D$X{;%h|7NK&ujF z;GFrLEK7db9PVQzM2Z=NG_Dbw>_ZwM$wpb~nog_6cjg6C4J&6HiKWAqT1X5^v!#SH z??&|gNDI;X!s63Ok+}A3n*_ZFB*kQ^dvQW>M&_f<%R>GMrs4bt$tsm1QQ8yBDz1@* z(eIFLkb8=37x2aNHK2u(u%?K<7mr2X0XfqV#+mkvoM}P9nf@YSt~%yY+kt^iX&+(b z`A83E^2gK^R&S<6tyJgLCi&O#63Sq}>WzOr)9cI6Ov!nG9g!7P-TjyJaw4jAjoGmiYVRC#g~VDS2$G2$JP-~LSj&IuIh##VIOa> zvFi9*BOam?q%Z znMa$U{zQG4^PjNkm`tq?RUufT5>5}a*(!j+H(OKlIa@#*?eJ0x^oW`2U$D(uM(#6BM-e1T(L>Fi)C>dJ`8|zj)%|g}4wHw3J1gVmzMex{2VYG{m(S*FTqC^$b z156Fm6Wv82uT$!pmcY-w;=QQL+UTV~0QF+!hTues69^G6aZR1MqgtcY^@wHnn5LYfjtMZYBZf+bf68Ulyh<4b%Vr_Qn*zQxE$qhGr_@LGENk z`&&#>2RsL9NraJYBunJ+vDJ>4jG{ z%}<@v`FzS8D6>G4qcuiL}uDk+oulUs2a0eMKPfznpm5ymd^4rv^Z4EezQ*9Iw zN~>P>7`AIAh+Sa7Qb`&0HDS)N3zIw72UF^W(=f8dbKb_E`l?pl=_?HvlRzZG(rf9m zKw0i(`SVC^HZ09=kY3jP;EgY%7n50?(7-kp)0lq#r6%3m+Hx)yx-kgLLl&$mH)?tI zZ+=0$51CxnA(KrySf_~5(QG4qO=0Oj*njD#g!+pHFNrA<@5dQVm&V9xasRA1?1Eik94BsYSCY7)Z#)L)x>OxJ63?KKz~2Vr`p z9^7}uD^r4~fJDVazF6SyzCB;Or1N6;mQuXd32rfy zg?0v=H1Loc>8wt%?Y;0l72LyAxcC&YLr(({w`!)1f1C>Tt+f!&sc?I&%B;`Yv7n0f z-Kd%-;ps2lorK5vgNKeu5DqiHELDQS%GA76iLuz;aQ<8eT@Pk8hg?E{u$zd9WGH@kx{9GVzF<o8=6s{FQB zD}Fcs?d+ZPt}Mn^)zaeN^}1LDDA1xBC=?>vC_;ka)>i*D0bL6FhU@@%Dc}z>ml&>V zARJN%tLI0IMH1l**N^5Caw?_oh4M$R0Gl|&f`kL17wMRQGe1qXXtR>28tG>ntPxcO zIGJ@wdZR>KDH>rT+m@g7HZ5#?07r_Q$(Ds(BCYAXfy~0}*AjBSr`G9!M|0f7RfhQMb!D)tSr;WZFiO z0nzG!cdCdsR@5pa2Q#_~EnsL9)zGzl-L*?$kxDu1Xxsdz`qV~#|CC35zfcYCjQd+*EY_Q5H4`=EFG;Mi_C`vm;LK;v76whB|1jig10`R_org$V?M3mz+s zlp39e)#xMSUD4rv8@796jRI8CGG0l> zg6Q6LPW#x=IUgC(h6lh~;+hN={u*j7*Al}HF|h!1jtzIB$`#2urVyV%+bpGI-ddOw z%V(7;AK4>I!>py4r886coICj5nqM*77SsDHU4YP{ZF>07KQ2EOe3^;sPd$H_baw~L z#pC8?Jgu)j-RVSNY-M3a)MRT*u`Muz@ro?>4&w(-l+VT~vb;5Ysg6;%S^1cv9K?== zqW&5)?F*eFm&rIgtF8S-Dfg_YwiazzQE zyXV;7^Nooetv=onp43ARa*Tv>EBMo763)rATd!ldw2+3w@TS+{~WOgmX<6r`zc2sB)h*8>(ei8-Xe_Z-7nP`7_TwveQ@jG7T}dk9rx*C5 zAbi-~jXhQ~TdhAQE1=WAYoE>=qe(Ve{1dn-DxIWRt!`{;Y5s6&VC{UmMWzM;B)_HE zAgsDLZd9WQGhH4yg}zXSjuriz9MPBI$?3AaQpR#y=5TlE zLb`jm#-RSy`th(nG#4!_p60@fA-*Wk4GT|L_qKBzDL+yjxSQq6HT35RVyPPP^KU5~ zM=$4RQw1JMajKYWzO%M#PpO?NZ|&-a^&`HLsxDIF^^9aew%o{QW#*Qi%Q?*uVI~Qe zP*Z7Llh(hbZ-{*U;Y@!2_3qq(awz{f5a>_U_=yqi8a@HkgDl%AdY5FRu6M~q8suH# z$1{b&cfCst{2=cV7@8?CwCi1>LI+tdf)!;g9@8=TSA)Dvj3H@q5($p zd70?KF^5L#Wun9nFVW0ayLzTY+_uCSjZy2gb7jEg78}dL%l+FK35^BAoA(HLj&ZC} z@|+z3Cp;1QmgOMR3&NT+`5>&J1u}`6hVyK1gvI608pk$%KM&U}$z8g? zhyK8m7!X+dI6PxieAD>2asIj$Epvd2eTa=7XlzvL$E5OKZf`6{9L!EN*gL{Pnvk_q zJMJKCTiHR)+CfD)V&ue9#%N-RxV6)1(lU-uW@rtKsab2QNR)Mo+GffC6w51aA7kS` zID(6jY44UfwV0J4Evt22oSL^4_6jKUXP5kwJPFn0{{qwIW#3@-6+nuQi(tmY2LU%_ zDg#Di)jBJAgb_Kj)SIRk7R3$*!XqO8#uSVc9+3y*{&wg2h%*dSiX=vGm=(^U8r+|a zF3F$SsW@dae_?LH@h{nZAkqVWGRE9Z0EDJKIxQWxl|Rw?rE7W48A9FCciCSTCTA6F zPBI*ViSMLlyO$l+-A8DD6d*KUVQQ0bq4*QLGt^k|gtO_CKwH`xZd$mCW(#WAG7qz^ z@`lz_T54HHPk75La2Rn+&uiu(TguZCArUiQi=Z0P)->pcDN%C*h>@n4FXt2m5Xr4q zLKiAjG^ZV8hok7Z@Y?WN9RBDg z1+^9BSQm6_DYFZhvUXOc%<3vW3q`w$T&c0|%b+s~Y9-5b+PZPgRP$&~m#mGoFW)*# zvydN_;FsAdKZqMe{f`1PF8jA@CYJkL37G&Y0#N>pxh?74>OkAOHkJJ)GV?k>({n0Y zkY6UQ%gElrV8{*utB>Lat78Mu%>^0dSoX~h_s>Vm^d&<9mqT>X1MiS&LsL4UsqBMH z@f&IPFtV@?M)lNe1K{D1G_SpZxv{YM>i@^AJ&W2&T?@}Id$yDGLYsIY-|@T-c@}ghnxqJ~6iNE< zg*OBe&>+?x(tqIV9sR^ZH}f?*(Oo@Qv-!7oYVmwXDLSgxq%p)Ert&tuZTs8iIq&X! zG|5Jbe+Hb%#o(2#f+?;<70`AFOvOy)1T>bdtL@1d4w-(1D}E+l=;Q(ggP!F9c2fUcJj0}hcN^&ezGho^z9`Hro6e%^F;)%t%-gHSMEgDE#~9s(#UvW90? z&F8)dIriTo(LR+qlRcLmWCP?Q%rYpLS%9zLq>8}A1bwr<1GPeSZYAu=wgDJP34 zjEi4H>hc5d4E%X0KbOpHst)WW-Gdzo#96Rxdff)_fv&@j$1!bxf1g{D49hrLu-&~}oy zdPSp7{#LKa@mA@MYT5e24NE*3U6y|axio*If+k8AaKDoLcfL|AGuQ_n3l=Vax!lLr zk$*WCF&Cx`b|=umpJ92RF|+!o*{G1~L~R}mvVV?k=-a}i85-6aJ5~Ov5&21B+Hml+ zv9}{?EG0uHGVteLWt-IJ{H`6;Z((iI2Ql$UV0(-i6)eJ+aoVA%xx+TiH?><}uhmYl z67j>B>fKPlRKk$CunH0e>%7EO!TazEGPS9crs|~1?`L2U_4Q(vI^K%*ZcO{v82de0)@y%v&NWR6erf z_-KiqzKkZjVy95dtcu8j_8dX!Qm=oJYGVuSD5|IdcvZ8Ap!K8c=n%uM?c(+P0b*V3 z&^kG`YhXD@+S#znm@W<(l9xHne@ce21Y01i4^=Lgx#3e5FlUgJw-<%iew()?0X(EKR`fAN*e*)fS$mWKYCEcGJ^V+26vS|oN_ z6Vi16VP#V%jX`|KjP!U<~8O zA2$Xvj|~i&Bpan`ZJs8W3$!pH&YMO$x04>Fy2VTbTq^oiM^*QqVLgAABeN!$;R>_5 zv)_wpb2&_Z4qaxO07CKcZHNn%i8!xTnvK>*LyCC;C5?kz(H6O{b;vNQph$8`45!M7 z?NK;QpS8iXarXeEdUM*L`g7Q_R-Fv6VEpG`3ei$`y5H~-b|xFX#p@&th>_%*XScz) zY)#mSVm?tY7TGR4cB!eEx>ai&!s8}=fvjvhm$zD}Zd5JsM+vY;hm9AGwZL=x9bt=Z zV}!S@*rur9B8IS6x`}?#X zfZkljDmG3+gtpxwFWrK*(hh?dC3*_q{r)Ti`s5-mr?|zhDLjjQj>c>BnK**Zd#fNx zy||pK-aN7M=6kx{>^)YUs5Z$^_bHjTHmlMem)|M98?++0!{j)X!|3qQj*b##lmn94 zP$s&s{Pc!!+DuWFM8|)}M`ORrrU~YC5+gATRE1&eAi_5pAOqDGL}oF|M$Q-><%eEG zc4lq?G?LT#E=3nLiu|Y=@t#Cv30?UVj%r3|HvFyx2*@m$Uo-*+Sj}XK( zRGivpZw}b!8R~Pp;&4rS^QFN?d%+f>`=*EcK0^aC0yEkzgS~l&MoXE|b2{@Ju+L9w zv_s*{&mxvXJ?eA7H$Sz_Z(go9w`rcA+2%KI(3>1m>ZdSHWj$}vo71-C&2zLI^R{JG zuGgD8ZOfbYXta%OdGiN)b7WiId_-@~>4MNjgHhQp^(H5@^;?xcE%~_f@M0f>o$q39 zNcMA&6mAwwTnsfsQZSXk9GmQ(E|1yxatQV<;A?~#b*b@l-qy7 zn>!Y#=UJEMVs_~4z=2$QyM2Wz0peG?oWLOcQ*|v=qJ>0%BK@lEL%Ygn-ZH{Hd5?jXa zR6*KHKpjky>La`jhvsC$TYr(|lRDXP_Sgd+JLvkyAV4^|l_91|25x1j{>hqUIQWN_ zx05yD|3Aj;1Ay>NjlJCbRz!H42~( z*yGk6!z5rJ|c%pn|I)gyw1`uoaa|IUP(^BeDP*9rIRAZ^ew(K5tzeQ(-54%S^g*>5H-_ z*-bjUvd#z@z23swCOuF=rQx;<@v5Pu$4@fh+%qj{{E6^{#E93)M44ONoG|Mj*-;U4 zcF!-8M~C~6T=>}NvBx#`%F>gBSZ4BnyA1x3P!=Y+9QADa#OH?;?NMtiG$gh+-|Wr>OF~+h49C6>_r4CXzWzju zU||GEFQq$Dtd!a)FjIS02VvFCBe`e{G8mjuTMtM^Y&pe2ur+l&AB)t!oFg4Sv=tgs z51W5;cVW?m$m+*0-G@r$3XiqH1KJpAOI4>Ba$8I|Y`F-N-~+qJ;OTYH^~y+iUbnFn z9^ZA|W5!ad7=M)2jKZ;^vU$`L>cIR}z}Nb z(Gb1ytI8Y75aN}XGHO*t?Ue~S`I`wl=`|CMYw0){J_;aS+mwN-<} z;IDmQfY;W1iQb08O{>3&MZ$Z#x%%4RTx#wya4AJ*IG3`reKC?SGGy|Vk0DhT*ze$s zHmoc7+<%6eSi}LCp>m1$$wnLhy$2&RaJTUh!3`DYnzD6THeO)QkmCntC7$Kd_QX7^ z514QJ0`Qs^?$9L~w|-TH*WeRTI^#as8_dBhEE$B62t@2RVj+FTH<=7P`1q9Rv`=(sf~W#VZ@Fu9A1y_1*4m$(Tw0)#+FW2&0Ws+}IUJ^B2s)o~T>x zgeZd+!9+H{ZIUkhMV8zPp3n4w=OPP6!+abXR`-=p?HZqpny-x|MSwM8=Gk=*#4w0> zoiD(m@Da~hl-dDA^fM<_w-zSvY7iXN7#uOS7-Aefg*Q|gVV~@sjgE|D98Y^Jn3Dh0 zH1DW>|BRqe15`-gZ*HYQX(N2^Ti9d&18Xeu7@TjBslQLQsOQ*#m_j94mC`!!Z7&H( zq=nAG5#~kQ>!97R=?Dg2Cikh`4Br+epaQMr-xt#5&$Y**ya^onbCVV$Vq${X4MJUo z`pYJFImRfZ@~Rw{e~Cw`=iivom|&~@Z&TiCzu#}G?Jt^~hAoDXjT22eu_mrP-MRes zC^MUuA({&t&ikfJhirlNiG?sN!(zWSv2W$)?<9q^5J^f`DVfFuDTsz4M5E!wr@~)V z^NNL5VAFuabO|TNPe8EWXGC;APP{n~aM&&+(+ddPVm5gwD^s`$6zN)QVeA3(jgP0M z+7p)e^sYOHwJ&`WhGG}A6vV$pMXsmM4=;j_r^m5}w>8%0+$+`^UH%;v8*Ksv0*Mgg z$pR5npZPLk=mrgbIZc~c3$vrthh@N{%SsY9Pqz^*tF_dY0%(4Q8`{XN0^0&ndY z#LBSyKN3)3;LViuRF|9ke9RV&C9hVwvifB!FpYLz)bMBQa z*=AX{0J|e1vk@CMB1LDptBBiGb*fuc;~C;0->AeA08r|mG={q z$?B`hLT%oerC)isGGHO6#E{-{ZLjRtD-vnEa*bbkt6mX^7rt^w0rFph1TTI2naj{` z*y~|%b$-V!f7tdxdUYW=ae>mfHZANp1d-hGX{WH6- z(w_(29xz<9;U_lg#sm8Eitye1V3Nb%hZ=%6a(1|)cI zT>;!jv`~TWbQxvdvLyYV*E*3lMnPsPIwq(+cBiB&5=c1n-x}h$Ljl1=sB&&SWpR$d zoSNMDnO`Ar^a@}3PYlHiI`86i1^T8le6>EkYvQ%H|QbsH=w zt*$guwqr6Qmy^)979*kA1tfG+fp3(|d0zC+^OAR-3rj(rKL~vCefiEaMt<2Q6LlV$99 zdM`@z@3D2n&Z_)?7G)L4_JIwIr|4j2@a1Sr4>L-^tjOkZ*^WqJHOZeAY=@O2FR(QV zKphtrF68_sYuRk3^#j{NOLWESF0_hT=CehG^YwHk zr59=O)&EDj=~p%BkMe=y!=yrbB;vb|qJur!ysyAeIR*;CmLnXMm4%L2D!;(c$ zNb$Px%*sT)D(yo>NTB5x(PZHT`qaYlGe7u*z}8%1_YxW%c=xpNU998o59@O4gVo}owq3VbaN^f zdVq^+2QhS+o}hQ(^ooe|UP2xIl*5ll3R|DoZ{KC71gIH6xpylxxa$SoB_qzLsx>yY z7~kXevlgSORru`V_fmuQ^+rV3_F4NHl13bLWxfkH+NhC!uduJDR;*U5LA6va&^Wak z>9@GsRjJi##X>XvM|#b@WKVZxE#+Czy_(K(vsG!P|Dv+1nGSz~lDPUORF<0Qh)Qt3 zOdh?@y_WpM4IHp7%ZOu1SC`q(@}t`d_OnMYNgI2k9wtujU!vV6Rt&D;y}G5G2@Wpl z>}QP{k5I#?(cfpxz?dz=XY}BYH!(|fWl?N8MMYR<96K&9!JnU64LcyQhTF+A2)uxW zXq=pKmVZXh!#DJaKQnRGmco2HX{iKDx*GGidPmqk$6S;5R-;~u@g4k5#^@a5o63J* zi;RT`3BJ?5tRXU34Zu?#a3-{{P0~thvwP|r><*&)2^#g zf_Rfq+|p~%EroCcgnTaN%XufTJLJ4L-2yqU?SAP9l>DdYl<6EWF=I=KOy0%&;g1EX z^ZYud=QCVV}q@`cX<*~%He8pDM+_b!})HyBlo6ltaA9mCy%DHVJUL6;IJz}5> zi587E{BlY2MS^+LM!b>_dU@qic~8#Pn$4|#;(5Xp@A0t^rnKxacIH%;hb<0biQ&HO zG|bnp7+$!B;r`@XSZF@j`TN&U|8I^_A6k`pHd*cfkC0CDL(kdj_ih>O$^%AC=lw%z z{N8%gEL4RGW;W(;u=`ps;Vtuv_ThWiI8N?VcwXNhEqrBhJEWYDD^#<4*;I=CM`rS(Ws9AWdfF&ZZ8x`J>JMl<2L6HjKX^z)^vV^%C$ zT|U|c^io)Qon#68IrTp9XE6uK6}k6cEy}$u4ABt6?@r3*2}0m@EBputlt@$;!?&2j z*?wilTE|c_+B|cJ&goPMknbH`9muEcQSf^GdAU46#dO&YoJ$-D_!IeX*{$bnUzcVr zTbO9xm~$gzsmz^F(=tN&VBy`uMX?ZM9 ztyd@%(b9O7S>#E{A|)kleS3I+wEBf+G%shx9}A@BRy(uaWzbBEF@R^uOXeg^7Hs=v zI`(;>S`_S1c(qy7hoUN_ZL#eUnCIv|7>dB4ZR`ajJCGdq%>GF&@$tm1(Bk$6!D-wq ze;yESF2gXL$j!n+a|`$BjQX=!J`gtWr|y8R*M(QBOG<>)lFo(H6~iWch9w@K{4Yz> znfc=Ga~)L=wdCVoIMMM!ma%)07qm;;y>O-Ug8mCYXm^)enV0at2th0o zZ}-|?OE^;Q0ZskW;8ITz1V!c{{41BD50}!Pk?2mGINhG7GRThpNRK`JMd!@(q5j#Z zvhYAAzz{8w1#bz-#MLZT_7ieTLUmB;$hvEr;Y+ib{%eN5f=uFKCj4QG?^SFoY4gEI zazJ@q+LoD&Iml16&hz(m#y6l&hMC^Z4Iy({$x4JN$Kc6e@T3_yemC3%sTH+6Wjy3mp)EwFp7(@`|0aB)CSWW z&O>t&3{hZtG$jvQe2#>Va0Imux9asY#FQ=JKh4czs#(`foGt9S904v~NS>z z{KIFZ96LX=3)tt#I+rp*-Rh7+UIyK$B{^(aTNT%=wWtRUz=)at@O9Eo&73PX+w@?S zm6cTjffU9FD^hUzn#~~^5Cf@Z`sq^*ldpaaCj7EEWK{x?2xW5a%0|*>E@1(EK^9O% zhEbJT{ra?w?@_8ev+-wuzOtCA8*GGNhUcF7qB|kaKyV_kfLuQ946Ah=HD~A7B;XLAOsW1J_(qA%}U!6kb)&CQ3nUSiEE_IIgv1V#~g|!Mh9KNyeDGyTFujOJ%`o zno#o_>&#tnZG84GTUVnC68)t8`@-+GoPHvp0Yic7a<>Mak5BeUKmFFqt2OJC{BVER zeAB-Twm)9}FOE9a+WNtTR+eq)5Zmnw;m0_7crZ9rjFqkm2VNvl{$8Y;2a9o{a=aLC z<{>PItSzN<;`ARuUnFoS?Up>U|2@95G@9Q~MhsO%t)FB4EG{^XIR9@ZUg19-Qnh6M zvPC5;4NlefMw_D~d>W7cU@%pOGg401;lQt@8;?mHWe_r+!s9)yI^M?gJikimvAR?) z$!)ysL&1^y&fuK7c+s97ukXdDX4)&LvLm>_BT2X!RnbRF=?oRuvHBYRIrsE!=ZPt$ z!?-qRH9blj{wO5Z1vUv(tqX&EE+!z`s?y{6Rj2*?bG+})6)fXk>84&pZ0!ZTchT0` z^Tv;KN%6|+8W*QWm&$QNJ)0vUm^Fp$Qst#G3ps$f5I6KhUK@Zx>4If7tfY^dNl*Cp zP)j>SRz3(BjdhUi30702?M*kdq*O|e)c3~Aqdpdz;}uacURl~@^Xe_{&N+@&Mr%a$ zE7f#WUtGx-lZvj~mqJyKR&s-t)|FT;u2R3s^wWQ(L5}RQeVQuv}ZGFU`HCj zBMcW-L@Rg>a#?&m_X{roII4?#i52F%SqfXJwTqRyc|^)oDY7h!N2MDD3e!sZIRi#v z)~gUi{9LsoAPrC{TCpRTq#O)RR!HAOd8&dZ?V-K#GR(RP<6K4*bhl1qk{6WhBP`7U zD_BHXh0Z_hmM}3 z9KMM|e+D`H23No3J{I`H-&t?hP;Mik_fQ*uF9xy5=nQ98E)U;fy*dTm zCEkj<(E|y3)HG{U7N`y?gl}6PwZb#&TX<4*VjO*?ba*r_6zBzyKwqJLyv#5k$Q9!P zz?M?F3%{d*R32xCtA+F=mmSEuJX)q^Yx>hh9uB|lUM`kBz%W@cL}E}G4mL8zq*?hmag=!hX4)_qqvJ6 z+tG`FOT>(TW9^Iu#d=f;KUq;-GKjHi+fvX*8{HQW{XC=x*hVxt;)}X7lYJic8^1lu zLNT}xXA&ztR@oUGXQE^nOjnI@&~@hRVi`oOJi@~9UH@6E$v6i_bW$;}cNwo1bFJij zv&~nl;cxb~x*33&CkIX&f$!-SBVxMgTZNg-4;r-{=`u6Wx7^{Q6_KT&u}k^X+L0){ zPi44w!I&BteU$689FE8C(XqNKj}R;qSDC`PVn%9=>#m0qk{JrG$`QFOVMIUeNvg0* zdKpzYAWA^M;5n(1YWo;>(z_!#&2K~di?9jVDUo(Cx3q(~qzJ2Fz0WxJ7Zc3XOF&A$ zMvFRVcaFt`s8{YI1Y-j$%D?-GRjM=G)F9yRjTlhzNue+jugZQ$$`L%H0RydxMYBH6 zM3}MSw?;TJ>0q<+f@TO)yegN4{E~v|GaZfe;Ik0f&FM)Bv016qM_1wJ2SMhVTIke< zT51osvR#VO$GI`uaid>1#!M(VP6Kpi1wBgf0}%*;Nh7bOoqcQ+~0HS1X2cWh8^SZp&2LQ^`*Gs?hw$(U z7*SxKF~jU8Mxg~tKp?W_`GU-K;wc3E7HxxGHGQHM^%Cf#meDU7@pg?6VcZpd5otG6 zLJ_-7<SVpVWk;}IbwND-8W#w^P;rw#+43R{6lT3H{3_kHesJ{373Mu7Lvri7S$~aW z@eq<(C@U7DFLfX!kQtWr22htg7R+gC0uU@m0f{gNpduZ#NvO8FClEHHey6GmdoZ6g z^f}OgXH$(f5`^!zDZFI!udo&nmfoGIy2t_R-ApwX%u&ByMc<%{@-I6_sq0Gk6dUv5 z6wP?RCedSsMCVf*$oV!Pj1WW8yb@popPBnAwETk&I$sE8hryTr=_xd_TKG*7A||jJ zf;k)R9<7I80NYJ`bNg5H?2+(aP`FI#P>MLTN_bg1`Zd?=_1e45pD6sEwFiFw(I#4$ zGw7jBBQtY-eF}a3f;a)zE12o#4OA0pQww#=m?j*WllT0O2NUd%sT#by&90byAYF;NrCBJ?0Y{K> z%g*>PXfhRL?dz6Oz@8{E^e$1k&0c$$HnSQg6>aX+lw=pl?>S4%!mt2k4YkG24v++d zc4GqS;zF>i1l|kxS+L<9K2?k5coPz+g_pP^;DTK?k&e&P0ZlE!)w!j`q1DCjuSoA; zmVeMMk}!Nw6PVBF-9_4T0=6WMcwC^SoE8F89#eS)Kr|?iQ6gLE4n2e%%O-}{toktD zM}^XH7-el(MZY6;!he1#+O)o;QK9K+463LuY9Ux4%#;`*UJVx+<KCPk7t_*-DJY=%Ml>s~rmgZ!LP+{NOsC8wxIbw0t#1T`Idj_Sbo`S5FHSxBxZ zYsFfK^|Ok#^4TiXCS&KI^oKmjXV4MQkyOVqNZc#{2yOukUV+7#J|murCY+x83&S<_Q}#*e=MMpcdK%L@gFjxN125jJ!2Dp`rh zfU1;wrzlrr!K_P`H|l#%z;p=YH#$}zHI!0>nXwTYlfw`vl68_4XcrQ)Wd?3=5RHHj z_O8`!Z3Y%7P#(QOZMn5&&0oj;bLfgUXd>GGz_jdSS#|VqjSy1G$y#hM2DUZ;re?K+ zF@M3iq!NxxG*Wen)U9UoaxDSjOkIeZ->BPnJe0rzL9Zh%H*E2L$sKVl$6YA*#zhCY zsXF5+6B+IlnG-^2{QtRTF>N>c+c%EdjWEAKb*KrSI4r~q zrFRJEMKH7g!&f&aYKd`-Lue!Lqo32ggL-#Ah#XTMZtjiAfs^7oiY2x#P|EQ*L#Z4% z$KigFep3#nwwHxZ;LB&o#pvh6QFx4Y3>g-pK`0h$T37Tn<8z|fh~J3-J>1-z4EahC zydaV8ILgf%^PBy96P$VJ7&o`%Bu_d3vFE7i*t5vm#3i$0l2Yc7o-@E1o}FU&x;|Ia zyq(Z5o3~l%$PXnrtMFW$Zu${b7)_a>xByFOKoP(|MKPU!llqROlFrbht-hO^)b~Da z&T?~Gev`h-J9B}XH|2fDnvy*hflo(OO1i7W+QO3|w#E;1v1$8Jj&IhzS}a8YbxMAc z@SWPqehynDh;HWGBYecBLBdVg3m2^qe?n{F!(Uxoc zNXs=o1s_x6hn20Gax zM$J89TXUb^V&<7f&3ry=rgT!6$NV2s$^1{KWd0ATWd6rhf{G{Q@PQ_!tDI=!BVXkv zkm>8nrVpj=7uNNZi-khxbpvsyrF2d z2kebekH6XyEzd_0**#2n;5Y3x&10U6qIm)usWCv262-18{MeEU>l>r8Z*wTB`Kwa2 zF>lkj7_mxK1Vlh1bsB8IqH!GAOq9}-=D3D$cu<$p({=}@k>5FMcii>tIEo(DzHJiGUE4xef(w(%Ci=;qyLc zijA;_ks0;y@URW;& zHJ*-Sg>|tItry-48hASrqj)&idT5d1o5v%;;|9dU&cJnpJ2-A|mz)&b88$qxr1UNt zzMz;?!{NGqpE%SK0$}6meh;5wtNY^`D2K2_*I$xd>t4!bT-~5KG(R32qQk%xT!RTzG807svKw)X$3lePq^V}31?NN zSbJLPxZ`Q5?JmgX>Z)@pT0&w9mm`Oj;G{U6_)!S0w5h8Zh0$ubZZo<;^V1;1OJ8(7 zcJ;WotFh@q8Ft*s9N(r9X5_}69HFNpG+)K3gb-TMBlHa@j)(iy0qU9AKIxk;r)=On zC!u-?i=A__@G}}yY@4#;4dCj|;F3+@nW|%PXRA&*pQ$<#bFS({%WPGw(7Sc;U8aLZ zQ)R|<)PEGqY`x@@Jm@mhA{njbLdA}dw1;+_4`8VDz)sU=j8(Jm**qw4TaEb?E|xNZ z;N@tU<0)ul!m(Pk%(OgdGj7B>S_3?l(MN`g6~=&g)E=X`iJZCaJnmG1eN;dmZ?2>4 z!DvL$f(FSaq)Qn%>x}G#ADI+(Q`XZW0W#)UA^T1_)%y#j^|3l)clF~_FsVP;4*#ajgn z?e-_2-Xbkno5R3nZ4YBQC~#3y6TFk{wx-kKVgfQRqH_n!<+!sX$B@Jk(@`>au^ey} znBT91o%m;LVGTB)v~~m|GEtZp^Wwou=bFs9m^ohrjpao(>?@@cQXsiul7~z-HkDn* zRU|!z>{CPbaZH0|)Z`$n_*V5qL<_SPzo#b&UfrxOv|_xRk2O?9e0IjgK$WE+PghgcUR*)f)y=e|#d#57Hzd%)d z;2^$8+v&HUFnCdpaHJHX?RfpfhQ{R{If8p$xNMV=4x6(chLhb97m!|jnBfU~PB2w- zu%C3qY9h@&-$N5-ec$Z8&UewZO0%keGINx&6ynxDS?^~3Qw}Dd7@k#1!k1o>snRg1T;W;Sm+3;Re1(*0V%`6jugs6d}CUtl!@If*tiae1p27y+T^ zd#u5&3t#2PQRHAs9+O}}4<21^-Q9n`k(?qm3gLLMWh`kFuYfG7@rFrRO`ZDhbfk`Z zb3S5Xw0%$C8wNrbI37f{88PZ*H-&!PNqUR_dfA-Fc0??nC}Yfdf0_M~gvnMdfF}e_ ztQ|~O?#;8zob=x_lotBZzq53zNNEp57QqK86tqBaI|O(e$9*VI=vT_uCyt zl8=Fq2di8pQQ1*9YwW&5ZBP!h5;4b!r8yICPVC z;?eDB#i5%yOOZVEHs?-Y3cAN-Xh(Aw5HlQMhBm{6lGW=Epwf5YQVpTGd6LJC=S&#S zaa?B1?u>Wb8MQlO?K>L9Xq9LvjVSXz$vtHpuH8Q=%;W0~U(S^D6lRjc@toc1g!KjP zcvrY%{V?o@#nD?(5QO+nTW*gQ?8S#Hl8rhcAcPWj(shDYJkk(_kL z#E(zB{&P~XDiK*U4=USp`kgm^jssA_5iR!Jp)SLP(!bYDs3yHw+8h4VG=e+4uu_nU z1uXEH(Jaf{M*0Qri2+ zZ{1z|wdhtp2H2ec2%SM@p|lwA1ibu1(1#t5K+tfn}wL^j1>kaFtpl+K#}q5pWP4#Fm_h3UZ6^Dh>N~1n0T- zP6Y#B`1Oi#1kJFvyPw^$$OdWr$a@gD#xK9-AG)6QviQp;w@d+q8=4avXOu;3@o`0L zX*q_!vrxHnvGH-cgKnGM5$&-`%Nh%7B?ZvO=23sK*S^m9q^w$(1R+}WQ328dNEK<| z!}B(O)j#VPh~`%P>0KAyoxkdDK_>Vf^sx?0ln$||jg{$iG{zzg*u`%Wt~nmE^YFB`2iMI{q`SF<#gS8S|3y3*5#C#xzjymx9RNZTTRb4h<40hA<;UwLT47 zk^(5_Ie$-f2o~vh&&Z#Snq{sqd7;$=v@FiXrCJzoN}W4H8(N!@9xe7N;bqaE25$5U z*C$*cu1|zZu_?#6n$&R5)p$GSYG*|-U5=|cHVwP^rro6esS=3u>hNncgPCIF2%&1t z2Ysmq4*Sm+!ZUKtQ$74$C3E1~gXuK-jXY}O(sSJNX5_RfZm?B6DTmLZoNX(N2SQ3S z1xzOjz>HU?cRJ$)78+!0leXxG&ovMSiO?3N#5_oJtq{dmLuLLQ0q6pc+WWx7b z3jawP!C~YcKOxKu5Qt2%Vq{pz@{&SBSoll}LcE79^ISPv%g-Y5j9!6hvBy>eWsirB z=v>Qe>kst+6qRig)JN+d#`OIRGoghRh2bp{%axeX%TcK1d#Ubz4 z7+oClD3|l%kcaadAogR_1Kz)qyS@Bo9T?KQsAEO+FBNr+z6k~uebh1WwMaMuw7Re% zUTf0QblG8a*|MUJg=OhM!n{!a+UgKkOB^l=je4%gYnGBw3iGIAxXc8Pq+X7xij-VQ zQj4T)#~pKuo$UapZLbBRA!qS(T0hI9gk66KLAL&&ms@i*3ks95!CSeb5O>-C%wS}r zBNd6Zt`y9zM;ZZpn{T#1Ah599VwxCVc1l0c5fi4_MChx|c`dA(DgEl0Dg7pP(0Zvi z)74h_XY9_Ijyq@U&Z+htv49io0X-!MjoMSbn0*O_5|vAjGLr;$GI@@M>MDv%f!-J$o|)O*Ht zOpHrXLj(vi0jaDWH=v%R;2GC23nttW{uWht0pmIrB!MTJZXk>>zVqJf z*j6!TTg>HyJjYgf6)nWP4523ptSN0|t+>iy|oyMZ#zZQ%T%HuHwHjIS>3E zxqb0?gKW6>o?vnLQjvJYqTi9>HjUb`oG=*m8r_J#x<-pMs&xA7oy(@+cxq5JrU3N#;bkEZNXoM*#mZ0P~9IX{75 z_-wsNW-T6DQi~$Q1#lt@=hHqq?n7D!5%D)%u~IrmvJk7cRf7yVEr}%9U3i&;X<%kS zBn$3g;MUwiWuULgklTU&TdachmD%T%3_Nr^)gJr-+kq7Yuf7{>DBP_Kb@FC|>GTr9 zBr@b@7&p6#$k{+6HsUP)K;H+Y+yb&?FQf7BJAEBnJ3F>IleZF(^W}e3VmFiWO3R@R z$qycwmJqzurLV(4`bhV_NI1%{9DZ;k+wmn&Lxn*U{cd7qF+>wEsA##5 zC+f7&UHvAGH%C=KVjbs(Hs0BO-9c9s!-^LSM1R|pxG64%AFUhSfW8G>qyeqTuB%Av z6{4q{q+KND@11Oio8eEk9j>*vqjpzbn~Y)9o_Mb|=<(;;YQJB#`IFV|?`*rHC)%o! zj=h80&w-32GnWPga|rC<&pFqRogw()PlY_obCb zHM1yWGE2uKNA|#1Ylh8kLmg8Fw}Pg9WJ|;i48*qEVt!p%&6VmZUnvbh;s?lErWG#! z^oE~`RYnLJih=M4Z0oZVfx`F3+U?ChrKB&WH|=?~@^A1EDibE~0-S>@np#e*S$p5| zJmh{oaU~%4hk7&Qz6!PGryPYJEH|&C&uvDofv0pK%TGhEj9hNaYuT5z=ArJ%J*hvn z@RQm^YE^~I;4p-~H~fM4r>9hg;fX-@C&+xm{5CVOVVPdgagZ{u!G-l4zvn4tXlK2| zbBT;_*tnjSMLP_F-~*DLUTsGrXUedHJUr23P{HNue6+Axu1ytnSwmUQbGAgj;tL}|#h z-9CH+>ZGWIKjrY5SS6AeQjs=``nWfoVJB_)&cu=`aX5BI+W)k0XYq*!vjtAhNeiMh z&MYpw7$Vg?A}O*FM3VU6pzZ}NeqK~eOGhQ(J6qI#ax(QTsQw#5EUIbT^J?3eri&WP z@nZNyWUl`EOaej@x=oiEZTO8^4W#NGQ?NuV1^UntZimD;ZX}ep63So>s8H< zzqK5^^zmh0m;cvfdVE_oL4Ccx2-}|`mRV|LGwKcB7$P68>di@ zoNuZvZwK+2NXXwN87g~AOT-^g&X%Y}dA=0yP#x7}zl@PE_H@=KHH%A~-Eu@hWVqDCz;E06eP3A+t#2kbP%>A>{1|G-E8Jhd+oJ zZ;ucHIP_ds3~RAr5V(GQF-~#+#Bm7_M@P7>>n2-O@aa|#jk&dtf0mdmhSnEJ0 zI^cntY}3JCLiuTFxpAt!Ontu3(C%D666GwpxC|Jw;8G z*$==7C(FVoB81Cv#7tQqqivaMN5tAn{Rp9|n*3^N4)leVOZM0g*d7x!YKRCbt%z>T z8%kR1NHegESW7OJIeH~lnjb+14Xhn@;VXYYaL+n0V@3Q6(X#kO4DZE}Vu@~wU&_br zgC3&x!GKKX4!|F$drbc_oOAMFdo;3@$hF~bIDV~(JcVl|S_`2z0j|o{rAl(&?!v#t zIO8qc`5xHkUh7a9ua9`mea?t_xp4uq`ia(}`&e`l&8aSVHK1GfvN4C86b~;#iuY16 zHWKDS)aU4sWoISHR5M10e*Q&<>W80nxKv97K)F&;7xz8Q(}F_?f#~k;Djx@mt-JF% zus!PAh+!h}e*{E3fCM7_Mr`8}s;$kqBv1!49!$373|7B?CB7AKsC9J`77|Wu6l=ey z8a94LNk*Vo>Maf3}aSG9h#3aqb5w99AHheCmk+& zwz%H0#eO)8q=eWWBC9O~Y{mzeTN5|rL#IEmATORizFczI%chSnZ_-$QB#k(=l;B>d z*#qBu)=c%GjGYMu2OuxEiklXjjLdzh8NE1qk)Ugk5AM$Tw8tRtz5<0gxi-Nh^a3Ks zsSJLOZ4m_3uY;#Tf^k8}Rp=Rfu}ZvXzdxXjtF#!c(jgV>TQ4@9by`D9StSu(NiS&+ z7Ux-}=bvRcc?;`eq&7bMX4ud{opkku9xz22#u4JC25O50e)reNlSO4&sXWIlWwt~8 z>6N)lSxZ<)r*_-Hvx=Ttyj3+?Wx8CXJN&Q>OHDZhhan1i1VtxCLOL?V1Qp1Z9{HE! z;+8lPo19Uh$RUbY9-ro3CXj_S|i%Cz4;l=>|m9zj_jj6Q;*3RX*3h> z))2_avXwWc*n}i@fWDKw1dt~iB8pbB9lzn;_FGJ>A7zw`CskVeNi=^loxQ#gfV}r zen-a>_SfmiHul%)N#vj4P-0u1JA6#r>ikEvMy43KSMmk%lTykmFd|d)YTtZ}9$e2N zgf=K|A()dgeS+vGR?Mt@)&i;b+`?-pE?NVlc678gpw@@cXda?nxbP^;E9nIm;;P}N zdbMtFvFNuXa(w~!<-_=l8joYcZVKeXD_rAoKbyj%L~>hSu=e-HyLd;JuRy!-m-sYr za}$6-*Bid;=dJ4+#H>1Qgx?YqV0Dbxghoo%3E(Jn!=I&K{9)y2YN+Ynct^@!c}*S% zX%<;RNl8gg)1S7$k#jVyhG$@Y1`@j6@#VAr@fi;=KFC_3(tx;6&i`QGKBy>)Qyq<* z_KloUBccVC=I!x|^yQP*JD79FKiwzutBXlVr>Wc@KA@Y&ZQDPKV>;Od!Io7yYE@pW zD#v`4qYJ8FC(_DS@b}}W_I0Kf)S0w8zhQL_`#O^g>P%Rjb9Sc7Azx==L7j1{bIexw z$g*YYeS|^I>++b@c~spw;H!+atAJ*}+NwD8-S6v+<}(5DnD$#j1Zrrm-U#)WY+4<5 z0A%(pa<_$a=$y2Ehb5qEzp#WwI`LWBaftC6n$f{KH1wEZ1`C<8(Wzk5_K2Rh|Eb=u zWV0dS_7nDy8~lUw$F7*n{?MlDRj$G-=T}geW;R)`a5Wy7U*nY3a8vbiSL431P+#Xx5D~OR$SJ)U08j)EpB9R%EC-bBR8w#23Z8FO) zY>OEdH$YI)9q~u)Ns~8T{6h~lIa}Rl25m0Y6d7pNsf6*hJX?xrfIC~`0msAQUi)Ue zc1ixns=y-r4}LqJ`C((UBFjvy=G7>%V%oT@OPJp*OUk;0`5h?h0xY)ij!MH3J7jwV z(WE$ixF)6m;ozr5A->NAsu0txj`k)kG}^DPORC$6P(DxqOLc&4Y z8fP{62nzvCVL)?@=NA4#_mEgnVjFONbw1D}{|lMLY5;uAghX4 zFkmc@Rh)K{qYoVdAJNJUhaJkX*Dpso6DuB%cXYhB!`{;r5RQ>g$E3DH_~|&Q`}uTK z^XbsHVEhEKx~V8e30pXBi+0VQ3O%=}SomC1f#u@ON0-dyHL7L$pkbZbG;+ z@YG%^Be%iYUee1$t|FHlEj+^JJ}n8nUyljj&;YpF>e8sW#{>4bltPS=z0RH_+gDYR z8E9j+QJ~Gkr|9!IfkuZxWDYH~y=msB6YYzs8BPn7(gBTd&s%6x#ary-drf$Szt0)4`-VDIpN6|xw?z{*5co_F9{-xNEU`pMqrrf zY%JI~P$De_t|zshgS`>-3o+{+q2%U|;1H8)rD1IHkQze4g#BbtfGvh^hAXB=Z0qRn zZlZs{iOdjNWr68h_=6IlpG>EgeLO1*pN{PY{2v_9H}}V?Fu?D@{5N8YJ*iLiLC5SJ zQAvE5{;bESAsKi`ZL;BoUtZ4z2FAOWXAHp5PC7{dTQV}C@2*F_Kax>wFQfn1LnO;H zo(43)cAPidoN0zn*tVwOMt6{oycIV1=9poCW0-=3SGcdLAPl2mCV0}DlFR__Dc|IUJ}Z5KW2BdOf1tDrnbRm?*vD1=^0tNM!Sln3m7O!)z7{Zt%ZVt4 ztNmp(3c@`895K%V=pY)Og^vRg#FmyU)<*sov{U117>U2+lY2`J_mh@1K0 zMv_ReQ*Rp(bYi_~BrV^obj!Z9^g?t1 z`pEO88A3XEyTI=~!wmh?Mh553Qhgh#BpcoAj8(LkQ+Jppi(@>H&&9@cGhW?jBl*C4 zYF%BNr4f|NV&yoB?e7sAVhMvlaBb0IE83Bcz7LR?3%qE*e@nmJ(ojBMC%NaA5NT|- z-m&z8oRfyaCRicOc{aEdB9IlAhFv}{xl=Ha@r zUI3u&xOG8%0$v*JWM{U@JBZ?zBo5AXng4|62Xr3~$^Mp$DKJ?!zt7jw*ZF;0*!OGf ztM$ctXZ;z`dPviY$$syQm^M}gZwsG=RpZ$0Z!&}7o^H$Fp#5Hl-_Lwh(&H52+m-Z5 zKrxEYQ;xR7gOtv)Mdd?c7IVbt!%5ke2iS4B!ItcfHtP910+=@H&DPzXKgMc%&6)&lnG-D0_3a+h;;)oEWVfYg8v}RO1b~9M^K#wGjzR0?~FC#ohqTqJE*U?;$Cpx z_|P~ni>pckIx-%wB)yixl%<+VY(zY6i=R@l!Py+Kd(-ujN4@FKX`P`rU8Y}s8DNfh zz~JUBrKpnH-IKGsUF|X@toi#%7&%>+6bQVO~X@_==$W- zq}OaaQtwCc1P9@#Woe)mNiRuf-m7z;hPjk4Ph0oW^W504*U>Ibhe2U>&7e-qQQuB0 zSGTd(_&ZS+hvQBZND@z4{K(h^6cGMI>gF7MGG+m9*(+#m>aawWl+N^6eswUr(nn=+C^Ir|;Ck5N z(v97#kx!Qd$$OpLIZ?`?l1h7eUlfsC8y!M#k3tc)F@djQrAvF0`jU0s4IQzBBV7oR z9%T!4g#{cq`C0K~$i@w!!VoM$z49o{p(rR%$wigFv@? z3D!fSlPl4EA{~r739-`iuNTe<6SQa{>=4gRFLK*6I#aT^i!epeA}fhAWX0L-ZpL#! zB!~YOj2j&)=b|y4wL1sfcZ3%Q*yugeAg5BvpfTHsjp3hbIHJ$H9q&+u^f)jT+d<{? zlJ0m@r#KtVoN7At`b5*I*Tv4DtD^vgRP=^{Lh&}3$urVmjoVZiCxxZx zeBI3rTvtN^T5Y-kZ3XZNxAJJ8#Em;H3_`Jxd~{@kziqkPmAx6+V{q)TH!Uyk-MTza zQgqQ8yI}asRKrNUMr3!GYJX>sqjdOmo!yK%9tdeR^$fX-BoWU@)!`X{9t#NeOO zD8S6al=|)%8pWY5V`u0(aAg6uScIt$ zun1EhU=hZhVG+iioz4OyG8Vz42pj2{a#`hEz;<1F-Z3u5vVbFKljr69K+J*_oqAGr z9N}agw6!~M24;-7wItLf%_Jq@!zN~ItuITK_7t&i6|t(%k-#u9vIbdQe9A%Aqs6cx1$1)+0q*|{@O^L%xJ;kZ zllvS?kR48oRbp!(O|2o_7ylw8x=cZGZqqnj$v||obhXlBevX&?t&wgPUrbX|gC#zux4sf9^xjb120=%m82Mk2-Lp?Hhn zvA-Hy{;1KavrCRPlC^Shc!+IbYz@{c@Uc;BPsj+XdY9(~N zg>s+QkkUhK!R-?Tw?smiZY+#4=hd9r|$mo1@qJ5U2rTI27vDBeA7#rtJQ`5vVEa;JDZtq``mK=G#S zHkbaNR=l0IZG2$Dbnu@+@owwcUh!^g;*uSUD&9)6A*KLQ{|_tPVzUcnnc!%O_o!yi z2h}9KOAQ z80?&_l7inWmGIbGwdCAh?m{a*>6$uKO8N+X5HG=KWN97(OoHbz{wWiVBGUqzjs^A*tf*WI~TQVz}0La z>wMKQ&l%-9h5zA!t7gEc$V91?wM0@X8SfO4$;U&rscPFa(dq`fUM`Mg$Y4F5XN#PC zGS}NWZIRR5cD6_*?L{q@MnkvLC%^V3xkDyi$76GcIE}}i3j~9E#*zGBy;q5I5&!~TC7Yy<3UU`$KtLx*9CiYvMa6j=JLN;W3_J0k8H&4=R2m6o z{NOh5$D5ej3NZVG*m51RraiA(sPB+Cij5J6m z=74!I{4ufV;a{$m0mz#C5U0YZ-RDQQw7vYS*$&96eeh)7gFD@g zc9(!YYc?CfL#h)Zz>hu%)_a_yTd*G0l=`PS6E=1o2FVMP2M^?s;;8Nse<_D5WObpiMt%-ay{z|undOK1vU0my<01{Ihd=dY)Woem{- zP9e9=osSPeJP=lsYd2FyAI=69p_#qRG7KC#y^)`ycw11AP?k(Iw<4J0nnjgrAsO#S zLarvPLc0pHHr$6Y@9YUUsnJn^g$NzhM&mGAcu_O4Dy^_S@3yr|gGhERU z70RRj`|ID&p^pDT$40BhCc%%FhD#E$cNW z6qMmS45}KrsG=Z`DAINr;U=rg_${&i8!?&#O1?jM&a;rI!13q9thk!$OqCaJjvE%SW>#qCAds5oBG}w_Y=9r! z1ji=kHxDsONuxziSX0Q6UGvYH!l^Dq!2Xzr0=EnTJiE4tmU-d zkyvFp>r}i|i|)0$F_=hK96d03#_jOr16O3x~?OODoTmy)}E=@3(WUe9cs5}JsT(y>W~(5C1mek1)$ zz*Zo^F)(cz8(wKJl^J}Up{(H0n#Hvncy9MGU|MDq(7sJ}H&#+NhK10Tq^awe){J~Yp z%f%3in!ZVDW%E~>&?`Q>dh%~bQ_XMX!(la~M6yD=9_N}EaSbGpv$??NGhV>lCTTaS3p(I7GMruW)@p z*9YA7binnPyB^c^es@j4C=7|~A&?!{zJ^(Y;TNMBP*OL{{uRT?vKH6+EqvCZS(*=RQd0~M)iJbUX@8bg2JX%LU%`1MQp3x$_YLC zB|fC`em{809tE7XCvdg*rQX@tW zFbtpeCFg9}?-^fSU_UB6B!&=>DnU#qgm6d2LZI#`O8rK8v(i{gB?`n&I8;D)@wIS* zXVF47MfDs<5?@cL(9kuM+77gulBD!;NJ%6{yoGYsLO~&A%7ou1C^t|NHxO^8oTR)H zu?73XBjhmei%l2EmvK>b`cR!fX*+_KACq-fPADhptXESWt|#lmiC*!^a#B-Ba4mtm zhTkt+%zj-0k**LRLrA_mnb@(k>QF!w{EX%VR(L?rf?JMJDzN=nRUP{9aY2ep$;{)r z#frlrRi)1|Os2V~in^ZAt8BHjtS0C_;U`u`*Gq|!vZ`+aGu%G5fJ?`rA4xoxyaPl; zwBGodxINayGU*QZR&{<7{Z|LHVmecimg=-T-#94hX z*1$D1>n}5H{mX_n^29TX4DFnt!Gr=WgtZ@>4ODQ_F!{^S5)ziIw4--Kl1Szz$_wSV z!l;>8`G@GsaSI}M;O0!8yP!3}4v{mWlD?2Fz9{`*nlcCb#8Wxg*^ZQfoj?x*zxA=* zI~Fd{R$RYF%vMxAHx0GLr(nWd`d;Cn*UWhx&7w(oNUCRu;@u%z)ZnWniNN;GrZSzGX$x5b%E2kg)uqL-y1Ir1frh}#gKm(YPXWfx$ zQvipMcdgFlAQNUvkPCFmRBISIa`>vCvgynx(?I0GWmszyD{u*Homi{m=yR-fATyLh zZpfYpbR2wu#=xYOu`*^G z{2FY7Zhbl+Fz8kE6kVxn^u@XjA{)($MV%$&jAh!2O^tTk+E~Le6dF7|MS01MPA*6T z)AoY&r|-v41v}1Yr;!e|KV0N}WDqs|78I@qAZNM|egfsQc1g+cTdPKk|Bw<1_r1{y=-@Vm^naf>=| zcYwzCs^F1w21@_ye;Fue7l87-fzkxXY!1p9R#g7?2c-wilAr{%W0j<5FnB)42vO{U z-YIUwIHuUHKLhYK3Ucshw`xsAs6R?mLLu9+2Q+{+q^De1OoNH}?Ny)zf9m?v(jShJ zQK2t_Krqc}c))&+5(p1_u%p_9A7UCh>@UOnQQ;eSKTIh)AX9;rIUSg&#*3{+E6H`@ zyBryM9k^%m`7m25Zs3(^4Vi|l^+9gq3VS7nD?g`AYKHp#q==!UO|Zo z6MiFKe0L+r{zk=Zg~Qdf3zuh5kcoz&U1i!Sr|=QzZDjfiyxn26f)TERLpbK{=-K6e zkQybFkO>7%(>c`Yw*yrpWeI*oQUF!X(lDpVO4^{>k=)$@-1#4|RWl4$vT<6a7uu4Y z=V?}KXjWwdK3KDfaEgS4ze%egx^6Id0YA>sfp;>U41-NhLBx#XJTk}Nx@bV61~Iix zy%=Z@$J{h%fVqzlMFmX)X-zYA<=$XEZZ1AmOPeq3Zm5qEOWesEN> z)N0%Y#7!gj3#emIf=4)dL>+?yD|Z$TspPW-rD3a*m5VP0 zH*;HKbV#f;H~Ms3nTN|c7Dr$)3A`@DVjQrBxrbEp3DdP527{F0la2|sknk7|cmZ!f zIQ)g3+iPeQfmS_wl{NHhYKjd)AZJHYn&5HR4HGZ7QO5*B?s!*tPJ#*@rstI7N*mWh zAxO8LccQ$0gGkJ!NDK(A$WMeTY9hvD+Y4=2<}$RYc$CpPGjpG0!5<6<5?^bHRN)yOf#7=y6vDHZMfjVH;XxNiG>s#_CDUw*OIe-AbW2tzec%d98O2kr8gF#G*vuWxtOQP7 zrWv0=qvS7vl}3RCT-K1Qw&dbW4paHBCdMZ8RqQph+n5DoUCJ}4US%B~`>2c%>oE3O z*5R|fs*YPyB9O#)8t#mr%@0P`>Zhb5^j(*|woD=@Gno;X(7Z)sF&J+$llY251c+QX zJx*eD`PS2OZ_lm{aFuRPkL!lggQn-Glt$_4{Km<5aO3uL~M z)7F&1Rj3g--vr#}__vQ2!l&0I97p;}r+1(r`gEC8GprUZKEMg+6t76YOTBV-y-bz$ zV$=~iv(D+>2i8dg6#W?Z;Y>m?C9KkPnJYKLn_Bq&I_DDlK+~_l$2p8Jo&GYde4_`w zu*R=b`t>`ew4!KU-t`$hr|W?ZeNqxGuU4Q0*;PmzfBRLyUkQ&db3shTu24D1nc}In zC<5H&99u$+sKK`xDml@9A27r{fK$QwbyIhM;#e)YJ~d?tovrM3wu3bkdLH66Gy*tK z(kzcc-crY{LngbrxCvrT`vo91-{K?UqvmF*0YPSin4AE;qAqySc(U5-`YS+ke7dWh5g-W4pi+j+1$^(WT^E4W(@E3qi?))fn3W%% zFq;n@f$jVFaw!KX&rph$9jE*`$~nsIln1CkM0tpEJteje+x@YmC~s%>4Cefm=g8TD zZlYlUnI(8wF^cpZ&uy%7q8^iDP$poZMCNAO66nZR8#jBs?N{f@d4D8g8IC>#oU&4o<85PG4Ivw*^mSfkVwQ7EyWF(`Zm{2cVd z1@o5SdTPcNt2 zb|a7NFGfS+TJksn8x~ivLz(f+GYv8jFJcmRyT1DZeRsS2EUac*^;kE=R^ zs^b6r1dDjfn2a2`F2bcO@rDp`=mL@kT6jNI-96s#>En4;GR*52s=&5HcM^a zqa1FD&u%OHxGBy>VxuN9crD5om6>;`A)0ro9LgIn0HDi}fVX2<$HW)AYWM|weU z7d4;&60qhvgZQNLM}2sMaY{MJO)$>>POeO6y6KH9P->Rg{(FFuD@L8`r_3SD!rcdU zFp64hjrJuvZ7IlhW=KI|xH@G!26%DUJLGT*E zH;?&%IiY|fzluRc#tcGUfCWa@FEKIoPfU!GGZnEeIqr(TPLJj^45|2XnK&Y!>XO-h zCpoHq48JW#clth#pq3^HHCwz=M(#-T=p6tlq%`? z;dxQOc|+ve9HDH7yWWbyz$WpWpDY^+?sWkYo(!cq;#7CQ2|w)&UBC9GZ`tBAur-?m z*tQvj=GH(I{$nkv+jI+~Z93;qW6|5j%-98 z<oGm_?1A?Cml77sg{28 z`yA8L75+I+Q2}MN-j1f@r#HO(RI=&7Fk-)KN>#qxJlPb*>4m@N)8FVcN>--B7r2K} zBHdElGAF0w%jiy!j`2LbD?E(`ZTRP^r6={8><*#MDWNd%KdBNTIH3}8aooG2Wfrvm zi31lfk%}+j163GKI(nL+HpB0(RRE5%XZ4i3f|7E|SfA3f>ci&>bVBBP1AQGwHUT!u zN##I$pss*ESNmPxr}pzy8DHC~ZG{KoRqc-h%+(;gKU1up1~0|&s!q_Mr`3(Jx>1Fl zzCZtkiz@w4_DlP#8323Ov>3skUj6A$&;H|aSb{J--R3)Wv7%(@_6?+{2C8E$*+cf- zwYYoz4|{vTi$7|~70rt;6hKzFRCf|htBqbOut3K0hpXt(OxyxVs zK~wiVbOkR5UEKcym{YH+2I=`jdaWgQU+l?0G__F2k>g+4S!rYrz#RKoJ76l$6 zq@GTGJ)4w*y^8Tg3)_*gGrYw9x=*hZE7cCjyV^X5P=ec>Lgg4R97hO__z2&TnM3CC z*Ee{iRYNU7JlXAp6^vROJsqBtWg@07&yNWyd@b!o`CKrKbuM)CA_B}T6SXReJdNXB z<(WE&sSD(QPG0nr0B^{yzT9Qb44KrlgO;Dgb4jH`t-tigc4ocn44sn%$|Is|k%ODl zx``5K(IWgl%x@?Av7M9cBES&hCMTg>$0V6U-`K*9+gx18F>DPPyIOD3dX#Jn*&}?d1cST%0?#T^>ouIpm=JH#ZEWHDw#j8 zBA#qImP>*Kn_vVbVG?T zf^;Uo`AQmPk%}s)+Op9to-tybTi>#fMLjLkzM|~4+>QWL5($zdn%Fa$$m|BGi*CZrpOld&#j9N?B{+M21BB11)!$!^t!k4GeMGQ(em zNp@hckCQB#zJ%-g6yVjhoa30w{(Y_Nx%U+HCG^hfvxbn@pWqt)8WqD2DV*sX-ak<^ zdwR{|GXbWGmGTrt%R-C?TDYz7s~ zQajp42@#0`6$}M{&}RZ+g?2+vP?ZyG85~9&(e51XXsV!@=`L~tASx|W(YJ{6d@6*Hzq0P)T;M)a`;oc|-KZ(=zCbQo1)SJ(^Y@;fPPNF3|$WAO*Yc2PjAj z6h+DIQQ6LLMADc?3g;)Cs5(+eR$^D~e*DSK6ETTsPtdAZz#)@9peFf0fA7DKo~=R8 z#2u=Y*2Uk18?%XwfAo^iK)3h1Lp9ehlyGEi__5XLPY%Y`QJ zK?AkpuUng>5V;BR8mgH)-g{0oF9;)Vj~sZWyK4#WCa<{2bl2L6d zD9j+>xQ=wqqe<{whGFhfngLGx9%d@RGk1F>Bj3kOAzDG*AuGBT%TT?HnuJ+Ws2*mB z(?}Q`wb4qF7CyqEfBU4Nq4aCz*lj}TWLP-T0-&jC|$12RnJH?Dv1dZ+~Pbz-uF zpImeD)OKL<8ZdcH#BNk!G7?ewWLpe*4HNG$nd4|+JRXyIdKFAwBTUu_jSDe(jWD?p zQEZo+DOjt^J0Md&?Y$1$*R-*{*Sba8cXAMC*uLg6Y&W~yFMOF3 zTkK6s3rxM3Gdf1iupPf|db7v&^-gl)*s>Z*R4#ditX&-4vvvSxC%P*R>mh+7?ez!` zEI4=;e3Zk-s2|cWhnHUkFp4;+RdDBFa2T3V#JEKf=m2};^msj%E2F3mv$q>M(4K^C z=xOgEKRLXZtVrmP`HmU1Tf2i;kvGkR+oauT@2WxQ*d63pUgwnEK`7;S&e$Ecc4c=& zV@KIoGl4|aHOYQT)0Jqq_o^ale2RkIsS^IPEWjNfDY2WM1a#*=l?|6$#Cv;DzB?Va zJM1T5>|z4E;xf$>^UpV2)DBr6{R#6->tUC;m8(et_)M+GNgzn>4gcIM_$k;UkB>I@ zsXzuA(2$z>n-&Q!gP?V7Z;qPlV}F;A(VFz05dZUJm+ipiTPJv6J-Wtr&*yK>W^abq z(j(4&VVg;711BRnR5bJh)ez_%Sm@l+a@Rq*^6Mg&=pb(494k>}oHy>AkFnCq)9Mgc zS%D2*V!Kk=WI%H*X%G8WfW#`LOX<*V(=n&mDx#Hba?*GMslpSwjVg>_kvbS<&in#V zvhANzUogX^8?7`IF$_$l;BUvjs8<#tHhEAiU@b*kbR5+Id(NCons~nS@pp zNpS3aK=Y3XVkcUk0}=#6PTsf!lWC(~9#qosy)a&`2jUuX0p%jvsI8@nA4cOurr)MW zTo6G{gFb(?6%;|*_Am{#cvWc^z(9EK(}7I@!cZFC^FvQvN|!Ih7%){H!bKUy(Tqm# z=q+ORccJMJNWjO4C(;h{sH{I0Bw3bwx)y$HV|UkL6T(4Y=wuDJbe)}dG9TQfBuJz` z1Cij)rztHS(3-;TXXZJTK=ZlCJZn}wLL?O&FWLwHv(2k8$jya=issdSanUJFONQDp zE}>=UR1Q`vqt$lBooJ0+twzytPbq08?Sf*#J9M%lEvRIwP6ulo_U%mTk}L zp!U3?XlSFuYf&g3ll{wY_Phpe&#PqqfJoaUvIeOKfn$0WrVMFB0Zl_cjD;BgfENq} zuL8Ao%V9Y*<1q~-6fe5gg?0Hs|x2U>~(Ht*26qAmWYRjC=$Vgj5GdoX``1ZD+ zf*xwIF!M~%O}~t&P=1}N6_j>4eq#&Ipg4h)5_>olXEp6C9GJre$D(7JZh43(3R@ns z5`P4~Y(q_HMMBZ}%R|PLJvU~ULo{{y5|KPh?FFJ*dtm`5R;;XC z%mYy7vTZ9J<1-FYL?KcvSU*E`)Yis9r}CC>+d{W zT7R#}5?w9*9Xy6#!XkyqHD`&gmj2E*XzB0EO@HT7`a7TU`a8#2N`GH1tRJAjtcar3 zyZ7h%`|4-|L?)`Sjh!L7)aClSLKF*W>m+SAc+=QM^e_vEzXB4@<&XB#nzCkI|V!oVPryHyr>5mJnG-mqx z>ReynVAd&HPHknYb5&^ui~&ESGohR1%S!2XudKfcX=Kmg{gkhCrs-n3I>*&ugZO6J zy1KtzO&>8`9Xk_37BnzZAz@v$_POwpqFz4TW%|u&I;5Ycv=hY))>B=w!li00(GnDC zPFq`7;o51!a^tdRpQeV1#?iVMmm@_KCu1$bf9iH1`w`m!bUOy^Ffy+g-M$FabQ%`T zI5+AP3^rZ%e}6dfOLDnc{~G5}I$U!wd@O?JlPD2#gp{f^~LsD939e^{*5 z+OE)7U1x&;!;p>xsU5XU4KbS`vBkrH$+ zFr)aL1f8;TdI+Qo5y!22ePfdCGnH%^PP{h=|GDXsAlX(8|HWJF^In%H@+Rw6;GFoj zAn8N705KM`KXYY;R5#p^qJsaIy|;m~tE%#S&v%`wQ4-r0DUods3vmE14lI~!rW1M%hQG{kqdh_5#D+leo-&sl7%a2alJDlEnm zexA(~(Ud2?ST;m_XNv|e;Q|egzK?X`ZI(m^2mda-17fk9@kg< zUn%*}nt7hqjNW!6_to03)S^M_68XZ_($kL~)`_DZX8)_Y+VLUInn`eGWFn2G4kO@l zvy2sEt6`byO8(O5@^DI*&r0d?vNet-ID~c7H@x4whIs`iWOLE4llZl4jeOsX37GzE zXA8;K8p|sTYXb+FIttC67V?uY4}GUw0gBy_&<}0D^?Q{y^|<+xX}=~}UT;#g#i_`< zR7fLPF~&r`xxA)PW@VJ+?!2|Y6+*B#uj@IveY&Uokljy=Qu-X zq-}Wj*;%bfehBY)6wH?pSgOw|TnmoUV{K9|297h(Ud7wJYeU04&MVgD;SqaT-zwIeIbM#kA4T#S2>-y%0O_>Xt4OXUB;%uFFyAa+kW?6)(20qqIL4 zO0{B)ahL0Izwfeqy~@eff;I@tIyV&MxSZ_a{#34qxL-ojTUazs*nMVgIFs^iJU@%; z4)oZ0Ty+N0XTu*P zNe<@^hK*#8$}q3Yip%kGv=q?FvJ>mduF3vF+()1HbGR-J+Jj%jk-a>W zdMEMoMJ$TR2DMvGBMgewW2#?*WX}rF9rieDeT%NNzPS|lVa&_x@2J|_EUym7v2S8e!{~oM;wnsw|gr{~$hjWiGq}KorAE`j8phbDgfhbF>WKmhBka6McgSq^k2jxp{4O>N4%kzsY0E#9flx#fOVV)stFjz-Ruh29E>ecG6vxc#sF6^2GoKv9o0Ne z2jiHg@T|?ixYxnBcQP0|2PmM5;3FuDZX1*lh(;~;Q(*PJpZrAe)rV9Kw+vc^@v;&osakgel{F^JEP-cBxv9DZr=MlT;BFi3?PRvYt}$sGYS~Jdl4Vnc3kE|#OLUPbq2w44hSlJVL_OQ%dpsd zV?{An;TsFZEGK8+yrY@!bCg~_vPS6*^E~hIL^}|`WaK>@N<0!$>DT@wPkDcr&_fNE%~HKctfb_-;gwUsx~ z$Vc7lzH1yBbGW^uvFX<_)`~%nS#>-T;lSeZ4SrB~gVz|FU2YZs%*;Y+d@OI7vH7(t zZ=m8xaa+Juzkql61-w%WnEI923k3;e)(SNa!U{Fo<`}L6*<>pawJu$O+pIq(J9Mcp z+wzS_D-NAs=O1&0fBQuUOG@(5e_LPyJv zVDUNOt}rg}vhWwLLx5$IR_!9`6);D@bqttzdm1pYKpPmj8W=^0H1Wrn3|mEIIm{Ub zAEV%iP`Ip=?J3GiECEOy#+o5JE}n@v6o##V+T13a?a_7iXiMG=a&sQ6 zH$~7PQHPO=V5l1gA_Et+@yF^AT+Z^YcrphtobNWJYYWk42zFoeFsg+A9>JWifxJg%x3gn+N%tKI~O;G8(>r!2S&vrC2UAMsz3~q)V5Q_nWUa27hY|CEk zd80(P0Wf{wa`0_~?r6)FC0i}FEV;6dOjR_z-SNE%c>8<$YfRR-U5d9RAHxU@oB6Ay zN_;P!8!fvS3jJPRCS1_EE(B)|N?s70LZE?`jnfSuHY${t*k%L>u?E+4Mg7eL+!Lby zfT^Lp4ax8k#P4p!Mai!%xJdF7`Jc`*$g!?9CZJ9*qgJ~{E=Ag)v;ENt(0LN*7$j}= zY9*T*`9dh2F1FKBj<)h-}2O6@AD#ve=S1ZyOMZ5%agHs0k#=Mq7-SlKFO{Hzo6PlhJSf({D-Hyt-ZX6OqihHNQYdjNC{psx~3l(m9fdPsw% z7vy*82eys-?MifrzlsoRQ5h8y#|3t@_CG0={i!cDwPIZ zoo}j|6)3}pjR{}uVl0e8y;4*tL3kKsZ5mO5=T*&LEK&Mt`Sg_LQ}4!c=*~Ct^1sJj zz&)@7ar%-Ue~CxSlo8xd`IDCw1Qf*fWSZvG|R-1q>^=pYu$^eLH5T}|Gv;*u*y{Zh+9D?R#PcmyDHf1B=g)(bU29YYOU zRjea^C?yjsZ4^d4SQthu!crRN$J-pYVj`4>b4Ey2!g@B{H}g-C+6^S%|L+tVB2pHYG#H zl)Lv-?nL4~hS|pCRmGz?WR?&qgH697vp)`Ji)|jXVtco};LpPmwtFeDBgS9iW%b=t$?AKilhxfkXXSLJ_-?4@ z(-PBXXTcZw$7gO*F&&_apvhxHX=1#58N_sDl5+CYA@Wfg?jxjY z=0JHPBP!eA#C1~Lw214YUR)>D4XgVPDz0nK(Jhcewh%{BaeeI{LtK}b?$*26Tc;J* z5qk`%lZoqxe>;I1{Ra})w-%nZxIXebR@)CxL|ljXu^12Wz6j^((dfb$i*=BTbyP11 z(3FdHoG%3#xmYZEtFRsNv0GPgdR$lJ-Ca$2ch0jb?;e{l@yF?>v8-oP-lZF43DEgt%DWHITndF}N#2#io*65Jo)hKH>z)P|W|GJZbWA7#i zpoS7iFQIj>r#p^JM$DV$(YxNpaCf-E}9sRd(ATPNfd=GPrc1hsrNarh$EWP9}tqv%}k* z3~Ct@$st}#{v^2>8)Q;+BZ)rU=Vp*uQ4U*r4pC40dskuF{;nrN)32ShznfJyX@Ad3 zw(0rw{T<`A6A?o1T!P9A6J7&qXV`HAFZ1?S8D^0!~T!xiE1>X*S%D2Nj11!XA zmhcU&j&)MoJAcVStf9R} zC|>xL1m6yeig`!y?bw*dxkHUJLYzBv%OBHEI=XkzgRMqJ zMw&uuOZ_`$wfJ`!o0buT$%LXg)r~M2b2d3kZX{<oc z#1!%`uPAv$W*j`aUG+`hI&=HL3DNeA=?hV}x;Yn--5fm51&H`yzrj2_Hsn(mkB$8F zzIW^SiLQ@?yxssPI%wU*Y#cu35j%(e1-g`dUu0xIa+jPus?oi(WZ!tuFuknc2&1a$ zzM2r8bbcl68TBRm*)~sZG|PZq>$rnDCpq{qi}O~_={YC&8ddI0GieeutLZ53B&SIC z4bT1Is@mo#s8M<;W3Jn*V*fT6T>TUbvt0X5LLX4g6TiG^kpZHM){7-A!BG z`hYqj+eklib-#+er2$Pw#b!V?g8&9pj8;uE+>x(O5KFKftONSIWXS1laAs#W8=TBS zHod9sU`vUOVmgIw-PsPHSY6l-G<9qPE8`j$8R*mnU37M#M zzmX{lSogktVhzq^@QkE*etaG&glylWFWI7JV@g_qjn(2Y+$uPr@)cG**%H_!e(ILM z|DCp#%@TrsQFNPk*(@PU>fvH@&(rYO_^PdOoDhm`Z|z8tY2axGc?<`JWbYwbZ%JLa zJUOT`JYFITInD}W@|glKG26i&|DEkH&KTvEG~%W#rni7O4q%eQh(8j}XC*NLZ87$r zP1#YkDr=Rnf%9TaYBE|ZM|RDNwi>V#cK&A^BgtQ6b^>@92{>9ZjhvyVrjTg_hQXob zp(1@c7ZO-d`q{o{v>_16O~CS3uwoU?j|e1pNl!m{?NFpVw)T3j#3y09q%qTw z^1K<9LZPp(m{%{8&A+DIKLZif=|VF%3CX|dEkZVjs>^whKf?wOrkSOiT!;NPB9{j* z6*4(fO58PbreK3?=1d_kaUuDbl9E&`DG7-NJ+!UfCY;|C;4G(RXb$QznvtT7g4Xqh$tlcxIuQY(=0|g|G@P!_3frFwL^9fcW6( zF^l@06Mfx7Gp&x-=W5L)>oggI0#EA-(Gr4IoW~b8+G>Hpo0RZm{z}casEKh1rDcPp z9U^a`gbjWkD7am~{qmyfyim?g?()hA8)Z75xGZ}NzvnhEP`a#aM)qwt5Y8TP+?Z#d z@oZ&fqaE8J%gmj=2v5qDjq9@Y9$Bo&jKYB z**6=gx>sA>g%$Apwg2TSv_&1`D5!eDQ)m&_zn0F%&xuw&k8CG6e>&SVGz9h-z58+uT( z8Cho~`vhe!_IiWNRlgXKYlii$DReoelXlEWTsXjq7g@*9m)ayQ%X&t?+9WP3W_JA+ z4E*GeB5@feXC*F|`zPIeceawX-(Z&EcW0BVHlzNZ=GFfoDs{y(Br0_|QHdi@Br4&& zB2lR;BPyZfNmL^J#Cbw9Z6Ur}OcX)uUDCgiusK1^xvZ$1!LRf8qq@gVxmH(97Gl0? z;3xx8dq=oR7~(KDD<4BlOYOY@>ngFjy0Pj^E~UYeJ!*GcnEd>qks z0^%cnbrK&fY%0$D<=_F$o zq78Wto0@YjQW%8vDZ~vQ$~!1hd>T8~Y*e#K;YUOUbWHWU_sc*;sh%Zc@MlT1O^F;4 zT}27l0a(HX0XX(v`Rsok7IfCkeJS6Dpe*248MQ_(R)NB`#wOhwjJ?g{(l+ z&e|>pr7U7o&)P$Jt2t|V2>_xK=De2|6|(^o2?y^Ngfv1zrSYRPgxY~)rv+-^c2sN3 zfo0$jLz`eG``8Q$BthTtN~W*|L=&s#9VHyH?5kns1Va%grns3e9K(d4ro(%l;xzH$ zglPgN+NKF0+hhsQb1c_3G(+dqQ_9IdPjl*+FHN0v114+0(IghQ@_kQ5m`1*4(>=9lJ(XV3i?J|?;(pFCdiIf0rT+dqBBaGRc_WAjh2V+XSxyTEmf)I7Nhsaftt zv)w?&$mHGQK-TozFb|)6+a%)0ElAoVl}P)@3dREm3`{Vir4xCQCi0}_)TFLPAcjFv zj_9K9Rp;=HymZuemY6u%;6Vl@SFk=AN48%u$&6_c`iO67>=QYMMZEt&x`?rti`G&L zfqmF02=h!3qnh+K5FZzSY*dyAQQi_;z`e)eBB5yN_Qoo>1%iKhvF^yAkjWTH$1-MC zKS)asB^H(r@-TgaWJ=b%oSM=!ldPevL8*|8`~bu~Q|%RKPs<5(rV&3o=09FdKBl*1 zyyE#`Ec$X5X<4U-GfwyPIUK3!s%uu9)jfCyO;)OhRDu-TCc*uK^gvRMQX&{3xxiGhqvg;E3ed_OOt*2sKsk9>u6x$vA*-6>2W++<>QS%QgXUMVF-d zK*c$;HQCk13C*gPHVwenQcSQYR6BJt4u|bp3u*J38n=eTq*6w>6DUoTS1jRbs5w(3 zAKLmNnTT3~$GTQCseg3jj-jxz!kt|Xq+?x%yOx?yqentD%fpz@@QiJS~7W+E35OmrfMYxF+Y1h+t>DG*sy1;DQ)*BgRD z<0e04Pf#O1A0d=0INfs6f*i^L0%+|{*}E&>I1{_1#<5jSNCqH+@7xHor|iY~<+;t> z&6D*=6hve%;(C{zd8j*EiHLg~NMPdMuxK|`X}Jmd^lF=i%Kc`4wfV1TG;+V*9)hDZ z-NNlz(c?W9)8OEPmKuE!r*BNbB}w!NPVnw9-EFvr68W558&?L&PRapbFI9wD$ujFB zNm^DQI)#J0+YMl++h+|2@hv8s-Z8T@;X;~`-&~^=^`XmA0AA>pW@+*;dGS6-l6XT| z!<-%X1%ysm<3u|F2~Kgs3aHR*sm(b6p-ftGgJvCxKo~P(y2xnZ4}9Vi?10@kw^@=X zNay+Fl6L(;fQ;>&L1pqPDU(+<`mg#J3Djl)k##tJ9*oZ^Jy5ucP*s*9rh@};a}aK- zAm)Qv6V<9RbzJ1)%EW`EXVU#BK9k2B8RKb}>pB>V>nGFJtwyMaCJk9XW4Wgw;&#$0 zrbDu-V&Af4dkWg;wXNydb*D<;I!T8z&(+m(u%`At z2=ry;Zj4;^s7mtt$A()j?khve2w@-#X>KxjPg1=O^nVWfOk@w_+Xb zY#i4b>G<6F$Pp4h+q+5e&`bv=rul1Lt?U`Cnj%ee2H>L0k&1=}|wxDk&j< zisz9f=(Z%53!?i-#Nwxn3JBQX??ZV_6>6s;Ml%%<#|dPU*Pag9IGu&Bz=X4=D`2d-!Mo&looYTQrOQSIhOkdJWTsw8DF6*?~ru=Qv7kFqB@IUy+9 zb&qC9jF=fgLwTK)`0-EWx1%9286eJXPix1u#8|>@NwF-klX>XaMI zcj>S(ZY+PQ(iCZV*jX%sX`0-&x<=`?#U4qR1u4<5XpIaeW`hWyAQ$1S<9f-tbb1c} zyCSg6s^C1%HAbZ%lh8ljahqz4YOM*1qlA4zqYpt`qwg#*nPCh7xfR4wHu?G`0*Z=+ z1PhYgxz)>ax#)hZGo-4`*I&V7#jdI&N_hE~{?WEP*-;S_EW!MOX!8I=Ohc~oid*Yt z=S!2sp_c1)eT6%HGrnX+VN5ckKO!nQ@*$}RqNl5hE9?|0nKE~4F1bR}?3&eqj21&a zL{`Un&KqM=6~^3ePBQl77K$&8TUeq4FO|&M$ev({9>IQ^C7uFW;oKFGE#p&DA8TYs zZW6NX69hRdbQpA8Ro zT=SrkkVL6QdF>pPR+DSBd&=(;l$x|*MyTx7l7E#_&Tw6w{KJ*X*=y}>mr`fHc2snj zGwmY>ORTFU`-`jV&sCFh+2tZNyp|j$=l();gVXqLE`ry7vh#~;F=smp#3wh50NQmi0f{y&*6H6@&;Ej9@dAs;=xuwhbx?t zWAIAJMtXG$*JIdj2e~TRZa&xDTo-ZO!t+1ns!TE`bKT3;p9@o539#7U886iB)F|Cg z{Kq%j*r-}}a$_lASPF^&-uespW!8ZDnekGAq@oL%G!*L`-9I-zCryi46fnZ^9mVlH zP$-d&O-UI1Z}LDC_wrk`DPfUCZ(b2kw}_cW(YfiB4NsDm#^MsFqKSr5hQ>FbYcjk=+FjI<>`f4{E? zl_;Bui}#buK=FPhEEm;g6JV}SeMpZai5NF{$fn=K6O>5tgFSf(IsW@Pe$gaXgP?2V zE>}pu*aR$Js~uW}(}m47XUyi-pb%8Ja^QloZb0HDJxp6N#{I1L)NpT5Eg~J3NC3<+ z$*e9Yx}_u;R^_wwA}tLw_0Vf~L&gK?K71nG2fPO9K%3m^wS z;iPwJJWr=FJx{-1*+7VJ;i;wMntG+M5;3QurYp&gH{HWmm1L)`Vt|aQu65KngO8Uu z>iI&{y#8X&6zP(5xN%visrhmdS|D9ediTe>0%@e;rEp68bxOOeG^O19oDKCacL6cIvx+mZwzZhS(2 z`wdlsKdaP{E$grNv$74Fok3uNSwI!Cy~HrnGK0GcAcqu9ieWdn*1~_}=mCm2It@{m zbDu3H#>EPfVMV`0P%X)BmY_072r5(WXK?*5n2778WL7C-5kx!s0?15EU=GF#^)rMk zJK3g)mq-IFi8GGdIX%9j_>3WNjz2Go#(MSgcwR@QT9x$ZV9q?=8Lr7&T({=yuhQ@l zvi@4{@5+jSb~6 zYX_KU&E7suI80S!*w3DkWaI{w8|@WRbeze6@HUg{jqo^5BnP=6$G)^4H0#-sB=^%v zwU%r;to~X*r4n6Z=(Ugsa0B8>94O#69(QpinFMh&%knKxFsbK>Pr7br<`i>;F|Vgm z-49gVijLK}-1JW3NJf75Kn@mzfW~ROr2;|fDoLbQMEj5io3|RCr5@S%+Xr&sDu-7j z`k7*id$q`ywPYI)Al>y#ldb;O%agtS*Coj@ehJ%`CrAA+^5}8U80q@$f*-c&jy=gH z_uS}-wJ%Zt7mGGIge`CoxbF|E2vpo%z=Eqia4??ynsMP6QRNZ|N>@p>cE#9uU#|qM zJns%a-HXW<-=Uslv;W00^LzNI(YzuV_rESq4*Fkzo$U9&UL{jC|0!`~Z?cn8#%Sgo z*Yg;yFWd8($qx4p5{&CPCO2%l^n9kInPb*-taewSOZ#HeZOil=|4#K>Ki!MTu25Mr z=6~V5Q#Jafx?X}hq${Uh5z$k!W3P0D(XP`KzB{Tb~bzxpC~?!mG)n7l($I}YPMoK?hBAcW;;k5S5xgw>*tV}#YwD{mja%oPxhiJ}?%kI?xXG{P`er*%L zXOKXqRRA9=(@P29Wblp!7b*hvjNvl-ik>n88&8zKg=K%{tY~m{Uv~H;_ye!j+sP z2;o+R4&>(GCe+a4<$Tx;zj~9(RjgHhRpG)|9uZc>EFE>IfR8q+nevO& z;ovK!*%-)!bJVrGE47Ss?O?pP>DKC1LsJC{q6#2fS!Ix!0HDM2oAv-I$LGW^@Pn^n zEHL*OTR+@5?_>aFU=fw{8lV%nsCj8&r&p17s8WC~s55ri`G|bB54V=o3#k+n2q8

0kI?1P`PMS=+Fmg1eR!~kwnmTD3mi8>@LvX{e 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ℑ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�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 Client)): Client; + +/** + * Used by `@prisma/extension-accelerate` until we migrate it to a better API. + */ +declare interface AccelerateEngineConfig extends EngineConfig { + /** + * Allows Accelerate to use runtime utilities from the client. These are + * necessary for `@prisma/extension-accelerate` to function correctly. + * See + */ + accelerateUtils: { + resolveDatasourceUrl: () => string; + }; +} + +/** + * A stripped down interface of `fetch` that `@prisma/extension-accelerate` + * relies on. It must be in sync with the corresponding definition in the + * Accelerate extension. + * + * This is the actual interface exposed by the extension. We can't use the + * custom fetch function provided by it as normal fetch because the API is + * different. Notably, `headers` must be an object and not a `Headers` + * instance, and `url` must be a `string` and not a `URL`. + * + * The return type is `Response` but we can't specify this in an exported type + * because it would end up referencing external types from `@types/node` or DOM + * which can fail typechecking depending on TypeScript configuration in a user's + * project. + */ +declare type AccelerateExtensionFetch = (url: string, options: { + body?: string; + method?: string; + headers: Record; +}) => Promise; + +declare type AccelerateExtensionFetchDecorator = (fetch: AccelerateExtensionFetch) => AccelerateExtensionFetch; + +export declare type Action = keyof typeof DMMF_2.ModelAction | 'executeRaw' | 'queryRaw' | 'runCommandRaw'; + +declare type ActiveConnectorType = Exclude; + +/** + * An interface that exposes some basic information about the + * adapter like its name and provider type. + */ +declare interface AdapterInfo { + readonly provider: Provider; + readonly adapterName: (typeof officialPrismaAdapters)[number] | (string & {}); +} + +export declare type Aggregate = '_count' | '_max' | '_min' | '_avg' | '_sum'; + +export declare type AllModelsToStringIndex, K extends PropertyKey> = Args extends { + [P in K]: { + $allModels: infer AllModels; + }; +} ? { + [P in K]: Record; +} : {}; + +export { AnyNull } + +export { AnyNullClass } + +export declare type ApplyOmit = Compute<{ + [K in keyof T as OmitValue extends true ? never : K]: T[K]; +}>; + +export declare type Args = T extends { + [K: symbol]: { + types: { + operations: { + [K in F]: { + args: any; + }; + }; + }; + }; +} ? T[symbol]['types']['operations'][F]['args'] : any; + +export declare type Args_3 = Args; + +declare type ArgScalarType = 'string' | 'int' | 'bigint' | 'float' | 'decimal' | 'boolean' | 'enum' | 'uuid' | 'json' | 'datetime' | 'bytes' | 'unknown'; + +declare type ArgType = { + scalarType: ArgScalarType; + dbType?: string; + arity: Arity; +}; + +declare type Arity = 'scalar' | 'list'; + +/** + * Attributes is a map from string to attribute values. + * + * Note: only the own enumerable keys are counted as valid attribute keys. + */ +declare interface Attributes { + [attributeKey: string]: AttributeValue | undefined; +} + +/** + * Attribute values may be any non-nullish primitive value except an object. + * + * null or undefined attribute values are invalid and will result in undefined behavior. + */ +declare type AttributeValue = string | number | boolean | Array | Array | Array; + +export declare type BaseDMMF = { + readonly datamodel: Omit; +}; + +declare type BatchArgs = { + queries: BatchQuery[]; + transaction?: { + isolationLevel?: IsolationLevel_2; + }; +}; + +declare type BatchInternalParams = { + requests: RequestParams[]; + customDataProxyFetch?: AccelerateExtensionFetchDecorator; +}; + +declare type BatchQuery = { + model: string | undefined; + operation: string; + args: JsArgs | RawQueryArgs; +}; + +declare type BatchQueryEngineResult = QueryEngineResultData | Error; + +declare type BatchQueryOptionsCb = (args: BatchQueryOptionsCbArgs) => Promise; + +declare type BatchQueryOptionsCbArgs = { + args: BatchArgs; + query: (args: BatchArgs, __internalParams?: BatchInternalParams) => Promise; + __internalParams: BatchInternalParams; +}; + +declare type BatchResponse = MultiBatchResponse | CompactedBatchResponse; + +declare type BatchTransactionOptions = { + isolationLevel?: Transaction_2.IsolationLevel; +}; + +/** + * Equivalent to `Uint8Array` before TypeScript 5.7, and `Uint8Array` in TypeScript 5.7 and beyond. + */ +export declare type Bytes = ReturnType; + +export declare type Call = (F & { + params: P; +})['returns']; + +declare interface CallSite { + getLocation(): LocationInFile | null; +} + +export declare type Cast = A extends W ? A : W; + +declare type Client = ReturnType extends new (optionsArg: PrismaClientOptions) => infer T ? T : never; + +export declare type ClientArg = { + [MethodName in string]: unknown; +}; + +export declare type ClientArgs = { + client: ClientArg; +}; + +export declare type ClientBuiltInProp = keyof DynamicClientExtensionThisBuiltin; + +export declare type ClientOptionDef = undefined | { + [K in string]: any; +}; + +export declare type ClientOtherOps = { + $queryRaw(query: TemplateStringsArray | Sql, ...values: any[]): PrismaPromise; + $queryRawTyped(query: TypedSql): PrismaPromise; + $queryRawUnsafe(query: string, ...values: any[]): PrismaPromise; + $executeRaw(query: TemplateStringsArray | Sql, ...values: any[]): PrismaPromise; + $executeRawUnsafe(query: string, ...values: any[]): PrismaPromise; + $runCommandRaw(command: InputJsonObject): PrismaPromise; +}; + +declare type ColumnType = (typeof ColumnTypeEnum)[keyof typeof ColumnTypeEnum]; + +declare const ColumnTypeEnum: { + readonly Int32: 0; + readonly Int64: 1; + readonly Float: 2; + readonly Double: 3; + readonly Numeric: 4; + readonly Boolean: 5; + readonly Character: 6; + readonly Text: 7; + readonly Date: 8; + readonly Time: 9; + readonly DateTime: 10; + readonly Json: 11; + readonly Enum: 12; + readonly Bytes: 13; + readonly Set: 14; + readonly Uuid: 15; + readonly Int32Array: 64; + readonly Int64Array: 65; + readonly FloatArray: 66; + readonly DoubleArray: 67; + readonly NumericArray: 68; + readonly BooleanArray: 69; + readonly CharacterArray: 70; + readonly TextArray: 71; + readonly DateArray: 72; + readonly TimeArray: 73; + readonly DateTimeArray: 74; + readonly JsonArray: 75; + readonly EnumArray: 76; + readonly BytesArray: 77; + readonly UuidArray: 78; + readonly UnknownNumber: 128; +}; + +declare type CompactedBatchResponse = { + type: 'compacted'; + plan: QueryPlanNode; + arguments: Record[]; + nestedSelection: string[]; + keys: string[]; + expectNonEmpty: boolean; +}; + +declare type CompilerWasmLoadingConfig = { + /** + * WASM-bindgen runtime for corresponding module + */ + getRuntime: () => Promise<{ + __wbg_set_wasm(exports: unknown): void; + QueryCompiler: QueryCompilerConstructor; + }>; + /** + * Loads the raw wasm module for the wasm compiler engine. This configuration is + * generated specifically for each type of client, eg. Node.js client and Edge + * clients will have different implementations. + * @remarks this is a callback on purpose, we only load the wasm if needed. + * @remarks only used by ClientEngine + */ + getQueryCompilerWasmModule: () => Promise; +}; + +export declare type Compute = T extends Function ? T : { + [K in keyof T]: T[K]; +} & unknown; + +export declare type ComputeDeep = T extends Function ? T : { + [K in keyof T]: ComputeDeep; +} & unknown; + +declare type ComputedField = { + name: string; + needs: string[]; + compute: ResultArgsFieldCompute; +}; + +declare type ComputedFieldsMap = { + [fieldName: string]: ComputedField; +}; + +declare type ConnectionInfo = { + schemaName?: string; + maxBindValues?: number; + supportsRelationJoins: boolean; +}; + +declare type ConnectorType = 'mysql' | 'mongodb' | 'sqlite' | 'postgresql' | 'postgres' | 'prisma+postgres' | 'sqlserver' | 'cockroachdb'; + +declare interface Context { + /** + * Get a value from the context. + * + * @param key key which identifies a context value + */ + getValue(key: symbol): unknown; + /** + * Create a new context which inherits from this context and has + * the given key set to the given value. + * + * @param key context key for which to set the value + * @param value value to set for the given key + */ + setValue(key: symbol, value: unknown): Context; + /** + * Return a new context which inherits from this context but does + * not contain a value for the given key. + * + * @param key context key for which to clear a value + */ + deleteValue(key: symbol): Context; +} + +declare type Context_2 = T extends { + [K: symbol]: { + ctx: infer C; + }; +} ? C & T & { + /** + * @deprecated Use `$name` instead. + */ + name?: string; + $name?: string; + $parent?: unknown; +} : T & { + /** + * @deprecated Use `$name` instead. + */ + name?: string; + $name?: string; + $parent?: unknown; +}; + +export declare type Count = { + [K in keyof O]: Count; +} & {}; + +export declare function createParam(name: string): Param; + +declare class DataLoader { + private options; + batches: { + [key: string]: Job[]; + }; + private tickActive; + constructor(options: DataLoaderOptions); + request(request: T): Promise; + private dispatchBatches; + get [Symbol.toStringTag](): string; +} + +declare type DataLoaderOptions = { + singleLoader: (request: T) => Promise; + batchLoader: (request: T[]) => Promise; + batchBy: (request: T) => string | undefined; + batchOrder: (requestA: T, requestB: T) => number; +}; + +declare type Datamodel = ReadonlyDeep_2<{ + models: Model[]; + enums: DatamodelEnum[]; + types: Model[]; + indexes: Index[]; +}>; + +declare type DatamodelEnum = ReadonlyDeep_2<{ + name: string; + values: EnumValue[]; + dbName?: string | null; + documentation?: string; +}>; + +declare function datamodelEnumToSchemaEnum(datamodelEnum: DatamodelEnum): SchemaEnum; + +declare type DatamodelSchemaEnum = ReadonlyDeep_2<{ + name: string; + values: string[]; +}>; + +declare function datamodelSchemaEnumToSchemaEnum(datamodelSchemaEnum: DatamodelSchemaEnum): SchemaEnum; + +declare type DataRule = { + type: 'rowCountEq'; + args: number; +} | { + type: 'rowCountNeq'; + args: number; +} | { + type: 'affectedRowCountEq'; + args: number; +} | { + type: 'never'; +}; + +export { DbNull } + +export { DbNullClass } + +export declare const Debug: typeof debugCreate & { + enable(namespace: any): void; + disable(): any; + enabled(namespace: string): boolean; + log: (...args: string[]) => void; + formatters: {}; +}; + +/** + * Create a new debug instance with the given namespace. + * + * @example + * ```ts + * import Debug from '@prisma/debug' + * const debug = Debug('prisma:client') + * debug('Hello World') + * ``` + */ +declare function debugCreate(namespace: string): ((...args: any[]) => void) & { + color: string; + enabled: boolean; + namespace: string; + log: (...args: string[]) => void; + extend: () => void; +}; + +export { Decimal } + +/** + * Interface for any Decimal.js-like library + * Allows us to accept Decimal.js from different + * versions and some compatible alternatives + */ +export declare interface DecimalJsLike { + d: number[]; + e: number; + s: number; + toFixed(): string; +} + +export declare type DefaultArgs = InternalArgs<{}, {}, {}, {}>; + +export declare type DefaultSelection = Args extends { + omit: infer LocalOmit; +} ? ApplyOmit['default'], PatchFlat>>> : ApplyOmit['default'], ExtractGlobalOmit>>; + +export declare function defineDmmfProperty(target: object, runtimeDataModel: RuntimeDataModel): void; + +declare function defineExtension(ext: ExtensionArgs | ((client: Client) => Client)): (client: Client) => Client; + +declare const denylist: readonly ["$connect", "$disconnect", "$on", "$transaction", "$extends"]; + +declare type Deprecation = ReadonlyDeep_2<{ + sinceVersion: string; + reason: string; + plannedRemovalVersion?: string; +}>; + +declare type DeserializedResponse = Array>; + +export declare function deserializeJsonResponse(result: unknown): unknown; + +export declare function deserializeRawResult(response: RawResponse): DeserializedResponse; + +export declare type DevTypeMapDef = { + meta: { + modelProps: string; + }; + model: { + [Model in PropertyKey]: { + [Operation in PropertyKey]: DevTypeMapFnDef; + }; + }; + other: { + [Operation in PropertyKey]: DevTypeMapFnDef; + }; +}; + +export declare type DevTypeMapFnDef = { + args: any; + result: any; + payload: OperationPayload; +}; + +export declare namespace DMMF { + export { + datamodelEnumToSchemaEnum, + datamodelSchemaEnumToSchemaEnum, + Document_2 as Document, + Mappings, + OtherOperationMappings, + DatamodelEnum, + DatamodelSchemaEnum, + SchemaEnum, + EnumValue, + Datamodel, + uniqueIndex, + PrimaryKey, + Model, + FieldKind, + FieldNamespace, + FieldLocation, + Field, + FieldDefault, + FieldDefaultScalar, + Index, + IndexType, + IndexField, + SortOrder, + Schema, + Query, + QueryOutput, + TypeRef, + InputTypeRef, + SchemaArg, + OutputType, + SchemaField, + OutputTypeRef, + Deprecation, + InputType, + FieldRefType, + FieldRefAllowType, + ModelMapping, + ModelAction, + ReadonlyDeep_2 as ReadonlyDeep + } +} + +declare namespace DMMF_2 { + export { + datamodelEnumToSchemaEnum, + datamodelSchemaEnumToSchemaEnum, + Document_2 as Document, + Mappings, + OtherOperationMappings, + DatamodelEnum, + DatamodelSchemaEnum, + SchemaEnum, + EnumValue, + Datamodel, + uniqueIndex, + PrimaryKey, + Model, + FieldKind, + FieldNamespace, + FieldLocation, + Field, + FieldDefault, + FieldDefaultScalar, + Index, + IndexType, + IndexField, + SortOrder, + Schema, + Query, + QueryOutput, + TypeRef, + InputTypeRef, + SchemaArg, + OutputType, + SchemaField, + OutputTypeRef, + Deprecation, + InputType, + FieldRefType, + FieldRefAllowType, + ModelMapping, + ModelAction, + ReadonlyDeep_2 as ReadonlyDeep + } +} + +export declare function dmmfToRuntimeDataModel(dmmfDataModel: DMMF_2.Datamodel): RuntimeDataModel; + +declare type Document_2 = ReadonlyDeep_2<{ + datamodel: Datamodel; + schema: Schema; + mappings: Mappings; +}>; + +/** + * A generic driver adapter factory that allows the user to instantiate a + * driver adapter. The query and result types are specific to the adapter. + */ +declare interface DriverAdapterFactory extends AdapterInfo { + /** + * Instantiate a driver adapter. + */ + connect(): Promise>; +} + +declare type DynamicArgType = ArgType | { + arity: 'tuple'; + elements: ArgType[]; +}; + +/** Client */ +export declare type DynamicClientExtensionArgs> = { + [P in keyof C_]: unknown; +} & { + [K: symbol]: { + ctx: Optional, ITXClientDenyList> & { + $parent: Optional, ITXClientDenyList>; + }; + }; +}; + +export declare type DynamicClientExtensionThis> = { + [P in keyof ExtArgs['client']]: Return; +} & { + [P in Exclude]: DynamicModelExtensionThis, ExtArgs>; +} & { + [P in Exclude]: P extends keyof ClientOtherOps ? ClientOtherOps[P] : never; +} & { + [P in Exclude]: DynamicClientExtensionThisBuiltin[P]; +} & { + [K: symbol]: { + types: TypeMap['other']; + }; +}; + +export declare type DynamicClientExtensionThisBuiltin> = { + $extends: ExtendsHook<'extends', TypeMapCb, ExtArgs, Call>; + $transaction

= P extends 'findUnique' | 'findFirst' ? null : never; + +export declare type DynamicModelExtensionOperationFn = {} extends TypeMap['model'][M]['operations'][P]['args'] ? (args?: Exact) => DynamicModelExtensionFnResult> : (args: Exact) => DynamicModelExtensionFnResult>; + +export declare type DynamicModelExtensionThis> = { + [P in keyof ExtArgs['model'][Uncapitalize]]: Return][P]>; +} & { + [P in Exclude]>]: DynamicModelExtensionOperationFn; +} & { + [P in Exclude<'fields', keyof ExtArgs['model'][Uncapitalize]>]: TypeMap['model'][M]['fields']; +} & { + [K: symbol]: { + types: TypeMap['model'][M]; + }; +}; + +/** Query */ +export declare type DynamicQueryExtensionArgs = { + [K in keyof Q_]: K extends '$allOperations' ? (args: { + model?: string; + operation: string; + args: any; + query: (args: any) => PrismaPromise; + }) => Promise : K extends '$allModels' ? { + [P in keyof Q_[K] | keyof TypeMap['model'][keyof TypeMap['model']]['operations'] | '$allOperations']?: P extends '$allOperations' ? DynamicQueryExtensionCb : P extends keyof TypeMap['model'][keyof TypeMap['model']]['operations'] ? DynamicQueryExtensionCb : never; + } : K extends TypeMap['meta']['modelProps'] ? { + [P in keyof Q_[K] | keyof TypeMap['model'][ModelKey]['operations'] | '$allOperations']?: P extends '$allOperations' ? DynamicQueryExtensionCb, keyof TypeMap['model'][ModelKey]['operations']> : P extends keyof TypeMap['model'][ModelKey]['operations'] ? DynamicQueryExtensionCb, P> : never; + } : K extends keyof TypeMap['other']['operations'] ? DynamicQueryExtensionCb<[TypeMap], 0, 'other', K> : never; +}; + +export declare type DynamicQueryExtensionCb = >(args: A) => Promise; + +export declare type DynamicQueryExtensionCbArgs = (_1 extends unknown ? _2 extends unknown ? { + args: DynamicQueryExtensionCbArgsArgs; + model: _0 extends 0 ? undefined : _1; + operation: _2; + query: >(args: A) => PrismaPromise; +} : never : never) & { + query: (args: DynamicQueryExtensionCbArgsArgs) => PrismaPromise; +}; + +export declare type DynamicQueryExtensionCbArgsArgs = _2 extends '$queryRaw' | '$executeRaw' ? Sql : TypeMap[_0][_1]['operations'][_2]['args']; + +/** Result */ +export declare type DynamicResultExtensionArgs = { + [K in keyof R_]: { + [P in keyof R_[K]]?: { + needs?: DynamicResultExtensionNeeds, R_[K][P]>; + compute(data: DynamicResultExtensionData, R_[K][P]>): any; + }; + }; +}; + +export declare type DynamicResultExtensionData = GetFindResult; + +export declare type DynamicResultExtensionNeeds = { + [K in keyof S]: K extends keyof TypeMap['model'][M]['payload']['scalars'] ? S[K] : never; +} & { + [N in keyof TypeMap['model'][M]['payload']['scalars']]?: boolean; +}; + +export { empty } + +export declare type EmptyToUnknown = T; + +declare interface Engine { + /** The name of the engine. This is meant to be consumed externally */ + readonly name: string; + onBeforeExit(callback: () => Promise): void; + start(): Promise; + stop(): Promise; + version(forceRun?: boolean): Promise | string; + request(query: JsonQuery, options: RequestOptions): Promise>; + requestBatch(queries: JsonQuery[], options: RequestBatchOptions): Promise[]>; + transaction(action: 'start', headers: Transaction_2.TransactionHeaders, options: Transaction_2.Options): Promise>; + transaction(action: 'commit', headers: Transaction_2.TransactionHeaders, info: Transaction_2.InteractiveTransactionInfo): Promise; + transaction(action: 'rollback', headers: Transaction_2.TransactionHeaders, info: Transaction_2.InteractiveTransactionInfo): Promise; +} + +declare interface EngineConfig { + enableDebugLogs?: boolean; + prismaPath?: string; + logQueries?: boolean; + logLevel?: 'info' | 'warn'; + clientVersion: string; + previewFeatures?: string[]; + activeProvider?: string; + logEmitter: LogEmitter; + transactionOptions: Transaction_2.Options; + /** + * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-pg`. + */ + adapter?: SqlDriverAdapterFactory; + /** + * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database. + */ + accelerateUrl?: string; + /** + * The contents of the schema encoded into a string + */ + inlineSchema: string; + /** + * The helper for interaction with OTEL tracing + * @remarks enabling is determined by the client and @prisma/instrumentation package + */ + tracingHelper: TracingHelper; + /** + * Web Assembly module loading configuration + */ + compilerWasm?: CompilerWasmLoadingConfig; + /** + * SQL commenter plugins that add metadata to SQL queries as comments. + * Each plugin receives query context and returns key-value pairs. + */ + sqlCommenters?: SqlCommenterPlugin[]; +} + +declare type EngineEvent = E extends QueryEventType ? QueryEvent : LogEvent; + +declare type EngineEventType = QueryEventType | LogEventType; + +declare type EngineSpan = { + id: EngineSpanId; + parentId: string | null; + name: string; + startTime: HrTime; + endTime: HrTime; + kind: EngineSpanKind; + attributes?: Record; + links?: EngineSpanId[]; +}; + +declare type EngineSpanId = string; + +declare type EngineSpanKind = 'client' | 'internal'; + +declare type EnumValue = ReadonlyDeep_2<{ + name: string; + dbName: string | null; +}>; + +export declare type Equals = (() => T extends A ? 1 : 2) extends (() => T extends B ? 1 : 2) ? 1 : 0; + +declare type ErrorFormat = 'pretty' | 'colorless' | 'minimal'; + +declare type EventCallback = [E] extends ['beforeExit'] ? () => Promise : [E] extends [LogLevel] ? (event: EngineEvent) => void : never; + +export declare type Exact = (A extends unknown ? (W extends A ? { + [K in keyof A]: Exact; +} : W) : never) | (A extends Narrowable ? A : never); + +/** + * Defines Exception. + * + * string or an object with one of (message or name or code) and optional stack + */ +declare type Exception = ExceptionWithCode | ExceptionWithMessage | ExceptionWithName | string; + +declare interface ExceptionWithCode { + code: string | number; + name?: string; + message?: string; + stack?: string; +} + +declare interface ExceptionWithMessage { + code?: string | number; + message: string; + name?: string; + stack?: string; +} + +declare interface ExceptionWithName { + code?: string | number; + message?: string; + name: string; + stack?: string; +} + +declare type ExtendedEventType = LogLevel | 'beforeExit'; + +declare interface ExtendedSpanOptions extends SpanOptions { + /** The name of the span */ + name: string; + internal?: boolean; + /** Whether it propagates context (?=true) */ + active?: boolean; + /** The context to append the span to */ + context?: Context; +} + +/** $extends, defineExtension */ +export declare interface ExtendsHook, TypeMap extends TypeMapDef = Call> { + extArgs: ExtArgs; + , MergedArgs extends InternalArgs = MergeExtArgs>(extension: ((client: DynamicClientExtensionThis) => { + $extends: { + extArgs: Args; + }; + }) | { + name?: string; + query?: DynamicQueryExtensionArgs; + result?: DynamicResultExtensionArgs & R; + model?: DynamicModelExtensionArgs & M; + client?: DynamicClientExtensionArgs & C; + }): { + extends: DynamicClientExtensionThis, TypeMapCb, MergedArgs>; + define: (client: any) => { + $extends: { + extArgs: Args; + }; + }; + }[Variant]; +} + +export declare type ExtensionArgs = Optional; + +declare namespace Extensions { + export { + defineExtension, + getExtensionContext + } +} +export { Extensions } + +declare namespace Extensions_2 { + export { + InternalArgs, + DefaultArgs, + GetPayloadResultExtensionKeys, + GetPayloadResultExtensionObject, + GetPayloadResult, + GetSelect, + GetOmit, + DynamicQueryExtensionArgs, + DynamicQueryExtensionCb, + DynamicQueryExtensionCbArgs, + DynamicQueryExtensionCbArgsArgs, + DynamicResultExtensionArgs, + DynamicResultExtensionNeeds, + DynamicResultExtensionData, + DynamicModelExtensionArgs, + DynamicModelExtensionThis, + DynamicModelExtensionOperationFn, + DynamicModelExtensionFnResult, + DynamicModelExtensionFnResultBase, + DynamicModelExtensionFluentApi, + DynamicModelExtensionFnResultNull, + DynamicClientExtensionArgs, + DynamicClientExtensionThis, + ClientBuiltInProp, + DynamicClientExtensionThisBuiltin, + ExtendsHook, + MergeExtArgs, + AllModelsToStringIndex, + TypeMapDef, + DevTypeMapDef, + DevTypeMapFnDef, + ClientOptionDef, + ClientOtherOps, + TypeMapCbDef, + ModelKey, + RequiredExtensionArgs as UserArgs + } +} + +export declare type ExtractGlobalOmit = Options extends { + omit: { + [K in ModelName]: infer GlobalOmit; + }; +} ? GlobalOmit : {}; + +declare type Field = ReadonlyDeep_2<{ + kind: FieldKind; + name: string; + isRequired: boolean; + isList: boolean; + isUnique: boolean; + isId: boolean; + isReadOnly: boolean; + isGenerated?: boolean; + isUpdatedAt?: boolean; + /** + * Describes the data type in the same the way it is defined in the Prisma schema: + * BigInt, Boolean, Bytes, DateTime, Decimal, Float, Int, JSON, String, $ModelName + */ + type: string; + /** + * Native database type, if specified. + * For example, `@db.VarChar(191)` is encoded as `['VarChar', ['191']]`, + * `@db.Text` is encoded as `['Text', []]`. + */ + nativeType?: [string, string[]] | null; + dbName?: string | null; + hasDefaultValue: boolean; + default?: FieldDefault | FieldDefaultScalar | FieldDefaultScalar[]; + relationFromFields?: string[]; + relationToFields?: string[]; + relationOnDelete?: string; + relationOnUpdate?: string; + relationName?: string; + documentation?: string; +}>; + +declare type FieldDefault = ReadonlyDeep_2<{ + name: string; + args: Array; +}>; + +declare type FieldDefaultScalar = string | boolean | number; + +declare type FieldInitializer = { + type: 'value'; + value: PrismaValue; +} | { + type: 'lastInsertId'; +}; + +declare type FieldKind = 'scalar' | 'object' | 'enum' | 'unsupported'; + +declare type FieldLocation = 'scalar' | 'inputObjectTypes' | 'outputObjectTypes' | 'enumTypes' | 'fieldRefTypes'; + +declare type FieldNamespace = 'model' | 'prisma'; + +declare type FieldOperation = { + type: 'set'; + value: PrismaValue; +} | { + type: 'add'; + value: PrismaValue; +} | { + type: 'subtract'; + value: PrismaValue; +} | { + type: 'multiply'; + value: PrismaValue; +} | { + type: 'divide'; + value: PrismaValue; +}; + +/** + * A reference to a specific field of a specific model + */ +export declare interface FieldRef { + readonly modelName: Model; + readonly name: string; + readonly typeName: FieldType; + readonly isList: boolean; +} + +declare type FieldRefAllowType = TypeRef<'scalar' | 'enumTypes'>; + +declare type FieldRefType = ReadonlyDeep_2<{ + name: string; + allowTypes: FieldRefAllowType[]; + fields: SchemaArg[]; +}>; + +declare type FieldScalarType = { + type: 'string' | 'int' | 'bigint' | 'float' | 'boolean' | 'json' | 'object' | 'datetime' | 'decimal' | 'unsupported'; +} | { + type: 'enum'; + name: string; +} | { + type: 'bytes'; + encoding: 'array' | 'base64' | 'hex'; +}; + +declare type FieldType = { + arity: Arity; +} & FieldScalarType; + +declare type FluentOperation = 'findUnique' | 'findUniqueOrThrow' | 'findFirst' | 'findFirstOrThrow' | 'create' | 'update' | 'upsert' | 'delete'; + +export declare interface Fn { + params: Params; + returns: Returns; +} + +declare type Fragment = { + type: 'stringChunk'; + chunk: string; +} | { + type: 'parameter'; +} | { + type: 'parameterTuple'; +} | { + type: 'parameterTupleList'; + itemPrefix: string; + itemSeparator: string; + itemSuffix: string; + groupSeparator: string; +}; + +export declare type GetAggregateResult

= { + [K in keyof A as K extends Aggregate ? K : never]: K extends '_count' ? A[K] extends true ? number : Count : { + [J in keyof A[K] & string]: P['scalars'][J] | null; + }; +}; + +export declare type GetBatchResult = { + count: number; +}; + +export declare type GetCountResult = A extends { + select: infer S; +} ? (S extends true ? number : Count) : number; + +declare function getExtensionContext(that: T): Context_2; + +export declare type GetFindResult

= Equals extends 1 ? DefaultSelection : A extends { + select: infer S extends object; +} & Record | { + include: infer I extends object; +} & Record ? { + [K in keyof S | keyof I as (S & I)[K] extends false | undefined | Skip | null ? never : K]: (S & I)[K] extends object ? P extends SelectablePayloadFields ? O extends OperationPayload ? GetFindResult[] : never : P extends SelectablePayloadFields ? O extends OperationPayload ? GetFindResult | SelectField & null : never : K extends '_count' ? Count> : never : P extends SelectablePayloadFields ? O extends OperationPayload ? DefaultSelection[] : never : P extends SelectablePayloadFields ? O extends OperationPayload ? DefaultSelection | SelectField & null : never : P extends { + scalars: { + [k in K]: infer O; + }; + } ? O : K extends '_count' ? Count : never; +} & (A extends { + include: any; +} & Record ? DefaultSelection : unknown) : DefaultSelection; + +export declare type GetGroupByResult

= A extends { + by: string[]; +} ? Array & { + [K in A['by'][number]]: P['scalars'][K]; +}> : A extends { + by: string; +} ? Array & { + [K in A['by']]: P['scalars'][K]; +}> : {}[]; + +export declare type GetOmit = { + [K in (string extends keyof R ? never : keyof R) | BaseKeys]?: boolean | ExtraType; +}; + +export declare type GetPayloadResult, R extends InternalArgs['result'][string]> = Omit> & GetPayloadResultExtensionObject; + +export declare type GetPayloadResultExtensionKeys = KR; + +export declare type GetPayloadResultExtensionObject = { + [K in GetPayloadResultExtensionKeys]: R[K] extends () => { + compute: (...args: any) => infer C; + } ? C : never; +}; + +export declare function getPrismaClient(config: GetPrismaClientConfig): { + new (optionsArg: PrismaClientOptions): { + _originalClient: any; + _runtimeDataModel: RuntimeDataModel; + _requestHandler: RequestHandler; + _connectionPromise?: Promise | undefined; + _disconnectionPromise?: Promise | undefined; + _engineConfig: EngineConfig; + _accelerateEngineConfig: AccelerateEngineConfig; + _clientVersion: string; + _errorFormat: ErrorFormat; + _tracingHelper: TracingHelper; + _previewFeatures: string[]; + _activeProvider: string; + _globalOmit?: GlobalOmitOptions | undefined; + _extensions: MergedExtensionsList; + /** + * @remarks This is used internally by Policy, do not rename or remove + */ + _engine: Engine; + /** + * A fully constructed/applied Client that references the parent + * PrismaClient. This is used for Client extensions only. + */ + _appliedParent: any; + _createPrismaPromise: PrismaPromiseFactory; + $on(eventType: E, callback: EventCallback): any; + $connect(): Promise; + /** + * Disconnect from the database + */ + $disconnect(): Promise; + /** + * Executes a raw query and always returns a number + */ + $executeRawInternal(transaction: PrismaPromiseTransaction | undefined, clientMethod: string, args: RawQueryArgs, middlewareArgsMapper?: MiddlewareArgsMapper): Promise; + /** + * Executes a raw query provided through a safe tag function + * @see https://github.com/prisma/prisma/issues/7142 + * + * @param query + * @param values + * @returns + */ + $executeRaw(query: TemplateStringsArray | Sql, ...values: any[]): PrismaPromise_2; + /** + * Unsafe counterpart of `$executeRaw` that is susceptible to SQL injections + * @see https://github.com/prisma/prisma/issues/7142 + * + * @param query + * @param values + * @returns + */ + $executeRawUnsafe(query: string, ...values: RawValue[]): PrismaPromise_2; + /** + * Executes a raw command only for MongoDB + * + * @param command + * @returns + */ + $runCommandRaw(command: Record): PrismaPromise_2; + /** + * Executes a raw query and returns selected data + */ + $queryRawInternal(transaction: PrismaPromiseTransaction | undefined, clientMethod: string, args: RawQueryArgs, middlewareArgsMapper?: MiddlewareArgsMapper): Promise; + /** + * Executes a raw query provided through a safe tag function + * @see https://github.com/prisma/prisma/issues/7142 + * + * @param query + * @param values + * @returns + */ + $queryRaw(query: TemplateStringsArray | Sql, ...values: any[]): PrismaPromise_2; + /** + * Counterpart to $queryRaw, that returns strongly typed results + * @param typedSql + */ + $queryRawTyped(typedSql: UnknownTypedSql): PrismaPromise_2; + /** + * Unsafe counterpart of `$queryRaw` that is susceptible to SQL injections + * @see https://github.com/prisma/prisma/issues/7142 + * + * @param query + * @param values + * @returns + */ + $queryRawUnsafe(query: string, ...values: RawValue[]): PrismaPromise_2; + /** + * Execute a batch of requests in a transaction + * @param requests + * @param options + */ + _transactionWithArray({ promises, options, }: { + promises: Array>; + options?: BatchTransactionOptions; + }): Promise; + /** + * Perform a long-running transaction + * @param callback + * @param options + * @returns + */ + _transactionWithCallback({ callback, options, }: { + callback: (client: Client) => Promise; + options?: Options; + }): Promise; + _createItxClient(transaction: PrismaPromiseInteractiveTransaction): Client; + /** + * Execute queries within a transaction + * @param input a callback or a query list + * @param options to set timeouts (callback) + * @returns + */ + $transaction(input: any, options?: any): Promise; + /** + * Runs the middlewares over params before executing a request + * @param internalParams + * @returns + */ + _request(internalParams: InternalRequestParams): Promise; + _executeRequest({ args, clientMethod, dataPath, callsite, action, model, argsMapper, transaction, unpacker, otelParentCtx, customDataProxyFetch, }: InternalRequestParams): Promise; + /** + * Shortcut for checking a preview flag + * @param feature preview flag + * @returns + */ + _hasPreviewFlag(feature: string): boolean; + $extends: typeof $extends; + readonly [Symbol.toStringTag]: string; + }; +}; + +/** + * Config that is stored into the generated client. When the generated client is + * loaded, this same config is passed to {@link getPrismaClient} which creates a + * closure with that config around a non-instantiated [[PrismaClient]]. + */ +export declare type GetPrismaClientConfig = { + runtimeDataModel: RuntimeDataModel; + previewFeatures: string[]; + clientVersion: string; + engineVersion: string; + activeProvider: ActiveConnectorType; + /** + * The contents of the schema encoded into a string + */ + inlineSchema: string; + /** + * Optional wasm loading configuration + */ + compilerWasm?: CompilerWasmLoadingConfig; +}; + +export declare type GetResult = { + findUnique: GetFindResult | null; + findUniqueOrThrow: GetFindResult; + findFirst: GetFindResult | null; + findFirstOrThrow: GetFindResult; + findMany: GetFindResult[]; + create: GetFindResult; + createMany: GetBatchResult; + createManyAndReturn: GetFindResult[]; + update: GetFindResult; + updateMany: GetBatchResult; + updateManyAndReturn: GetFindResult[]; + upsert: GetFindResult; + delete: GetFindResult; + deleteMany: GetBatchResult; + aggregate: GetAggregateResult; + count: GetCountResult; + groupBy: GetGroupByResult; + $queryRaw: unknown; + $queryRawTyped: unknown; + $executeRaw: number; + $queryRawUnsafe: unknown; + $executeRawUnsafe: number; + $runCommandRaw: JsonObject; + findRaw: JsonObject; + aggregateRaw: JsonObject; +}[OperationName]; + +export declare function getRuntime(): GetRuntimeOutput; + +declare type GetRuntimeOutput = { + id: RuntimeName; + prettyName: string; + isEdge: boolean; +}; + +export declare type GetSelect, R extends InternalArgs['result'][string], KR extends keyof R = string extends keyof R ? never : keyof R> = { + [K in KR | keyof Base]?: K extends KR ? boolean : Base[K]; +}; + +declare type GlobalOmitOptions = { + [modelName: string]: { + [fieldName: string]: boolean; + }; +}; + +declare type HandleErrorParams = { + args: JsArgs; + error: any; + clientMethod: string; + callsite?: CallSite; + transaction?: PrismaPromiseTransaction; + modelName?: string; + globalOmit?: GlobalOmitOptions; +}; + +declare type HrTime = [number, number]; + +/** + * Defines High-Resolution Time. + * + * The first number, HrTime[0], is UNIX Epoch time in seconds since 00:00:00 UTC on 1 January 1970. + * The second number, HrTime[1], represents the partial second elapsed since Unix Epoch time represented by first number in nanoseconds. + * For example, 2021-01-01T12:30:10.150Z in UNIX Epoch time in milliseconds is represented as 1609504210150. + * The first number is calculated by converting and truncating the Epoch time in milliseconds to seconds: + * HrTime[0] = Math.trunc(1609504210150 / 1000) = 1609504210. + * The second number is calculated by converting the digits after the decimal point of the subtraction, (1609504210150 / 1000) - HrTime[0], to nanoseconds: + * HrTime[1] = Number((1609504210.150 - HrTime[0]).toFixed(9)) * 1e9 = 150000000. + * This is represented in HrTime format as [1609504210, 150000000]. + */ +declare type HrTime_2 = [number, number]; + +declare type Index = ReadonlyDeep_2<{ + model: string; + type: IndexType; + isDefinedOnField: boolean; + name?: string; + dbName?: string; + algorithm?: string; + clustered?: boolean; + fields: IndexField[]; +}>; + +declare type IndexField = ReadonlyDeep_2<{ + name: string; + sortOrder?: SortOrder; + length?: number; + operatorClass?: string; +}>; + +declare type IndexType = 'id' | 'normal' | 'unique' | 'fulltext'; + +declare type InMemoryOps = { + pagination: Pagination | null; + distinct: string[] | null; + reverse: boolean; + linkingFields: string[] | null; + nested: Record; +}; + +/** + * Matches a JSON array. + * Unlike \`JsonArray\`, readonly arrays are assignable to this type. + */ +export declare interface InputJsonArray extends ReadonlyArray { +} + +/** + * Matches a JSON object. + * Unlike \`JsonObject\`, this type allows undefined and read-only properties. + */ +export declare type InputJsonObject = { + readonly [Key in string]?: InputJsonValue | null; +}; + +/** + * Matches any valid value that can be used as an input for operations like + * create and update as the value of a JSON field. Unlike \`JsonValue\`, this + * type allows read-only arrays and read-only object properties and disallows + * \`null\` at the top level. + * + * \`null\` cannot be used as the value of a JSON field because its meaning + * would be ambiguous. Use \`Prisma.JsonNull\` to store the JSON null value or + * \`Prisma.DbNull\` to clear the JSON value and set the field to the database + * NULL value instead. + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-by-null-values + */ +export declare type InputJsonValue = string | number | boolean | InputJsonObject | InputJsonArray | { + toJSON(): unknown; +}; + +declare type InputType = ReadonlyDeep_2<{ + name: string; + constraints: { + maxNumFields: number | null; + minNumFields: number | null; + fields?: string[]; + }; + meta?: { + source?: string; + grouping?: string; + }; + fields: SchemaArg[]; +}>; + +declare type InputTypeRef = TypeRef<'scalar' | 'inputObjectTypes' | 'enumTypes' | 'fieldRefTypes'>; + +declare type InteractiveTransactionInfo = { + /** + * Transaction ID returned by the query engine. + */ + id: string; + /** + * Arbitrary payload the meaning of which depends on the `Engine` implementation. + * It is currently not used in `LibraryEngine`. + */ + payload: Payload; +}; + +declare type InteractiveTransactionOptions = Transaction_2.InteractiveTransactionInfo; + +export declare type InternalArgs = { + result: { + [K in keyof R]: { + [P in keyof R[K]]: () => R[K][P]; + }; + }; + model: { + [K in keyof M]: { + [P in keyof M[K]]: () => M[K][P]; + }; + }; + query: { + [K in keyof Q]: { + [P in keyof Q[K]]: () => Q[K][P]; + }; + }; + client: { + [K in keyof C]: () => C[K]; + }; +}; + +declare type InternalRequestParams = { + /** + * The original client method being called. + * Even though the rootField / operation can be changed, + * this method stays as it is, as it's what the user's + * code looks like + */ + clientMethod: string; + /** + * Name of js model that triggered the request. Might be used + * for warnings or error messages + */ + jsModelName?: string; + callsite?: CallSite; + transaction?: PrismaPromiseTransaction; + unpacker?: Unpacker; + otelParentCtx?: Context; + /** Used to "desugar" a user input into an "expanded" one */ + argsMapper?: (args?: UserArgs_2) => UserArgs_2; + /** Used to convert args for middleware and back */ + middlewareArgsMapper?: MiddlewareArgsMapper; + /** Used for Accelerate client extension via Data Proxy */ + customDataProxyFetch?: AccelerateExtensionFetchDecorator; +} & Omit; + +export { isAnyNull } + +export { isDbNull } + +export { isJsonNull } + +declare type IsolationLevel = 'READ UNCOMMITTED' | 'READ COMMITTED' | 'REPEATABLE READ' | 'SNAPSHOT' | 'SERIALIZABLE'; + +declare type IsolationLevel_2 = 'ReadUncommitted' | 'ReadCommitted' | 'RepeatableRead' | 'Snapshot' | 'Serializable'; + +declare function isSkip(value: unknown): value is Skip; + +export declare function isTypedSql(value: unknown): value is UnknownTypedSql; + +export declare type ITXClientDenyList = (typeof denylist)[number]; + +export declare const itxClientDenyList: readonly (string | symbol)[]; + +declare interface Job { + resolve: (data: any) => void; + reject: (data: any) => void; + request: any; +} + +export { join } + +declare type JoinExpression = { + child: QueryPlanNode; + on: [left: string, right: string][]; + parentField: string; + isRelationUnique: boolean; +}; + +export declare type JsArgs = { + select?: Selection_2; + include?: Selection_2; + omit?: Omission; + [argName: string]: JsInputValue; +}; + +export declare type JsInputValue = null | undefined | string | number | boolean | bigint | Uint8Array | Date | DecimalJsLike | ObjectEnumValue | RawParameters | JsonConvertible | FieldRef | JsInputValue[] | Skip | { + [key: string]: JsInputValue; +}; + +declare type JsonArgumentValue = number | string | boolean | null | RawTaggedValue | JsonArgumentValue[] | { + [key: string]: JsonArgumentValue; +}; + +/** + * From https://github.com/sindresorhus/type-fest/ + * Matches a JSON array. + */ +export declare interface JsonArray extends Array { +} + +export declare type JsonBatchQuery = { + batch: JsonQuery[]; + transaction?: { + isolationLevel?: IsolationLevel_2; + }; +}; + +export declare interface JsonConvertible { + toJSON(): unknown; +} + +declare type JsonFieldSelection = { + arguments?: Record | RawTaggedValue; + selection: JsonSelectionSet; +}; + +export { JsonNull } + +export { JsonNullClass } + +/** + * From https://github.com/sindresorhus/type-fest/ + * Matches a JSON object. + * This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. + */ +export declare type JsonObject = { + [Key in string]?: JsonValue; +}; + +export declare type JsonQuery = { + modelName?: string; + action: JsonQueryAction_2; + query: JsonFieldSelection; +}; + +declare type JsonQueryAction = 'findUnique' | 'findUniqueOrThrow' | 'findFirst' | 'findFirstOrThrow' | 'findMany' | 'createOne' | 'createMany' | 'createManyAndReturn' | 'updateOne' | 'updateMany' | 'updateManyAndReturn' | 'deleteOne' | 'deleteMany' | 'upsertOne' | 'aggregate' | 'groupBy' | 'executeRaw' | 'queryRaw' | 'runCommandRaw' | 'findRaw' | 'aggregateRaw'; + +declare type JsonQueryAction_2 = 'findUnique' | 'findUniqueOrThrow' | 'findFirst' | 'findFirstOrThrow' | 'findMany' | 'createOne' | 'createMany' | 'createManyAndReturn' | 'updateOne' | 'updateMany' | 'updateManyAndReturn' | 'deleteOne' | 'deleteMany' | 'upsertOne' | 'aggregate' | 'groupBy' | 'executeRaw' | 'queryRaw' | 'runCommandRaw' | 'findRaw' | 'aggregateRaw'; + +declare type JsonSelectionSet = { + $scalars?: boolean; + $composites?: boolean; +} & { + [fieldName: string]: boolean | JsonFieldSelection; +}; + +/** + * From https://github.com/sindresorhus/type-fest/ + * Matches any valid JSON value. + */ +export declare type JsonValue = string | number | boolean | JsonObject | JsonArray | null; + +export declare type JsOutputValue = null | string | number | boolean | bigint | Uint8Array | Date | Decimal | JsOutputValue[] | { + [key: string]: JsOutputValue; +}; + +export declare type JsPromise = Promise & {}; + +/** + * A pointer from the current {@link Span} to another span in the same trace or + * in a different trace. + * Few examples of Link usage. + * 1. Batch Processing: A batch of elements may contain elements associated + * with one or more traces/spans. Since there can only be one parent + * SpanContext, Link is used to keep reference to SpanContext of all + * elements in the batch. + * 2. Public Endpoint: A SpanContext in incoming client request on a public + * endpoint is untrusted from service provider perspective. In such case it + * is advisable to start a new trace with appropriate sampling decision. + * However, it is desirable to associate incoming SpanContext to new trace + * initiated on service provider side so two traces (from Client and from + * Service Provider) can be correlated. + */ +declare interface Link { + /** The {@link SpanContext} of a linked span. */ + context: SpanContext; + /** A set of {@link SpanAttributes} on the link. */ + attributes?: SpanAttributes; + /** Count of attributes of the link that were dropped due to collection limits */ + droppedAttributesCount?: number; +} + +declare type LocationInFile = { + fileName: string; + lineNumber: number | null; + columnNumber: number | null; +}; + +declare type LogDefinition = { + level: LogLevel; + emit: 'stdout' | 'event'; +}; + +/** + * Typings for the events we emit. + * + * @remarks + * If this is updated, our edge runtime shim needs to be updated as well. + */ +declare type LogEmitter = { + on(event: E, listener: (event: EngineEvent) => void): LogEmitter; + emit(event: QueryEventType, payload: QueryEvent): boolean; + emit(event: LogEventType, payload: LogEvent): boolean; +}; + +declare type LogEvent = { + timestamp: Date; + message: string; + target: string; +}; + +declare type LogEventType = 'info' | 'warn' | 'error'; + +declare type LogLevel = 'info' | 'query' | 'warn' | 'error'; + +/** + * Generates more strict variant of an enum which, unlike regular enum, + * throws on non-existing property access. This can be useful in following situations: + * - we have an API, that accepts both `undefined` and `SomeEnumType` as an input + * - enum values are generated dynamically from DMMF. + * + * In that case, if using normal enums and no compile-time typechecking, using non-existing property + * will result in `undefined` value being used, which will be accepted. Using strict enum + * in this case will help to have a runtime exception, telling you that you are probably doing something wrong. + * + * Note: if you need to check for existence of a value in the enum you can still use either + * `in` operator or `hasOwnProperty` function. + * + * @param definition + * @returns + */ +export declare function makeStrictEnum>(definition: T): T; + +export declare function makeTypedQueryFactory(sql: string): (...values: any[]) => TypedSql; + +declare type Mappings = ReadonlyDeep_2<{ + modelOperations: ModelMapping[]; + otherOperations: { + read: string[]; + write: string[]; + }; +}>; + +/** + * Class that holds the list of all extensions, applied to particular instance, + * as well as resolved versions of the components that need to apply on + * different levels. Main idea of this class: avoid re-resolving as much of the + * stuff as possible when new extensions are added while also delaying the + * resolve until the point it is actually needed. For example, computed fields + * of the model won't be resolved unless the model is actually queried. Neither + * adding extensions with `client` component only cause other components to + * recompute. + */ +declare class MergedExtensionsList { + private head?; + private constructor(); + static empty(): MergedExtensionsList; + static single(extension: ExtensionArgs): MergedExtensionsList; + isEmpty(): boolean; + append(extension: ExtensionArgs): MergedExtensionsList; + getAllComputedFields(dmmfModelName: string): ComputedFieldsMap | undefined; + getAllClientExtensions(): ClientArg | undefined; + getAllModelExtensions(dmmfModelName: string): ModelArg | undefined; + getAllQueryCallbacks(jsModelName: string, operation: string): any; + getAllBatchQueryCallbacks(): BatchQueryOptionsCb[]; +} + +export declare type MergeExtArgs, Args extends Record> = ComputeDeep & AllModelsToStringIndex>; + +declare type MiddlewareArgsMapper = { + requestArgsToMiddlewareArgs(requestArgs: RequestArgs): MiddlewareArgs; + middlewareArgsToRequestArgs(middlewareArgs: MiddlewareArgs): RequestArgs; +}; + +declare type Model = ReadonlyDeep_2<{ + name: string; + dbName: string | null; + schema: string | null; + fields: Field[]; + uniqueFields: string[][]; + uniqueIndexes: uniqueIndex[]; + documentation?: string; + primaryKey: PrimaryKey | null; + isGenerated?: boolean; +}>; + +declare enum ModelAction { + findUnique = "findUnique", + findUniqueOrThrow = "findUniqueOrThrow", + findFirst = "findFirst", + findFirstOrThrow = "findFirstOrThrow", + findMany = "findMany", + create = "create", + createMany = "createMany", + createManyAndReturn = "createManyAndReturn", + update = "update", + updateMany = "updateMany", + updateManyAndReturn = "updateManyAndReturn", + upsert = "upsert", + delete = "delete", + deleteMany = "deleteMany", + groupBy = "groupBy", + count = "count",// TODO: count does not actually exist in DMMF + aggregate = "aggregate", + findRaw = "findRaw", + aggregateRaw = "aggregateRaw" +} + +export declare type ModelArg = { + [MethodName in string]: unknown; +}; + +export declare type ModelArgs = { + model: { + [ModelName in string]: ModelArg; + }; +}; + +export declare type ModelKey = M extends keyof TypeMap['model'] ? M : Capitalize; + +declare type ModelMapping = ReadonlyDeep_2<{ + model: string; + plural: string; + findUnique?: string | null; + findUniqueOrThrow?: string | null; + findFirst?: string | null; + findFirstOrThrow?: string | null; + findMany?: string | null; + create?: string | null; + createMany?: string | null; + createManyAndReturn?: string | null; + update?: string | null; + updateMany?: string | null; + updateManyAndReturn?: string | null; + upsert?: string | null; + delete?: string | null; + deleteMany?: string | null; + aggregate?: string | null; + groupBy?: string | null; + count?: string | null; + findRaw?: string | null; + aggregateRaw?: string | null; +}>; + +export declare type ModelQueryOptionsCb = (args: ModelQueryOptionsCbArgs) => Promise; + +export declare type ModelQueryOptionsCbArgs = { + model: string; + operation: string; + args: JsArgs; + query: (args: JsArgs) => Promise; +}; + +declare type MultiBatchResponse = { + type: 'multi'; + plans: QueryPlanNode[]; +}; + +export declare type NameArgs = { + name?: string; +}; + +export declare type Narrow = { + [K in keyof A]: A[K] extends Function ? A[K] : Narrow; +} | (A extends Narrowable ? A : never); + +export declare type Narrowable = string | number | bigint | boolean | []; + +export declare type NeverToUnknown = [T] extends [never] ? unknown : T; + +export { NullTypes } + +export { ObjectEnumValue } + +declare const officialPrismaAdapters: readonly ["@prisma/adapter-planetscale", "@prisma/adapter-neon", "@prisma/adapter-libsql", "@prisma/adapter-better-sqlite3", "@prisma/adapter-d1", "@prisma/adapter-pg", "@prisma/adapter-mssql", "@prisma/adapter-mariadb"]; + +export declare type Omission = Record; + +declare type Omit_2 = { + [P in keyof T as P extends K ? never : P]: T[P]; +}; +export { Omit_2 as Omit } + +export declare type OmitValue = Key extends keyof Omit ? Omit[Key] : false; + +export declare type Operation = 'findFirst' | 'findFirstOrThrow' | 'findUnique' | 'findUniqueOrThrow' | 'findMany' | 'create' | 'createMany' | 'createManyAndReturn' | 'update' | 'updateMany' | 'updateManyAndReturn' | 'upsert' | 'delete' | 'deleteMany' | 'aggregate' | 'count' | 'groupBy' | '$queryRaw' | '$executeRaw' | '$queryRawUnsafe' | '$executeRawUnsafe' | 'findRaw' | 'aggregateRaw' | '$runCommandRaw'; + +export declare type OperationPayload = { + name: string; + scalars: { + [ScalarName in string]: unknown; + }; + objects: { + [ObjectName in string]: unknown; + }; + composites: { + [CompositeName in string]: unknown; + }; +}; + +export declare type Optional = { + [P in K & keyof O]?: O[P]; +} & { + [P in Exclude]: O[P]; +}; + +export declare type OptionalFlat = { + [K in keyof T]?: T[K]; +}; + +export declare type OptionalKeys = { + [K in keyof O]-?: {} extends Pick_2 ? K : never; +}[keyof O]; + +declare type Options = { + /** Timeout for starting the transaction */ + maxWait?: number; + /** Timeout for the transaction body */ + timeout?: number; + /** Transaction isolation level */ + isolationLevel?: IsolationLevel_2; +}; + +export declare type Or = { + 0: { + 0: 0; + 1: 1; + }; + 1: { + 0: 1; + 1: 1; + }; +}[A][B]; + +declare type OtherOperationMappings = ReadonlyDeep_2<{ + read: string[]; + write: string[]; +}>; + +declare type OutputType = ReadonlyDeep_2<{ + name: string; + fields: SchemaField[]; +}>; + +declare type OutputTypeRef = TypeRef<'scalar' | 'outputObjectTypes' | 'enumTypes'>; + +declare type Pagination = { + cursor: Record | null; + take: number | null; + skip: number | null; +}; + +export declare function Param<$Type, $Value extends string>(name: $Value): Param<$Type, $Value>; + +export declare type Param = { + readonly name: $Value; +}; + +export declare type PatchFlat = O1 & Omit_2; + +export declare type Path = O extends unknown ? P extends [infer K, ...infer R] ? K extends keyof O ? Path : Default : O : never; + +export declare type Payload = T extends { + [K: symbol]: { + types: { + payload: any; + }; + }; +} ? T[symbol]['types']['payload'] : any; + +export declare type PayloadToResult = RenameAndNestPayloadKeys

> = { + [K in keyof O]?: O[K][K] extends any[] ? PayloadToResult[] : O[K][K] extends object ? PayloadToResult : O[K][K]; +}; + +declare type Pick_2 = { + [P in keyof T as P extends K ? P : never]: T[P]; +}; +export { Pick_2 as Pick } + +declare interface PlaceholderFormat { + prefix: string; + hasNumbering: boolean; +} + +declare type PrimaryKey = ReadonlyDeep_2<{ + name: string | null; + fields: string[]; +}>; + +export { PrismaClientInitializationError } + +export { PrismaClientKnownRequestError } + +/** + * Since Prisma 7, a PrismaClient needs either an adapter or an accelerateUrl. + * The two options are mutually exclusive. + */ +declare type PrismaClientMutuallyExclusiveOptions = { + /** + * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-pg`. + */ + adapter: SqlDriverAdapterFactory; + accelerateUrl?: never; +} | { + /** + * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database. + */ + accelerateUrl: string; + adapter?: never; +}; + +export declare type PrismaClientOptions = PrismaClientMutuallyExclusiveOptions & { + /** + * @default "colorless" + */ + errorFormat?: ErrorFormat; + /** + * The default values for Transaction options + * maxWait ?= 2000 + * timeout ?= 5000 + */ + transactionOptions?: Transaction_2.Options; + /** + * @example + * \`\`\` + * // Defaults to stdout + * log: ['query', 'info', 'warn'] + * + * // Emit as events + * log: [ + * { emit: 'stdout', level: 'query' }, + * { emit: 'stdout', level: 'info' }, + * { emit: 'stdout', level: 'warn' } + * ] + * \`\`\` + * Read more in our [docs](https://pris.ly/d/logging). + */ + log?: Array; + omit?: GlobalOmitOptions; + /** + * SQL commenter plugins that add metadata to SQL queries as comments. + * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/ + * + * @example + * ```ts + * new PrismaClient({ + * adapter: new PrismaPg({ connectionString }), + * comments: [ + * traceContext(), + * queryInsights(), + * ], + * }) + * ``` + */ + comments?: SqlCommenterPlugin[]; + /** + * @internal + * You probably don't want to use this. \`__internal\` is used by internal tooling. + */ + __internal?: { + debug?: boolean; + /** This can be used for testing purposes */ + configOverride?: (config: GetPrismaClientConfig) => GetPrismaClientConfig; + }; +}; + +export { PrismaClientRustPanicError } + +export { PrismaClientUnknownRequestError } + +export { PrismaClientValidationError } + +declare type PrismaOperationSpec = { + args: TArgs; + action: TAction; + model: string; +}; + +export declare interface PrismaPromise extends Promise { + [Symbol.toStringTag]: 'PrismaPromise'; +} + +/** + * Prisma's `Promise` that is backwards-compatible. All additions on top of the + * original `Promise` are optional so that it can be backwards-compatible. + * @see [[createPrismaPromise]] + */ +declare interface PrismaPromise_2 = any> extends Promise { + get spec(): TSpec; + /** + * Extension of the original `.then` function + * @param onfulfilled same as regular promises + * @param onrejected same as regular promises + * @param transaction transaction options + */ + then(onfulfilled?: (value: TResult) => R1 | PromiseLike, onrejected?: (error: unknown) => R2 | PromiseLike, transaction?: PrismaPromiseTransaction): Promise; + /** + * Extension of the original `.catch` function + * @param onrejected same as regular promises + * @param transaction transaction options + */ + catch(onrejected?: ((reason: any) => R | PromiseLike) | undefined | null, transaction?: PrismaPromiseTransaction): Promise; + /** + * Extension of the original `.finally` function + * @param onfinally same as regular promises + * @param transaction transaction options + */ + finally(onfinally?: (() => void) | undefined | null, transaction?: PrismaPromiseTransaction): Promise; + /** + * Called when executing a batch of regular tx + * @param transaction transaction options for batch tx + */ + requestTransaction?(transaction: PrismaPromiseBatchTransaction): PromiseLike; +} + +declare type PrismaPromiseBatchTransaction = { + kind: 'batch'; + id: number; + isolationLevel?: IsolationLevel_2; + index: number; + lock: PromiseLike; +}; + +declare type PrismaPromiseCallback = (transaction?: PrismaPromiseTransaction) => Promise; + +/** + * Creates a [[PrismaPromise]]. It is Prisma's implementation of `Promise` which + * is essentially a proxy for `Promise`. All the transaction-compatible client + * methods return one, this allows for pre-preparing queries without executing + * them until `.then` is called. It's the foundation of Prisma's query batching. + * @param callback that will be wrapped within our promise implementation + * @see [[PrismaPromise]] + * @returns + */ +declare type PrismaPromiseFactory = >(callback: PrismaPromiseCallback, op?: T) => PrismaPromise_2; + +declare type PrismaPromiseInteractiveTransaction = { + kind: 'itx'; + id: string; + payload: PayloadType; +}; + +declare type PrismaPromiseTransaction = PrismaPromiseBatchTransaction | PrismaPromiseInteractiveTransaction; + +declare type PrismaValue = string | boolean | number | PrismaValue[] | null | Record | PrismaValuePlaceholder | PrismaValueGenerator; + +declare type PrismaValueGenerator = { + prisma__type: 'generatorCall'; + prisma__value: { + name: string; + args: PrismaValue[]; + }; +}; + +declare type PrismaValuePlaceholder = { + prisma__type: 'param'; + prisma__value: { + name: string; + type: string; + }; +}; + +export declare const PrivateResultType: unique symbol; + +declare type Provider = 'mysql' | 'postgres' | 'sqlite' | 'sqlserver'; + +declare namespace Public { + export { + validator + } +} +export { Public } + +declare namespace Public_2 { + export { + Args, + Result, + Payload, + PrismaPromise, + Operation, + Exact + } +} + +declare type Query = ReadonlyDeep_2<{ + name: string; + args: SchemaArg[]; + output: QueryOutput; +}>; + +declare interface Queryable extends AdapterInfo { + /** + * Execute a query and return its result. + */ + queryRaw(params: Query): Promise; + /** + * Execute a query and return the number of affected rows. + */ + executeRaw(params: Query): Promise; +} + +declare type QueryCompiler = { + compile(request: string): {}; + compileBatch(batchRequest: string): BatchResponse; + free(): void; +}; + +declare interface QueryCompilerConstructor { + new (options: QueryCompilerOptions): QueryCompiler; +} + +declare type QueryCompilerOptions = { + datamodel: string; + provider: Provider; + connectionInfo: ConnectionInfo; +}; + +declare type QueryEngineResultData = { + data: T; +}; + +declare type QueryEvent = { + timestamp: Date; + query: string; + params: string; + duration: number; + target: string; +}; + +declare type QueryEventType = 'query'; + +declare type QueryIntrospectionBuiltinType = 'int' | 'bigint' | 'float' | 'double' | 'string' | 'enum' | 'bytes' | 'bool' | 'char' | 'decimal' | 'json' | 'xml' | 'uuid' | 'datetime' | 'date' | 'time' | 'int-array' | 'bigint-array' | 'float-array' | 'double-array' | 'string-array' | 'char-array' | 'bytes-array' | 'bool-array' | 'decimal-array' | 'json-array' | 'xml-array' | 'uuid-array' | 'datetime-array' | 'date-array' | 'time-array' | 'null' | 'unknown'; + +declare type QueryMiddlewareParams = { + /** The model this is executed on */ + model?: string; + /** The action that is being handled */ + action: Action; + /** TODO what is this */ + dataPath: string[]; + /** TODO what is this */ + runInTransaction: boolean; + args?: UserArgs_2; +}; + +export declare type QueryOptions = { + query: { + [ModelName in string]: { + [ModelAction in string]: ModelQueryOptionsCb; + } | QueryOptionsCb; + }; +}; + +export declare type QueryOptionsCb = (args: QueryOptionsCbArgs) => Promise; + +export declare type QueryOptionsCbArgs = { + model?: string; + operation: string; + args: JsArgs | RawQueryArgs; + query: (args: JsArgs | RawQueryArgs) => Promise; +}; + +declare type QueryOutput = ReadonlyDeep_2<{ + name: string; + isRequired: boolean; + isList: boolean; +}>; + +declare type QueryPlanBinding = { + name: string; + expr: QueryPlanNode; +}; + +declare type QueryPlanDbQuery = { + type: 'rawSql'; + sql: string; + args: PrismaValue[]; + argTypes: ArgType[]; +} | { + type: 'templateSql'; + fragments: Fragment[]; + placeholderFormat: PlaceholderFormat; + args: PrismaValue[]; + argTypes: DynamicArgType[]; + chunkable: boolean; +}; + +declare type QueryPlanNode = { + type: 'value'; + args: PrismaValue; +} | { + type: 'seq'; + args: QueryPlanNode[]; +} | { + type: 'get'; + args: { + name: string; + }; +} | { + type: 'let'; + args: { + bindings: QueryPlanBinding[]; + expr: QueryPlanNode; + }; +} | { + type: 'getFirstNonEmpty'; + args: { + names: string[]; + }; +} | { + type: 'query'; + args: QueryPlanDbQuery; +} | { + type: 'execute'; + args: QueryPlanDbQuery; +} | { + type: 'reverse'; + args: QueryPlanNode; +} | { + type: 'sum'; + args: QueryPlanNode[]; +} | { + type: 'concat'; + args: QueryPlanNode[]; +} | { + type: 'unique'; + args: QueryPlanNode; +} | { + type: 'required'; + args: QueryPlanNode; +} | { + type: 'join'; + args: { + parent: QueryPlanNode; + children: JoinExpression[]; + }; +} | { + type: 'mapField'; + args: { + field: string; + records: QueryPlanNode; + }; +} | { + type: 'transaction'; + args: QueryPlanNode; +} | { + type: 'dataMap'; + args: { + expr: QueryPlanNode; + structure: ResultNode; + enums: Record>; + }; +} | { + type: 'validate'; + args: { + expr: QueryPlanNode; + rules: DataRule[]; + } & ValidationError; +} | { + type: 'if'; + args: { + value: QueryPlanNode; + rule: DataRule; + then: QueryPlanNode; + else: QueryPlanNode; + }; +} | { + type: 'unit'; +} | { + type: 'diff'; + args: { + from: QueryPlanNode; + to: QueryPlanNode; + fields: string[]; + }; +} | { + type: 'initializeRecord'; + args: { + expr: QueryPlanNode; + fields: Record; + }; +} | { + type: 'mapRecord'; + args: { + expr: QueryPlanNode; + fields: Record; + }; +} | { + type: 'process'; + args: { + expr: QueryPlanNode; + operations: InMemoryOps; + }; +}; + +export { raw } + +export declare type RawParameters = { + __prismaRawParameters__: true; + values: string; +}; + +export declare type RawQueryArgs = Sql | UnknownTypedSql | [query: string, ...values: RawValue[]]; + +declare type RawResponse = { + columns: string[]; + types: QueryIntrospectionBuiltinType[]; + rows: unknown[][]; +}; + +declare type RawTaggedValue = { + $type: 'Raw'; + value: unknown; +}; + +export { RawValue } + +export declare type ReadonlyDeep = { + readonly [K in keyof T]: ReadonlyDeep; +}; + +declare type ReadonlyDeep_2 = { + +readonly [K in keyof O]: ReadonlyDeep_2; +}; + +declare type Record_2 = { + [P in T]: U; +}; +export { Record_2 as Record } + +export declare type RenameAndNestPayloadKeys

= { + [K in keyof P as K extends 'scalars' | 'objects' | 'composites' ? keyof P[K] : never]: P[K]; +}; + +declare type RequestBatchOptions = { + transaction?: TransactionOptions_2; + traceparent?: string; + numTry?: number; + containsWrite: boolean; + customDataProxyFetch?: AccelerateExtensionFetchDecorator; +}; + +declare class RequestHandler { + client: Client; + dataloader: DataLoader; + private logEmitter?; + constructor(client: Client, logEmitter?: LogEmitter); + request(params: RequestParams): Promise; + mapQueryEngineResult({ dataPath, unpacker }: RequestParams, response: QueryEngineResultData): any; + /** + * Handles the error and logs it, logging the error is done synchronously waiting for the event + * handlers to finish. + */ + handleAndLogRequestError(params: HandleErrorParams): never; + handleRequestError({ error, clientMethod, callsite, transaction, args, modelName, globalOmit, }: HandleErrorParams): never; + sanitizeMessage(message: any): any; + unpack(data: unknown, dataPath: string[], unpacker?: Unpacker): any; + get [Symbol.toStringTag](): string; +} + +declare type RequestOptions = { + traceparent?: string; + numTry?: number; + interactiveTransaction?: InteractiveTransactionOptions; + isWrite: boolean; + customDataProxyFetch?: AccelerateExtensionFetchDecorator; +}; + +declare type RequestParams = { + modelName?: string; + action: Action; + protocolQuery: JsonQuery; + dataPath: string[]; + clientMethod: string; + callsite?: CallSite; + transaction?: PrismaPromiseTransaction; + extensions: MergedExtensionsList; + args?: any; + headers?: Record; + unpacker?: Unpacker; + otelParentCtx?: Context; + otelChildCtx?: Context; + globalOmit?: GlobalOmitOptions; + customDataProxyFetch?: AccelerateExtensionFetchDecorator; +}; + +declare type RequiredExtensionArgs = NameArgs & ResultArgs & ModelArgs & ClientArgs & QueryOptions; +export { RequiredExtensionArgs } +export { RequiredExtensionArgs as UserArgs } + +export declare type RequiredKeys = { + [K in keyof O]-?: {} extends Pick_2 ? never : K; +}[keyof O]; + +export declare type Result = T extends { + [K: symbol]: { + types: { + payload: any; + }; + }; +} ? GetResult : GetResult<{ + composites: {}; + objects: {}; + scalars: {}; + name: ''; +}, {}, F>; + +export declare type Result_2 = Result; + +declare namespace Result_3 { + export { + Count, + GetFindResult, + SelectablePayloadFields, + SelectField, + DefaultSelection, + UnwrapPayload, + ApplyOmit, + OmitValue, + GetCountResult, + Aggregate, + GetAggregateResult, + GetBatchResult, + GetGroupByResult, + GetResult, + ExtractGlobalOmit + } +} + +export declare type ResultArg = { + [FieldName in string]: ResultFieldDefinition; +}; + +export declare type ResultArgs = { + result: { + [ModelName in string]: ResultArg; + }; +}; + +export declare type ResultArgsFieldCompute = (model: any) => unknown; + +export declare type ResultFieldDefinition = { + needs?: { + [FieldName in string]: boolean; + }; + compute: ResultArgsFieldCompute; +}; + +declare type ResultNode = { + type: 'affectedRows'; +} | { + type: 'object'; + fields: Record; + serializedName: string | null; + skipNulls: boolean; +} | { + type: 'field'; + dbName: string; + fieldType: FieldType; +}; + +export declare type Return = T extends (...args: any[]) => infer R ? R : T; + +export declare type RuntimeDataModel = { + readonly models: Record; + readonly enums: Record; + readonly types: Record; +}; + +declare type RuntimeEnum = Omit; + +declare type RuntimeModel = Omit; + +declare type RuntimeName = 'workerd' | 'deno' | 'netlify' | 'node' | 'bun' | 'edge-light' | ''; + +declare type Schema = ReadonlyDeep_2<{ + rootQueryType?: string; + rootMutationType?: string; + inputObjectTypes: { + model?: InputType[]; + prisma?: InputType[]; + }; + outputObjectTypes: { + model: OutputType[]; + prisma: OutputType[]; + }; + enumTypes: { + model?: DatamodelSchemaEnum[]; + prisma: DatamodelSchemaEnum[]; + }; + fieldRefTypes: { + prisma?: FieldRefType[]; + }; +}>; + +declare type SchemaArg = ReadonlyDeep_2<{ + name: string; + comment?: string; + isNullable: boolean; + isRequired: boolean; + inputTypes: InputTypeRef[]; + requiresOtherFields?: string[]; + deprecation?: Deprecation; +}>; + +declare type SchemaEnum = ReadonlyDeep_2<{ + name: string; + data: { + key: string; + value: string; + }[]; +}>; + +declare type SchemaField = ReadonlyDeep_2<{ + name: string; + isNullable?: boolean; + outputType: OutputTypeRef; + args: SchemaArg[]; + deprecation?: Deprecation; + documentation?: string; +}>; + +export declare type Select = T extends U ? T : never; + +export declare type SelectablePayloadFields = { + objects: { + [k in K]: O; + }; +} | { + composites: { + [k in K]: O; + }; +}; + +export declare type SelectField

, K extends PropertyKey> = P extends { + objects: Record; +} ? P['objects'][K] : P extends { + composites: Record; +} ? P['composites'][K] : never; + +declare type Selection_2 = Record; +export { Selection_2 as Selection } + +export declare function serializeJsonQuery({ modelName, action, args, runtimeDataModel, extensions, callsite, clientMethod, errorFormat, clientVersion, previewFeatures, globalOmit, }: SerializeParams): JsonQuery; + +declare type SerializeParams = { + runtimeDataModel: RuntimeDataModel; + modelName?: string; + action: Action; + args?: JsArgs; + extensions?: MergedExtensionsList; + callsite?: CallSite; + clientMethod: string; + clientVersion: string; + errorFormat: ErrorFormat; + previewFeatures: string[]; + globalOmit?: GlobalOmitOptions; +}; + +declare class Skip { + constructor(param?: symbol); + ifUndefined(value: T | undefined): T | Skip; +} + +export declare const skip: Skip; + +declare type SortOrder = 'asc' | 'desc'; + +/** + * An interface that represents a span. A span represents a single operation + * within a trace. Examples of span might include remote procedure calls or a + * in-process function calls to sub-components. A Trace has a single, top-level + * "root" Span that in turn may have zero or more child Spans, which in turn + * may have children. + * + * Spans are created by the {@link Tracer.startSpan} method. + */ +declare interface Span { + /** + * Returns the {@link SpanContext} object associated with this Span. + * + * Get an immutable, serializable identifier for this span that can be used + * to create new child spans. Returned SpanContext is usable even after the + * span ends. + * + * @returns the SpanContext object associated with this Span. + */ + spanContext(): SpanContext; + /** + * Sets an attribute to the span. + * + * Sets a single Attribute with the key and value passed as arguments. + * + * @param key the key for this attribute. + * @param value the value for this attribute. Setting a value null or + * undefined is invalid and will result in undefined behavior. + */ + setAttribute(key: string, value: SpanAttributeValue): this; + /** + * Sets attributes to the span. + * + * @param attributes the attributes that will be added. + * null or undefined attribute values + * are invalid and will result in undefined behavior. + */ + setAttributes(attributes: SpanAttributes): this; + /** + * Adds an event to the Span. + * + * @param name the name of the event. + * @param [attributesOrStartTime] the attributes that will be added; these are + * associated with this event. Can be also a start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [startTime] start time of the event. + */ + addEvent(name: string, attributesOrStartTime?: SpanAttributes | TimeInput, startTime?: TimeInput): this; + /** + * Adds a single link to the span. + * + * Links added after the creation will not affect the sampling decision. + * It is preferred span links be added at span creation. + * + * @param link the link to add. + */ + addLink(link: Link): this; + /** + * Adds multiple links to the span. + * + * Links added after the creation will not affect the sampling decision. + * It is preferred span links be added at span creation. + * + * @param links the links to add. + */ + addLinks(links: Link[]): this; + /** + * Sets a status to the span. If used, this will override the default Span + * status. Default is {@link SpanStatusCode.UNSET}. SetStatus overrides the value + * of previous calls to SetStatus on the Span. + * + * @param status the SpanStatus to set. + */ + setStatus(status: SpanStatus): this; + /** + * Updates the Span name. + * + * This will override the name provided via {@link Tracer.startSpan}. + * + * Upon this update, any sampling behavior based on Span name will depend on + * the implementation. + * + * @param name the Span name. + */ + updateName(name: string): this; + /** + * Marks the end of Span execution. + * + * Call to End of a Span MUST not have any effects on child spans. Those may + * still be running and can be ended later. + * + * Do not return `this`. The Span generally should not be used after it + * is ended so chaining is not desired in this context. + * + * @param [endTime] the time to set as Span's end time. If not provided, + * use the current time as the span's end time. + */ + end(endTime?: TimeInput): void; + /** + * Returns the flag whether this span will be recorded. + * + * @returns true if this Span is active and recording information like events + * with the `AddEvent` operation and attributes using `setAttributes`. + */ + isRecording(): boolean; + /** + * Sets exception as a span event + * @param exception the exception the only accepted values are string or Error + * @param [time] the time to set as Span's event time. If not provided, + * use the current time. + */ + recordException(exception: Exception, time?: TimeInput): void; +} + +/** + * @deprecated please use {@link Attributes} + */ +declare type SpanAttributes = Attributes; + +/** + * @deprecated please use {@link AttributeValue} + */ +declare type SpanAttributeValue = AttributeValue; + +declare type SpanCallback = (span?: Span, context?: Context) => R; + +/** + * A SpanContext represents the portion of a {@link Span} which must be + * serialized and propagated along side of a {@link Baggage}. + */ +declare interface SpanContext { + /** + * The ID of the trace that this span belongs to. It is worldwide unique + * with practically sufficient probability by being made as 16 randomly + * generated bytes, encoded as a 32 lowercase hex characters corresponding to + * 128 bits. + */ + traceId: string; + /** + * The ID of the Span. It is globally unique with practically sufficient + * probability by being made as 8 randomly generated bytes, encoded as a 16 + * lowercase hex characters corresponding to 64 bits. + */ + spanId: string; + /** + * Only true if the SpanContext was propagated from a remote parent. + */ + isRemote?: boolean; + /** + * Trace flags to propagate. + * + * It is represented as 1 byte (bitmap). Bit to represent whether trace is + * sampled or not. When set, the least significant bit documents that the + * caller may have recorded trace data. A caller who does not record trace + * data out-of-band leaves this flag unset. + * + * see {@link TraceFlags} for valid flag values. + */ + traceFlags: number; + /** + * Tracing-system-specific info to propagate. + * + * The tracestate field value is a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * More Info: https://www.w3.org/TR/trace-context/#tracestate-field + * + * Examples: + * Single tracing system (generic format): + * tracestate: rojo=00f067aa0ba902b7 + * Multiple tracing systems (with different formatting): + * tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE + */ + traceState?: TraceState; +} + +declare enum SpanKind { + /** Default value. Indicates that the span is used internally. */ + INTERNAL = 0, + /** + * Indicates that the span covers server-side handling of an RPC or other + * remote request. + */ + SERVER = 1, + /** + * Indicates that the span covers the client-side wrapper around an RPC or + * other remote request. + */ + CLIENT = 2, + /** + * Indicates that the span describes producer sending a message to a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + PRODUCER = 3, + /** + * Indicates that the span describes consumer receiving a message from a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + CONSUMER = 4 +} + +/** + * Options needed for span creation + */ +declare interface SpanOptions { + /** + * The SpanKind of a span + * @default {@link SpanKind.INTERNAL} + */ + kind?: SpanKind; + /** A span's attributes */ + attributes?: SpanAttributes; + /** {@link Link}s span to other spans */ + links?: Link[]; + /** A manually specified start time for the created `Span` object. */ + startTime?: TimeInput; + /** The new span should be a root span. (Ignore parent from context). */ + root?: boolean; +} + +declare interface SpanStatus { + /** The status code of this message. */ + code: SpanStatusCode; + /** A developer-facing error message. */ + message?: string; +} + +/** + * An enumeration of status codes. + */ +declare enum SpanStatusCode { + /** + * The default status. + */ + UNSET = 0, + /** + * The operation has been validated by an Application developer or + * Operator to have completed successfully. + */ + OK = 1, + /** + * The operation contains an error. + */ + ERROR = 2 +} + +export { Sql } + +/** + * Information about a compacted batch query (e.g. multiple independent + * `findUnique` queries automatically merged into a single `SELECT` SQL + * statement). + */ +declare interface SqlCommenterCompactedQueryInfo { + /** + * The model name (e.g., "User", "Post"). + */ + readonly modelName: string; + /** + * The Prisma operation (e.g., "findUnique"). + */ + readonly action: SqlCommenterQueryAction; + /** + * The full query objects (selections, arguments, etc.). + * Specifics of the query representation are not part of the public API yet. + */ + readonly queries: ReadonlyArray; +} + +/** + * Context provided to SQL commenter plugins. + */ +export declare interface SqlCommenterContext { + /** + * Information about the Prisma query being executed. + */ + readonly query: SqlCommenterQueryInfo; + /** + * Raw SQL query generated from this Prisma query. + * + * It is always available when `PrismaClient` connects to the database and + * renders SQL queries directly. + * + * When using Prisma Accelerate, SQL rendering happens on Accelerate side and the raw + * SQL strings are not yet available when SQL commenter plugins are executed. + */ + readonly sql?: string; +} + +/** + * A SQL commenter plugin that returns key-value pairs to be added as comments. + * Return an empty object to add no comments. Keys with undefined values will be omitted. + * + * @example + * ```ts + * const myPlugin: SqlCommenterPlugin = (context) => { + * return { + * application: 'my-app', + * model: context.query.modelName ?? 'raw', + * // Conditional key - will be omitted if ctx.sql is undefined + * sqlLength: context.sql ? String(context.sql.length) : undefined, + * } + * } + * ``` + */ +export declare interface SqlCommenterPlugin { + (context: SqlCommenterContext): SqlCommenterTags; +} + +/** + * Prisma query type corresponding to this SQL query. + */ +declare type SqlCommenterQueryAction = JsonQueryAction; + +/** + * Information about the query or queries being executed. + * + * - `single`: A single query is being executed + * - `compacted`: Multiple queries have been compacted into a single SQL statement + */ +export declare type SqlCommenterQueryInfo = ({ + readonly type: 'single'; +} & SqlCommenterSingleQueryInfo) | ({ + readonly type: 'compacted'; +} & SqlCommenterCompactedQueryInfo); + +/** + * Information about a single Prisma query. + */ +export declare interface SqlCommenterSingleQueryInfo { + /** + * The model name (e.g., "User", "Post"). Undefined for raw queries. + */ + readonly modelName?: string; + /** + * The Prisma operation (e.g., "findMany", "createOne", "queryRaw"). + */ + readonly action: SqlCommenterQueryAction; + /** + * The full query object (selection, arguments, etc.). + * Specifics of the query representation are not part of the public API yet. + */ + readonly query: unknown; +} + +/** + * Key-value pairs to add as SQL comments. + * Keys with undefined values will be omitted from the final comment. + */ +export declare type SqlCommenterTags = { + readonly [key: string]: string | undefined; +}; + +declare interface SqlDriverAdapter extends SqlQueryable { + /** + * Execute multiple SQL statements separated by semicolon. + */ + executeScript(script: string): Promise; + /** + * Start new transaction. + */ + startTransaction(isolationLevel?: IsolationLevel): Promise; + /** + * Optional method that returns extra connection info + */ + getConnectionInfo?(): ConnectionInfo; + /** + * Dispose of the connection and release any resources. + */ + dispose(): Promise; +} + +export declare interface SqlDriverAdapterFactory extends DriverAdapterFactory { + connect(): Promise; +} + +declare type SqlQuery = { + sql: string; + args: Array; + argTypes: Array; +}; + +declare interface SqlQueryable extends Queryable { +} + +declare interface SqlResultSet { + /** + * List of column types appearing in a database query, in the same order as `columnNames`. + * They are used within the Query Engine to convert values from JS to Quaint values. + */ + columnTypes: Array; + /** + * List of column names appearing in a database query, in the same order as `columnTypes`. + */ + columnNames: Array; + /** + * List of rows retrieved from a database query. + * Each row is a list of values, whose length matches `columnNames` and `columnTypes`. + */ + rows: Array>; + /** + * The last ID of an `INSERT` statement, if any. + * This is required for `AUTO_INCREMENT` columns in databases based on MySQL and SQLite. + */ + lastInsertId?: string; +} + +export { sqltag } + +/** + * Defines TimeInput. + * + * hrtime, epoch milliseconds, performance.now() or Date + */ +declare type TimeInput = HrTime_2 | number | Date; + +export declare type ToTuple = T extends any[] ? T : [T]; + +declare interface TraceState { + /** + * Create a new TraceState which inherits from this TraceState and has the + * given key set. + * The new entry will always be added in the front of the list of states. + * + * @param key key of the TraceState entry. + * @param value value of the TraceState entry. + */ + set(key: string, value: string): TraceState; + /** + * Return a new TraceState which inherits from this TraceState but does not + * contain the given key. + * + * @param key the key for the TraceState entry to be removed. + */ + unset(key: string): TraceState; + /** + * Returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + * + * @param key with which the specified value is to be associated. + * @returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + */ + get(key: string): string | undefined; + /** + * Serializes the TraceState to a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * + * @returns the serialized string. + */ + serialize(): string; +} + +declare interface TracingHelper { + isEnabled(): boolean; + getTraceParent(context?: Context): string; + dispatchEngineSpans(spans: EngineSpan[]): void; + getActiveContext(): Context | undefined; + runInChildSpan(nameOrOptions: string | ExtendedSpanOptions, callback: SpanCallback): R; +} + +declare interface Transaction extends AdapterInfo, SqlQueryable { + /** + * Transaction options. + */ + readonly options: TransactionOptions; + /** + * Commit the transaction. + */ + commit(): Promise; + /** + * Roll back the transaction. + */ + rollback(): Promise; +} + +declare namespace Transaction_2 { + export { + IsolationLevel_2 as IsolationLevel, + Options, + InteractiveTransactionInfo, + TransactionHeaders + } +} + +declare type TransactionHeaders = { + traceparent?: string; +}; + +declare type TransactionOptions = { + usePhantomQuery: boolean; +}; + +declare type TransactionOptions_2 = { + kind: 'itx'; + options: InteractiveTransactionOptions; +} | { + kind: 'batch'; + options: BatchTransactionOptions; +}; + +export declare class TypedSql { + [PrivateResultType]: Result; + constructor(sql: string, values: Values); + get sql(): string; + get values(): Values; +} + +export declare type TypeMapCbDef = Fn<{ + extArgs: InternalArgs; +}, TypeMapDef>; + +/** Shared */ +export declare type TypeMapDef = Record; + +declare type TypeRef = { + isList: boolean; + type: string; + location: AllowedLocations; + namespace?: FieldNamespace; +}; + +declare namespace Types { + export { + Result_3 as Result, + Extensions_2 as Extensions, + Utils, + Public_2 as Public, + isSkip, + Skip, + skip, + UnknownTypedSql, + OperationPayload as Payload + } +} +export { Types } + +declare type uniqueIndex = ReadonlyDeep_2<{ + name: string; + fields: string[]; +}>; + +export declare type UnknownTypedSql = TypedSql; + +declare type Unpacker = (data: any) => any; + +export declare type UnwrapPayload

= {} extends P ? unknown : { + [K in keyof P]: P[K] extends { + scalars: infer S; + composites: infer C; + }[] ? Array> : P[K] extends { + scalars: infer S; + composites: infer C; + } | null ? S & UnwrapPayload | Select : never; +}; + +export declare type UnwrapPromise

= P extends Promise ? R : P; + +export declare type UnwrapTuple = { + [K in keyof Tuple]: K extends `${number}` ? Tuple[K] extends PrismaPromise ? X : UnwrapPromise : UnwrapPromise; +}; + +/** + * Input that flows from the user into the Client. + */ +declare type UserArgs_2 = any; + +declare namespace Utils { + export { + EmptyToUnknown, + NeverToUnknown, + PatchFlat, + Omit_2 as Omit, + Pick_2 as Pick, + ComputeDeep, + Compute, + OptionalFlat, + ReadonlyDeep, + Narrowable, + Narrow, + Exact, + Cast, + Record_2 as Record, + UnwrapPromise, + UnwrapTuple, + Path, + Fn, + Call, + RequiredKeys, + OptionalKeys, + Optional, + Return, + ToTuple, + RenameAndNestPayloadKeys, + PayloadToResult, + Select, + Equals, + Or, + JsPromise + } +} + +declare type ValidationError = { + error_identifier: 'RELATION_VIOLATION'; + context: { + relation: string; + modelA: string; + modelB: string; + }; +} | { + error_identifier: 'MISSING_RELATED_RECORD'; + context: { + model: string; + relation: string; + relationType: string; + operation: string; + neededFor?: string; + }; +} | { + error_identifier: 'MISSING_RECORD'; + context: { + operation: string; + }; +} | { + error_identifier: 'INCOMPLETE_CONNECT_INPUT'; + context: { + expectedRows: number; + }; +} | { + error_identifier: 'INCOMPLETE_CONNECT_OUTPUT'; + context: { + expectedRows: number; + relation: string; + relationType: string; + }; +} | { + error_identifier: 'RECORDS_NOT_CONNECTED'; + context: { + relation: string; + parent: string; + child: string; + }; +}; + +declare function validator(): (select: Exact) => S; + +declare function validator, O extends keyof C[M] & Operation>(client: C, model: M, operation: O): (select: Exact>) => S; + +declare function validator, O extends keyof C[M] & Operation, P extends keyof Args>(client: C, model: M, operation: O, prop: P): (select: Exact[P]>) => S; + +export { Value } + +export declare const warnOnce: (key: string, message: string, ...args: unknown[]) => void; + +export { } diff --git a/server/prisma/generated/client/runtime/client.js b/server/prisma/generated/client/runtime/client.js new file mode 100644 index 0000000..9298b12 --- /dev/null +++ b/server/prisma/generated/client/runtime/client.js @@ -0,0 +1,86 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file +"use strict";var El=Object.create;var $t=Object.defineProperty;var Tl=Object.getOwnPropertyDescriptor;var Pl=Object.getOwnPropertyNames;var Al=Object.getPrototypeOf,Sl=Object.prototype.hasOwnProperty;var oi=(e,t)=>()=>(e&&(t=e(e=0)),t);var L=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ae=(e,t)=>{for(var r in t)$t(e,r,{get:t[r],enumerable:!0})},si=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Pl(t))!Sl.call(e,i)&&i!==r&&$t(e,i,{get:()=>t[i],enumerable:!(n=Tl(t,i))||n.enumerable});return e};var V=(e,t,r)=>(r=e!=null?El(Al(e)):{},si(t||!e||!e.__esModule?$t(r,"default",{value:e,enumerable:!0}):r,e)),vl=e=>si($t({},"__esModule",{value:!0}),e);var Ei=L((Pm,Gl)=>{Gl.exports={name:"@prisma/engines-version",version:"7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3",main:"index.js",types:"index.d.ts",license:"Apache-2.0",author:"Tim Suchanek ",prisma:{enginesVersion:"0c8ef2ce45c83248ab3df073180d5eda9e8be7a3"},repository:{type:"git",url:"https://github.com/prisma/engines-wrapper.git",directory:"packages/engines-version"},devDependencies:{"@types/node":"18.19.76",typescript:"4.9.5"},files:["index.js","index.d.ts"],scripts:{build:"tsc -d"}}});var Ti=L(Vt=>{"use strict";Object.defineProperty(Vt,"__esModule",{value:!0});Vt.enginesVersion=void 0;Vt.enginesVersion=Ei().prisma.enginesVersion});var Ai=L((Sm,Pi)=>{"use strict";Pi.exports=e=>{let t=e.match(/^[ \t]*(?=\S)/gm);return t?t.reduce((r,n)=>Math.min(r,n.length),1/0):0}});var ki=L((Rm,Ri)=>{"use strict";Ri.exports=(e,t=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof e!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if(typeof t!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(t===0)return e;let n=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(n,r.indent.repeat(t))}});var Ii=L((Nm,jt)=>{"use strict";jt.exports=(e={})=>{let t;if(e.repoUrl)t=e.repoUrl;else if(e.user&&e.repo)t=`https://github.com/${e.user}/${e.repo}`;else throw new Error("You need to specify either the `repoUrl` option or both the `user` and `repo` options");let r=new URL(`${t}/issues/new`),n=["body","title","labels","template","milestone","assignee","projects"];for(let i of n){let o=e[i];if(o!==void 0){if(i==="labels"||i==="projects"){if(!Array.isArray(o))throw new TypeError(`The \`${i}\` option should be an array`);o=o.join(",")}r.searchParams.set(i,o)}}return r.toString()};jt.exports.default=jt.exports});var en=L((Cf,qi)=>{"use strict";qi.exports=function(){function e(t,r,n,i,o){return tn?n+1:t+1:i===o?r:r+1}return function(t,r){if(t===r)return 0;if(t.length>r.length){var n=t;t=r,r=n}for(var i=t.length,o=r.length;i>0&&t.charCodeAt(i-1)===r.charCodeAt(o-1);)i--,o--;for(var s=0;s{"use strict"});var Hi=oi(()=>{"use strict"});var Tn=L(he=>{"use strict";Object.defineProperty(he,"__esModule",{value:!0});he.anumber=En;he.abytes=ss;he.ahash=Ju;he.aexists=Wu;he.aoutput=Gu;function En(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function Hu(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function ss(e,...t){if(!Hu(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function Ju(e){if(typeof e!="function"||typeof e.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");En(e.outputLen),En(e.blockLen)}function Wu(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Gu(e,t){ss(e);let r=t.outputLen;if(e.length{"use strict";Object.defineProperty(m,"__esModule",{value:!0});m.add5L=m.add5H=m.add4H=m.add4L=m.add3H=m.add3L=m.rotlBL=m.rotlBH=m.rotlSL=m.rotlSH=m.rotr32L=m.rotr32H=m.rotrBL=m.rotrBH=m.rotrSL=m.rotrSH=m.shrSL=m.shrSH=m.toBig=void 0;m.fromBig=An;m.split=as;m.add=Es;var yr=BigInt(2**32-1),Pn=BigInt(32);function An(e,t=!1){return t?{h:Number(e&yr),l:Number(e>>Pn&yr)}:{h:Number(e>>Pn&yr)|0,l:Number(e&yr)|0}}function as(e,t=!1){let r=new Uint32Array(e.length),n=new Uint32Array(e.length);for(let i=0;iBigInt(e>>>0)<>>0);m.toBig=ls;var cs=(e,t,r)=>e>>>r;m.shrSH=cs;var us=(e,t,r)=>e<<32-r|t>>>r;m.shrSL=us;var ps=(e,t,r)=>e>>>r|t<<32-r;m.rotrSH=ps;var ds=(e,t,r)=>e<<32-r|t>>>r;m.rotrSL=ds;var ms=(e,t,r)=>e<<64-r|t>>>r-32;m.rotrBH=ms;var fs=(e,t,r)=>e>>>r-32|t<<64-r;m.rotrBL=fs;var gs=(e,t)=>t;m.rotr32H=gs;var ys=(e,t)=>e;m.rotr32L=ys;var hs=(e,t,r)=>e<>>32-r;m.rotlSH=hs;var ws=(e,t,r)=>t<>>32-r;m.rotlSL=ws;var xs=(e,t,r)=>t<>>64-r;m.rotlBH=xs;var bs=(e,t,r)=>e<>>64-r;m.rotlBL=bs;function Es(e,t,r,n){let i=(t>>>0)+(n>>>0);return{h:e+r+(i/2**32|0)|0,l:i|0}}var Ts=(e,t,r)=>(e>>>0)+(t>>>0)+(r>>>0);m.add3L=Ts;var Ps=(e,t,r,n)=>t+r+n+(e/2**32|0)|0;m.add3H=Ps;var As=(e,t,r,n)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0);m.add4L=As;var Ss=(e,t,r,n,i)=>t+r+n+i+(e/2**32|0)|0;m.add4H=Ss;var vs=(e,t,r,n,i)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0)+(i>>>0);m.add5L=vs;var Cs=(e,t,r,n,i,o)=>t+r+n+i+o+(e/2**32|0)|0;m.add5H=Cs;var Ku={fromBig:An,split:as,toBig:ls,shrSH:cs,shrSL:us,rotrSH:ps,rotrSL:ds,rotrBH:ms,rotrBL:fs,rotr32H:gs,rotr32L:ys,rotlSH:hs,rotlSL:ws,rotlBH:xs,rotlBL:bs,add:Es,add3L:Ts,add3H:Ps,add4L:As,add4H:Ss,add5H:Cs,add5L:vs};m.default=Ku});var ks=L(hr=>{"use strict";Object.defineProperty(hr,"__esModule",{value:!0});hr.crypto=void 0;var ce=require("node:crypto");hr.crypto=ce&&typeof ce=="object"&&"webcrypto"in ce?ce.webcrypto:ce&&typeof ce=="object"&&"randomBytes"in ce?ce:void 0});var Fs=L(x=>{"use strict";Object.defineProperty(x,"__esModule",{value:!0});x.Hash=x.nextTick=x.byteSwapIfBE=x.isLE=void 0;x.isBytes=zu;x.u8=Zu;x.u32=Yu;x.createView=Xu;x.rotr=ep;x.rotl=tp;x.byteSwap=Cn;x.byteSwap32=rp;x.bytesToHex=ip;x.hexToBytes=op;x.asyncLoop=ap;x.utf8ToBytes=Is;x.toBytes=wr;x.concatBytes=lp;x.checkOpts=cp;x.wrapConstructor=up;x.wrapConstructorWithOpts=pp;x.wrapXOFConstructorWithOpts=dp;x.randomBytes=mp;var Ue=ks(),vn=Tn();function zu(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Zu(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function Yu(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function Xu(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function ep(e,t){return e<<32-t|e>>>t}function tp(e,t){return e<>>32-t>>>0}x.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Cn(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}x.byteSwapIfBE=x.isLE?e=>e:e=>Cn(e);function rp(e){for(let t=0;tt.toString(16).padStart(2,"0"));function ip(e){(0,vn.abytes)(e);let t="";for(let r=0;r=ee._0&&e<=ee._9)return e-ee._0;if(e>=ee.A&&e<=ee.F)return e-(ee.A-10);if(e>=ee.a&&e<=ee.f)return e-(ee.a-10)}function op(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);let t=e.length,r=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(r);for(let i=0,o=0;i{};x.nextTick=sp;async function ap(e,t,r){let n=Date.now();for(let i=0;i=0&&oe().update(wr(n)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}function pp(e){let t=(n,i)=>e(i).update(wr(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}function dp(e){let t=(n,i)=>e(i).update(wr(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}function mp(e=32){if(Ue.crypto&&typeof Ue.crypto.getRandomValues=="function")return Ue.crypto.getRandomValues(new Uint8Array(e));if(Ue.crypto&&typeof Ue.crypto.randomBytes=="function")return Ue.crypto.randomBytes(e);throw new Error("crypto.getRandomValues must be defined")}});var Vs=L(S=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0});S.shake256=S.shake128=S.keccak_512=S.keccak_384=S.keccak_256=S.keccak_224=S.sha3_512=S.sha3_384=S.sha3_256=S.sha3_224=S.Keccak=void 0;S.keccakP=$s;var je=Tn(),Pt=Rs(),te=Fs(),Ns=[],_s=[],Ls=[],fp=BigInt(0),Tt=BigInt(1),gp=BigInt(2),yp=BigInt(7),hp=BigInt(256),wp=BigInt(113);for(let e=0,t=Tt,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],Ns.push(2*(5*n+r)),_s.push((e+1)*(e+2)/2%64);let i=fp;for(let o=0;o<7;o++)t=(t<>yp)*wp)%hp,t&gp&&(i^=Tt<<(Tt<r>32?(0,Pt.rotlBH)(e,t,r):(0,Pt.rotlSH)(e,t,r),Ds=(e,t,r)=>r>32?(0,Pt.rotlBL)(e,t,r):(0,Pt.rotlSL)(e,t,r);function $s(e,t=24){let r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let s=0;s<10;s++)r[s]=e[s]^e[s+10]^e[s+20]^e[s+30]^e[s+40];for(let s=0;s<10;s+=2){let a=(s+8)%10,l=(s+2)%10,c=r[l],u=r[l+1],p=Ms(c,u,1)^r[a],y=Ds(c,u,1)^r[a+1];for(let h=0;h<50;h+=10)e[s+h]^=p,e[s+h+1]^=y}let i=e[2],o=e[3];for(let s=0;s<24;s++){let a=_s[s],l=Ms(i,o,a),c=Ds(i,o,a),u=Ns[s];i=e[u],o=e[u+1],e[u]=l,e[u+1]=c}for(let s=0;s<50;s+=10){for(let a=0;a<10;a++)r[a]=e[s+a];for(let a=0;a<10;a++)e[s+a]^=~r[(a+2)%10]&r[(a+4)%10]}e[0]^=xp[n],e[1]^=bp[n]}r.fill(0)}var At=class e extends te.Hash{constructor(t,r,n,i=!1,o=24){if(super(),this.blockLen=t,this.suffix=r,this.outputLen=n,this.enableXOF=i,this.rounds=o,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,(0,je.anumber)(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=(0,te.u32)(this.state)}keccak(){te.isLE||(0,te.byteSwap32)(this.state32),$s(this.state32,this.rounds),te.isLE||(0,te.byteSwap32)(this.state32),this.posOut=0,this.pos=0}update(t){(0,je.aexists)(this);let{blockLen:r,state:n}=this;t=(0,te.toBytes)(t);let i=t.length;for(let o=0;o=n&&this.keccak();let s=Math.min(n-this.posOut,o-i);t.set(r.subarray(this.posOut,this.posOut+s),i),this.posOut+=s,i+=s}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return(0,je.anumber)(t),this.xofInto(new Uint8Array(t))}digestInto(t){if((0,je.aoutput)(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){let{blockLen:r,suffix:n,outputLen:i,rounds:o,enableXOF:s}=this;return t||(t=new e(r,n,i,s,o)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=o,t.suffix=n,t.outputLen=i,t.enableXOF=s,t.destroyed=this.destroyed,t}};S.Keccak=At;var ue=(e,t,r)=>(0,te.wrapConstructor)(()=>new At(t,e,r));S.sha3_224=ue(6,144,224/8);S.sha3_256=ue(6,136,256/8);S.sha3_384=ue(6,104,384/8);S.sha3_512=ue(6,72,512/8);S.keccak_224=ue(1,144,224/8);S.keccak_256=ue(1,136,256/8);S.keccak_384=ue(1,104,384/8);S.keccak_512=ue(1,72,512/8);var qs=(e,t,r)=>(0,te.wrapXOFConstructorWithOpts)((n={})=>new At(t,e,n.dkLen===void 0?r:n.dkLen,!0));S.shake128=qs(31,168,128/8);S.shake256=qs(31,136,256/8)});var Gs=L((dx,pe)=>{"use strict";var{sha3_512:Ep}=Vs(),js=24,St=32,Rn=(e=4,t=Math.random)=>{let r="";for(;r.lengthBs(Ep(e)).toString(36).slice(1),Us=Array.from({length:26},(e,t)=>String.fromCharCode(t+97)),Tp=e=>Us[Math.floor(e()*Us.length)],Hs=({globalObj:e=typeof global<"u"?global:typeof window<"u"?window:{},random:t=Math.random}={})=>{let r=Object.keys(e).toString(),n=r.length?r+Rn(St,t):Rn(St,t);return Qs(n).substring(0,St)},Js=e=>()=>e++,Pp=476782367,Ws=({random:e=Math.random,counter:t=Js(Math.floor(e()*Pp)),length:r=js,fingerprint:n=Hs({random:e})}={})=>function(){let o=Tp(e),s=Date.now().toString(36),a=t().toString(36),l=Rn(r,e),c=`${s+l+a+n}`;return`${o+Qs(c).substring(1,r)}`},Ap=Ws(),Sp=(e,{minLength:t=2,maxLength:r=St}={})=>{let n=e.length,i=/^[0-9a-z]+$/;try{if(typeof e=="string"&&n>=t&&n<=r&&i.test(e))return!0}finally{}return!1};pe.exports.getConstants=()=>({defaultLength:js,bigLength:St});pe.exports.init=Ws;pe.exports.createId=Ap;pe.exports.bufToBigInt=Bs;pe.exports.createCounter=Js;pe.exports.createFingerprint=Hs;pe.exports.isCuid=Sp});var Ks=L((mx,vt)=>{"use strict";var{createId:vp,init:Cp,getConstants:Rp,isCuid:kp}=Gs();vt.exports.createId=vp;vt.exports.init=Cp;vt.exports.getConstants=Rp;vt.exports.isCuid=kp});var Jd={};Ae(Jd,{AnyNull:()=>D.AnyNull,DMMF:()=>lt,DbNull:()=>D.DbNull,Debug:()=>M,Decimal:()=>hl.Decimal,Extensions:()=>Ur,JsonNull:()=>D.JsonNull,NullTypes:()=>D.NullTypes,ObjectEnumValue:()=>D.ObjectEnumValue,PrismaClientInitializationError:()=>w.PrismaClientInitializationError,PrismaClientKnownRequestError:()=>w.PrismaClientKnownRequestError,PrismaClientRustPanicError:()=>w.PrismaClientRustPanicError,PrismaClientUnknownRequestError:()=>w.PrismaClientUnknownRequestError,PrismaClientValidationError:()=>w.PrismaClientValidationError,Public:()=>jr,Sql:()=>Z.Sql,createParam:()=>co,defineDmmfProperty:()=>go,deserializeJsonResponse:()=>le,deserializeRawResult:()=>$r,dmmfToRuntimeDataModel:()=>pi,empty:()=>Z.empty,getPrismaClient:()=>fl,getRuntime:()=>yl,isAnyNull:()=>D.isAnyNull,isDbNull:()=>D.isDbNull,isJsonNull:()=>D.isJsonNull,join:()=>Z.join,makeStrictEnum:()=>gl,makeTypedQueryFactory:()=>yo,raw:()=>Z.raw,serializeJsonQuery:()=>or,skip:()=>ir,sqltag:()=>Z.sql,warnOnce:()=>Xr});module.exports=vl(Jd);var Ur={};Ae(Ur,{defineExtension:()=>ai,getExtensionContext:()=>li});function ai(e){return typeof e=="function"?e:t=>t.$extends(e)}function li(e){return e}var jr={};Ae(jr,{validator:()=>ci});function ci(...e){return t=>t}var J=class{_map=new Map;get(t){return this._map.get(t)?.value}set(t,r){this._map.set(t,{value:r})}getOrCreate(t,r){let n=this._map.get(t);if(n)return n.value;let i=r();return this.set(t,i),i}};function ie(e){return e.substring(0,1).toLowerCase()+e.substring(1)}function ui(e,t){let r={};for(let n of e){let i=n[t];r[i]=n}return r}function ze(e){let t;return{get(){return t||(t={value:e()}),t.value}}}function pi(e){return{models:Br(e.models),enums:Br(e.enums),types:Br(e.types)}}function Br(e){let t={};for(let{name:r,...n}of e)t[r]=n;return t}var se=require("@prisma/client-runtime-utils");var qt={};Ae(qt,{$:()=>yi,bgBlack:()=>_l,bgBlue:()=>Vl,bgCyan:()=>jl,bgGreen:()=>$l,bgMagenta:()=>Ul,bgRed:()=>Ll,bgWhite:()=>Bl,bgYellow:()=>ql,black:()=>Fl,blue:()=>me,bold:()=>j,cyan:()=>Y,dim:()=>Ze,gray:()=>tt,green:()=>Xe,grey:()=>Nl,hidden:()=>Ol,inverse:()=>kl,italic:()=>Rl,magenta:()=>Ml,red:()=>de,reset:()=>Cl,strikethrough:()=>Il,underline:()=>Ye,white:()=>Dl,yellow:()=>et});var Qr,di,mi,fi,gi=!0;typeof process<"u"&&({FORCE_COLOR:Qr,NODE_DISABLE_COLORS:di,NO_COLOR:mi,TERM:fi}=process.env||{},gi=process.stdout&&process.stdout.isTTY);var yi={enabled:!di&&mi==null&&fi!=="dumb"&&(Qr!=null&&Qr!=="0"||gi)};function T(e,t){let r=new RegExp(`\\x1b\\[${t}m`,"g"),n=`\x1B[${e}m`,i=`\x1B[${t}m`;return function(o){return!yi.enabled||o==null?o:n+(~(""+o).indexOf(i)?o.replace(r,i+n):o)+i}}var Cl=T(0,0),j=T(1,22),Ze=T(2,22),Rl=T(3,23),Ye=T(4,24),kl=T(7,27),Ol=T(8,28),Il=T(9,29),Fl=T(30,39),de=T(31,39),Xe=T(32,39),et=T(33,39),me=T(34,39),Ml=T(35,39),Y=T(36,39),Dl=T(37,39),tt=T(90,39),Nl=T(90,39),_l=T(40,49),Ll=T(41,49),$l=T(42,49),ql=T(43,49),Vl=T(44,49),Ul=T(45,49),jl=T(46,49),Bl=T(47,49);var Ql=100,hi=["green","yellow","blue","magenta","cyan","red"],rt=[],wi=Date.now(),Hl=0,Hr=typeof process<"u"?process.env:{};globalThis.DEBUG??=Hr.DEBUG??"";globalThis.DEBUG_COLORS??=Hr.DEBUG_COLORS?Hr.DEBUG_COLORS==="true":!0;var nt={enable(e){typeof e=="string"&&(globalThis.DEBUG=e)},disable(){let e=globalThis.DEBUG;return globalThis.DEBUG="",e},enabled(e){let t=globalThis.DEBUG.split(",").map(i=>i.replace(/[.+?^${}()|[\]\\]/g,"\\$&")),r=t.some(i=>i===""||i[0]==="-"?!1:e.match(RegExp(i.split("*").join(".*")+"$"))),n=t.some(i=>i===""||i[0]!=="-"?!1:e.match(RegExp(i.slice(1).split("*").join(".*")+"$")));return r&&!n},log:(...e)=>{let[t,r,...n]=e;(console.warn??console.log)(`${t} ${r}`,...n)},formatters:{}};function Jl(e){let t={color:hi[Hl++%hi.length],enabled:nt.enabled(e),namespace:e,log:nt.log,extend:()=>{}},r=(...n)=>{let{enabled:i,namespace:o,color:s,log:a}=t;if(n.length!==0&&rt.push([o,...n]),rt.length>Ql&&rt.shift(),nt.enabled(o)||i){let l=n.map(u=>typeof u=="string"?u:Wl(u)),c=`+${Date.now()-wi}ms`;wi=Date.now(),globalThis.DEBUG_COLORS?a(qt[s](j(o)),...l,qt[s](c)):a(o,...l,c)}};return new Proxy(r,{get:(n,i)=>t[i],set:(n,i,o)=>t[i]=o})}var M=new Proxy(Jl,{get:(e,t)=>nt[t],set:(e,t,r)=>nt[t]=r});function Wl(e,t=2){let r=new Set;return JSON.stringify(e,(n,i)=>{if(typeof i=="object"&&i!==null){if(r.has(i))return"[Circular *]";r.add(i)}else if(typeof i=="bigint")return i.toString();return i},t)}function xi(e=7500){let t=rt.map(([r,...n])=>`${r} ${n.map(i=>typeof i=="string"?i:JSON.stringify(i)).join(" ")}`).join(` +`);return t.lengthZl,info:()=>zl,log:()=>Kl,query:()=>Yl,should:()=>Oi,tags:()=>it,warn:()=>Gr});var it={error:de("prisma:error"),warn:et("prisma:warn"),info:Y("prisma:info"),query:me("prisma:query")},Oi={warn:()=>!process.env.PRISMA_DISABLE_WARNINGS};function Kl(...e){console.log(...e)}function Gr(e,...t){Oi.warn()&&console.warn(`${it.warn} ${e}`,...t)}function zl(e,...t){console.info(`${it.info} ${e}`,...t)}function Zl(e,...t){console.error(`${it.error} ${e}`,...t)}function Yl(e,...t){console.log(`${it.query} ${e}`,...t)}function X(e,t){throw new Error(t)}function Kr({onlyFirst:e=!1}={}){let r=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(r,e?void 0:"g")}var Xl=Kr();function Se(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(Xl,"")}var st=V(require("node:path"));function zr(e){return st.default.sep===st.default.posix.sep?e:e.split(st.default.sep).join(st.default.posix.sep)}function Zr(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Bt(e,t){let r={};for(let n of Object.keys(e))r[n]=t(e[n],n);return r}function Yr(e,t){if(e.length===0)return;let r=e[0];for(let n=1;n{Fi.has(e)||(Fi.add(e),Gr(t,...r))};function ve(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function Qt(e){return e.toString()!=="Invalid Date"}var Mi=require("@prisma/client-runtime-utils");function Ce(e){return Mi.Decimal.isDecimal(e)?!0:e!==null&&typeof e=="object"&&typeof e.s=="number"&&typeof e.e=="number"&&typeof e.toFixed=="function"&&Array.isArray(e.d)}var no=require("@prisma/client-runtime-utils");var lt={};Ae(lt,{ModelAction:()=>Re,datamodelEnumToSchemaEnum:()=>ec,datamodelSchemaEnumToSchemaEnum:()=>tc});function ec(e){return{name:e.name,data:e.values.map(t=>({key:t.name,value:t.dbName??t.name}))}}function tc(e){return{name:e.name,data:e.values.map(t=>({key:t,value:t}))}}var Re=(P=>(P.findUnique="findUnique",P.findUniqueOrThrow="findUniqueOrThrow",P.findFirst="findFirst",P.findFirstOrThrow="findFirstOrThrow",P.findMany="findMany",P.create="create",P.createMany="createMany",P.createManyAndReturn="createManyAndReturn",P.update="update",P.updateMany="updateMany",P.updateManyAndReturn="updateManyAndReturn",P.upsert="upsert",P.delete="delete",P.deleteMany="deleteMany",P.groupBy="groupBy",P.count="count",P.aggregate="aggregate",P.findRaw="findRaw",P.aggregateRaw="aggregateRaw",P))(Re||{});var $i=V(ki());var Li=V(require("node:fs"));var Di={keyword:Y,entity:Y,value:e=>j(me(e)),punctuation:me,directive:Y,function:Y,variable:e=>j(me(e)),string:e=>j(Xe(e)),boolean:et,number:Y,comment:tt};var rc=e=>e,Ht={},nc=0,f={manual:Ht.Prism&&Ht.Prism.manual,disableWorkerMessageHandler:Ht.Prism&&Ht.Prism.disableWorkerMessageHandler,util:{encode:function(e){if(e instanceof B){let t=e;return new B(t.type,f.util.encode(t.content),t.alias)}else return Array.isArray(e)?e.map(f.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(Ke instanceof B)continue;if(Pe&&_!=t.length-1){R.lastIndex=ne;var p=R.exec(e);if(!p)break;var u=p.index+(q?p[1].length:0),y=p.index+p[0].length,a=_,l=ne;for(let bl=t.length;a=l&&(++_,ne=l);if(t[_]instanceof B)continue;c=a-_,Ke=e.slice(ne,l),p.index-=ne}else{R.lastIndex=0;var p=R.exec(Ke),c=1}if(!p){if(o)break;continue}q&&(Vr=p[1]?p[1].length:0);var u=p.index+Vr,p=p[0].slice(Vr),y=u+p.length,h=Ke.slice(0,u),g=Ke.slice(y);let Lt=[_,c];h&&(++_,ne+=h.length,Lt.push(h));let xl=new B(E,P?f.tokenize(p,P):p,wl,p,Pe);if(Lt.push(xl),g&&Lt.push(g),Array.prototype.splice.apply(t,Lt),c!=1&&f.matchGrammar(e,t,r,_,ne,!0,E),o)break}}}},tokenize:function(e,t){let r=[e],n=t.rest;if(n){for(let i in n)t[i]=n[i];delete t.rest}return f.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){let r=f.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){let r=f.hooks.all[e];if(!(!r||!r.length))for(var n=0,i;i=r[n++];)i(t)}},Token:B};f.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/};f.languages.javascript=f.languages.extend("clike",{"class-name":[f.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.])\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/});f.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/;f.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:f.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:f.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:f.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:f.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});f.languages.markup&&f.languages.markup.tag.addInlined("script","javascript");f.languages.js=f.languages.javascript;f.languages.typescript=f.languages.extend("javascript",{keyword:/\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\b/,builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/});f.languages.ts=f.languages.typescript;function B(e,t,r,n,i){this.type=e,this.content=t,this.alias=r,this.length=(n||"").length|0,this.greedy=!!i}B.stringify=function(e,t){return typeof e=="string"?e:Array.isArray(e)?e.map(function(r){return B.stringify(r,t)}).join(""):ic(e.type)(e.content)};function ic(e){return Di[e]||rc}function Ni(e){return oc(e,f.languages.javascript)}function oc(e,t){return f.tokenize(e,t).map(n=>B.stringify(n)).join("")}function _i(e){return Jr(e)}var Jt=class e{firstLineNumber;lines;static read(t){let r;try{r=Li.default.readFileSync(t,"utf-8")}catch{return null}return e.fromContent(r)}static fromContent(t){let r=t.split(/\r?\n/);return new e(1,r)}constructor(t,r){this.firstLineNumber=t,this.lines=r}get lastLineNumber(){return this.firstLineNumber+this.lines.length-1}mapLineAt(t,r){if(tthis.lines.length+this.firstLineNumber)return this;let n=t-this.firstLineNumber,i=[...this.lines];return i[n]=r(i[n]),new e(this.firstLineNumber,i)}mapLines(t){return new e(this.firstLineNumber,this.lines.map((r,n)=>t(r,this.firstLineNumber+n)))}lineAt(t){return this.lines[t-this.firstLineNumber]}prependSymbolAt(t,r){return this.mapLines((n,i)=>i===t?`${r} ${n}`:` ${n}`)}slice(t,r){let n=this.lines.slice(t-1,r).join(` +`);return new e(t,_i(n).split(` +`))}highlight(){let t=Ni(this.toString());return new e(this.firstLineNumber,t.split(` +`))}toString(){return this.lines.join(` +`)}};var sc={red:de,gray:tt,dim:Ze,bold:j,underline:Ye,highlightSource:e=>e.highlight()},ac={red:e=>e,gray:e=>e,dim:e=>e,bold:e=>e,underline:e=>e,highlightSource:e=>e};function lc({message:e,originalMethod:t,isPanic:r,callArguments:n}){return{functionName:`prisma.${t}()`,message:e,isPanic:r??!1,callArguments:n}}function cc({callsite:e,message:t,originalMethod:r,isPanic:n,callArguments:i},o){let s=lc({message:t,originalMethod:r,isPanic:n,callArguments:i});if(!e||typeof window<"u"||process.env.NODE_ENV==="production")return s;let a=e.getLocation();if(!a||!a.lineNumber||!a.columnNumber)return s;let l=Math.max(1,a.lineNumber-3),c=Jt.read(a.fileName)?.slice(l,a.lineNumber),u=c?.lineAt(a.lineNumber);if(c&&u){let p=pc(u),y=uc(u);if(!y)return s;s.functionName=`${y.code})`,s.location=a,n||(c=c.mapLineAt(a.lineNumber,g=>g.slice(0,y.openingBraceIndex))),c=o.highlightSource(c);let h=String(c.lastLineNumber).length;if(s.contextLines=c.mapLines((g,E)=>o.gray(String(E).padStart(h))+" "+g).mapLines(g=>o.dim(g)).prependSymbolAt(a.lineNumber,o.bold(o.red("\u2192"))),i){let g=p+h+1;g+=2,s.callArguments=(0,$i.default)(i,g).slice(g)}}return s}function uc(e){let t=Object.keys(Re).join("|"),n=new RegExp(String.raw`\.(${t})\(`).exec(e);if(n){let i=n.index+n[0].length,o=e.lastIndexOf(" ",n.index)+1;return{code:e.slice(o,i),openingBraceIndex:i}}return null}function pc(e){let t=0;for(let r=0;r"Unknown error")}function Bi(e){return e.errors.flatMap(t=>t.kind==="Union"?Bi(t):[t])}function fc(e){let t=new Map,r=[];for(let n of e){if(n.kind!=="InvalidArgumentType"){r.push(n);continue}let i=`${n.selectionPath.join(".")}:${n.argumentPath.join(".")}`,o=t.get(i);o?t.set(i,{...n,argument:{...n.argument,typeNames:gc(o.argument.typeNames,n.argument.typeNames)}}):t.set(i,n)}return r.push(...t.values()),r}function gc(e,t){return[...new Set(e.concat(t))]}function yc(e){return Yr(e,(t,r)=>{let n=Vi(t),i=Vi(r);return n!==i?n-i:Ui(t)-Ui(r)})}function Vi(e){let t=0;return Array.isArray(e.selectionPath)&&(t+=e.selectionPath.length),Array.isArray(e.argumentPath)&&(t+=e.argumentPath.length),t}function Ui(e){switch(e.kind){case"InvalidArgumentValue":case"ValueTooLarge":return 20;case"InvalidArgumentType":return 10;case"RequiredArgumentMissing":return-10;default:return 0}}var $=class{constructor(t,r){this.name=t;this.value=r}isRequired=!1;makeRequired(){return this.isRequired=!0,this}write(t){let{colors:{green:r}}=t.context;t.addMarginSymbol(r(this.isRequired?"+":"?")),t.write(r(this.name)),this.isRequired||t.write(r("?")),t.write(r(": ")),typeof this.value=="string"?t.write(r(this.value)):t.write(this.value)}};Hi();var ke=class{constructor(t=0,r){this.context=r;this.currentIndent=t}lines=[];currentLine="";currentIndent=0;marginSymbol;afterNextNewLineCallback;write(t){return typeof t=="string"?this.currentLine+=t:t.write(this),this}writeJoined(t,r,n=(i,o)=>o.write(i)){let i=r.length-1;for(let o=0;o0&&this.currentIndent--,this}addMarginSymbol(t){return this.marginSymbol=t,this}toString(){return this.lines.concat(this.indentedCurrentLine()).join(` +`)}getCurrentLineLength(){return this.currentLine.length}indentedCurrentLine(){let t=this.currentLine.padStart(this.currentLine.length+2*this.currentIndent);return this.marginSymbol?this.marginSymbol+t.slice(1):t}};Qi();var Kt=class{constructor(t){this.value=t}write(t){t.write(this.value)}markAsError(){this.value.markAsError()}};var zt=e=>e,Zt={bold:zt,red:zt,green:zt,dim:zt,enabled:!1},Ji={bold:j,red:de,green:Xe,dim:Ze,enabled:!0},Oe={write(e){e.writeLine(",")}};var W=class{constructor(t){this.contents=t}isUnderlined=!1;color=t=>t;underline(){return this.isUnderlined=!0,this}setColor(t){return this.color=t,this}write(t){let r=t.getCurrentLineLength();t.write(this.color(this.contents)),this.isUnderlined&&t.afterNextNewline(()=>{t.write(" ".repeat(r)).writeLine(this.color("~".repeat(this.contents.length)))})}};var oe=class{hasError=!1;markAsError(){return this.hasError=!0,this}};var Ie=class extends oe{items=[];addItem(t){return this.items.push(new Kt(t)),this}getField(t){return this.items[t]}getPrintWidth(){return this.items.length===0?2:Math.max(...this.items.map(r=>r.value.getPrintWidth()))+2}write(t){if(this.items.length===0){this.writeEmpty(t);return}this.writeWithItems(t)}writeEmpty(t){let r=new W("[]");this.hasError&&r.setColor(t.context.colors.red).underline(),t.write(r)}writeWithItems(t){let{colors:r}=t.context;t.writeLine("[").withIndent(()=>t.writeJoined(Oe,this.items).newLine()).write("]"),this.hasError&&t.afterNextNewline(()=>{t.writeLine(r.red("~".repeat(this.getPrintWidth())))})}asObject(){}};var Fe=class e extends oe{fields={};suggestions=[];addField(t){this.fields[t.name]=t}addSuggestion(t){this.suggestions.push(t)}getField(t){return this.fields[t]}getDeepField(t){let[r,...n]=t,i=this.getField(r);if(!i)return;let o=i;for(let s of n){let a;if(o.value instanceof e?a=o.value.getField(s):o.value instanceof Ie&&(a=o.value.getField(Number(s))),!a)return;o=a}return o}getDeepFieldValue(t){return t.length===0?this:this.getDeepField(t)?.value}hasField(t){return!!this.getField(t)}removeAllFields(){this.fields={}}removeField(t){delete this.fields[t]}getFields(){return this.fields}isEmpty(){return Object.keys(this.fields).length===0}getFieldValue(t){return this.getField(t)?.value}getDeepSubSelectionValue(t){let r=this;for(let n of t){if(!(r instanceof e))return;let i=r.getSubSelectionValue(n);if(!i)return;r=i}return r}getDeepSelectionParent(t){let r=this.getSelectionParent();if(!r)return;let n=r;for(let i of t){let o=n.value.getFieldValue(i);if(!o||!(o instanceof e))return;let s=o.getSelectionParent();if(!s)return;n=s}return n}getSelectionParent(){let t=this.getField("select")?.value.asObject();if(t)return{kind:"select",value:t};let r=this.getField("include")?.value.asObject();if(r)return{kind:"include",value:r}}getSubSelectionValue(t){return this.getSelectionParent()?.value.fields[t].value}getPrintWidth(){let t=Object.values(this.fields);return t.length==0?2:Math.max(...t.map(n=>n.getPrintWidth()))+2}write(t){let r=Object.values(this.fields);if(r.length===0&&this.suggestions.length===0){this.writeEmpty(t);return}this.writeWithContents(t,r)}asObject(){return this}writeEmpty(t){let r=new W("{}");this.hasError&&r.setColor(t.context.colors.red).underline(),t.write(r)}writeWithContents(t,r){t.writeLine("{").withIndent(()=>{t.writeJoined(Oe,[...r,...this.suggestions]).newLine()}),t.write("}"),this.hasError&&t.afterNextNewline(()=>{t.writeLine(t.context.colors.red("~".repeat(this.getPrintWidth())))})}};var k=class extends oe{constructor(r){super();this.text=r}getPrintWidth(){return this.text.length}write(r){let n=new W(this.text);this.hasError&&n.underline().setColor(r.context.colors.red),r.write(n)}asObject(){}};var ct=class{fields=[];addField(t,r){return this.fields.push({write(n){let{green:i,dim:o}=n.context.colors;n.write(i(o(`${t}: ${r}`))).addMarginSymbol(i(o("+")))}}),this}write(t){let{colors:{green:r}}=t.context;t.writeLine(r("{")).withIndent(()=>{t.writeJoined(Oe,this.fields).newLine()}).write(r("}")).addMarginSymbol(r("+"))}};function Gt(e,t,r){switch(e.kind){case"MutuallyExclusiveFields":hc(e,t);break;case"IncludeOnScalar":wc(e,t);break;case"EmptySelection":xc(e,t,r);break;case"UnknownSelectionField":Pc(e,t);break;case"InvalidSelectionValue":Ac(e,t);break;case"UnknownArgument":Sc(e,t);break;case"UnknownInputField":vc(e,t);break;case"RequiredArgumentMissing":Cc(e,t);break;case"InvalidArgumentType":Rc(e,t);break;case"InvalidArgumentValue":kc(e,t);break;case"ValueTooLarge":Oc(e,t);break;case"SomeFieldsMissing":Ic(e,t);break;case"TooManyFieldsGiven":Fc(e,t);break;case"Union":ji(e,t,r);break;default:throw new Error("not implemented: "+e.kind)}}function hc(e,t){let r=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();r&&(r.getField(e.firstField)?.markAsError(),r.getField(e.secondField)?.markAsError()),t.addErrorMessage(n=>`Please ${n.bold("either")} use ${n.green(`\`${e.firstField}\``)} or ${n.green(`\`${e.secondField}\``)}, but ${n.red("not both")} at the same time.`)}function wc(e,t){let[r,n]=Me(e.selectionPath),i=e.outputType,o=t.arguments.getDeepSelectionParent(r)?.value;if(o&&(o.getField(n)?.markAsError(),i))for(let s of i.fields)s.isRelation&&o.addSuggestion(new $(s.name,"true"));t.addErrorMessage(s=>{let a=`Invalid scalar field ${s.red(`\`${n}\``)} for ${s.bold("include")} statement`;return i?a+=` on model ${s.bold(i.name)}. ${ut(s)}`:a+=".",a+=` +Note that ${s.bold("include")} statements only accept relation fields.`,a})}function xc(e,t,r){let n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();if(n){let i=n.getField("omit")?.value.asObject();if(i){bc(e,t,i);return}if(n.hasField("select")){Ec(e,t);return}}if(r?.[ie(e.outputType.name)]){Tc(e,t);return}t.addErrorMessage(()=>`Unknown field at "${e.selectionPath.join(".")} selection"`)}function bc(e,t,r){r.removeAllFields();for(let n of e.outputType.fields)r.addSuggestion(new $(n.name,"false"));t.addErrorMessage(n=>`The ${n.red("omit")} statement includes every field of the model ${n.bold(e.outputType.name)}. At least one field must be included in the result`)}function Ec(e,t){let r=e.outputType,n=t.arguments.getDeepSelectionParent(e.selectionPath)?.value,i=n?.isEmpty()??!1;n&&(n.removeAllFields(),zi(n,r)),t.addErrorMessage(o=>i?`The ${o.red("`select`")} statement for type ${o.bold(r.name)} must not be empty. ${ut(o)}`:`The ${o.red("`select`")} statement for type ${o.bold(r.name)} needs ${o.bold("at least one truthy value")}.`)}function Tc(e,t){let r=new ct;for(let i of e.outputType.fields)i.isRelation||r.addField(i.name,"false");let n=new $("omit",r).makeRequired();if(e.selectionPath.length===0)t.arguments.addSuggestion(n);else{let[i,o]=Me(e.selectionPath),a=t.arguments.getDeepSelectionParent(i)?.value.asObject()?.getField(o);if(a){let l=a?.value.asObject()??new Fe;l.addSuggestion(n),a.value=l}}t.addErrorMessage(i=>`The global ${i.red("omit")} configuration excludes every field of the model ${i.bold(e.outputType.name)}. At least one field must be included in the result`)}function Pc(e,t){let r=Zi(e.selectionPath,t);if(r.parentKind!=="unknown"){r.field.markAsError();let n=r.parent;switch(r.parentKind){case"select":zi(n,e.outputType);break;case"include":Mc(n,e.outputType);break;case"omit":Dc(n,e.outputType);break}}t.addErrorMessage(n=>{let i=[`Unknown field ${n.red(`\`${r.fieldName}\``)}`];return r.parentKind!=="unknown"&&i.push(`for ${n.bold(r.parentKind)} statement`),i.push(`on model ${n.bold(`\`${e.outputType.name}\``)}.`),i.push(ut(n)),i.join(" ")})}function Ac(e,t){let r=Zi(e.selectionPath,t);r.parentKind!=="unknown"&&r.field.value.markAsError(),t.addErrorMessage(n=>`Invalid value for selection field \`${n.red(r.fieldName)}\`: ${e.underlyingError}`)}function Sc(e,t){let r=e.argumentPath[0],n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();n&&(n.getField(r)?.markAsError(),Nc(n,e.arguments)),t.addErrorMessage(i=>Gi(i,r,e.arguments.map(o=>o.name)))}function vc(e,t){let[r,n]=Me(e.argumentPath),i=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();if(i){i.getDeepField(e.argumentPath)?.markAsError();let o=i.getDeepFieldValue(r)?.asObject();o&&Yi(o,e.inputType)}t.addErrorMessage(o=>Gi(o,n,e.inputType.fields.map(s=>s.name)))}function Gi(e,t,r){let n=[`Unknown argument \`${e.red(t)}\`.`],i=Lc(t,r);return i&&n.push(`Did you mean \`${e.green(i)}\`?`),r.length>0&&n.push(ut(e)),n.join(" ")}function Cc(e,t){let r;t.addErrorMessage(l=>r?.value instanceof k&&r.value.text==="null"?`Argument \`${l.green(o)}\` must not be ${l.red("null")}.`:`Argument \`${l.green(o)}\` is missing.`);let n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();if(!n)return;let[i,o]=Me(e.argumentPath),s=new ct,a=n.getDeepFieldValue(i)?.asObject();if(a){if(r=a.getField(o),r&&a.removeField(o),e.inputTypes.length===1&&e.inputTypes[0].kind==="object"){for(let l of e.inputTypes[0].fields)s.addField(l.name,l.typeNames.join(" | "));a.addSuggestion(new $(o,s).makeRequired())}else{let l=e.inputTypes.map(Ki).join(" | ");a.addSuggestion(new $(o,l).makeRequired())}if(e.dependentArgumentPath){n.getDeepField(e.dependentArgumentPath)?.markAsError();let[,l]=Me(e.dependentArgumentPath);t.addErrorMessage(c=>`Argument \`${c.green(o)}\` is required because argument \`${c.green(l)}\` was provided.`)}}}function Ki(e){return e.kind==="list"?`${Ki(e.elementType)}[]`:e.name}function Rc(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();n&&n.getDeepFieldValue(e.argumentPath)?.markAsError(),t.addErrorMessage(i=>{let o=Yt("or",e.argument.typeNames.map(s=>i.green(s)));return`Argument \`${i.bold(r)}\`: Invalid value provided. Expected ${o}, provided ${i.red(e.inferredType)}.`})}function kc(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();n&&n.getDeepFieldValue(e.argumentPath)?.markAsError(),t.addErrorMessage(i=>{let o=[`Invalid value for argument \`${i.bold(r)}\``];if(e.underlyingError&&o.push(`: ${e.underlyingError}`),o.push("."),e.argument.typeNames.length>0){let s=Yt("or",e.argument.typeNames.map(a=>i.green(a)));o.push(` Expected ${s}.`)}return o.join("")})}function Oc(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject(),i;if(n){let s=n.getDeepField(e.argumentPath)?.value;s?.markAsError(),s instanceof k&&(i=s.text)}t.addErrorMessage(o=>{let s=["Unable to fit value"];return i&&s.push(o.red(i)),s.push(`into a 64-bit signed integer for field \`${o.bold(r)}\``),s.join(" ")})}function Ic(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();if(n){let i=n.getDeepFieldValue(e.argumentPath)?.asObject();i&&Yi(i,e.inputType)}t.addErrorMessage(i=>{let o=[`Argument \`${i.bold(r)}\` of type ${i.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1?e.constraints.requiredFields?o.push(`${i.green("at least one of")} ${Yt("or",e.constraints.requiredFields.map(s=>`\`${i.bold(s)}\``))} arguments.`):o.push(`${i.green("at least one")} argument.`):o.push(`${i.green(`at least ${e.constraints.minFieldCount}`)} arguments.`),o.push(ut(i)),o.join(" ")})}function Fc(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject(),i=[];if(n){let o=n.getDeepFieldValue(e.argumentPath)?.asObject();o&&(o.markAsError(),i=Object.keys(o.getFields()))}t.addErrorMessage(o=>{let s=[`Argument \`${o.bold(r)}\` of type ${o.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1&&e.constraints.maxFieldCount==1?s.push(`${o.green("exactly one")} argument,`):e.constraints.maxFieldCount==1?s.push(`${o.green("at most one")} argument,`):s.push(`${o.green(`at most ${e.constraints.maxFieldCount}`)} arguments,`),s.push(`but you provided ${Yt("and",i.map(a=>o.red(a)))}. Please choose`),e.constraints.maxFieldCount===1?s.push("one."):s.push(`${e.constraints.maxFieldCount}.`),s.join(" ")})}function zi(e,t){for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new $(r.name,"true"))}function Mc(e,t){for(let r of t.fields)r.isRelation&&!e.hasField(r.name)&&e.addSuggestion(new $(r.name,"true"))}function Dc(e,t){for(let r of t.fields)!e.hasField(r.name)&&!r.isRelation&&e.addSuggestion(new $(r.name,"true"))}function Nc(e,t){for(let r of t)e.hasField(r.name)||e.addSuggestion(new $(r.name,r.typeNames.join(" | ")))}function Zi(e,t){let[r,n]=Me(e),i=t.arguments.getDeepSubSelectionValue(r)?.asObject();if(!i)return{parentKind:"unknown",fieldName:n};let o=i.getFieldValue("select")?.asObject(),s=i.getFieldValue("include")?.asObject(),a=i.getFieldValue("omit")?.asObject(),l=o?.getField(n);return o&&l?{parentKind:"select",parent:o,field:l,fieldName:n}:(l=s?.getField(n),s&&l?{parentKind:"include",field:l,parent:s,fieldName:n}:(l=a?.getField(n),a&&l?{parentKind:"omit",field:l,parent:a,fieldName:n}:{parentKind:"unknown",fieldName:n}))}function Yi(e,t){if(t.kind==="object")for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new $(r.name,r.typeNames.join(" | ")))}function Me(e){let t=[...e],r=t.pop();if(!r)throw new Error("unexpected empty path");return[t,r]}function ut({green:e,enabled:t}){return"Available options are "+(t?`listed in ${e("green")}`:"marked with ?")+"."}function Yt(e,t){if(t.length===1)return t[0];let r=[...t],n=r.pop();return`${r.join(", ")} ${e} ${n}`}var _c=3;function Lc(e,t){let r=1/0,n;for(let i of t){let o=(0,Wi.default)(e,i);o>_c||o`}};function De(e){return e instanceof pt}var Xi=": ",Xt=class{constructor(t,r){this.name=t;this.value=r}hasError=!1;markAsError(){this.hasError=!0}getPrintWidth(){return this.name.length+this.value.getPrintWidth()+Xi.length}write(t){let r=new W(this.name);this.hasError&&r.underline().setColor(t.context.colors.red),t.write(r).write(Xi).write(this.value)}};var rn=class{arguments;errorMessages=[];constructor(t){this.arguments=t}write(t){t.write(this.arguments)}addErrorMessage(t){this.errorMessages.push(t)}renderAllMessages(t){return this.errorMessages.map(r=>r(t)).join(` +`)}};function Ne(e){return new rn(to(e))}function to(e){let t=new Fe;for(let[r,n]of Object.entries(e)){let i=new Xt(r,ro(n));t.addField(i)}return t}function ro(e){if(typeof e=="string")return new k(JSON.stringify(e));if(typeof e=="number"||typeof e=="boolean")return new k(String(e));if(typeof e=="bigint")return new k(`${e}n`);if(e===null)return new k("null");if(e===void 0)return new k("undefined");if(Ce(e))return new k(`new Prisma.Decimal("${e.toFixed()}")`);if(e instanceof Uint8Array)return Buffer.isBuffer(e)?new k(`Buffer.alloc(${e.byteLength})`):new k(`new Uint8Array(${e.byteLength})`);if(e instanceof Date){let t=Qt(e)?e.toISOString():"Invalid Date";return new k(`new Date("${t}")`)}return e instanceof eo.ObjectEnumValue?new k(`Prisma.${e._getName()}`):De(e)?new k(`prisma.${ie(e.modelName)}.$fields.${e.name}`):Array.isArray(e)?$c(e):typeof e=="object"?to(e):new k(Object.prototype.toString.call(e))}function $c(e){let t=new Ie;for(let r of e)t.addItem(ro(r));return t}function er(e,t){let r=t==="pretty"?Ji:Zt,n=e.renderAllMessages(r),i=new ke(0,{colors:r}).write(e).toString();return{message:n,args:i}}function tr({args:e,errors:t,errorFormat:r,callsite:n,originalMethod:i,clientVersion:o,globalOmit:s}){let a=Ne(e);for(let p of t)Gt(p,a,s);let{message:l,args:c}=er(a,r),u=Wt({message:l,callsite:n,originalMethod:i,showColors:r==="pretty",callArguments:c});throw new no.PrismaClientValidationError(u,{clientVersion:o})}function G(e){return e.replace(/^./,t=>t.toLowerCase())}function oo(e,t,r){let n=G(r);return!t.result||!(t.result.$allModels||t.result[n])?e:qc({...e,...io(t.name,e,t.result.$allModels),...io(t.name,e,t.result[n])})}function qc(e){let t=new J,r=(n,i)=>t.getOrCreate(n,()=>i.has(n)?[n]:(i.add(n),e[n]?e[n].needs.flatMap(o=>r(o,i)):[n]));return Bt(e,n=>({...n,needs:r(n.name,new Set)}))}function io(e,t,r){return r?Bt(r,({needs:n,compute:i},o)=>({name:o,needs:n?Object.keys(n).filter(s=>n[s]):[],compute:Vc(t,o,i)})):{}}function Vc(e,t,r){let n=e?.[t]?.compute;return n?i=>r({...i,[t]:n(i)}):r}function so(e,t){if(!t)return e;let r={...e};for(let n of Object.values(t))if(e[n.name])for(let i of n.needs)r[i]=!0;return r}function ao(e,t){if(!t)return e;let r={...e};for(let n of Object.values(t))if(!e[n.name])for(let i of n.needs)delete r[i];return r}var rr=class{constructor(t,r){this.extension=t;this.previous=r}computedFieldsCache=new J;modelExtensionsCache=new J;queryCallbacksCache=new J;clientExtensions=ze(()=>this.extension.client?{...this.previous?.getAllClientExtensions(),...this.extension.client}:this.previous?.getAllClientExtensions());batchCallbacks=ze(()=>{let t=this.previous?.getAllBatchQueryCallbacks()??[],r=this.extension.query?.$__internalBatch;return r?t.concat(r):t});getAllComputedFields(t){return this.computedFieldsCache.getOrCreate(t,()=>oo(this.previous?.getAllComputedFields(t),this.extension,t))}getAllClientExtensions(){return this.clientExtensions.get()}getAllModelExtensions(t){return this.modelExtensionsCache.getOrCreate(t,()=>{let r=G(t);return!this.extension.model||!(this.extension.model[r]||this.extension.model.$allModels)?this.previous?.getAllModelExtensions(t):{...this.previous?.getAllModelExtensions(t),...this.extension.model.$allModels,...this.extension.model[r]}})}getAllQueryCallbacks(t,r){return this.queryCallbacksCache.getOrCreate(`${t}:${r}`,()=>{let n=this.previous?.getAllQueryCallbacks(t,r)??[],i=[],o=this.extension.query;return!o||!(o[t]||o.$allModels||o[r]||o.$allOperations)?n:(o[t]!==void 0&&(o[t][r]!==void 0&&i.push(o[t][r]),o[t].$allOperations!==void 0&&i.push(o[t].$allOperations)),t!=="$none"&&o.$allModels!==void 0&&(o.$allModels[r]!==void 0&&i.push(o.$allModels[r]),o.$allModels.$allOperations!==void 0&&i.push(o.$allModels.$allOperations)),o[r]!==void 0&&i.push(o[r]),o.$allOperations!==void 0&&i.push(o.$allOperations),n.concat(i))})}getAllBatchQueryCallbacks(){return this.batchCallbacks.get()}},_e=class e{constructor(t){this.head=t}static empty(){return new e}static single(t){return new e(new rr(t))}isEmpty(){return this.head===void 0}append(t){return new e(new rr(t,this.head))}getAllComputedFields(t){return this.head?.getAllComputedFields(t)}getAllClientExtensions(){return this.head?.getAllClientExtensions()}getAllModelExtensions(t){return this.head?.getAllModelExtensions(t)}getAllQueryCallbacks(t,r){return this.head?.getAllQueryCallbacks(t,r)??[]}getAllBatchQueryCallbacks(){return this.head?.getAllBatchQueryCallbacks()??[]}};var nr=class{constructor(t){this.name=t}};function lo(e){return e instanceof nr}function co(e){return new nr(e)}var uo=Symbol(),dt=class{constructor(t){if(t!==uo)throw new Error("Skip instance can not be constructed directly")}ifUndefined(t){return t===void 0?ir:t}},ir=new dt(uo);function K(e){return e instanceof dt}var Uc={findUnique:"findUnique",findUniqueOrThrow:"findUniqueOrThrow",findFirst:"findFirst",findFirstOrThrow:"findFirstOrThrow",findMany:"findMany",count:"aggregate",create:"createOne",createMany:"createMany",createManyAndReturn:"createManyAndReturn",update:"updateOne",updateMany:"updateMany",updateManyAndReturn:"updateManyAndReturn",upsert:"upsertOne",delete:"deleteOne",deleteMany:"deleteMany",executeRaw:"executeRaw",queryRaw:"queryRaw",aggregate:"aggregate",groupBy:"groupBy",runCommandRaw:"runCommandRaw",findRaw:"findRaw",aggregateRaw:"aggregateRaw"},po="explicitly `undefined` values are not allowed";function or({modelName:e,action:t,args:r,runtimeDataModel:n,extensions:i=_e.empty(),callsite:o,clientMethod:s,errorFormat:a,clientVersion:l,previewFeatures:c,globalOmit:u}){let p=new nn({runtimeDataModel:n,modelName:e,action:t,rootArgs:r,callsite:o,extensions:i,selectionPath:[],argumentPath:[],originalMethod:s,errorFormat:a,clientVersion:l,previewFeatures:c,globalOmit:u});return{modelName:e,action:Uc[t],query:mt(r,p)}}function mt({select:e,include:t,...r}={},n){let i=r.omit;return delete r.omit,{arguments:fo(r,n),selection:jc(e,t,i,n)}}function jc(e,t,r,n){return e?(t?n.throwValidationError({kind:"MutuallyExclusiveFields",firstField:"include",secondField:"select",selectionPath:n.getSelectionPath()}):r&&n.throwValidationError({kind:"MutuallyExclusiveFields",firstField:"omit",secondField:"select",selectionPath:n.getSelectionPath()}),Jc(e,n)):Bc(n,t,r)}function Bc(e,t,r){let n={};return e.modelOrType&&!e.isRawAction()&&(n.$composites=!0,n.$scalars=!0),t&&Qc(n,t,e),Hc(n,r,e),n}function Qc(e,t,r){for(let[n,i]of Object.entries(t)){if(K(i))continue;let o=r.nestSelection(n);if(on(i,o),i===!1||i===void 0){e[n]=!1;continue}let s=r.findField(n);if(s&&s.kind!=="object"&&r.throwValidationError({kind:"IncludeOnScalar",selectionPath:r.getSelectionPath().concat(n),outputType:r.getOutputTypeDescription()}),s){e[n]=mt(i===!0?{}:i,o);continue}if(i===!0){e[n]=!0;continue}e[n]=mt(i,o)}}function Hc(e,t,r){let n=r.getComputedFields(),i={...r.getGlobalOmit(),...t},o=ao(i,n);for(let[s,a]of Object.entries(o)){if(K(a))continue;on(a,r.nestSelection(s));let l=r.findField(s);n?.[s]&&!l||(e[s]=!a)}}function Jc(e,t){let r={},n=t.getComputedFields(),i=so(e,n);for(let[o,s]of Object.entries(i)){if(K(s))continue;let a=t.nestSelection(o);on(s,a);let l=t.findField(o);if(!(n?.[o]&&!l)){if(s===!1||s===void 0||K(s)){r[o]=!1;continue}if(s===!0){l?.kind==="object"?r[o]=mt({},a):r[o]=!0;continue}r[o]=mt(s,a)}}return r}function mo(e,t){if(e===null)return null;if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="bigint")return{$type:"BigInt",value:String(e)};if(ve(e)){if(Qt(e))return{$type:"DateTime",value:e.toISOString()};t.throwValidationError({kind:"InvalidArgumentValue",selectionPath:t.getSelectionPath(),argumentPath:t.getArgumentPath(),argument:{name:t.getArgumentName(),typeNames:["Date"]},underlyingError:"Provided Date object is invalid"})}if(lo(e))return{$type:"Param",value:e.name};if(De(e))return{$type:"FieldRef",value:{_ref:e.name,_container:e.modelName}};if(Array.isArray(e))return Wc(e,t);if(ArrayBuffer.isView(e)){let{buffer:r,byteOffset:n,byteLength:i}=e;return{$type:"Bytes",value:Buffer.from(r,n,i).toString("base64")}}if(Gc(e))return e.values;if(Ce(e))return{$type:"Decimal",value:e.toFixed()};if(e instanceof se.ObjectEnumValue){if(!(0,se.isDbNull)(e)&&!(0,se.isJsonNull)(e)&&!(0,se.isAnyNull)(e))throw new Error("Invalid ObjectEnumValue");return{$type:"Enum",value:e._getName()}}if(Kc(e))return e.toJSON();if(typeof e=="object")return fo(e,t);t.throwValidationError({kind:"InvalidArgumentValue",selectionPath:t.getSelectionPath(),argumentPath:t.getArgumentPath(),argument:{name:t.getArgumentName(),typeNames:[]},underlyingError:`We could not serialize ${Object.prototype.toString.call(e)} value. Serialize the object to JSON or implement a ".toJSON()" method on it`})}function fo(e,t){if(e.$type)return{$type:"Raw",value:e};let r={};for(let n in e){let i=e[n],o=t.nestArgument(n);K(i)||(i!==void 0?r[n]=mo(i,o):t.isPreviewFeatureOn("strictUndefinedChecks")&&t.throwValidationError({kind:"InvalidArgumentValue",argumentPath:o.getArgumentPath(),selectionPath:t.getSelectionPath(),argument:{name:t.getArgumentName(),typeNames:[]},underlyingError:po}))}return r}function Wc(e,t){let r=[];for(let n=0;n({name:t.name,typeName:"boolean",isRelation:t.kind==="object"}))}}isRawAction(){return["executeRaw","queryRaw","runCommandRaw","findRaw","aggregateRaw"].includes(this.params.action)}isPreviewFeatureOn(t){return this.params.previewFeatures.includes(t)}getComputedFields(){if(this.params.modelName)return this.params.extensions.getAllComputedFields(this.params.modelName)}findField(t){return this.modelOrType?.fields.find(r=>r.name===t)}nestSelection(t){let r=this.findField(t),n=r?.kind==="object"?r.type:void 0;return new e({...this.params,modelName:n,selectionPath:this.params.selectionPath.concat(t)})}getGlobalOmit(){return this.params.modelName&&this.shouldApplyGlobalOmit()?this.params.globalOmit?.[ie(this.params.modelName)]??{}:{}}shouldApplyGlobalOmit(){switch(this.params.action){case"findFirst":case"findFirstOrThrow":case"findUniqueOrThrow":case"findMany":case"upsert":case"findUnique":case"createManyAndReturn":case"create":case"update":case"updateManyAndReturn":case"delete":return!0;case"executeRaw":case"aggregateRaw":case"runCommandRaw":case"findRaw":case"createMany":case"deleteMany":case"groupBy":case"updateMany":case"count":case"aggregate":case"queryRaw":return!1;default:X(this.params.action,"Unknown action")}}nestArgument(t){return new e({...this.params,argumentPath:this.params.argumentPath.concat(t)})}};function go(e,t){let r=ze(()=>zc(t));Object.defineProperty(e,"dmmf",{get:()=>r.get()})}function zc(e){return{datamodel:{models:sn(e.models),enums:sn(e.enums),types:sn(e.types)}}}function sn(e){return Object.entries(e).map(([t,r])=>({name:t,...r}))}var an=new WeakMap,sr="$$PrismaTypedSql",ft=class{constructor(t,r){an.set(this,{sql:t,values:r}),Object.defineProperty(this,sr,{value:sr})}get sql(){return an.get(this).sql}get values(){return an.get(this).values}};function yo(e){return(...t)=>new ft(e,t)}function ar(e){return e!=null&&e[sr]===sr}var pl=require("@prisma/client-runtime-utils");var dl=require("node:async_hooks"),ml=require("node:events");function gt(e){return{getKeys(){return Object.keys(e)},getPropertyValue(t){return e[t]}}}function N(e,t){return{getKeys(){return[e]},getPropertyValue(){return t()}}}function fe(e){let t=new J;return{getKeys(){return e.getKeys()},getPropertyValue(r){return t.getOrCreate(r,()=>e.getPropertyValue(r))},getPropertyDescriptor(r){return e.getPropertyDescriptor?.(r)}}}var lr={enumerable:!0,configurable:!0,writable:!0};function cr(e){let t=new Set(e);return{getPrototypeOf:()=>Object.prototype,getOwnPropertyDescriptor:()=>lr,has:(r,n)=>t.has(n),set:(r,n,i)=>t.add(n)&&Reflect.set(r,n,i),ownKeys:()=>[...t]}}var ho=Symbol.for("nodejs.util.inspect.custom");function Q(e,t){let r=Zc(t),n=new Set,i=new Proxy(e,{get(o,s){if(n.has(s))return o[s];let a=r.get(s);return a?a.getPropertyValue(s):o[s]},has(o,s){if(n.has(s))return!0;let a=r.get(s);return a?a.has?.(s)??!0:Reflect.has(o,s)},ownKeys(o){let s=wo(Reflect.ownKeys(o),r),a=wo(Array.from(r.keys()),r);return[...new Set([...s,...a,...n])]},set(o,s,a){return r.get(s)?.getPropertyDescriptor?.(s)?.writable===!1?!1:(n.add(s),Reflect.set(o,s,a))},getOwnPropertyDescriptor(o,s){let a=Reflect.getOwnPropertyDescriptor(o,s);if(a&&!a.configurable)return a;let l=r.get(s);return l?l.getPropertyDescriptor?{...lr,...l?.getPropertyDescriptor(s)}:lr:a},defineProperty(o,s,a){return n.add(s),Reflect.defineProperty(o,s,a)},getPrototypeOf:()=>Object.prototype});return i[ho]=function(){let o={...this};return delete o[ho],o},i}function Zc(e){let t=new Map;for(let r of e){let n=r.getKeys();for(let i of n)t.set(i,r)}return t}function wo(e,t){return e.filter(r=>t.get(r)?.has?.(r)??!0)}function Le(e){return{getKeys(){return e},has(){return!1},getPropertyValue(){}}}function xo(e){if(e===void 0)return"";let t=Ne(e);return new ke(0,{colors:Zt}).write(t).toString()}var yt="";function bo(e){var t=e.split(` +`);return t.reduce(function(r,n){var i=eu(n)||ru(n)||ou(n)||cu(n)||au(n);return i&&r.push(i),r},[])}var Yc=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Xc=/\((\S*)(?::(\d+))(?::(\d+))\)/;function eu(e){var t=Yc.exec(e);if(!t)return null;var r=t[2]&&t[2].indexOf("native")===0,n=t[2]&&t[2].indexOf("eval")===0,i=Xc.exec(t[2]);return n&&i!=null&&(t[2]=i[1],t[3]=i[2],t[4]=i[3]),{file:r?null:t[2],methodName:t[1]||yt,arguments:r?[t[2]]:[],lineNumber:t[3]?+t[3]:null,column:t[4]?+t[4]:null}}var tu=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;function ru(e){var t=tu.exec(e);return t?{file:t[2],methodName:t[1]||yt,arguments:[],lineNumber:+t[3],column:t[4]?+t[4]:null}:null}var nu=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,iu=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function ou(e){var t=nu.exec(e);if(!t)return null;var r=t[3]&&t[3].indexOf(" > eval")>-1,n=iu.exec(t[3]);return r&&n!=null&&(t[3]=n[1],t[4]=n[2],t[5]=null),{file:t[3],methodName:t[1]||yt,arguments:t[2]?t[2].split(","):[],lineNumber:t[4]?+t[4]:null,column:t[5]?+t[5]:null}}var su=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i;function au(e){var t=su.exec(e);return t?{file:t[3],methodName:t[1]||yt,arguments:[],lineNumber:+t[4],column:t[5]?+t[5]:null}:null}var lu=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;function cu(e){var t=lu.exec(e);return t?{file:t[2],methodName:t[1]||yt,arguments:[],lineNumber:+t[3],column:t[4]?+t[4]:null}:null}var ln=class{getLocation(){return null}},cn=class{_error;constructor(){this._error=new Error}getLocation(){let t=this._error.stack;if(!t)return null;let n=bo(t).find(i=>{if(!i.file)return!1;let o=zr(i.file);return o!==""&&!o.includes("@prisma")&&!o.includes("/packages/client/src/runtime/")&&!o.endsWith("/runtime/client.js")&&!o.startsWith("internal/")&&!i.methodName.includes("new ")&&!i.methodName.includes("getCallSite")&&!i.methodName.includes("Proxy.")&&i.methodName.split(".").length<4});return!n||!n.file?null:{fileName:n.file,lineNumber:n.lineNumber,columnNumber:n.column}}};function ae(e){return e==="minimal"?typeof $EnabledCallSite=="function"&&e!=="minimal"?new $EnabledCallSite:new ln:new cn}var Eo={_avg:!0,_count:!0,_sum:!0,_min:!0,_max:!0};function $e(e={}){let t=pu(e);return Object.entries(t).reduce((n,[i,o])=>(Eo[i]!==void 0?n.select[i]={select:o}:n[i]=o,n),{select:{}})}function pu(e={}){return typeof e._count=="boolean"?{...e,_count:{_all:e._count}}:e}function ur(e={}){return t=>(typeof e._count=="boolean"&&(t._count=t._count._all),t)}function To(e,t){let r=ur(e);return t({action:"aggregate",unpacker:r,argsMapper:$e})(e)}function du(e={}){let{select:t,...r}=e;return typeof t=="object"?$e({...r,_count:t}):$e({...r,_count:{_all:!0}})}function mu(e={}){return typeof e.select=="object"?t=>ur(e)(t)._count:t=>ur(e)(t)._count._all}function Po(e,t){return t({action:"count",unpacker:mu(e),argsMapper:du})(e)}function fu(e={}){let t=$e(e);if(Array.isArray(t.by))for(let r of t.by)typeof r=="string"&&(t.select[r]=!0);else typeof t.by=="string"&&(t.select[t.by]=!0);return t}function gu(e={}){return t=>(typeof e?._count=="boolean"&&t.forEach(r=>{r._count=r._count._all}),t)}function Ao(e,t){return t({action:"groupBy",unpacker:gu(e),argsMapper:fu})(e)}function So(e,t,r){if(t==="aggregate")return n=>To(n,r);if(t==="count")return n=>Po(n,r);if(t==="groupBy")return n=>Ao(n,r)}function vo(e,t){let r=t.fields.filter(i=>!i.relationName),n=ui(r,"name");return new Proxy({},{get(i,o){if(o in i||typeof o=="symbol")return i[o];let s=n[o];if(s)return new pt(e,o,s.type,s.isList,s.kind==="enum")},...cr(Object.keys(n))})}var Co=e=>Array.isArray(e)?e:e.split("."),un=(e,t)=>Co(t).reduce((r,n)=>r&&r[n],e),Ro=(e,t,r)=>Co(t).reduceRight((n,i,o,s)=>Object.assign({},un(e,s.slice(0,o)),{[i]:n}),r);function yu(e,t){return e===void 0||t===void 0?[]:[...t,"select",e]}function hu(e,t,r){return t===void 0?e??{}:Ro(t,r,e||!0)}function pn(e,t,r,n,i,o){let a=e._runtimeDataModel.models[t].fields.reduce((l,c)=>({...l,[c.name]:c}),{});return l=>{let c=ae(e._errorFormat),u=yu(n,i),p=hu(l,o,u),y=r({dataPath:u,callsite:c})(p),h=wu(e,t);return new Proxy(y,{get(g,E){if(!h.includes(E))return g[E];let re=[a[E].type,r,E],R=[u,p];return pn(e,...re,...R)},...cr([...h,...Object.getOwnPropertyNames(y)])})}}function wu(e,t){return e._runtimeDataModel.models[t].fields.filter(r=>r.kind==="object").map(r=>r.name)}var xu=["findUnique","findUniqueOrThrow","findFirst","findFirstOrThrow","create","update","upsert","delete"],bu=["aggregate","count","groupBy"];function dn(e,t){let r=e._extensions.getAllModelExtensions(t)??{},n=[Eu(e,t),Pu(e,t),gt(r),N("name",()=>t),N("$name",()=>t),N("$parent",()=>e._appliedParent)];return Q({},n)}function Eu(e,t){let r=G(t),n=Object.keys(Re).concat("count");return{getKeys(){return n},getPropertyValue(i){let o=i,s=a=>l=>{let c=ae(e._errorFormat);return e._createPrismaPromise(u=>{let p={args:l,dataPath:[],action:o,model:t,clientMethod:`${r}.${i}`,jsModelName:r,transaction:u,callsite:c};return e._request({...p,...a})},{action:o,args:l,model:t})};return xu.includes(o)?pn(e,t,s):Tu(i)?So(e,i,s):s({})}}}function Tu(e){return bu.includes(e)}function Pu(e,t){return fe(N("fields",()=>{let r=e._runtimeDataModel.models[t];return vo(t,r)}))}function ko(e){return e.replace(/^./,t=>t.toUpperCase())}var mn=Symbol();function ht(e){let t=[Au(e),Su(e),N(mn,()=>e),N("$parent",()=>e._appliedParent)],r=e._extensions.getAllClientExtensions();return r&&t.push(gt(r)),Q(e,t)}function Au(e){let t=Object.getPrototypeOf(e._originalClient),r=[...new Set(Object.getOwnPropertyNames(t))];return{getKeys(){return r},getPropertyValue(n){return e[n]}}}function Su(e){let t=Object.keys(e._runtimeDataModel.models),r=t.map(G),n=[...new Set(t.concat(r))];return fe({getKeys(){return n},getPropertyValue(i){let o=ko(i);if(e._runtimeDataModel.models[o]!==void 0)return dn(e,o);if(e._runtimeDataModel.models[i]!==void 0)return dn(e,i)},getPropertyDescriptor(i){if(!r.includes(i))return{enumerable:!1}}})}function Oo(e){return e[mn]?e[mn]:e}function Io(e){if(typeof e=="function")return e(this);let t=Object.create(this._originalClient,{_extensions:{value:this._extensions.append(e)},_appliedParent:{value:this,configurable:!0},$on:{value:void 0}});return ht(t)}function Fo({result:e,modelName:t,select:r,omit:n,extensions:i}){let o=i.getAllComputedFields(t);if(!o)return e;let s=[],a=[];for(let l of Object.values(o)){if(n){if(n[l.name])continue;let c=l.needs.filter(u=>n[u]);c.length>0&&a.push(Le(c))}else if(r){if(!r[l.name])continue;let c=l.needs.filter(u=>!r[u]);c.length>0&&a.push(Le(c))}vu(e,l.needs)&&s.push(Cu(l,Q(e,s)))}return s.length>0||a.length>0?Q(e,[...s,...a]):e}function vu(e,t){return t.every(r=>Zr(e,r))}function Cu(e,t){return fe(N(e.name,()=>e.compute(t)))}function pr({visitor:e,result:t,args:r,runtimeDataModel:n,modelName:i}){if(Array.isArray(t)){for(let s=0;su.name===o);if(!l||l.kind!=="object"||!l.relationName)continue;let c=typeof s=="object"?s:{};t[o]=pr({visitor:i,result:t[o],args:c,modelName:l.type,runtimeDataModel:n})}}function Do({result:e,modelName:t,args:r,extensions:n,runtimeDataModel:i,globalOmit:o}){return n.isEmpty()||e==null||typeof e!="object"||!i.models[t]?e:pr({result:e,args:r??{},modelName:t,runtimeDataModel:i,visitor:(a,l,c)=>{let u=G(l);return Fo({result:a,modelName:u,select:c.select,omit:c.select?void 0:{...o?.[u],...c.omit},extensions:n})}})}var ge=require("@prisma/client-runtime-utils");var Ru=["$connect","$disconnect","$on","$transaction","$extends"],No=Ru;function _o(e){if(e instanceof ge.Sql)return ku(e);if(ar(e))return Ou(e);if(Array.isArray(e)){let r=[e[0]];for(let n=1;n{let o=t.customDataProxyFetch;return"transaction"in t&&i!==void 0&&(t.transaction?.kind==="batch"&&t.transaction.lock.then(),t.transaction=i),n===r.length?e._executeRequest(t):r[n]({model:t.model,operation:t.model?t.action:t.clientMethod,args:_o(t.args??{}),__internalParams:t,query:(s,a=t)=>{let l=a.customDataProxyFetch;return a.customDataProxyFetch=jo(o,l),a.args=s,$o(e,a,r,n+1)}})})}function qo(e,t){let{jsModelName:r,action:n,clientMethod:i}=t,o=r?n:i;if(e._extensions.isEmpty())return e._executeRequest(t);let s=e._extensions.getAllQueryCallbacks(r??"$none",o);return $o(e,t,s)}function Vo(e){return t=>{let r={requests:t},n=t[0].extensions.getAllBatchQueryCallbacks();return n.length?Uo(r,n,0,e):e(r)}}function Uo(e,t,r,n){if(r===t.length)return n(e);let i=e.customDataProxyFetch,o=e.requests[0].transaction;return t[r]({args:{queries:e.requests.map(s=>({model:s.modelName,operation:s.action,args:s.args})),transaction:o?{isolationLevel:o.kind==="batch"?o.isolationLevel:void 0}:void 0},__internalParams:e,query(s,a=e){let l=a.customDataProxyFetch;return a.customDataProxyFetch=jo(i,l),Uo(a,t,r+1,n)}})}var Lo=e=>e;function jo(e=Lo,t=Lo){return r=>e(t(r))}var Go=require("@prisma/client-runtime-utils");var xt=require("@prisma/client-runtime-utils");function b(e,t){throw new Error(t)}function fn(e,t){return e===t||e!==null&&t!==null&&typeof e=="object"&&typeof t=="object"&&Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every(r=>fn(e[r],t[r]))}function qe(e,t){let r=Object.keys(e),n=Object.keys(t);return(r.length{if(typeof e[o]==typeof t[o]&&typeof e[o]!="object")return e[o]===t[o];if(xt.Decimal.isDecimal(e[o])||xt.Decimal.isDecimal(t[o])){let s=Bo(e[o]),a=Bo(t[o]);return s&&a&&s.equals(a)}else if(e[o]instanceof Uint8Array||t[o]instanceof Uint8Array){let s=Qo(e[o]),a=Qo(t[o]);return s&&a&&s.equals(a)}else{if(e[o]instanceof Date||t[o]instanceof Date)return Ho(e[o])?.getTime()===Ho(t[o])?.getTime();if(typeof e[o]=="bigint"||typeof t[o]=="bigint")return Jo(e[o])===Jo(t[o]);if(typeof e[o]=="number"||typeof t[o]=="number")return Wo(e[o])===Wo(t[o])}return fn(e[o],t[o])})}function Bo(e){return xt.Decimal.isDecimal(e)?e:typeof e=="number"||typeof e=="string"?new xt.Decimal(e):void 0}function Qo(e){return Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e.buffer,e.byteOffset,e.byteLength):typeof e=="string"?Buffer.from(e,"base64"):void 0}function Ho(e){return e instanceof Date?e:typeof e=="string"||typeof e=="number"?new Date(e):void 0}function Jo(e){return typeof e=="bigint"?e:typeof e=="number"||typeof e=="string"?BigInt(e):void 0}function Wo(e){return typeof e=="number"?e:typeof e=="string"?Number(e):void 0}function bt(e){return JSON.stringify(e,(t,r)=>typeof r=="bigint"?r.toString():ArrayBuffer.isView(r)?Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("base64"):r)}function Iu(e){return e!==null&&typeof e=="object"&&typeof e.$type=="string"}function Fu(e,t){let r={};for(let n of Object.keys(e))r[n]=t(e[n],n);return r}function le(e){return e===null?e:Array.isArray(e)?e.map(le):typeof e=="object"?Iu(e)?Mu(e):e.constructor!==null&&e.constructor.name!=="Object"?e:Fu(e,le):e}function Mu({$type:e,value:t}){switch(e){case"BigInt":return BigInt(t);case"Bytes":{let{buffer:r,byteOffset:n,byteLength:i}=Buffer.from(t,"base64");return new Uint8Array(r,n,i)}case"DateTime":return new Date(t);case"Decimal":return new Go.Decimal(t);case"Json":return JSON.parse(t);default:b(t,"Unknown tagged value")}}function dr(e){return e.name==="DriverAdapterError"&&typeof e.cause=="object"}var d={Int32:0,Int64:1,Float:2,Double:3,Numeric:4,Boolean:5,Character:6,Text:7,Date:8,Time:9,DateTime:10,Json:11,Enum:12,Bytes:13,Set:14,Uuid:15,Int32Array:64,Int64Array:65,FloatArray:66,DoubleArray:67,NumericArray:68,BooleanArray:69,CharacterArray:70,TextArray:71,DateArray:72,TimeArray:73,DateTimeArray:74,JsonArray:75,EnumArray:76,BytesArray:77,UuidArray:78,UnknownNumber:128};var O=class extends Error{name="UserFacingError";code;meta;constructor(t,r,n){super(t),this.code=r,this.meta=n??{}}toQueryResponseErrorObject(){return{error:this.message,user_facing_error:{is_panic:!1,message:this.message,meta:this.meta,error_code:this.code}}}};function Ve(e){if(!dr(e))throw e;let t=Du(e),r=Ko(e);throw!t||!r?e:new O(r,t,{driverAdapterError:e})}function yn(e){throw dr(e)?new O(`Raw query failed. Code: \`${e.cause.originalCode??"N/A"}\`. Message: \`${e.cause.originalMessage??Ko(e)}\``,"P2010",{driverAdapterError:e}):e}function Du(e){switch(e.cause.kind){case"AuthenticationFailed":return"P1000";case"DatabaseNotReachable":return"P1001";case"DatabaseDoesNotExist":return"P1003";case"SocketTimeout":return"P1008";case"DatabaseAlreadyExists":return"P1009";case"DatabaseAccessDenied":return"P1010";case"TlsConnectionError":return"P1011";case"ConnectionClosed":return"P1017";case"TransactionAlreadyClosed":return"P1018";case"LengthMismatch":return"P2000";case"UniqueConstraintViolation":return"P2002";case"ForeignKeyConstraintViolation":return"P2003";case"InvalidInputValue":return"P2007";case"UnsupportedNativeDataType":return"P2010";case"NullConstraintViolation":return"P2011";case"ValueOutOfRange":return"P2020";case"TableDoesNotExist":return"P2021";case"ColumnNotFound":return"P2022";case"InvalidIsolationLevel":case"InconsistentColumnData":return"P2023";case"MissingFullTextSearchIndex":return"P2030";case"TransactionWriteConflict":return"P2034";case"GenericJs":return"P2036";case"TooManyConnections":return"P2037";case"postgres":case"sqlite":case"mysql":case"mssql":return;default:b(e.cause,`Unknown error: ${e.cause}`)}}function Ko(e){switch(e.cause.kind){case"AuthenticationFailed":return`Authentication failed against the database server, the provided database credentials for \`${e.cause.user??"(not available)"}\` are not valid`;case"DatabaseNotReachable":{let t=e.cause.host&&e.cause.port?`${e.cause.host}:${e.cause.port}`:e.cause.host;return`Can't reach database server${t?` at ${t}`:""}`}case"DatabaseDoesNotExist":return`Database \`${e.cause.db??"(not available)"}\` does not exist on the database server`;case"SocketTimeout":return"Operation has timed out";case"DatabaseAlreadyExists":return`Database \`${e.cause.db??"(not available)"}\` already exists on the database server`;case"DatabaseAccessDenied":return`User was denied access on the database \`${e.cause.db??"(not available)"}\``;case"TlsConnectionError":return`Error opening a TLS connection: ${e.cause.reason}`;case"ConnectionClosed":return"Server has closed the connection.";case"TransactionAlreadyClosed":return e.cause.cause;case"LengthMismatch":return`The provided value for the column is too long for the column's type. Column: ${e.cause.column??"(not available)"}`;case"UniqueConstraintViolation":return`Unique constraint failed on the ${gn(e.cause.constraint)}`;case"ForeignKeyConstraintViolation":return`Foreign key constraint violated on the ${gn(e.cause.constraint)}`;case"UnsupportedNativeDataType":return`Failed to deserialize column of type '${e.cause.type}'. If you're using $queryRaw and this column is explicitly marked as \`Unsupported\` in your Prisma schema, try casting this column to any supported Prisma type such as \`String\`.`;case"NullConstraintViolation":return`Null constraint violation on the ${gn(e.cause.constraint)}`;case"ValueOutOfRange":return`Value out of range for the type: ${e.cause.cause}`;case"TableDoesNotExist":return`The table \`${e.cause.table??"(not available)"}\` does not exist in the current database.`;case"ColumnNotFound":return`The column \`${e.cause.column??"(not available)"}\` does not exist in the current database.`;case"InvalidIsolationLevel":return`Error in connector: Conversion error: ${e.cause.level}`;case"InconsistentColumnData":return`Inconsistent column data: ${e.cause.cause}`;case"MissingFullTextSearchIndex":return"Cannot find a fulltext index to use for the native search, try adding a @@fulltext([Fields...]) to your schema";case"TransactionWriteConflict":return"Transaction failed due to a write conflict or a deadlock. Please retry your transaction";case"GenericJs":return`Error in external connector (id ${e.cause.id})`;case"TooManyConnections":return`Too many database connections opened: ${e.cause.cause}`;case"InvalidInputValue":return`Invalid input value: ${e.cause.message}`;case"sqlite":case"postgres":case"mysql":case"mssql":return;default:b(e.cause,`Unknown error: ${e.cause}`)}}function gn(e){return e&&"fields"in e?`fields: (${e.fields.map(t=>`\`${t}\``).join(", ")})`:e&&"index"in e?`constraint: \`${e.index}\``:e&&"foreignKey"in e?"foreign key":"(not available)"}function zo(e,t){let r=e.map(i=>t.keys.reduce((o,s)=>(o[s]=le(i[s]),o),{})),n=new Set(t.nestedSelection);return t.arguments.map(i=>{let o=r.findIndex(s=>qe(s,i));if(o===-1)return t.expectNonEmpty?new O("An operation failed because it depends on one or more records that were required but not found","P2025"):null;{let s=Object.entries(e[o]).filter(([a])=>n.has(a));return Object.fromEntries(s)}})}var Yo=require("@prisma/client-runtime-utils");var A=class extends O{name="DataMapperError";constructor(t,r){super(t,"P2023",r)}};function Xo(e,t,r){switch(t.type){case"affectedRows":if(typeof e!="number")throw new A(`Expected an affected rows count, got: ${typeof e} (${e})`);return{count:e};case"object":return wn(e,t.fields,r,t.skipNulls);case"field":return hn(e,"",t.fieldType,r);default:b(t,`Invalid data mapping type: '${t.type}'`)}}function wn(e,t,r,n){if(e===null)return null;if(Array.isArray(e)){let i=e;return n&&(i=i.filter(o=>o!==null)),i.map(o=>Zo(o,t,r))}if(typeof e=="object")return Zo(e,t,r);if(typeof e=="string"){let i;try{i=JSON.parse(e)}catch(o){throw new A("Expected an array or object, got a string that is not valid JSON",{cause:o})}return wn(i,t,r,n)}throw new A(`Expected an array or an object, got: ${typeof e}`)}function Zo(e,t,r){if(typeof e!="object")throw new A(`Expected an object, but got '${typeof e}'`);let n={};for(let[i,o]of Object.entries(t))switch(o.type){case"affectedRows":throw new A(`Unexpected 'AffectedRows' node in data mapping for field '${i}'`);case"object":{if(o.serializedName!==null&&!Object.hasOwn(e,o.serializedName))throw new A(`Missing data field (Object): '${i}'; node: ${JSON.stringify(o)}; data: ${JSON.stringify(e)}`);let s=o.serializedName!==null?e[o.serializedName]:e;n[i]=wn(s,o.fields,r,o.skipNulls);break}case"field":{let s=o.dbName;if(Object.hasOwn(e,s))n[i]=Nu(e[s],s,o.fieldType,r);else throw new A(`Missing data field (Value): '${s}'; node: ${JSON.stringify(o)}; data: ${JSON.stringify(e)}`)}break;default:b(o,`DataMapper: Invalid data mapping node type: '${o.type}'`)}return n}function Nu(e,t,r,n){return e===null?r.arity==="list"?[]:null:r.arity==="list"?e.map((o,s)=>hn(o,`${t}[${s}]`,r,n)):hn(e,t,r,n)}function hn(e,t,r,n){switch(r.type){case"unsupported":return e;case"string":{if(typeof e!="string")throw new A(`Expected a string in column '${t}', got ${typeof e}: ${e}`);return e}case"int":switch(typeof e){case"number":return Math.trunc(e);case"string":{let i=Math.trunc(Number(e));if(Number.isNaN(i)||!Number.isFinite(i))throw new A(`Expected an integer in column '${t}', got string: ${e}`);if(!Number.isSafeInteger(i))throw new A(`Integer value in column '${t}' is too large to represent as a JavaScript number without loss of precision, got: ${e}. Consider using BigInt type.`);return i}default:throw new A(`Expected an integer in column '${t}', got ${typeof e}: ${e}`)}case"bigint":{if(typeof e!="number"&&typeof e!="string")throw new A(`Expected a bigint in column '${t}', got ${typeof e}: ${e}`);return{$type:"BigInt",value:e}}case"float":{if(typeof e=="number")return e;if(typeof e=="string"){let i=Number(e);if(Number.isNaN(i)&&!/^[-+]?nan$/.test(e.toLowerCase()))throw new A(`Expected a float in column '${t}', got string: ${e}`);return i}throw new A(`Expected a float in column '${t}', got ${typeof e}: ${e}`)}case"boolean":{if(typeof e=="boolean")return e;if(typeof e=="number")return e===1;if(typeof e=="string"){if(e==="true"||e==="TRUE"||e==="1")return!0;if(e==="false"||e==="FALSE"||e==="0")return!1;throw new A(`Expected a boolean in column '${t}', got ${typeof e}: ${e}`)}if(Array.isArray(e)||e instanceof Uint8Array){for(let i of e)if(i!==0)return!0;return!1}throw new A(`Expected a boolean in column '${t}', got ${typeof e}: ${e}`)}case"decimal":if(typeof e!="number"&&typeof e!="string"&&!Yo.Decimal.isDecimal(e))throw new A(`Expected a decimal in column '${t}', got ${typeof e}: ${e}`);return{$type:"Decimal",value:e};case"datetime":{if(typeof e=="string")return{$type:"DateTime",value:Lu(e)};if(typeof e=="number"||e instanceof Date)return{$type:"DateTime",value:e};throw new A(`Expected a date in column '${t}', got ${typeof e}: ${e}`)}case"object":return{$type:"Json",value:bt(e)};case"json":return{$type:"Json",value:`${e}`};case"bytes":{switch(r.encoding){case"base64":if(typeof e!="string")throw new A(`Expected a base64-encoded byte array in column '${t}', got ${typeof e}: ${e}`);return{$type:"Bytes",value:e};case"hex":if(typeof e!="string"||!e.startsWith("\\x"))throw new A(`Expected a hex-encoded byte array in column '${t}', got ${typeof e}: ${e}`);return{$type:"Bytes",value:Buffer.from(e.slice(2),"hex").toString("base64")};case"array":if(Array.isArray(e))return{$type:"Bytes",value:Buffer.from(e).toString("base64")};if(e instanceof Uint8Array)return{$type:"Bytes",value:Buffer.from(e).toString("base64")};throw new A(`Expected a byte array in column '${t}', got ${typeof e}: ${e}`);default:b(r.encoding,`DataMapper: Unknown bytes encoding: ${r.encoding}`)}break}case"enum":{let i=n[r.name];if(i===void 0)throw new A(`Unknown enum '${r.name}'`);let o=i[`${e}`];if(o===void 0)throw new A(`Value '${e}' not found in enum '${r.name}'`);return o}default:b(r,`DataMapper: Unknown result type: ${r.type}`)}}var _u=/\d{2}:\d{2}:\d{2}(?:\.\d+)?(Z|[+-]\d{2}(:?\d{2})?)?$/;function Lu(e){let t=_u.exec(e);if(t===null)return`${e}T00:00:00Z`;let r=e,[n,i,o]=t;if(i!==void 0&&i!=="Z"&&o===void 0?r=`${e}:00`:i===void 0&&(r=`${e}Z`),n.length===e.length)return`1970-01-01T${r}`;let s=t.index-1;return r[s]===" "&&(r=`${r.slice(0,s)}T${r.slice(s+1)}`),r}function $u(e){let t=Object.entries(e);return t.length===0?"":(t.sort(([n],[i])=>n.localeCompare(i)),`/*${t.map(([n,i])=>{let o=encodeURIComponent(n),s=encodeURIComponent(i).replace(/'/g,"\\'");return`${o}='${s}'`}).join(",")}*/`)}function mr(e,t){let r={};for(let n of e){let i=n(t);for(let[o,s]of Object.entries(i))s!==void 0&&(r[o]=s)}return r}function es(e,t){let r=mr(e,t);return $u(r)}function ts(e,t){return t?`${e} ${t}`:e}var Et;(function(e){e[e.INTERNAL=0]="INTERNAL",e[e.SERVER=1]="SERVER",e[e.CLIENT=2]="CLIENT",e[e.PRODUCER=3]="PRODUCER",e[e.CONSUMER=4]="CONSUMER"})(Et||(Et={}));function qu(e){switch(e){case"postgresql":case"postgres":case"prisma+postgres":return"postgresql";case"sqlserver":return"mssql";case"mysql":case"sqlite":case"cockroachdb":case"mongodb":return e;default:b(e,`Unknown provider: ${e}`)}}async function fr({query:e,tracingHelper:t,provider:r,onQuery:n,execute:i}){return await t.runInChildSpan({name:"db_query",kind:Et.CLIENT,attributes:{"db.query.text":e.sql,"db.system.name":qu(r)}},async()=>{let o=new Date,s=performance.now(),a=await i(),l=performance.now();return n?.({timestamp:o,duration:l-s,query:e.sql,params:e.args}),a})}function ye(e,t){var r="000000000"+e;return r.substr(r.length-t)}var rs=V(require("node:os"),1);function Vu(){try{return rs.default.hostname()}catch{return process.env._CLUSTER_NETWORK_NAME_||process.env.COMPUTERNAME||"hostname"}}var ns=2,Uu=ye(process.pid.toString(36),ns),is=Vu(),ju=is.length,Bu=ye(is.split("").reduce(function(e,t){return+e+t.charCodeAt(0)},+ju+36).toString(36),ns);function xn(){return Uu+Bu}function gr(e){return typeof e=="string"&&/^c[a-z0-9]{20,32}$/.test(e)}function bn(e){let n=Math.pow(36,4),i=0;function o(){return ye((Math.random()*n<<0).toString(36),4)}function s(){return i=iwe.length&&(kn.webcrypto.getRandomValues(we),Be=0),Be+=e}function On(e=21){Ip(e|=0);let t="";for(let r=Be-e;r{let n=new Uint8Array(1);return r.getRandomValues(n),n[0]/255};if(typeof r?.randomBytes=="function")return()=>r.randomBytes(1).readUInt8()/255;if(Ct.default?.randomBytes)return()=>Ct.default.randomBytes(1).readUInt8()/255;throw new be(xe.PRNGDetectFailure,"Failed to find a reliable PRNG")}function Np(){return $p()?self:typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:null}function _p(e,t){let r="";for(;e>0;e--)r=Mp(t)+r;return r}function Lp(e,t=Xs){if(isNaN(e))throw new be(xe.EncodeTimeValueMalformed,`Time must be a number: ${e}`);if(e>Zs)throw new be(xe.EncodeTimeSizeExceeded,`Cannot encode a time larger than ${Zs}: ${e}`);if(e<0)throw new be(xe.EncodeTimeNegative,`Time must be positive: ${e}`);if(Number.isInteger(e)===!1)throw new be(xe.EncodeTimeValueMalformed,`Time must be an integer: ${e}`);let r,n="";for(let i=t;i>0;i--)r=e%Rt,n=Ys.charAt(r)+n,e=(e-r)/Rt;return n}function $p(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}function ea(e,t){let r=t||Dp(),n=!e||isNaN(e)?Date.now():e;return Lp(n,Xs)+_p(Fp,r)}var I=[];for(let e=0;e<256;++e)I.push((e+256).toString(16).slice(1));function xr(e,t=0){return(I[e[t+0]]+I[e[t+1]]+I[e[t+2]]+I[e[t+3]]+"-"+I[e[t+4]]+I[e[t+5]]+"-"+I[e[t+6]]+I[e[t+7]]+"-"+I[e[t+8]]+I[e[t+9]]+"-"+I[e[t+10]]+I[e[t+11]]+I[e[t+12]]+I[e[t+13]]+I[e[t+14]]+I[e[t+15]]).toLowerCase()}var ta=require("node:crypto"),Er=new Uint8Array(256),br=Er.length;function Qe(){return br>Er.length-16&&((0,ta.randomFillSync)(Er),br=0),Er.slice(br,br+=16)}var ra=require("node:crypto"),In={randomUUID:ra.randomUUID};function qp(e,t,r){if(In.randomUUID&&!t&&!e)return In.randomUUID();e=e||{};let n=e.random??e.rng?.()??Qe();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){if(r=r||0,r<0||r+16>t.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let i=0;i<16;++i)t[r+i]=n[i];return t}return xr(n)}var Fn=qp;var Mn={};function Vp(e,t,r){let n;if(e)n=na(e.random??e.rng?.()??Qe(),e.msecs,e.seq,t,r);else{let i=Date.now(),o=Qe();Up(Mn,i,o),n=na(o,Mn.msecs,Mn.seq,t,r)}return t??xr(n)}function Up(e,t,r){return e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=r[6]<<23|r[7]<<16|r[8]<<8|r[9],e.msecs=t):(e.seq=e.seq+1|0,e.seq===0&&e.msecs++),e}function na(e,t,r,n,i=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(!n)n=new Uint8Array(16),i=0;else if(i<0||i+16>n.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);return t??=Date.now(),r??=e[6]*127<<24|e[7]<<16|e[8]<<8|e[9],n[i++]=t/1099511627776&255,n[i++]=t/4294967296&255,n[i++]=t/16777216&255,n[i++]=t/65536&255,n[i++]=t/256&255,n[i++]=t&255,n[i++]=112|r>>>28&15,n[i++]=r>>>20&255,n[i++]=128|r>>>14&63,n[i++]=r>>>6&255,n[i++]=r<<2&255|e[10]&3,n[i++]=e[11],n[i++]=e[12],n[i++]=e[13],n[i++]=e[14],n[i++]=e[15],n}var Dn=Vp;var Tr=class{#t={};constructor(){this.register("uuid",new _n),this.register("cuid",new Ln),this.register("ulid",new $n),this.register("nanoid",new qn),this.register("product",new Vn)}snapshot(){return Object.create(this.#t,{now:{value:new Nn}})}register(t,r){this.#t[t]=r}},Nn=class{#t=new Date;generate(){return this.#t.toISOString()}},_n=class{generate(t){if(t===4)return Fn();if(t===7)return Dn();throw new Error("Invalid UUID generator arguments")}},Ln=class{generate(t){if(t===1)return os();if(t===2)return(0,ia.createId)();throw new Error("Invalid CUID generator arguments")}},$n=class{generate(){return ea()}},qn=class{generate(t){if(typeof t=="number")return On(t);if(t===void 0)return On();throw new Error("Invalid Nanoid generator arguments")}},Vn=class{generate(t,r){if(t===void 0||r===void 0)throw new Error("Invalid Product generator arguments");return Array.isArray(t)&&Array.isArray(r)?t.flatMap(n=>r.map(i=>[n,i])):Array.isArray(t)?t.map(n=>[n,r]):Array.isArray(r)?r.map(n=>[t,n]):[[t,r]]}};function Pr(e,t){return e==null?e:typeof e=="string"?Pr(JSON.parse(e),t):Array.isArray(e)?Bp(e,t):jp(e,t)}function jp(e,t){if(t.pagination){let{skip:r,take:n,cursor:i}=t.pagination;if(r!==null&&r>0||n===0||i!==null&&!qe(e,i))return null}return sa(e,t.nested)}function sa(e,t){for(let[r,n]of Object.entries(t))e[r]=Pr(e[r],n);return e}function Bp(e,t){if(t.distinct!==null){let r=t.linkingFields!==null?[...t.distinct,...t.linkingFields]:t.distinct;e=Qp(e,r)}return t.pagination&&(e=Hp(e,t.pagination,t.linkingFields)),t.reverse&&e.reverse(),Object.keys(t.nested).length===0?e:e.map(r=>sa(r,t.nested))}function Qp(e,t){let r=new Set,n=[];for(let i of e){let o=He(i,t);r.has(o)||(r.add(o),n.push(i))}return n}function Hp(e,t,r){if(r===null)return oa(e,t);let n=new Map;for(let o of e){let s=He(o,r);n.has(s)||n.set(s,[]),n.get(s).push(o)}let i=Array.from(n.entries());return i.sort(([o],[s])=>os?1:0),i.flatMap(([,o])=>oa(o,t))}function oa(e,{cursor:t,skip:r,take:n}){let i=t!==null?e.findIndex(a=>qe(a,t)):0;if(i===-1)return[];let o=i+(r??0),s=n!==null?o+n:e.length;return e.slice(o,s)}function He(e,t){return JSON.stringify(t.map(r=>e[r]))}function Un(e){return typeof e=="object"&&e!==null&&e.prisma__type==="param"}function jn(e){return typeof e=="object"&&e!==null&&e.prisma__type==="generatorCall"}function Hn(e,t,r,n){let i=e.args.map(o=>H(o,t,r));switch(e.type){case"rawSql":return[Gp(e.sql,i,e.argTypes)];case"templateSql":return(e.chunkable?zp(e.fragments,i,n):[i]).map(s=>{if(n!==void 0&&s.length>n)throw new O("The query parameter limit supported by your database is exceeded.","P2029");return Jp(e.fragments,e.placeholderFormat,s,e.argTypes)});default:b(e.type,"Invalid query type")}}function H(e,t,r){for(;Kp(e);)if(Un(e)){let n=t[e.prisma__value.name];if(n===void 0)throw new Error(`Missing value for query variable ${e.prisma__value.name}`);e=n}else if(jn(e)){let{name:n,args:i}=e.prisma__value,o=r[n];if(!o)throw new Error(`Encountered an unknown generator '${n}'`);e=o.generate(...i.map(s=>H(s,t,r)))}else b(e,`Unexpected unevaluated value type: ${e}`);return Array.isArray(e)&&(e=e.map(n=>H(n,t,r))),e}function Jp(e,t,r,n){let i="",o={placeholderNumber:1},s=[],a=[];for(let l of Qn(e,r,n)){if(i+=Wp(l,t,o),l.type==="stringChunk")continue;let c=s.length,u=s.push(...aa(l))-c;if(l.argType.arity==="tuple"){if(u%l.argType.elements.length!==0)throw new Error(`Malformed query template. Expected the number of parameters to match the tuple arity, but got ${u} parameters for a tuple of arity ${l.argType.elements.length}.`);for(let p=0;pBn(t,r.placeholderNumber++)).join(",")})`;case"parameterTupleList":return e.value.map(i=>{let o=i.map(()=>Bn(t,r.placeholderNumber++)).join(e.itemSeparator);return`${e.itemPrefix}${o}${e.itemSuffix}`}).join(e.groupSeparator);default:b(n,"Invalid fragment type")}}function Bn(e,t){return e.hasNumbering?`${e.prefix}${t}`:e.prefix}function Gp(e,t,r){return{sql:e,args:t,argTypes:r}}function Kp(e){return Un(e)||jn(e)}function*Qn(e,t,r){let n=0;for(let i of e)switch(i.type){case"parameter":{if(n>=t.length)throw new Error(`Malformed query template. Fragments attempt to read over ${t.length} parameters.`);yield{...i,value:t[n],argType:r?.[n]},n++;break}case"stringChunk":{yield i;break}case"parameterTuple":{if(n>=t.length)throw new Error(`Malformed query template. Fragments attempt to read over ${t.length} parameters.`);let o=t[n];yield{...i,value:Array.isArray(o)?o:[o],argType:r?.[n]},n++;break}case"parameterTupleList":{if(n>=t.length)throw new Error(`Malformed query template. Fragments attempt to read over ${t.length} parameters.`);let o=t[n];if(!Array.isArray(o))throw new Error("Malformed query template. Tuple list expected.");if(o.length===0)throw new Error("Malformed query template. Tuple list cannot be empty.");for(let s of o)if(!Array.isArray(s))throw new Error("Malformed query template. Tuple expected.");yield{...i,value:o,argType:r?.[n]},n++;break}}}function*aa(e){switch(e.type){case"parameter":yield e.value;break;case"stringChunk":break;case"parameterTuple":yield*e.value;break;case"parameterTupleList":for(let t of e.value)yield*t;break}}function zp(e,t,r){let n=0,i=0;for(let s of Qn(e,t,void 0)){let a=0;for(let l of aa(s))a++;i=Math.max(i,a),n+=a}let o=[[]];for(let s of Qn(e,t,void 0))switch(s.type){case"parameter":{for(let a of o)a.push(s.value);break}case"stringChunk":break;case"parameterTuple":{let a=s.value.length,l=[];if(r&&o.length===1&&a===i&&n>r&&n-al.map(u=>[...c,u]));break}case"parameterTupleList":{let a=s.value.reduce((p,y)=>p+y.length,0),l=[],c=[],u=0;for(let p of s.value)r&&o.length===1&&a===i&&c.length>0&&n-a+u+p.length>r&&(l.push(c),c=[],u=0),c.push(p),u+=p.length;c.length>0&&l.push(c),o=o.flatMap(p=>l.map(y=>[...p,y]));break}}return o}function Zp(e,t){let r=[];for(let n=0;nt.reduce((r,n,i)=>(r[e.columnNames[i]]=n,r),{}))}function ca(e){return{columns:e.columnNames,types:e.columnTypes.map(t=>Yp(t)),rows:e.rows.map(t=>t.map((r,n)=>kt(r,e.columnTypes[n])))}}function kt(e,t){if(e===null)return null;switch(t){case d.Int32:switch(typeof e){case"number":return Math.trunc(e);case"string":return Math.trunc(Number(e));default:throw new Error(`Cannot serialize value of type ${typeof e} as Int32`)}case d.Int32Array:if(!Array.isArray(e))throw new Error(`Cannot serialize value of type ${typeof e} as Int32Array`);return e.map(r=>kt(r,d.Int32));case d.Int64:switch(typeof e){case"number":return BigInt(Math.trunc(e));case"string":return e;default:throw new Error(`Cannot serialize value of type ${typeof e} as Int64`)}case d.Int64Array:if(!Array.isArray(e))throw new Error(`Cannot serialize value of type ${typeof e} as Int64Array`);return e.map(r=>kt(r,d.Int64));case d.Json:switch(typeof e){case"string":return JSON.parse(e);default:throw new Error(`Cannot serialize value of type ${typeof e} as Json`)}case d.JsonArray:if(!Array.isArray(e))throw new Error(`Cannot serialize value of type ${typeof e} as JsonArray`);return e.map(r=>kt(r,d.Json));case d.Boolean:switch(typeof e){case"boolean":return e;case"string":return e==="true"||e==="1";case"number":return e===1;default:throw new Error(`Cannot serialize value of type ${typeof e} as Boolean`)}case d.BooleanArray:if(!Array.isArray(e))throw new Error(`Cannot serialize value of type ${typeof e} as BooleanArray`);return e.map(r=>kt(r,d.Boolean));default:return e}}function Yp(e){switch(e){case d.Int32:return"int";case d.Int64:return"bigint";case d.Float:return"float";case d.Double:return"double";case d.Text:return"string";case d.Enum:return"enum";case d.Bytes:return"bytes";case d.Boolean:return"bool";case d.Character:return"char";case d.Numeric:return"decimal";case d.Json:return"json";case d.Uuid:return"uuid";case d.DateTime:return"datetime";case d.Date:return"date";case d.Time:return"time";case d.Int32Array:return"int-array";case d.Int64Array:return"bigint-array";case d.FloatArray:return"float-array";case d.DoubleArray:return"double-array";case d.TextArray:return"string-array";case d.EnumArray:return"string-array";case d.BytesArray:return"bytes-array";case d.BooleanArray:return"bool-array";case d.CharacterArray:return"char-array";case d.NumericArray:return"decimal-array";case d.JsonArray:return"json-array";case d.UuidArray:return"uuid-array";case d.DateTimeArray:return"datetime-array";case d.DateArray:return"date-array";case d.TimeArray:return"time-array";case d.UnknownNumber:return"unknown";case d.Set:return"string";default:b(e,`Unexpected column type: ${e}`)}}function ua(e,t,r){if(!t.every(n=>Jn(e,n))){let n=Xp(e,r),i=ed(r);throw new O(n,i,r.context)}}function Jn(e,t){switch(t.type){case"rowCountEq":return Array.isArray(e)?e.length===t.args:e===null?t.args===0:t.args===1;case"rowCountNeq":return Array.isArray(e)?e.length!==t.args:e===null?t.args!==0:t.args!==1;case"affectedRowCountEq":return e===t.args;case"never":return!1;default:b(t,`Unknown rule type: ${t.type}`)}}function Xp(e,t){switch(t.error_identifier){case"RELATION_VIOLATION":return`The change you are trying to make would violate the required relation '${t.context.relation}' between the \`${t.context.modelA}\` and \`${t.context.modelB}\` models.`;case"MISSING_RECORD":return`An operation failed because it depends on one or more records that were required but not found. No record was found for ${t.context.operation}.`;case"MISSING_RELATED_RECORD":{let r=t.context.neededFor?` (needed to ${t.context.neededFor})`:"";return`An operation failed because it depends on one or more records that were required but not found. No '${t.context.model}' record${r} was found for ${t.context.operation} on ${t.context.relationType} relation '${t.context.relation}'.`}case"INCOMPLETE_CONNECT_INPUT":return`An operation failed because it depends on one or more records that were required but not found. Expected ${t.context.expectedRows} records to be connected, found only ${Array.isArray(e)?e.length:e}.`;case"INCOMPLETE_CONNECT_OUTPUT":return`The required connected records were not found. Expected ${t.context.expectedRows} records to be connected after connect operation on ${t.context.relationType} relation '${t.context.relation}', found ${Array.isArray(e)?e.length:e}.`;case"RECORDS_NOT_CONNECTED":return`The records for relation \`${t.context.relation}\` between the \`${t.context.parent}\` and \`${t.context.child}\` models are not connected.`;default:b(t,`Unknown error identifier: ${t}`)}}function ed(e){switch(e.error_identifier){case"RELATION_VIOLATION":return"P2014";case"RECORDS_NOT_CONNECTED":return"P2017";case"INCOMPLETE_CONNECT_OUTPUT":return"P2018";case"MISSING_RECORD":case"MISSING_RELATED_RECORD":case"INCOMPLETE_CONNECT_INPUT":return"P2025";default:b(e,`Unknown error identifier: ${e}`)}}var Ot=class e{#t;#e;#r;#n=new Tr;#l;#i;#s;#o;#c;#a;constructor({transactionManager:t,placeholderValues:r,onQuery:n,tracingHelper:i,serializer:o,rawSerializer:s,provider:a,connectionInfo:l,sqlCommenter:c}){this.#t=t,this.#e=r,this.#r=n,this.#l=i,this.#i=o,this.#s=s??o,this.#o=a,this.#c=l,this.#a=c}static forSql(t){return new e({transactionManager:t.transactionManager,placeholderValues:t.placeholderValues,onQuery:t.onQuery,tracingHelper:t.tracingHelper,serializer:la,rawSerializer:ca,provider:t.provider,connectionInfo:t.connectionInfo,sqlCommenter:t.sqlCommenter})}async run(t,r){let{value:n}=await this.interpretNode(t,r,this.#e,this.#n.snapshot()).catch(i=>Ve(i));return n}async interpretNode(t,r,n,i){switch(t.type){case"value":return{value:H(t.args,n,i)};case"seq":{let o;for(let s of t.args)o=await this.interpretNode(s,r,n,i);return o??{value:void 0}}case"get":return{value:n[t.args.name]};case"let":{let o=Object.create(n);for(let s of t.args.bindings){let{value:a}=await this.interpretNode(s.expr,r,o,i);o[s.name]=a}return this.interpretNode(t.args.expr,r,o,i)}case"getFirstNonEmpty":{for(let o of t.args.names){let s=n[o];if(!pa(s))return{value:s}}return{value:[]}}case"concat":{let o=await Promise.all(t.args.map(s=>this.interpretNode(s,r,n,i).then(a=>a.value)));return{value:o.length>0?o.reduce((s,a)=>s.concat(Wn(a)),[]):[]}}case"sum":{let o=await Promise.all(t.args.map(s=>this.interpretNode(s,r,n,i).then(a=>a.value)));return{value:o.length>0?o.reduce((s,a)=>z(s)+z(a)):0}}case"execute":{let o=Hn(t.args,n,i,this.#u()),s=0;for(let a of o){let l=this.#m(a);s+=await this.#d(l,r,()=>r.executeRaw(l).catch(c=>t.args.type==="rawSql"?yn(c):Ve(c)))}return{value:s}}case"query":{let o=Hn(t.args,n,i,this.#u()),s;for(let a of o){let l=this.#m(a),c=await this.#d(l,r,()=>r.queryRaw(l).catch(u=>t.args.type==="rawSql"?yn(u):Ve(u)));s===void 0?s=c:(s.rows.push(...c.rows),s.lastInsertId=c.lastInsertId)}return{value:t.args.type==="rawSql"?this.#s(s):this.#i(s),lastInsertId:s?.lastInsertId}}case"reverse":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args,r,n,i);return{value:Array.isArray(o)?o.reverse():o,lastInsertId:s}}case"unique":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args,r,n,i);if(!Array.isArray(o))return{value:o,lastInsertId:s};if(o.length>1)throw new Error(`Expected zero or one element, got ${o.length}`);return{value:o[0]??null,lastInsertId:s}}case"required":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args,r,n,i);if(pa(o))throw new Error("Required value is empty");return{value:o,lastInsertId:s}}case"mapField":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.records,r,n,i);return{value:da(o,t.args.field),lastInsertId:s}}case"join":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.parent,r,n,i);if(o===null)return{value:null,lastInsertId:s};let a=await Promise.all(t.args.children.map(async l=>({joinExpr:l,childRecords:(await this.interpretNode(l.child,r,n,i)).value})));return{value:td(o,a),lastInsertId:s}}case"transaction":{if(!this.#t.enabled)return this.interpretNode(t.args,r,n,i);let o=this.#t.manager,s=await o.startInternalTransaction(),a=await o.getTransaction(s,"query");try{let l=await this.interpretNode(t.args,a,n,i);return await o.commitTransaction(s.id),l}catch(l){throw await o.rollbackTransaction(s.id),l}}case"dataMap":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.expr,r,n,i);return{value:Xo(o,t.args.structure,t.args.enums),lastInsertId:s}}case"validate":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.expr,r,n,i);return ua(o,t.args.rules,t.args),{value:o,lastInsertId:s}}case"if":{let{value:o}=await this.interpretNode(t.args.value,r,n,i);return Jn(o,t.args.rule)?await this.interpretNode(t.args.then,r,n,i):await this.interpretNode(t.args.else,r,n,i)}case"unit":return{value:void 0};case"diff":{let{value:o}=await this.interpretNode(t.args.from,r,n,i),{value:s}=await this.interpretNode(t.args.to,r,n,i),a=c=>c!==null?He(Ar(c),t.args.fields):null,l=new Set(Wn(s).map(a));return{value:Wn(o).filter(c=>!l.has(a(c)))}}case"process":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.expr,r,n,i);return{value:Pr(o,t.args.operations),lastInsertId:s}}case"initializeRecord":{let{lastInsertId:o}=await this.interpretNode(t.args.expr,r,n,i),s={};for(let[a,l]of Object.entries(t.args.fields))s[a]=rd(l,o,n,i);return{value:s,lastInsertId:o}}case"mapRecord":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.expr,r,n,i),a=o===null?{}:Ar(o);for(let[l,c]of Object.entries(t.args.fields))a[l]=nd(c,a[l],n,i);return{value:a,lastInsertId:s}}default:b(t,`Unexpected node type: ${t.type}`)}}#u(){return this.#c?.maxBindValues!==void 0?this.#c.maxBindValues:this.#p()}#p(){if(this.#o!==void 0)switch(this.#o){case"cockroachdb":case"postgres":case"postgresql":case"prisma+postgres":return 32766;case"mysql":return 65535;case"sqlite":return 999;case"sqlserver":return 2098;case"mongodb":return;default:b(this.#o,`Unexpected provider: ${this.#o}`)}}#d(t,r,n){return fr({query:t,execute:n,provider:this.#o??r.provider,tracingHelper:this.#l,onQuery:this.#r})}#m(t){if(!this.#a||this.#a.plugins.length===0)return t;let r=es(this.#a.plugins,{query:this.#a.queryInfo,sql:t.sql});return r?{...t,sql:ts(t.sql,r)}:t}};function pa(e){return Array.isArray(e)?e.length===0:e==null}function Wn(e){return Array.isArray(e)?e:[e]}function z(e){if(typeof e=="number")return e;if(typeof e=="string")return Number(e);throw new Error(`Expected number, got ${typeof e}`)}function Ar(e){if(typeof e=="object"&&e!==null)return e;throw new Error(`Expected object, got ${typeof e}`)}function da(e,t){return Array.isArray(e)?e.map(r=>da(r,t)):typeof e=="object"&&e!==null?e[t]??null:e}function td(e,t){for(let{joinExpr:r,childRecords:n}of t){let i=r.on.map(([a])=>a),o=r.on.map(([,a])=>a),s={};for(let a of Array.isArray(e)?e:[e]){let l=Ar(a),c=He(l,i);s[c]||(s[c]=[]),s[c].push(l),r.isRelationUnique?l[r.parentField]=null:l[r.parentField]=[]}for(let a of Array.isArray(n)?n:[n]){if(a===null)continue;let l=He(Ar(a),o);for(let c of s[l]??[])r.isRelationUnique?c[r.parentField]=a:c[r.parentField].push(a)}}return e}function rd(e,t,r,n){switch(e.type){case"value":return H(e.value,r,n);case"lastInsertId":return t;default:b(e,`Unexpected field initializer type: ${e.type}`)}}function nd(e,t,r,n){switch(e.type){case"set":return H(e.value,r,n);case"add":return z(t)+z(H(e.value,r,n));case"subtract":return z(t)-z(H(e.value,r,n));case"multiply":return z(t)*z(H(e.value,r,n));case"divide":{let i=z(t),o=z(H(e.value,r,n));return o===0?null:i/o}default:b(e,`Unexpected field operation type: ${e.type}`)}}async function id(){return globalThis.crypto??await import("node:crypto")}async function ma(){return(await id()).randomUUID()}async function fa(e,t){return new Promise(r=>{e.addEventListener(t,r,{once:!0})})}var U=class extends O{name="TransactionManagerError";constructor(t,r){super("Transaction API error: "+t,"P2028",r)}},It=class extends U{constructor(){super("Transaction not found. Transaction ID is invalid, refers to an old closed transaction Prisma doesn't have information about anymore, or was obtained before disconnecting.")}},Sr=class extends U{constructor(t){super(`Transaction already closed: A ${t} cannot be executed on a committed transaction.`)}},vr=class extends U{constructor(t){super(`Transaction already closed: A ${t} cannot be executed on a transaction that was rolled back.`)}},Cr=class extends U{constructor(){super("Unable to start a transaction in the given time.")}},Rr=class extends U{constructor(t,{timeout:r,timeTaken:n}){super(`A ${t} cannot be executed on an expired transaction. The timeout for this transaction was ${r} ms, however ${n} ms passed since the start of the transaction. Consider increasing the interactive transaction timeout or doing less work in the transaction.`,{operation:t,timeout:r,timeTaken:n})}},Je=class extends U{constructor(t){super(`Internal Consistency Error: ${t}`)}},kr=class extends U{constructor(t){super(`Invalid isolation level: ${t}`,{isolationLevel:t})}};var od=100,We=M("prisma:client:transactionManager"),sd=()=>({sql:"COMMIT",args:[],argTypes:[]}),ad=()=>({sql:"ROLLBACK",args:[],argTypes:[]}),ld=()=>({sql:'-- Implicit "COMMIT" query via underlying driver',args:[],argTypes:[]}),cd=()=>({sql:'-- Implicit "ROLLBACK" query via underlying driver',args:[],argTypes:[]}),Ft=class{transactions=new Map;closedTransactions=[];driverAdapter;transactionOptions;tracingHelper;#t;#e;constructor({driverAdapter:t,transactionOptions:r,tracingHelper:n,onQuery:i,provider:o}){this.driverAdapter=t,this.transactionOptions=r,this.tracingHelper=n,this.#t=i,this.#e=o}async startInternalTransaction(t){let r=t!==void 0?this.#s(t):{};return await this.tracingHelper.runInChildSpan("start_transaction",()=>this.#r(r))}async startTransaction(t){let r=t!==void 0?this.#s(t):this.transactionOptions;return await this.tracingHelper.runInChildSpan("start_transaction",()=>this.#r(r))}async#r(t){let r={id:await ma(),status:"waiting",timer:void 0,timeout:t.timeout,startedAt:Date.now(),transaction:void 0},n=new AbortController,i=ga(()=>n.abort(),t.maxWait);i?.unref?.();let o=this.driverAdapter.startTransaction(t.isolationLevel).catch(Ve);switch(r.transaction=await Promise.race([o.finally(()=>clearTimeout(i)),fa(n.signal,"abort").then(()=>{})]),this.transactions.set(r.id,r),r.status){case"waiting":if(n.signal.aborted)throw o.then(s=>s.rollback()).catch(s=>We("error in discarded transaction:",s)),await this.#i(r,"timed_out"),new Cr;return r.status="running",r.timer=this.#l(r.id,t.timeout),{id:r.id};case"timed_out":case"running":case"committed":case"rolled_back":throw new Je(`Transaction in invalid state ${r.status} although it just finished startup.`);default:b(r.status,"Unknown transaction status.")}}async commitTransaction(t){return await this.tracingHelper.runInChildSpan("commit_transaction",async()=>{let r=this.#n(t,"commit");await this.#i(r,"committed")})}async rollbackTransaction(t){return await this.tracingHelper.runInChildSpan("rollback_transaction",async()=>{let r=this.#n(t,"rollback");await this.#i(r,"rolled_back")})}async getTransaction(t,r){let n=this.#n(t.id,r);if(n.status==="closing"&&(await n.closing,n=this.#n(t.id,r)),!n.transaction)throw new It;return n.transaction}#n(t,r){let n=this.transactions.get(t);if(!n){let i=this.closedTransactions.find(o=>o.id===t);if(i)switch(We("Transaction already closed.",{transactionId:t,status:i.status}),i.status){case"closing":case"waiting":case"running":throw new Je("Active transaction found in closed transactions list.");case"committed":throw new Sr(r);case"rolled_back":throw new vr(r);case"timed_out":throw new Rr(r,{timeout:i.timeout,timeTaken:Date.now()-i.startedAt})}else throw We("Transaction not found.",t),new It}if(["committed","rolled_back","timed_out"].includes(n.status))throw new Je("Closed transaction found in active transactions map.");return n}async cancelAllTransactions(){await Promise.allSettled([...this.transactions.values()].map(t=>this.#i(t,"rolled_back")))}#l(t,r){let n=Date.now(),i=ga(async()=>{We("Transaction timed out.",{transactionId:t,timeoutStartedAt:n,timeout:r});let o=this.transactions.get(t);o&&["running","waiting"].includes(o.status)?await this.#i(o,"timed_out"):We("Transaction already committed or rolled back when timeout happened.",t)},r);return i?.unref?.(),i}async#i(t,r){let n=async()=>{We("Closing transaction.",{transactionId:t.id,status:r});try{if(t.transaction&&r==="committed")if(t.transaction.options.usePhantomQuery)await this.#o(ld(),t.transaction,()=>t.transaction.commit());else{let i=sd();await this.#o(i,t.transaction,()=>t.transaction.executeRaw(i)).then(()=>t.transaction.commit(),o=>{let s=()=>Promise.reject(o);return t.transaction.rollback().then(s,s)})}else if(t.transaction)if(t.transaction.options.usePhantomQuery)await this.#o(cd(),t.transaction,()=>t.transaction.rollback());else{let i=ad();try{await this.#o(i,t.transaction,()=>t.transaction.executeRaw(i))}finally{await t.transaction.rollback()}}}finally{t.status=r,clearTimeout(t.timer),t.timer=void 0,this.transactions.delete(t.id),this.closedTransactions.push(t),this.closedTransactions.length>od&&this.closedTransactions.shift()}};t.status==="closing"?(await t.closing,this.#n(t.id,r==="committed"?"commit":"rollback")):await Object.assign(t,{status:"closing",reason:r,closing:n()}).closing}#s(t){if(!t.timeout)throw new U("timeout is required");if(!t.maxWait)throw new U("maxWait is required");if(t.isolationLevel==="SNAPSHOT")throw new kr(t.isolationLevel);return{...t,timeout:t.timeout,maxWait:t.maxWait}}#o(t,r,n){return fr({query:t,execute:n,provider:this.#e??r.provider,tracingHelper:this.tracingHelper,onQuery:this.#t})}};function ga(e,t){return t!==void 0?setTimeout(e,t):void 0}var F=require("@prisma/client-runtime-utils");var Or="7.2.0";function ya(e,t){return{batch:e,transaction:t?.kind==="batch"?{isolationLevel:t.options.isolationLevel}:void 0}}function ha(e){return e?e.replace(/".*"/g,'"X"').replace(/[\s:\[]([+-]?([0-9]*[.])?[0-9]+)/g,t=>`${t[0]}5`):""}function wa(e){return e.split(` +`).map(t=>t.replace(/^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)\s*/,"").replace(/\+\d+\s*ms$/,"")).join(` +`)}var xa=V(Ii());function ba({title:e,user:t="prisma",repo:r="prisma",template:n="bug_report.yml",body:i}){return(0,xa.default)({user:t,repo:r,template:n,title:e,body:i})}function Ea({version:e,binaryTarget:t,title:r,description:n,engineVersion:i,database:o,query:s}){let a=xi(6e3-(s?.length??0)),l=wa(Se(a)),c=n?`# Description +\`\`\` +${n} +\`\`\``:"",u=Se(`Hi Prisma Team! My Prisma Client just crashed. This is the report: +## Versions + +| Name | Version | +|-----------------|--------------------| +| Node | ${process.version?.padEnd(19)}| +| OS | ${t?.padEnd(19)}| +| Prisma Client | ${e?.padEnd(19)}| +| Query Engine | ${i?.padEnd(19)}| +| Database | ${o?.padEnd(19)}| + +${c} + +## Logs +\`\`\` +${l} +\`\`\` + +## Client Snippet +\`\`\`ts +// PLEASE FILL YOUR CODE SNIPPET HERE +\`\`\` + +## Schema +\`\`\`prisma +// PLEASE ADD YOUR SCHEMA HERE IF POSSIBLE +\`\`\` + +## Prisma Engine Query +\`\`\` +${s?ha(s):""} +\`\`\` +`),p=ba({title:r,body:u});return`${r} + +This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic. + +${Ye(p)} + +If you want the Prisma team to look into it, please open the link above \u{1F64F} +To increase the chance of success, please post your schema and a snippet of +how you used Prisma Client in the issue. +`}var Ir=class e{#t;#e;#r;#n;constructor(t,r,n){this.#t=t,this.#e=r,this.#r=n,this.#n=r.getConnectionInfo?.()}static async connect(t){let r,n;try{r=await t.driverAdapterFactory.connect(),n=new Ft({driverAdapter:r,transactionOptions:t.transactionOptions,tracingHelper:t.tracingHelper,onQuery:t.onQuery,provider:t.provider})}catch(i){throw await r?.dispose(),i}return new e(t,r,n)}getConnectionInfo(){let t=this.#n??{supportsRelationJoins:!1};return Promise.resolve({provider:this.#e.provider,connectionInfo:t})}async execute({plan:t,placeholderValues:r,transaction:n,batchIndex:i,queryInfo:o}){let s=n?await this.#r.getTransaction(n,i!==void 0?"batch query":"query"):this.#e;return await Ot.forSql({transactionManager:n?{enabled:!1}:{enabled:!0,manager:this.#r},placeholderValues:r,onQuery:this.#t.onQuery,tracingHelper:this.#t.tracingHelper,provider:this.#t.provider,connectionInfo:this.#n,sqlCommenter:this.#t.sqlCommenters&&{plugins:this.#t.sqlCommenters,queryInfo:o}}).run(t,s)}async startTransaction(t){return{...await this.#r.startTransaction(t),payload:void 0}}async commitTransaction(t){await this.#r.commitTransaction(t.id)}async rollbackTransaction(t){await this.#r.rollbackTransaction(t.id)}async disconnect(){try{await this.#r.cancelAllTransactions()}finally{await this.#e.dispose()}}apiKey(){return null}};var Ca=require("@prisma/client-runtime-utils");var Fr=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function Ta(e,t,r){let n=r||{},i=n.encode||encodeURIComponent;if(typeof i!="function")throw new TypeError("option encode is invalid");if(!Fr.test(e))throw new TypeError("argument name is invalid");let o=i(t);if(o&&!Fr.test(o))throw new TypeError("argument val is invalid");let s=e+"="+o;if(n.maxAge!==void 0&&n.maxAge!==null){let a=n.maxAge-0;if(Number.isNaN(a)||!Number.isFinite(a))throw new TypeError("option maxAge is invalid");s+="; Max-Age="+Math.floor(a)}if(n.domain){if(!Fr.test(n.domain))throw new TypeError("option domain is invalid");s+="; Domain="+n.domain}if(n.path){if(!Fr.test(n.path))throw new TypeError("option path is invalid");s+="; Path="+n.path}if(n.expires){if(!pd(n.expires)||Number.isNaN(n.expires.valueOf()))throw new TypeError("option expires is invalid");s+="; Expires="+n.expires.toUTCString()}if(n.httpOnly&&(s+="; HttpOnly"),n.secure&&(s+="; Secure"),n.priority)switch(typeof n.priority=="string"?n.priority.toLowerCase():n.priority){case"low":{s+="; Priority=Low";break}case"medium":{s+="; Priority=Medium";break}case"high":{s+="; Priority=High";break}default:throw new TypeError("option priority is invalid")}if(n.sameSite)switch(typeof n.sameSite=="string"?n.sameSite.toLowerCase():n.sameSite){case!0:{s+="; SameSite=Strict";break}case"lax":{s+="; SameSite=Lax";break}case"strict":{s+="; SameSite=Strict";break}case"none":{s+="; SameSite=None";break}default:throw new TypeError("option sameSite is invalid")}return n.partitioned&&(s+="; Partitioned"),s}function pd(e){return Object.prototype.toString.call(e)==="[object Date]"||e instanceof Date}function Pa(e,t){let r=(e||"").split(";").filter(l=>typeof l=="string"&&!!l.trim()),n=r.shift()||"",i=dd(n),o=i.name,s=i.value;try{s=t?.decode===!1?s:(t?.decode||decodeURIComponent)(s)}catch{}let a={name:o,value:s};for(let l of r){let c=l.split("="),u=(c.shift()||"").trimStart().toLowerCase(),p=c.join("=");switch(u){case"expires":{a.expires=new Date(p);break}case"max-age":{a.maxAge=Number.parseInt(p,10);break}case"secure":{a.secure=!0;break}case"httponly":{a.httpOnly=!0;break}case"samesite":{a.sameSite=p;break}default:a[u]=p}}return a}function dd(e){let t="",r="",n=e.split("=");return n.length>1?(t=n.shift(),r=n.join("=")):r=e,{name:t,value:r}}var Mr=class extends Error{clientVersion;cause;constructor(t,r){super(t),this.clientVersion=r.clientVersion,this.cause=r.cause}get[Symbol.toStringTag](){return this.name}};var Dr=class extends Mr{isRetryable;constructor(t,r){super(t,r),this.isRetryable=r.isRetryable??!0}};function Aa(e,t){return{...e,isRetryable:t}}var Ee=class extends Dr{name="InvalidDatasourceError";code="P6001";constructor(t,r){super(t,Aa(r,!1))}};at(Ee,"InvalidDatasourceError");function Sa(e){let t={clientVersion:e.clientVersion},r;try{r=new URL(e.accelerateUrl)}catch(l){let c=l.message;throw new Ee(`Error validating \`accelerateUrl\`, the URL cannot be parsed, reason: ${c}`,t)}let{protocol:n,searchParams:i}=r;if(n!=="prisma:"&&n!==Ut)throw new Ee("Error validating `accelerateUrl`: the URL must start with the protocol `prisma://` or `prisma+postgres://`",t);let o=i.get("api_key");if(o===null||o.length<1)throw new Ee("Error validating `accelerateUrl`: the URL must contain a valid API key",t);let s=Wr(r)?"http:":"https:";process.env.TEST_CLIENT_ENGINE_REMOTE_EXECUTOR&&r.searchParams.has("use_http")&&(s="http:");let a=new URL(r.href.replace(n,s));return{apiKey:o,url:a}}var va=V(Ti()),Nr=class{apiKey;tracingHelper;logLevel;logQueries;engineHash;constructor({apiKey:t,tracingHelper:r,logLevel:n,logQueries:i,engineHash:o}){this.apiKey=t,this.tracingHelper=r,this.logLevel=n,this.logQueries=i,this.engineHash=o}build({traceparent:t,transactionId:r}={}){let n={Accept:"application/json",Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json","Prisma-Engine-Hash":this.engineHash,"Prisma-Engine-Version":va.enginesVersion};this.tracingHelper.isEnabled()&&(n.traceparent=t??this.tracingHelper.getTraceParent()),r&&(n["X-Transaction-Id"]=r);let i=this.#t();return i.length>0&&(n["X-Capture-Telemetry"]=i.join(", ")),n}#t(){let t=[];return this.tracingHelper.isEnabled()&&t.push("tracing"),this.logLevel&&t.push(this.logLevel),this.logQueries&&t.push("query"),t}};function md(e){return e[0]*1e3+e[1]/1e6}function Gn(e){return new Date(md(e))}var Ra=M("prisma:client:clientEngine:remoteExecutor"),_r=class{#t;#e;#r;#n;#l;#i;constructor(t){this.#t=t.clientVersion,this.#n=t.logEmitter,this.#l=t.tracingHelper,this.#i=t.sqlCommenters;let{url:r,apiKey:n}=Sa({clientVersion:t.clientVersion,accelerateUrl:t.accelerateUrl});this.#r=new Kn(r),this.#e=new Nr({apiKey:n,engineHash:t.clientVersion,logLevel:t.logLevel,logQueries:t.logQueries,tracingHelper:t.tracingHelper})}async getConnectionInfo(){return await this.#s({path:"/connection-info",method:"GET"})}async execute({plan:t,placeholderValues:r,batchIndex:n,model:i,operation:o,transaction:s,customFetch:a,queryInfo:l}){let c=l&&this.#i?.length?mr(this.#i,{query:l}):void 0;return(await this.#s({path:s?`/transaction/${s.id}/query`:"/query",method:"POST",body:{model:i,operation:o,plan:t,params:r,comments:c&&Object.keys(c).length>0?c:void 0},batchRequestIdx:n,fetch:a})).data}async startTransaction(t){return{...await this.#s({path:"/transaction/start",method:"POST",body:t}),payload:void 0}}async commitTransaction(t){await this.#s({path:`/transaction/${t.id}/commit`,method:"POST"})}async rollbackTransaction(t){await this.#s({path:`/transaction/${t.id}/rollback`,method:"POST"})}disconnect(){return Promise.resolve()}apiKey(){return this.#e.apiKey}async#s({path:t,method:r,body:n,fetch:i=globalThis.fetch,batchRequestIdx:o}){let s=await this.#r.request({method:r,path:t,headers:this.#e.build(),body:n,fetch:i});s.ok||await this.#o(s,o);let a=await s.json();return typeof a.extensions=="object"&&a.extensions!==null&&this.#c(a.extensions),a}async#o(t,r){let n=t.headers.get("Prisma-Error-Code"),i=await t.text(),o,s=i;try{o=JSON.parse(i)}catch{o={}}typeof o.code=="string"&&(n=o.code),typeof o.error=="string"?s=o.error:typeof o.message=="string"?s=o.message:typeof o.InvalidRequestError=="object"&&o.InvalidRequestError!==null&&typeof o.InvalidRequestError.reason=="string"&&(s=o.InvalidRequestError.reason),s=s||`HTTP ${t.status}: ${t.statusText}`;let a=typeof o.meta=="object"&&o.meta!==null?o.meta:o;throw new Ca.PrismaClientKnownRequestError(s,{clientVersion:this.#t,code:n??"P6000",batchRequestIdx:r,meta:a})}#c(t){if(t.logs)for(let r of t.logs)this.#a(r);t.spans&&this.#l.dispatchEngineSpans(t.spans)}#a(t){switch(t.level){case"debug":case"trace":Ra(t);break;case"error":case"warn":case"info":{this.#n.emit(t.level,{timestamp:Gn(t.timestamp),message:t.attributes.message??"",target:t.target??"RemoteExecutor"});break}case"query":{this.#n.emit("query",{query:t.attributes.query??"",timestamp:Gn(t.timestamp),duration:t.attributes.duration_ms??0,params:t.attributes.params??"",target:t.target??"RemoteExecutor"});break}default:throw new Error(`Unexpected log level: ${t.level}`)}}},Kn=class{#t;#e;#r;constructor(t){this.#t=t,this.#e=new Map}async request({method:t,path:r,headers:n,body:i,fetch:o}){let s=new URL(r,this.#t),a=this.#n(s);a&&(n.Cookie=a),this.#r&&(n["Accelerate-Query-Engine-Jwt"]=this.#r);let l=await o(s.href,{method:t,body:i!==void 0?JSON.stringify(i):void 0,headers:n});return Ra(t,s,l.status,l.statusText),this.#r=l.headers.get("Accelerate-Query-Engine-Jwt")??void 0,this.#l(s,l),l}#n(t){let r=[],n=new Date;for(let[i,o]of this.#e){if(o.expires&&o.expires0?r.join("; "):void 0}#l(t,r){let n=r.headers.getSetCookie?.()||[];if(n.length===0){let i=r.headers.get("Set-Cookie");i&&n.push(i)}for(let i of n){let o=Pa(i),s=o.domain??t.hostname,a=o.path??"/",l=`${s}:${a}:${o.name}`;this.#e.set(l,{name:o.name,value:o.value,domain:s,path:a,expires:o.expires})}}};var Zn=require("@prisma/client-runtime-utils"),zn={},ka={async loadQueryCompiler(e){let{clientVersion:t,compilerWasm:r}=e;if(r===void 0)throw new Zn.PrismaClientInitializationError("WASM query compiler was unexpectedly `undefined`",t);let n;return e.activeProvider===void 0||zn[e.activeProvider]===void 0?(n=(async()=>{let i=await r.getRuntime(),o=await r.getQueryCompilerWasmModule();if(o==null)throw new Zn.PrismaClientInitializationError("The loaded wasm module was unexpectedly `undefined` or `null` once loaded",t);let s={"./query_compiler_bg.js":i},a=new WebAssembly.Instance(o,s),l=a.exports.__wbindgen_start;return i.__wbg_set_wasm(a.exports),l(),i.QueryCompiler})(),e.activeProvider!==void 0&&(zn[e.activeProvider]=n)):n=zn[e.activeProvider],await n}};var fd="P2038",Mt=M("prisma:client:clientEngine"),Ia=globalThis;Ia.PRISMA_WASM_PANIC_REGISTRY={set_message(e){throw new F.PrismaClientRustPanicError(e,Or)}};var Dt=class{name="ClientEngine";#t;#e={type:"disconnected"};#r;#n;config;datamodel;logEmitter;logQueries;logLevel;tracingHelper;#l;constructor(t,r){if(t.accelerateUrl!==void 0)this.#n={remote:!0,accelerateUrl:t.accelerateUrl};else if(t.adapter)this.#n={remote:!1,driverAdapterFactory:t.adapter},Mt("Using driver adapter: %O",t.adapter);else throw new F.PrismaClientInitializationError("Missing configured driver adapter. Engine type `client` requires an active driver adapter. Please check your PrismaClient initialization code.",t.clientVersion,fd);this.#r=r??ka,this.config=t,this.logQueries=t.logQueries??!1,this.logLevel=t.logLevel??"error",this.logEmitter=t.logEmitter,this.datamodel=t.inlineSchema,this.tracingHelper=t.tracingHelper,t.enableDebugLogs&&(this.logLevel="debug"),this.logQueries&&(this.#l=n=>{this.logEmitter.emit("query",{...n,params:bt(n.params),target:"ClientEngine"})})}async#i(){switch(this.#e.type){case"disconnected":{let t=this.tracingHelper.runInChildSpan("connect",async()=>{let r,n;try{r=await this.#s(),n=await this.#o(r)}catch(o){throw this.#e={type:"disconnected"},n?.free(),await r?.disconnect(),o}let i={executor:r,queryCompiler:n};return this.#e={type:"connected",engine:i},i});return this.#e={type:"connecting",promise:t},await t}case"connecting":return await this.#e.promise;case"connected":return this.#e.engine;case"disconnecting":return await this.#e.promise,await this.#i()}}async#s(){return this.#n.remote?new _r({clientVersion:this.config.clientVersion,accelerateUrl:this.#n.accelerateUrl,logEmitter:this.logEmitter,logLevel:this.logLevel,logQueries:this.logQueries,tracingHelper:this.tracingHelper,sqlCommenters:this.config.sqlCommenters}):await Ir.connect({driverAdapterFactory:this.#n.driverAdapterFactory,tracingHelper:this.tracingHelper,transactionOptions:{...this.config.transactionOptions,isolationLevel:this.#d(this.config.transactionOptions.isolationLevel)},onQuery:this.#l,provider:this.config.activeProvider,sqlCommenters:this.config.sqlCommenters})}async#o(t){let r=this.#t;r===void 0&&(r=await this.#r.loadQueryCompiler(this.config),this.#t=r);let{provider:n,connectionInfo:i}=await t.getConnectionInfo();try{return this.#p(()=>new r({datamodel:this.datamodel,provider:n,connectionInfo:i}),void 0,!1)}catch(o){throw this.#c(o)}}#c(t){if(t instanceof F.PrismaClientRustPanicError)return t;try{let r=JSON.parse(t.message);return new F.PrismaClientInitializationError(r.message,this.config.clientVersion,r.error_code)}catch{return t}}#a(t,r){if(t instanceof F.PrismaClientInitializationError)return t;if(t.code==="GenericFailure"&&t.message?.startsWith("PANIC:"))return new F.PrismaClientRustPanicError(Oa(this,t.message,r),this.config.clientVersion);if(t instanceof O)return new F.PrismaClientKnownRequestError(t.message,{code:t.code,meta:t.meta,clientVersion:this.config.clientVersion});try{let n=JSON.parse(t);return new F.PrismaClientUnknownRequestError(`${n.message} +${n.backtrace}`,{clientVersion:this.config.clientVersion})}catch{return t}}#u(t){return t instanceof F.PrismaClientRustPanicError?t:typeof t.message=="string"&&typeof t.code=="string"?new F.PrismaClientKnownRequestError(t.message,{code:t.code,meta:t.meta,clientVersion:this.config.clientVersion}):typeof t.message=="string"?new F.PrismaClientUnknownRequestError(t.message,{clientVersion:this.config.clientVersion}):t}#p(t,r,n=!0){let i=Ia.PRISMA_WASM_PANIC_REGISTRY.set_message,o;global.PRISMA_WASM_PANIC_REGISTRY.set_message=s=>{o=s};try{return t()}finally{if(global.PRISMA_WASM_PANIC_REGISTRY.set_message=i,o)throw this.#t=void 0,n&&this.stop().catch(s=>Mt("failed to disconnect:",s)),new F.PrismaClientRustPanicError(Oa(this,o,r),this.config.clientVersion)}}onBeforeExit(){throw new Error('"beforeExit" hook is not applicable to the client engine, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead.')}async start(){await this.#i()}async stop(){switch(this.#e.type){case"disconnected":return;case"connecting":return await this.#e.promise,await this.stop();case"connected":{let t=this.#e.engine,r=this.tracingHelper.runInChildSpan("disconnect",async()=>{try{await t.executor.disconnect(),t.queryCompiler.free()}finally{this.#e={type:"disconnected"}}});return this.#e={type:"disconnecting",promise:r},await r}case"disconnecting":return await this.#e.promise}}version(){return"unknown"}async transaction(t,r,n){let i,{executor:o}=await this.#i();try{if(t==="start"){let s=n;i=await o.startTransaction({...s,isolationLevel:this.#d(s.isolationLevel)})}else if(t==="commit"){let s=n;await o.commitTransaction(s)}else if(t==="rollback"){let s=n;await o.rollbackTransaction(s)}else X(t,"Invalid transaction action.")}catch(s){throw this.#a(s)}return i?{id:i.id,payload:void 0}:void 0}async request(t,{interactiveTransaction:r,customDataProxyFetch:n}){Mt("sending request");let i=JSON.stringify(t),{executor:o,queryCompiler:s}=await this.#i().catch(l=>{throw this.#a(l,i)}),a;try{a=this.#p(()=>this.#m({queries:[t],execute:()=>s.compile(i)}))}catch(l){throw this.#u(l)}try{Mt("query plan created",a);let l={},c=await o.execute({plan:a,model:t.modelName,operation:t.action,placeholderValues:l,transaction:r,batchIndex:void 0,customFetch:n?.(globalThis.fetch),queryInfo:{type:"single",modelName:t.modelName,action:t.action,query:t.query}});return Mt("query plan executed"),{data:{[t.action]:c}}}catch(l){throw this.#a(l,i)}}async requestBatch(t,{transaction:r,customDataProxyFetch:n}){if(t.length===0)return[];let i=t[0].action,o=t[0].modelName,s=JSON.stringify(ya(t,r)),{executor:a,queryCompiler:l}=await this.#i().catch(u=>{throw this.#a(u,s)}),c;try{c=this.#p(()=>this.#m({queries:t,execute:()=>l.compileBatch(s)}))}catch(u){throw this.#u(u)}try{let u;r?.kind==="itx"&&(u=r.options);let p={};switch(c.type){case"multi":{if(r?.kind!=="itx"){let g=r?.options.isolationLevel?{...this.config.transactionOptions,isolationLevel:r.options.isolationLevel}:this.config.transactionOptions;u=await this.transaction("start",{},g)}let y=[],h=!1;for(let[g,E]of c.plans.entries())try{let C=await a.execute({plan:E,placeholderValues:p,model:t[g].modelName,operation:t[g].action,batchIndex:g,transaction:u,customFetch:n?.(globalThis.fetch),queryInfo:{type:"single",...t[g]}});y.push({data:{[t[g].action]:C}})}catch(C){y.push(C),h=!0;break}return u!==void 0&&r?.kind!=="itx"&&(h?await this.transaction("rollback",{},u):await this.transaction("commit",{},u)),y}case"compacted":{if(!t.every(g=>g.action===i&&g.modelName===o)){let g=t.map(C=>C.action).join(", "),E=t.map(C=>C.modelName).join(", ");throw new Error(`Internal error: All queries in a compacted batch must have the same action and model name, but received actions: [${g}] and model names: [${E}]. This indicates a bug in the client. Please report this issue to the Prisma team with your query details.`)}if(o===void 0)throw new Error("Internal error: A compacted batch cannot contain raw queries. This indicates a bug in the client. Please report this issue to the Prisma team with your query details.");let y=await a.execute({plan:c.plan,placeholderValues:p,model:o,operation:i,batchIndex:void 0,transaction:u,customFetch:n?.(globalThis.fetch),queryInfo:{type:"compacted",action:i,modelName:o,queries:t}});return zo(y,c).map(g=>({data:{[i]:g}}))}}}catch(u){throw this.#a(u,s)}}async apiKey(){let{executor:t}=await this.#i();return t.apiKey()}#d(t){switch(t){case void 0:return;case"ReadUncommitted":return"READ UNCOMMITTED";case"ReadCommitted":return"READ COMMITTED";case"RepeatableRead":return"REPEATABLE READ";case"Serializable":return"SERIALIZABLE";case"Snapshot":return"SNAPSHOT";default:throw new F.PrismaClientKnownRequestError(`Inconsistent column data: Conversion failed: Invalid isolation level \`${t}\``,{code:"P2023",clientVersion:this.config.clientVersion,meta:{providedIsolationLevel:t}})}}#m({queries:t,execute:r}){return this.tracingHelper.runInChildSpan({name:"compile",attributes:{models:t.map(n=>n.modelName).filter(n=>n!==void 0),actions:t.map(n=>n.action)}},r)}};function Oa(e,t,r){return Ea({binaryTarget:void 0,title:t,version:e.config.clientVersion,engineVersion:"unknown",database:e.config.activeProvider,query:r})}function Fa(e){return new Dt(e)}var Ma=e=>({command:e});var Ua=require("@prisma/client-runtime-utils");var Da=e=>e.strings.reduce((t,r,n)=>`${t}@P${n}${r}`);var La=require("@prisma/client-runtime-utils");function Ge(e){try{return Na(e,"fast")}catch{return Na(e,"slow")}}function Na(e,t){return JSON.stringify(e.map(r=>$a(r,t)))}function $a(e,t){if(Array.isArray(e))return e.map(r=>$a(r,t));if(typeof e=="bigint")return{prisma__type:"bigint",prisma__value:e.toString()};if(ve(e))return{prisma__type:"date",prisma__value:e.toJSON()};if(La.Decimal.isDecimal(e))return{prisma__type:"decimal",prisma__value:e.toJSON()};if(Buffer.isBuffer(e))return{prisma__type:"bytes",prisma__value:e.toString("base64")};if(gd(e))return{prisma__type:"bytes",prisma__value:Buffer.from(e).toString("base64")};if(ArrayBuffer.isView(e)){let{buffer:r,byteOffset:n,byteLength:i}=e;return{prisma__type:"bytes",prisma__value:Buffer.from(r,n,i).toString("base64")}}return typeof e=="object"&&t==="slow"?qa(e):e}function gd(e){return e instanceof ArrayBuffer||e instanceof SharedArrayBuffer?!0:typeof e=="object"&&e!==null?e[Symbol.toStringTag]==="ArrayBuffer"||e[Symbol.toStringTag]==="SharedArrayBuffer":!1}function qa(e){if(typeof e!="object"||e===null)return e;if(typeof e.toJSON=="function")return e.toJSON();if(Array.isArray(e))return e.map(_a);let t={};for(let r of Object.keys(e))t[r]=_a(e[r]);return t}function _a(e){return typeof e=="bigint"?e.toString():qa(e)}var yd=/^(\s*alter\s)/i,Va=M("prisma:client");function Yn(e,t,r,n){if(!(e!=="postgresql"&&e!=="cockroachdb")&&r.length>0&&yd.exec(t))throw new Error(`Running ALTER using ${n} is not supported +Using the example below you can still execute your query with Prisma, but please note that it is vulnerable to SQL injection attacks and requires you to take care of input sanitization. + +Example: + await prisma.$executeRawUnsafe(\`ALTER USER prisma WITH PASSWORD '\${password}'\`) + +More Information: https://pris.ly/d/execute-raw +`)}var Xn=({clientMethod:e,activeProvider:t})=>r=>{let n="",i;if(ar(r))n=r.sql,i={values:Ge(r.values),__prismaRawParameters__:!0};else if(Array.isArray(r)){let[o,...s]=r;n=o,i={values:Ge(s||[]),__prismaRawParameters__:!0}}else switch(t){case"sqlite":case"mysql":{n=r.sql,i={values:Ge(r.values),__prismaRawParameters__:!0};break}case"cockroachdb":case"postgresql":case"postgres":{n=r.text,i={values:Ge(r.values),__prismaRawParameters__:!0};break}case"sqlserver":{n=Da(r),i={values:Ge(r.values),__prismaRawParameters__:!0};break}default:throw new Error(`The ${t} provider does not support ${e}`)}return i?.values?Va(`prisma.${e}(${n}, ${i.values})`):Va(`prisma.${e}(${n})`),{query:n,parameters:i}},ja={requestArgsToMiddlewareArgs(e){return[e.strings,...e.values]},middlewareArgsToRequestArgs(e){let[t,...r]=e;return new Ua.Sql(t,r)}},Ba={requestArgsToMiddlewareArgs(e){return[e]},middlewareArgsToRequestArgs(e){return e[0]}};function ei(e){return function(r,n){let i,o=(s=e)=>{try{return s===void 0||s?.kind==="itx"?i??=Qa(r(s)):Qa(r(s))}catch(a){return Promise.reject(a)}};return{get spec(){return n},then(s,a){return o().then(s,a)},catch(s){return o().catch(s)},finally(s){return o().finally(s)},requestTransaction(s){let a=o(s);return a.requestTransaction?a.requestTransaction(s):a},[Symbol.toStringTag]:"PrismaPromise"}}}function Qa(e){return typeof e.then=="function"?e:Promise.resolve(e)}var Ha={name:"@prisma/instrumentation-contract",version:"7.2.0",description:"Shared types and utilities for Prisma instrumentation",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{require:{types:"./dist/index.d.ts",default:"./dist/index.js"},import:{types:"./dist/index.d.mts",default:"./dist/index.mjs"}}},license:"Apache-2.0",homepage:"https://www.prisma.io",repository:{type:"git",url:"https://github.com/prisma/prisma.git",directory:"packages/instrumentation-contract"},bugs:"https://github.com/prisma/prisma/issues",scripts:{dev:"DEV=true tsx helpers/build.ts",build:"tsx helpers/build.ts",prepublishOnly:"pnpm run build",test:"vitest run"},files:["dist"],sideEffects:!1,devDependencies:{"@opentelemetry/api":"1.9.0"},peerDependencies:{"@opentelemetry/api":"^1.8"}};var wd=Ha.version.split(".")[0],xd="PRISMA_INSTRUMENTATION",bd=`V${wd}_PRISMA_INSTRUMENTATION`,Ja=globalThis;function Wa(){let e=Ja[bd];return e?.helper?e.helper:Ja[xd]?.helper}var Ed={isEnabled(){return!1},getTraceParent(){return"00-10-10-00"},dispatchEngineSpans(){},getActiveContext(){},runInChildSpan(e,t){return t()}},ti=class{isEnabled(){return this.getTracingHelper().isEnabled()}getTraceParent(t){return this.getTracingHelper().getTraceParent(t)}dispatchEngineSpans(t){return this.getTracingHelper().dispatchEngineSpans(t)}getActiveContext(){return this.getTracingHelper().getActiveContext()}runInChildSpan(t,r){return this.getTracingHelper().runInChildSpan(t,r)}getTracingHelper(){return Wa()??Ed}};function Ga(){return new ti}function Ka(e,t=()=>{}){let r,n=new Promise(i=>r=i);return{then(i){return--e===0&&r(t()),i?.(n)}}}function za(e){return typeof e=="string"?e:e.reduce((t,r)=>{let n=typeof r=="string"?r:r.level;return n==="query"?t:t&&(r==="info"||t==="info")?"info":n},void 0)}var Xa=require("@prisma/client-runtime-utils");function Za(e){if(e.action!=="findUnique"&&e.action!=="findUniqueOrThrow")return;let t=[];return e.modelName&&t.push(e.modelName),e.query.arguments&&t.push(ri(e.query.arguments)),t.push(ri(e.query.selection)),t.join("")}function ri(e){return`(${Object.keys(e).sort().map(r=>{let n=e[r];return typeof n=="object"&&n!==null?`(${r} ${ri(n)})`:r}).join(" ")})`}var Td={aggregate:!1,aggregateRaw:!1,createMany:!0,createManyAndReturn:!0,createOne:!0,deleteMany:!0,deleteOne:!0,executeRaw:!0,findFirst:!1,findFirstOrThrow:!1,findMany:!1,findRaw:!1,findUnique:!1,findUniqueOrThrow:!1,groupBy:!1,queryRaw:!1,runCommandRaw:!0,updateMany:!0,updateManyAndReturn:!0,updateOne:!0,upsertOne:!0};function ni(e){return Td[e]}var Lr=class{constructor(t){this.options=t;this.batches={}}batches;tickActive=!1;request(t){let r=this.options.batchBy(t);return r?(this.batches[r]||(this.batches[r]=[],this.tickActive||(this.tickActive=!0,process.nextTick(()=>{this.dispatchBatches(),this.tickActive=!1}))),new Promise((n,i)=>{this.batches[r].push({request:t,resolve:n,reject:i})})):this.options.singleLoader(t)}dispatchBatches(){for(let t in this.batches){let r=this.batches[t];delete this.batches[t],r.length===1?this.options.singleLoader(r[0].request).then(n=>{n instanceof Error?r[0].reject(n):r[0].resolve(n)}).catch(n=>{r[0].reject(n)}):(r.sort((n,i)=>this.options.batchOrder(n.request,i.request)),this.options.batchLoader(r.map(n=>n.request)).then(n=>{if(n instanceof Error)for(let i=0;i{for(let i=0;iTe("bigint",r));case"bytes-array":return t.map(r=>Te("bytes",r));case"decimal-array":return t.map(r=>Te("decimal",r));case"datetime-array":return t.map(r=>Te("datetime",r));case"date-array":return t.map(r=>Te("date",r));case"time-array":return t.map(r=>Te("time",r));default:return t}}function $r(e){let t=[],r=Pd(e);for(let n=0;n{let{transaction:o,otelParentCtx:s}=n[0],a=n.map(p=>p.protocolQuery),l=this.client._tracingHelper.getTraceParent(s),c=n.some(p=>ni(p.protocolQuery.action));return(await this.client._engine.requestBatch(a,{traceparent:l,transaction:Sd(o),containsWrite:c,customDataProxyFetch:i})).map((p,y)=>{if(p instanceof Error)return p;try{return this.mapQueryEngineResult(n[y],p)}catch(h){return h}})}),singleLoader:async n=>{let i=n.transaction?.kind==="itx"?el(n.transaction):void 0,o=await this.client._engine.request(n.protocolQuery,{traceparent:this.client._tracingHelper.getTraceParent(),interactiveTransaction:i,isWrite:ni(n.protocolQuery.action),customDataProxyFetch:n.customDataProxyFetch});return this.mapQueryEngineResult(n,o)},batchBy:n=>n.transaction?.id?`transaction-${n.transaction.id}`:Za(n.protocolQuery),batchOrder(n,i){return n.transaction?.kind==="batch"&&i.transaction?.kind==="batch"?n.transaction.index-i.transaction.index:0}})}async request(t){try{return await this.dataloader.request(t)}catch(r){let{clientMethod:n,callsite:i,transaction:o,args:s,modelName:a}=t;this.handleAndLogRequestError({error:r,clientMethod:n,callsite:i,transaction:o,args:s,modelName:a,globalOmit:t.globalOmit})}}mapQueryEngineResult({dataPath:t,unpacker:r},n){let i=n?.data,o=this.unpack(i,t,r);return process.env.PRISMA_CLIENT_GET_TIME?{data:o}:o}handleAndLogRequestError(t){try{this.handleRequestError(t)}catch(r){throw this.logEmitter&&this.logEmitter.emit("error",{message:r.message,target:t.clientMethod,timestamp:new Date}),r}}handleRequestError({error:t,clientMethod:r,callsite:n,transaction:i,args:o,modelName:s,globalOmit:a}){if(Ad(t),vd(t,i))throw t;if(t instanceof w.PrismaClientKnownRequestError&&Cd(t)){let c=tl(t.meta);tr({args:o,errors:[c],callsite:n,errorFormat:this.client._errorFormat,originalMethod:r,clientVersion:this.client._clientVersion,globalOmit:a})}let l=t.message;if(n&&(l=Wt({callsite:n,originalMethod:r,isPanic:t.isPanic,showColors:this.client._errorFormat==="pretty",message:l})),l=this.sanitizeMessage(l),t.code){let c=s?{modelName:s,...t.meta}:t.meta;throw new w.PrismaClientKnownRequestError(l,{code:t.code,clientVersion:this.client._clientVersion,meta:c,batchRequestIdx:t.batchRequestIdx})}else{if(t.isPanic)throw new w.PrismaClientRustPanicError(l,this.client._clientVersion);if(t instanceof w.PrismaClientUnknownRequestError)throw new w.PrismaClientUnknownRequestError(l,{clientVersion:this.client._clientVersion,batchRequestIdx:t.batchRequestIdx});if(t instanceof w.PrismaClientInitializationError)throw new w.PrismaClientInitializationError(l,this.client._clientVersion);if(t instanceof w.PrismaClientRustPanicError)throw new w.PrismaClientRustPanicError(l,this.client._clientVersion)}throw t.clientVersion=this.client._clientVersion,t}sanitizeMessage(t){return this.client._errorFormat&&this.client._errorFormat!=="pretty"?Se(t):t}unpack(t,r,n){if(!t||(t.data&&(t=t.data),!t))return t;let i=Object.keys(t)[0],o=Object.values(t)[0],s=r.filter(c=>c!=="select"&&c!=="include"),a=un(o,s),l=i==="queryRaw"?$r(a):le(a);return n?n(l):l}get[Symbol.toStringTag](){return"RequestHandler"}};function Sd(e){if(e){if(e.kind==="batch")return{kind:"batch",options:{isolationLevel:e.isolationLevel}};if(e.kind==="itx")return{kind:"itx",options:el(e)};X(e,"Unknown transaction kind")}}function el(e){return{id:e.id,payload:e.payload}}function vd(e,t){return(0,Xa.hasBatchIndex)(e)&&t?.kind==="batch"&&e.batchRequestIdx!==t.index}function Cd(e){return e.code==="P2009"||e.code==="P2012"}function tl(e){if(e.kind==="Union")return{kind:"Union",errors:e.errors.map(tl)};if(Array.isArray(e.selectionPath)){let[,...t]=e.selectionPath;return{...e,selectionPath:t}}return e}var ii=Or;var sl=V(en());var v=class extends Error{constructor(t){super(t+` +Read more at https://pris.ly/d/client-constructor`),this.name="PrismaClientConstructorValidationError"}get[Symbol.toStringTag](){return"PrismaClientConstructorValidationError"}};at(v,"PrismaClientConstructorValidationError");var rl=["errorFormat","adapter","accelerateUrl","log","transactionOptions","omit","comments","__internal"],nl=["pretty","colorless","minimal"],il=["info","query","warn","error"],Rd={adapter:()=>{},accelerateUrl:e=>{if(e!==void 0){if(typeof e!="string")throw new v(`Invalid value ${JSON.stringify(e)} for "accelerateUrl" provided to PrismaClient constructor.`);if(e.trim().length===0)throw new v('"accelerateUrl" provided to PrismaClient constructor must be a non-empty string.')}},errorFormat:e=>{if(e){if(typeof e!="string")throw new v(`Invalid value ${JSON.stringify(e)} for "errorFormat" provided to PrismaClient constructor.`);if(!nl.includes(e)){let t=Nt(e,nl);throw new v(`Invalid errorFormat ${e} provided to PrismaClient constructor.${t}`)}}},log:e=>{if(!e)return;if(!Array.isArray(e))throw new v(`Invalid value ${JSON.stringify(e)} for "log" provided to PrismaClient constructor.`);function t(r){if(typeof r=="string"&&!il.includes(r)){let n=Nt(r,il);throw new v(`Invalid log level "${r}" provided to PrismaClient constructor.${n}`)}}for(let r of e){t(r);let n={level:t,emit:i=>{let o=["stdout","event"];if(!o.includes(i)){let s=Nt(i,o);throw new v(`Invalid value ${JSON.stringify(i)} for "emit" in logLevel provided to PrismaClient constructor.${s}`)}}};if(r&&typeof r=="object")for(let[i,o]of Object.entries(r))if(n[i])n[i](o);else throw new v(`Invalid property ${i} for "log" provided to PrismaClient constructor`)}},transactionOptions:e=>{if(!e)return;let t=e.maxWait;if(t!=null&&t<=0)throw new v(`Invalid value ${t} for maxWait in "transactionOptions" provided to PrismaClient constructor. maxWait needs to be greater than 0`);let r=e.timeout;if(r!=null&&r<=0)throw new v(`Invalid value ${r} for timeout in "transactionOptions" provided to PrismaClient constructor. timeout needs to be greater than 0`)},omit:(e,t)=>{if(typeof e!="object")throw new v('"omit" option is expected to be an object.');if(e===null)throw new v('"omit" option can not be `null`');let r=[];for(let[n,i]of Object.entries(e)){let o=Id(n,t.runtimeDataModel);if(!o){r.push({kind:"UnknownModel",modelKey:n});continue}for(let[s,a]of Object.entries(i)){let l=o.fields.find(c=>c.name===s);if(!l){r.push({kind:"UnknownField",modelKey:n,fieldName:s});continue}if(l.relationName){r.push({kind:"RelationInOmit",modelKey:n,fieldName:s});continue}typeof a!="boolean"&&r.push({kind:"InvalidFieldValue",modelKey:n,fieldName:s})}}if(r.length>0)throw new v(Fd(e,r))},comments:e=>{if(e!==void 0){if(!Array.isArray(e))throw new v(`Invalid value ${JSON.stringify(e)} for "comments" provided to PrismaClient constructor. Expected an array of SQL commenter plugins.`);for(let t=0;t{if(!e)return;let t=["debug","engine","configOverride"];if(typeof e!="object")throw new v(`Invalid value ${JSON.stringify(e)} for "__internal" to PrismaClient constructor`);for(let[r]of Object.entries(e))if(!t.includes(r)){let n=Nt(r,t);throw new v(`Invalid property ${JSON.stringify(r)} for "__internal" provided to PrismaClient constructor.${n}`)}}};function kd(e){let t=e.adapter!==void 0,r=e.accelerateUrl!==void 0;if(t&&r)throw new v('The "adapter" and "accelerateUrl" options are mutually exclusive. Please provide only one of them.');if(!t&&!r)throw new v('Using engine type "client" requires either "adapter" or "accelerateUrl" to be provided to PrismaClient constructor.')}function al(e,t){for(let[r,n]of Object.entries(e)){if(!rl.includes(r)){let i=Nt(r,rl);throw new v(`Unknown property ${r} provided to PrismaClient constructor.${i}`)}Rd[r](n,t)}kd(e)}function Nt(e,t){if(t.length===0||typeof e!="string")return"";let r=Od(e,t);return r?` Did you mean "${r}"?`:""}function Od(e,t){if(t.length===0)return null;let r=t.map(i=>({value:i,distance:(0,sl.default)(e,i)}));r.sort((i,o)=>i.distanceie(n)===t);if(r)return e[r]}function Fd(e,t){let r=Ne(e);for(let o of t)switch(o.kind){case"UnknownModel":r.arguments.getField(o.modelKey)?.markAsError(),r.addErrorMessage(()=>`Unknown model name: ${o.modelKey}.`);break;case"UnknownField":r.arguments.getDeepField([o.modelKey,o.fieldName])?.markAsError(),r.addErrorMessage(()=>`Model "${o.modelKey}" does not have a field named "${o.fieldName}".`);break;case"RelationInOmit":r.arguments.getDeepField([o.modelKey,o.fieldName])?.markAsError(),r.addErrorMessage(()=>'Relations are already excluded by default and can not be specified in "omit".');break;case"InvalidFieldValue":r.arguments.getDeepFieldValue([o.modelKey,o.fieldName])?.markAsError(),r.addErrorMessage(()=>"Omit field option value must be a boolean.");break}let{message:n,args:i}=er(r,"colorless");return`Error validating "omit" option: + +${i} + +${n}`}var ll=require("@prisma/client-runtime-utils");function cl(e){return e.length===0?Promise.resolve([]):new Promise((t,r)=>{let n=new Array(e.length),i=null,o=!1,s=0,a=()=>{o||(s++,s===e.length&&(o=!0,i?r(i):t(n)))},l=c=>{o||(o=!0,r(c))};for(let c=0;c{n[c]=u,a()},u=>{if(!(0,ll.hasBatchIndex)(u)){l(u);return}u.batchRequestIdx===c?l(u):(i||(i=u),a())})})}var _t=M("prisma:client");typeof globalThis=="object"&&(globalThis.NODE_CLIENT=!0);var Md={requestArgsToMiddlewareArgs:e=>e,middlewareArgsToRequestArgs:e=>e},Dd=Symbol.for("prisma.client.transaction.id"),Nd={id:0,nextId(){return++this.id}};function fl(e){class t{_originalClient=this;_runtimeDataModel;_requestHandler;_connectionPromise;_disconnectionPromise;_engineConfig;_accelerateEngineConfig;_clientVersion;_errorFormat;_tracingHelper;_previewFeatures;_activeProvider;_globalOmit;_extensions;_engine;_appliedParent;_createPrismaPromise=ei();constructor(n){if(!n)throw new w.PrismaClientInitializationError("`PrismaClient` needs to be constructed with a non-empty, valid `PrismaClientOptions`:\n\n```\nnew PrismaClient({\n ...\n})\n```\n\nor\n\n```\nconstructor() {\n super({ ... });\n}\n```\n ",ii);e=n.__internal?.configOverride?.(e)??e,al(n,e);let i=new ml.EventEmitter().on("error",()=>{});this._extensions=_e.empty(),this._previewFeatures=e.previewFeatures,this._clientVersion=e.clientVersion??ii,this._activeProvider=e.activeProvider,this._globalOmit=n?.omit,this._tracingHelper=Ga();let o;if(n.adapter){o=n.adapter;let s=e.activeProvider==="postgresql"||e.activeProvider==="cockroachdb"?"postgres":e.activeProvider;if(o.provider!==s)throw new w.PrismaClientInitializationError(`The Driver Adapter \`${o.adapterName}\`, based on \`${o.provider}\`, is not compatible with the provider \`${s}\` specified in the Prisma schema.`,this._clientVersion)}try{let s=n??{},l=(s.__internal??{}).debug===!0;if(l&&M.enable("prisma:client"),s.errorFormat?this._errorFormat=s.errorFormat:process.env.NODE_ENV==="production"?this._errorFormat="minimal":process.env.NO_COLOR?this._errorFormat="colorless":this._errorFormat="colorless",this._runtimeDataModel=e.runtimeDataModel,this._engineConfig={enableDebugLogs:l,logLevel:s.log&&za(s.log),logQueries:s.log&&!!(typeof s.log=="string"?s.log==="query":s.log.find(c=>typeof c=="string"?c==="query":c.level==="query")),compilerWasm:e.compilerWasm,clientVersion:e.clientVersion,previewFeatures:this._previewFeatures,activeProvider:e.activeProvider,inlineSchema:e.inlineSchema,tracingHelper:this._tracingHelper,transactionOptions:{maxWait:s.transactionOptions?.maxWait??2e3,timeout:s.transactionOptions?.timeout??5e3,isolationLevel:s.transactionOptions?.isolationLevel},logEmitter:i,adapter:o,accelerateUrl:s.accelerateUrl,sqlCommenters:s.comments},this._accelerateEngineConfig=Object.create(this._engineConfig),this._accelerateEngineConfig.accelerateUtils={resolveDatasourceUrl:()=>{if(s.accelerateUrl)return s.accelerateUrl;throw new w.PrismaClientInitializationError(`\`accelerateUrl\` is required when using \`@prisma/extension-accelerate\`: + +new PrismaClient({ + accelerateUrl: "prisma://...", +}).$extends(withAccelerate()) +`,e.clientVersion)}},_t("clientVersion",e.clientVersion),this._engine=Fa(this._engineConfig),this._requestHandler=new qr(this,i),s.log)for(let c of s.log){let u=typeof c=="string"?c:c.emit==="stdout"?c.level:null;u&&this.$on(u,p=>{ot.log(`${ot.tags[u]??""}`,p.message||p.query)})}}catch(s){throw s.clientVersion=this._clientVersion,s}return this._appliedParent=ht(this)}get[Symbol.toStringTag](){return"PrismaClient"}$on(n,i){return n==="beforeExit"?this._engine.onBeforeExit(i):n&&this._engineConfig.logEmitter.on(n,i),this}$connect(){try{return this._engine.start()}catch(n){throw n.clientVersion=this._clientVersion,n}}async $disconnect(){try{await this._engine.stop()}catch(n){throw n.clientVersion=this._clientVersion,n}finally{bi()}}$executeRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"executeRaw",args:o,transaction:n,clientMethod:i,argsMapper:Xn({clientMethod:i,activeProvider:a}),callsite:ae(this._errorFormat),dataPath:[],middlewareArgsMapper:s})}$executeRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0){let[s,a]=ul(n,i);return Yn(this._activeProvider,s.text,s.values,Array.isArray(n)?"prisma.$executeRaw``":"prisma.$executeRaw(sql``)"),this.$executeRawInternal(o,"$executeRaw",s,a)}throw new w.PrismaClientValidationError("`$executeRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw\n",{clientVersion:this._clientVersion})})}$executeRawUnsafe(n,...i){return this._createPrismaPromise(o=>(Yn(this._activeProvider,n,i,"prisma.$executeRawUnsafe(, [...values])"),this.$executeRawInternal(o,"$executeRawUnsafe",[n,...i])))}$runCommandRaw(n){if(e.activeProvider!=="mongodb")throw new w.PrismaClientValidationError(`The ${e.activeProvider} provider does not support $runCommandRaw. Use the mongodb provider.`,{clientVersion:this._clientVersion});return this._createPrismaPromise(i=>this._request({args:n,clientMethod:"$runCommandRaw",dataPath:[],action:"runCommandRaw",argsMapper:Ma,callsite:ae(this._errorFormat),transaction:i}))}async $queryRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"queryRaw",args:o,transaction:n,clientMethod:i,argsMapper:Xn({clientMethod:i,activeProvider:a}),callsite:ae(this._errorFormat),dataPath:[],middlewareArgsMapper:s})}$queryRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0)return this.$queryRawInternal(o,"$queryRaw",...ul(n,i));throw new w.PrismaClientValidationError("`$queryRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#queryraw\n",{clientVersion:this._clientVersion})})}$queryRawTyped(n){return this._createPrismaPromise(i=>{if(!this._hasPreviewFlag("typedSql"))throw new w.PrismaClientValidationError("`typedSql` preview feature must be enabled in order to access $queryRawTyped API",{clientVersion:this._clientVersion});return this.$queryRawInternal(i,"$queryRawTyped",n)})}$queryRawUnsafe(n,...i){return this._createPrismaPromise(o=>this.$queryRawInternal(o,"$queryRawUnsafe",[n,...i]))}_transactionWithArray({promises:n,options:i}){let o=Nd.nextId(),s=Ka(n.length),a=n.map((l,c)=>{if(l?.[Symbol.toStringTag]!=="PrismaPromise")throw new Error("All elements of the array need to be Prisma Client promises. Hint: Please make sure you are not awaiting the Prisma client calls you intended to pass in the $transaction function.");let u=i?.isolationLevel??this._engineConfig.transactionOptions.isolationLevel,p={kind:"batch",id:o,index:c,isolationLevel:u,lock:s};return l.requestTransaction?.(p)??l});return cl(a)}async _transactionWithCallback({callback:n,options:i}){let o={traceparent:this._tracingHelper.getTraceParent()},s={maxWait:i?.maxWait??this._engineConfig.transactionOptions.maxWait,timeout:i?.timeout??this._engineConfig.transactionOptions.timeout,isolationLevel:i?.isolationLevel??this._engineConfig.transactionOptions.isolationLevel},a=await this._engine.transaction("start",o,s),l;try{let c={kind:"itx",...a};l=await n(this._createItxClient(c)),await this._engine.transaction("commit",o,a)}catch(c){throw await this._engine.transaction("rollback",o,a).catch(()=>{}),c}return l}_createItxClient(n){return Q(ht(Q(Oo(this),[N("_appliedParent",()=>this._appliedParent._createItxClient(n)),N("_createPrismaPromise",()=>ei(n)),N(Dd,()=>n.id)])),[Le(No)])}$transaction(n,i){let o;typeof n=="function"?this._engineConfig.adapter?.adapterName==="@prisma/adapter-d1"?o=()=>{throw new Error("Cloudflare D1 does not support interactive transactions. We recommend you to refactor your queries with that limitation in mind, and use batch transactions with `prisma.$transactions([])` where applicable.")}:o=()=>this._transactionWithCallback({callback:n,options:i}):o=()=>this._transactionWithArray({promises:n,options:i});let s={name:"transaction",attributes:{method:"$transaction"}};return this._tracingHelper.runInChildSpan(s,o)}_request(n){n.otelParentCtx=this._tracingHelper.getActiveContext();let i=n.middlewareArgsMapper??Md,o={args:i.requestArgsToMiddlewareArgs(n.args),dataPath:n.dataPath,runInTransaction:!!n.transaction,action:n.action,model:n.model},s={operation:{name:"operation",attributes:{method:o.action,model:o.model,name:o.model?`${o.model}.${o.action}`:o.action}}},a=async l=>{let{runInTransaction:c,args:u,...p}=l,y={...n,...p};u&&(y.args=i.middlewareArgsToRequestArgs(u)),n.transaction!==void 0&&c===!1&&delete y.transaction;let h=await qo(this,y);return y.model?Do({result:h,modelName:y.model,args:y.args,extensions:this._extensions,runtimeDataModel:this._runtimeDataModel,globalOmit:this._globalOmit}):h};return this._tracingHelper.runInChildSpan(s.operation,()=>new dl.AsyncResource("prisma-client-request").runInAsyncScope(()=>a(o)))}async _executeRequest({args:n,clientMethod:i,dataPath:o,callsite:s,action:a,model:l,argsMapper:c,transaction:u,unpacker:p,otelParentCtx:y,customDataProxyFetch:h}){try{n=c?c(n):n;let g={name:"serialize"},E=this._tracingHelper.runInChildSpan(g,()=>or({modelName:l,runtimeDataModel:this._runtimeDataModel,action:a,args:n,clientMethod:i,callsite:s,extensions:this._extensions,errorFormat:this._errorFormat,clientVersion:this._clientVersion,previewFeatures:this._previewFeatures,globalOmit:this._globalOmit}));return M.enabled("prisma:client")&&(_t("Prisma Client call:"),_t(`prisma.${i}(${xo(n)})`),_t("Generated request:"),_t(JSON.stringify(E,null,2)+` +`)),u?.kind==="batch"&&await u.lock,this._requestHandler.request({protocolQuery:E,modelName:l,action:a,clientMethod:i,dataPath:o,callsite:s,args:n,extensions:this._extensions,transaction:u,unpacker:p,otelParentCtx:y,otelChildCtx:this._tracingHelper.getActiveContext(),globalOmit:this._globalOmit,customDataProxyFetch:h})}catch(g){throw g.clientVersion=this._clientVersion,g}}_hasPreviewFlag(n){return!!this._engineConfig.previewFeatures?.includes(n)}$extends=Io}return t}function ul(e,t){return _d(e)?[new pl.Sql(e,t),ja]:[e,Ba]}function _d(e){return Array.isArray(e)&&Array.isArray(e.raw)}var Ld=new Set(["toJSON","$$typeof","asymmetricMatch",Symbol.iterator,Symbol.toStringTag,Symbol.isConcatSpreadable,Symbol.toPrimitive]);function gl(e){return new Proxy(e,{get(t,r){if(r in t)return t[r];if(!Ld.has(r))throw new TypeError(`Invalid enum value: ${String(r)}`)}})}var $d=()=>globalThis.process?.release?.name==="node",qd=()=>!!globalThis.Bun||!!globalThis.process?.versions?.bun,Vd=()=>!!globalThis.Deno,Ud=()=>typeof globalThis.Netlify=="object",jd=()=>typeof globalThis.EdgeRuntime=="object",Bd=()=>globalThis.navigator?.userAgent==="Cloudflare-Workers";function Qd(){return[[Ud,"netlify"],[jd,"edge-light"],[Bd,"workerd"],[Vd,"deno"],[qd,"bun"],[$d,"node"]].flatMap(r=>r[0]()?[r[1]]:[]).at(0)??""}var Hd={node:"Node.js",workerd:"Cloudflare Workers",deno:"Deno and Deno Deploy",netlify:"Netlify Edge Functions","edge-light":"Edge Runtime (Vercel Edge Functions, Vercel Edge Middleware, Next.js (Pages Router) Edge API Routes, Next.js (App Router) Edge Route Handlers or Next.js Middleware)"};function yl(){let e=Qd();return{id:e,prettyName:Hd[e]||e,isEdge:["workerd","deno","netlify","edge-light"].includes(e)}}var w=require("@prisma/client-runtime-utils"),Z=require("@prisma/client-runtime-utils"),D=require("@prisma/client-runtime-utils"),hl=require("@prisma/client-runtime-utils");0&&(module.exports={AnyNull,DMMF,DbNull,Debug,Decimal,Extensions,JsonNull,NullTypes,ObjectEnumValue,PrismaClientInitializationError,PrismaClientKnownRequestError,PrismaClientRustPanicError,PrismaClientUnknownRequestError,PrismaClientValidationError,Public,Sql,createParam,defineDmmfProperty,deserializeJsonResponse,deserializeRawResult,dmmfToRuntimeDataModel,empty,getPrismaClient,getRuntime,isAnyNull,isDbNull,isJsonNull,join,makeStrictEnum,makeTypedQueryFactory,raw,serializeJsonQuery,skip,sqltag,warnOnce}); +/*! Bundled license information: + +@noble/hashes/utils.js: + (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *) +*/ +//# sourceMappingURL=client.js.map diff --git a/server/prisma/generated/client/runtime/index-browser.d.ts b/server/prisma/generated/client/runtime/index-browser.d.ts new file mode 100644 index 0000000..2156e71 --- /dev/null +++ b/server/prisma/generated/client/runtime/index-browser.d.ts @@ -0,0 +1,87 @@ +import { AnyNull } from '@prisma/client-runtime-utils'; +import { DbNull } from '@prisma/client-runtime-utils'; +import { Decimal } from '@prisma/client-runtime-utils'; +import { isAnyNull } from '@prisma/client-runtime-utils'; +import { isDbNull } from '@prisma/client-runtime-utils'; +import { isJsonNull } from '@prisma/client-runtime-utils'; +import { JsonNull } from '@prisma/client-runtime-utils'; +import { NullTypes } from '@prisma/client-runtime-utils'; + +export { AnyNull } + +declare type Args = T extends { + [K: symbol]: { + types: { + operations: { + [K in F]: { + args: any; + }; + }; + }; + }; +} ? T[symbol]['types']['operations'][F]['args'] : any; + +export { DbNull } + +export { Decimal } + +declare type Exact = (A extends unknown ? (W extends A ? { + [K in keyof A]: Exact; +} : W) : never) | (A extends Narrowable ? A : never); + +export declare function getRuntime(): GetRuntimeOutput; + +declare type GetRuntimeOutput = { + id: RuntimeName; + prettyName: string; + isEdge: boolean; +}; + +export { isAnyNull } + +export { isDbNull } + +export { isJsonNull } + +export { JsonNull } + +/** + * Generates more strict variant of an enum which, unlike regular enum, + * throws on non-existing property access. This can be useful in following situations: + * - we have an API, that accepts both `undefined` and `SomeEnumType` as an input + * - enum values are generated dynamically from DMMF. + * + * In that case, if using normal enums and no compile-time typechecking, using non-existing property + * will result in `undefined` value being used, which will be accepted. Using strict enum + * in this case will help to have a runtime exception, telling you that you are probably doing something wrong. + * + * Note: if you need to check for existence of a value in the enum you can still use either + * `in` operator or `hasOwnProperty` function. + * + * @param definition + * @returns + */ +export declare function makeStrictEnum>(definition: T): T; + +declare type Narrowable = string | number | bigint | boolean | []; + +export { NullTypes } + +declare type Operation = 'findFirst' | 'findFirstOrThrow' | 'findUnique' | 'findUniqueOrThrow' | 'findMany' | 'create' | 'createMany' | 'createManyAndReturn' | 'update' | 'updateMany' | 'updateManyAndReturn' | 'upsert' | 'delete' | 'deleteMany' | 'aggregate' | 'count' | 'groupBy' | '$queryRaw' | '$executeRaw' | '$queryRawUnsafe' | '$executeRawUnsafe' | 'findRaw' | 'aggregateRaw' | '$runCommandRaw'; + +declare namespace Public { + export { + validator + } +} +export { Public } + +declare type RuntimeName = 'workerd' | 'deno' | 'netlify' | 'node' | 'bun' | 'edge-light' | ''; + +declare function validator(): (select: Exact) => S; + +declare function validator, O extends keyof C[M] & Operation>(client: C, model: M, operation: O): (select: Exact>) => S; + +declare function validator, O extends keyof C[M] & Operation, P extends keyof Args>(client: C, model: M, operation: O, prop: P): (select: Exact[P]>) => S; + +export { } diff --git a/server/prisma/generated/client/runtime/index-browser.js b/server/prisma/generated/client/runtime/index-browser.js new file mode 100644 index 0000000..3ff443b --- /dev/null +++ b/server/prisma/generated/client/runtime/index-browser.js @@ -0,0 +1,6 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file +"use strict";var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var a=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},y=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of p(t))!f.call(e,i)&&i!==n&&s(e,i,{get:()=>t[i],enumerable:!(r=g(t,i))||r.enumerable});return e};var x=e=>y(s({},"__esModule",{value:!0}),e);var O={};a(O,{AnyNull:()=>o.AnyNull,DbNull:()=>o.DbNull,Decimal:()=>m.Decimal,JsonNull:()=>o.JsonNull,NullTypes:()=>o.NullTypes,Public:()=>l,getRuntime:()=>c,isAnyNull:()=>o.isAnyNull,isDbNull:()=>o.isDbNull,isJsonNull:()=>o.isJsonNull,makeStrictEnum:()=>u});module.exports=x(O);var l={};a(l,{validator:()=>d});function d(...e){return t=>t}var b=new Set(["toJSON","$$typeof","asymmetricMatch",Symbol.iterator,Symbol.toStringTag,Symbol.isConcatSpreadable,Symbol.toPrimitive]);function u(e){return new Proxy(e,{get(t,n){if(n in t)return t[n];if(!b.has(n))throw new TypeError("Invalid enum value: ".concat(String(n)))}})}var N=()=>{var e,t;return((t=(e=globalThis.process)==null?void 0:e.release)==null?void 0:t.name)==="node"},S=()=>{var e,t;return!!globalThis.Bun||!!((t=(e=globalThis.process)==null?void 0:e.versions)!=null&&t.bun)},E=()=>!!globalThis.Deno,R=()=>typeof globalThis.Netlify=="object",h=()=>typeof globalThis.EdgeRuntime=="object",C=()=>{var e;return((e=globalThis.navigator)==null?void 0:e.userAgent)==="Cloudflare-Workers"};function k(){var n;return(n=[[R,"netlify"],[h,"edge-light"],[C,"workerd"],[E,"deno"],[S,"bun"],[N,"node"]].flatMap(r=>r[0]()?[r[1]]:[]).at(0))!=null?n:""}var M={node:"Node.js",workerd:"Cloudflare Workers",deno:"Deno and Deno Deploy",netlify:"Netlify Edge Functions","edge-light":"Edge Runtime (Vercel Edge Functions, Vercel Edge Middleware, Next.js (Pages Router) Edge API Routes, Next.js (App Router) Edge Route Handlers or Next.js Middleware)"};function c(){let e=k();return{id:e,prettyName:M[e]||e,isEdge:["workerd","deno","netlify","edge-light"].includes(e)}}var o=require("@prisma/client-runtime-utils"),m=require("@prisma/client-runtime-utils");0&&(module.exports={AnyNull,DbNull,Decimal,JsonNull,NullTypes,Public,getRuntime,isAnyNull,isDbNull,isJsonNull,makeStrictEnum}); +//# sourceMappingURL=index-browser.js.map diff --git a/server/prisma/generated/client/runtime/wasm-compiler-edge.js b/server/prisma/generated/client/runtime/wasm-compiler-edge.js new file mode 100644 index 0000000..a4e3e0d --- /dev/null +++ b/server/prisma/generated/client/runtime/wasm-compiler-edge.js @@ -0,0 +1,76 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file +"use strict";var nu=Object.create;var pr=Object.defineProperty;var iu=Object.getOwnPropertyDescriptor;var ou=Object.getOwnPropertyNames;var su=Object.getPrototypeOf,au=Object.prototype.hasOwnProperty;var fe=(e,t)=>()=>(e&&(t=e(e=0)),t);var oe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ye=(e,t)=>{for(var r in t)pr(e,r,{get:t[r],enumerable:!0})},Ui=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ou(t))!au.call(e,i)&&i!==r&&pr(e,i,{get:()=>t[i],enumerable:!(n=iu(t,i))||n.enumerable});return e};var Ue=(e,t,r)=>(r=e!=null?nu(su(e)):{},Ui(t||!e||!e.__esModule?pr(r,"default",{value:e,enumerable:!0}):r,e)),$i=e=>Ui(pr({},"__esModule",{value:!0}),e);function xn(e,t){if(t=t.toLowerCase(),t==="utf8"||t==="utf-8")return new h(pu.encode(e));if(t==="base64"||t==="base64url")return e=e.replace(/-/g,"+").replace(/_/g,"/"),e=e.replace(/[^A-Za-z0-9+/]/g,""),new h([...atob(e)].map(r=>r.charCodeAt(0)));if(t==="binary"||t==="ascii"||t==="latin1"||t==="latin-1")return new h([...e].map(r=>r.charCodeAt(0)));if(t==="ucs2"||t==="ucs-2"||t==="utf16le"||t==="utf-16le"){let r=new h(e.length*2),n=new DataView(r.buffer);for(let i=0;ia.startsWith("get")||a.startsWith("set")),n=r.map(a=>a.replace("get","read").replace("set","write")),i=(a,d)=>function(f=0){return H(f,"offset"),ie(f,"offset"),W(f,"offset",this.length-1),new DataView(this.buffer)[r[a]](f,d)},o=(a,d)=>function(f,P=0){let v=r[a].match(/set(\w+\d+)/)[1].toLowerCase(),S=cu[v];return H(P,"offset"),ie(P,"offset"),W(P,"offset",this.length-1),uu(f,"value",S[0],S[1]),new DataView(this.buffer)[r[a]](P,f,d),P+parseInt(r[a].match(/\d+/)[0])/8},s=a=>{a.forEach(d=>{d.includes("Uint")&&(e[d.replace("Uint","UInt")]=e[d]),d.includes("Float64")&&(e[d.replace("Float64","Double")]=e[d]),d.includes("Float32")&&(e[d.replace("Float32","Float")]=e[d])})};n.forEach((a,d)=>{a.startsWith("read")&&(e[a]=i(d,!1),e[a+"LE"]=i(d,!0),e[a+"BE"]=i(d,!1)),a.startsWith("write")&&(e[a]=o(d,!1),e[a+"LE"]=o(d,!0),e[a+"BE"]=o(d,!1)),s([a,a+"LE",a+"BE"])})}function Vi(e){throw new Error(`Buffer polyfill does not implement "${e}"`)}function mr(e,t){if(!(e instanceof Uint8Array))throw new TypeError(`The "${t}" argument must be an instance of Buffer or Uint8Array`)}function W(e,t,r=fu+1){if(e<0||e>r){let n=new RangeError(`The value of "${t}" is out of range. It must be >= 0 && <= ${r}. Received ${e}`);throw n.code="ERR_OUT_OF_RANGE",n}}function H(e,t){if(typeof e!="number"){let r=new TypeError(`The "${t}" argument must be of type number. Received type ${typeof e}.`);throw r.code="ERR_INVALID_ARG_TYPE",r}}function ie(e,t){if(!Number.isInteger(e)||Number.isNaN(e)){let r=new RangeError(`The value of "${t}" is out of range. It must be an integer. Received ${e}`);throw r.code="ERR_OUT_OF_RANGE",r}}function uu(e,t,r,n){if(en){let i=new RangeError(`The value of "${t}" is out of range. It must be >= ${r} and <= ${n}. Received ${e}`);throw i.code="ERR_OUT_OF_RANGE",i}}function qi(e,t){if(typeof e!="string"){let r=new TypeError(`The "${t}" argument must be of type string. Received type ${typeof e}`);throw r.code="ERR_INVALID_ARG_TYPE",r}}function gu(e,t="utf8"){return h.from(e,t)}var h,cu,pu,mu,du,fu,y,En,l=fe(()=>{"use strict";h=class e extends Uint8Array{_isBuffer=!0;get offset(){return this.byteOffset}static alloc(t,r=0,n="utf8"){return qi(n,"encoding"),e.allocUnsafe(t).fill(r,n)}static allocUnsafe(t){return e.from(t)}static allocUnsafeSlow(t){return e.from(t)}static isBuffer(t){return t&&!!t._isBuffer}static byteLength(t,r="utf8"){if(typeof t=="string")return xn(t,r).byteLength;if(t&&t.byteLength)return t.byteLength;let n=new TypeError('The "string" argument must be of type string or an instance of Buffer or ArrayBuffer.');throw n.code="ERR_INVALID_ARG_TYPE",n}static isEncoding(t){return du.includes(t)}static compare(t,r){mr(t,"buff1"),mr(r,"buff2");for(let n=0;nr[n])return 1}return t.length===r.length?0:t.length>r.length?1:-1}static from(t,r="utf8"){if(t&&typeof t=="object"&&t.type==="Buffer")return new e(t.data);if(typeof t=="number")return new e(new Uint8Array(t));if(typeof t=="string")return xn(t,r);if(ArrayBuffer.isView(t)){let{byteOffset:n,byteLength:i,buffer:o}=t;return"map"in t&&typeof t.map=="function"?new e(t.map(s=>s%256),n,i):new e(o,n,i)}if(t&&typeof t=="object"&&("length"in t||"byteLength"in t||"buffer"in t))return new e(t);throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}static concat(t,r){if(t.length===0)return e.alloc(0);let n=[].concat(...t.map(o=>[...o])),i=e.alloc(r!==void 0?r:n.length);return i.set(r!==void 0?n.slice(0,r):n),i}slice(t=0,r=this.length){return this.subarray(t,r)}subarray(t=0,r=this.length){return Object.setPrototypeOf(super.subarray(t,r),e.prototype)}reverse(){return super.reverse(),this}readIntBE(t,r){H(t,"offset"),ie(t,"offset"),W(t,"offset",this.length-1),H(r,"byteLength"),ie(r,"byteLength");let n=new DataView(this.buffer,t,r),i=0;for(let o=0;o=0;o--)i.setUint8(o,t&255),t=t/256;return r+n}writeUintBE(t,r,n){return this.writeUIntBE(t,r,n)}writeUIntLE(t,r,n){H(r,"offset"),ie(r,"offset"),W(r,"offset",this.length-1),H(n,"byteLength"),ie(n,"byteLength");let i=new DataView(this.buffer,r,n);for(let o=0;or===t[n])}copy(t,r=0,n=0,i=this.length){W(r,"targetStart"),W(n,"sourceStart",this.length),W(i,"sourceEnd"),r>>>=0,n>>>=0,i>>>=0;let o=0;for(;n=this.length?this.length-a:t.length),a);return this}includes(t,r=null,n="utf-8"){return this.indexOf(t,r,n)!==-1}lastIndexOf(t,r=null,n="utf-8"){return this.indexOf(t,r,n,!0)}indexOf(t,r=null,n="utf-8",i=!1){let o=i?this.findLastIndex.bind(this):this.findIndex.bind(this);n=typeof r=="string"?r:n;let s=e.from(typeof t=="number"?[t]:t,n),a=typeof r=="string"?0:r;return a=typeof r=="number"?a:null,a=Number.isNaN(a)?null:a,a??=i?this.length:0,a=a<0?this.length+a:a,s.length===0&&i===!1?a>=this.length?this.length:a:s.length===0&&i===!0?(a>=this.length?this.length:a)||this.length:o((d,f)=>(i?f<=a:f>=a)&&this[f]===s[0]&&s.every((v,S)=>this[f+S]===v))}toString(t="utf8",r=0,n=this.length){if(r=r<0?0:r,t=t.toString().toLowerCase(),n<=0)return"";if(t==="utf8"||t==="utf-8")return mu.decode(this.slice(r,n));if(t==="base64"||t==="base64url"){let i=btoa(this.reduce((o,s)=>o+En(s),""));return t==="base64url"?i.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""):i}if(t==="binary"||t==="ascii"||t==="latin1"||t==="latin-1")return this.slice(r,n).reduce((i,o)=>i+En(o&(t==="ascii"?127:255)),"");if(t==="ucs2"||t==="ucs-2"||t==="utf16le"||t==="utf-16le"){let i=new DataView(this.buffer.slice(r,n));return Array.from({length:i.byteLength/2},(o,s)=>s*2+1i+o.toString(16).padStart(2,"0"),"");Vi(`encoding "${t}"`)}toLocaleString(){return this.toString()}inspect(){return``}};cu={int8:[-128,127],int16:[-32768,32767],int32:[-2147483648,2147483647],uint8:[0,255],uint16:[0,65535],uint32:[0,4294967295],float32:[-1/0,1/0],float64:[-1/0,1/0],bigint64:[-0x8000000000000000n,0x7fffffffffffffffn],biguint64:[0n,0xffffffffffffffffn]},pu=new TextEncoder,mu=new TextDecoder,du=["utf8","utf-8","hex","base64","ascii","binary","base64url","ucs2","ucs-2","utf16le","utf-16le","latin1","latin-1"],fu=4294967295;lu(h.prototype);y=new Proxy(gu,{construct(e,[t,r]){return h.from(t,r)},get(e,t){return h[t]}}),En=String.fromCodePoint});var g,x,u=fe(()=>{"use strict";g={nextTick:(e,...t)=>{setTimeout(()=>{e(...t)},0)},env:{},version:"",cwd:()=>"/",stderr:{},argv:["/bin/node"],pid:1e4},{cwd:x}=g});var w,c=fe(()=>{"use strict";w=globalThis.performance??(()=>{let e=Date.now();return{now:()=>Date.now()-e}})()});var b,p=fe(()=>{"use strict";b=()=>{};b.prototype=b});function Hi(e,t){var r,n,i,o,s,a,d,f,P=e.constructor,v=P.precision;if(!e.s||!t.s)return t.s||(t=new P(e)),B?_(t,v):t;if(d=e.d,f=t.d,s=e.e,i=t.e,d=d.slice(),o=s-i,o){for(o<0?(n=d,o=-o,a=f.length):(n=f,i=s,a=d.length),s=Math.ceil(v/$),a=s>a?s+1:a+1,o>a&&(o=a,n.length=1),n.reverse();o--;)n.push(0);n.reverse()}for(a=d.length,o=f.length,a-o<0&&(o=a,n=f,f=d,d=n),r=0;o;)r=(d[--o]=d[o]+f[o]+r)/G|0,d[o]%=G;for(r&&(d.unshift(r),++i),a=d.length;d[--a]==0;)d.pop();return t.d=d,t.e=i,B?_(t,v):t}function ye(e,t,r){if(e!==~~e||er)throw Error(qe+e)}function ge(e){var t,r,n,i=e.length-1,o="",s=e[0];if(i>0){for(o+=s,t=1;t16)throw Error(Pn+J(e));if(!e.s)return new P(se);for(t==null?(B=!1,a=v):a=t,s=new P(.03125);e.abs().gte(.1);)e=e.times(s),f+=5;for(n=Math.log($e(2,f))/Math.LN10*2+5|0,a+=n,r=i=o=new P(se),P.precision=a;;){if(i=_(i.times(e),a),r=r.times(++d),s=o.plus(ve(i,r,a)),ge(s.d).slice(0,a)===ge(o.d).slice(0,a)){for(;f--;)o=_(o.times(o),a);return P.precision=v,t==null?(B=!0,_(o,v)):o}o=s}}function J(e){for(var t=e.e*$,r=e.d[0];r>=10;r/=10)t++;return t}function Tn(e,t,r){if(t>e.LN10.sd())throw B=!0,r&&(e.precision=r),Error(le+"LN10 precision limit exceeded");return _(new e(e.LN10),t)}function Re(e){for(var t="";e--;)t+="0";return t}function Ct(e,t){var r,n,i,o,s,a,d,f,P,v=1,S=10,C=e,M=C.d,R=C.constructor,k=R.precision;if(C.s<1)throw Error(le+(C.s?"NaN":"-Infinity"));if(C.eq(se))return new R(0);if(t==null?(B=!1,f=k):f=t,C.eq(10))return t==null&&(B=!0),Tn(R,f);if(f+=S,R.precision=f,r=ge(M),n=r.charAt(0),o=J(C),Math.abs(o)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)C=C.times(e),r=ge(C.d),n=r.charAt(0),v++;o=J(C),n>1?(C=new R("0."+r),o++):C=new R(n+"."+r.slice(1))}else return d=Tn(R,f+2,k).times(o+""),C=Ct(new R(n+"."+r.slice(1)),f-S).plus(d),R.precision=k,t==null?(B=!0,_(C,k)):C;for(a=s=C=ve(C.minus(se),C.plus(se),f),P=_(C.times(C),f),i=3;;){if(s=_(s.times(P),f),d=a.plus(ve(s,new R(i),f)),ge(d.d).slice(0,f)===ge(a.d).slice(0,f))return a=a.times(2),o!==0&&(a=a.plus(Tn(R,f+2,k).times(o+""))),a=ve(a,new R(v),f),R.precision=k,t==null?(B=!0,_(a,k)):a;a=d,i+=2}}function Bi(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;)++n;for(i=t.length;t.charCodeAt(i-1)===48;)--i;if(t=t.slice(n,i),t){if(i-=n,r=r-n-1,e.e=et(r/$),e.d=[],n=(r+1)%$,r<0&&(n+=$),ndr||e.e<-dr))throw Error(Pn+r)}else e.s=0,e.e=0,e.d=[0];return e}function _(e,t,r){var n,i,o,s,a,d,f,P,v=e.d;for(s=1,o=v[0];o>=10;o/=10)s++;if(n=t-s,n<0)n+=$,i=t,f=v[P=0];else{if(P=Math.ceil((n+1)/$),o=v.length,P>=o)return e;for(f=o=v[P],s=1;o>=10;o/=10)s++;n%=$,i=n-$+s}if(r!==void 0&&(o=$e(10,s-i-1),a=f/o%10|0,d=t<0||v[P+1]!==void 0||f%o,d=r<4?(a||d)&&(r==0||r==(e.s<0?3:2)):a>5||a==5&&(r==4||d||r==6&&(n>0?i>0?f/$e(10,s-i):0:v[P-1])%10&1||r==(e.s<0?8:7))),t<1||!v[0])return d?(o=J(e),v.length=1,t=t-o-1,v[0]=$e(10,($-t%$)%$),e.e=et(-t/$)||0):(v.length=1,v[0]=e.e=e.s=0),e;if(n==0?(v.length=P,o=1,P--):(v.length=P+1,o=$e(10,$-n),v[P]=i>0?(f/$e(10,s-i)%$e(10,i)|0)*o:0),d)for(;;)if(P==0){(v[0]+=o)==G&&(v[0]=1,++e.e);break}else{if(v[P]+=o,v[P]!=G)break;v[P--]=0,o=1}for(n=v.length;v[--n]===0;)v.pop();if(B&&(e.e>dr||e.e<-dr))throw Error(Pn+J(e));return e}function Wi(e,t){var r,n,i,o,s,a,d,f,P,v,S=e.constructor,C=S.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new S(e),B?_(t,C):t;if(d=e.d,v=t.d,n=t.e,f=e.e,d=d.slice(),s=f-n,s){for(P=s<0,P?(r=d,s=-s,a=v.length):(r=v,n=f,a=d.length),i=Math.max(Math.ceil(C/$),a)+2,s>i&&(s=i,r.length=1),r.reverse(),i=s;i--;)r.push(0);r.reverse()}else{for(i=d.length,a=v.length,P=i0;--i)d[a++]=0;for(i=v.length;i>s;){if(d[--i]0?o=o.charAt(0)+"."+o.slice(1)+Re(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i<0?"e":"e+")+i):i<0?(o="0."+Re(-i-1)+o,r&&(n=r-s)>0&&(o+=Re(n))):i>=s?(o+=Re(i+1-s),r&&(n=r-i-1)>0&&(o=o+"."+Re(n))):((n=i+1)0&&(i+1===s&&(o+="."),o+=Re(n))),e.s<0?"-"+o:o}function ji(e,t){if(e.length>t)return e.length=t,!0}function Gi(e){var t,r,n;function i(o){var s=this;if(!(s instanceof i))return new i(o);if(s.constructor=i,o instanceof i){s.s=o.s,s.e=o.e,s.d=(o=o.d)?o.slice():o;return}if(typeof o=="number"){if(o*0!==0)throw Error(qe+o);if(o>0)s.s=1;else if(o<0)o=-o,s.s=-1;else{s.s=0,s.e=0,s.d=[0];return}if(o===~~o&&o<1e7){s.e=0,s.d=[o];return}return Bi(s,o.toString())}else if(typeof o!="string")throw Error(qe+o);if(o.charCodeAt(0)===45?(o=o.slice(1),s.s=-1):s.s=1,hu.test(o))Bi(s,o);else throw Error(qe+o)}if(i.prototype=A,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=Gi,i.config=i.set=wu,e===void 0&&(e={}),e)for(n=["precision","rounding","toExpNeg","toExpPos","LN10"],t=0;t=i[t+1]&&n<=i[t+2])this[r]=n;else throw Error(qe+r+": "+n);if((n=e[r="LN10"])!==void 0)if(n==Math.LN10)this[r]=new this(n);else throw Error(qe+r+": "+n);return this}var Xe,yu,Ki,B,le,qe,Pn,et,$e,hu,se,G,$,Qi,dr,A,ve,Ki,zi=fe(()=>{"use strict";l();u();c();p();m();Xe=1e9,yu={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:"2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286"},B=!0,le="[DecimalError] ",qe=le+"Invalid argument: ",Pn=le+"Exponent out of range: ",et=Math.floor,$e=Math.pow,hu=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,G=1e7,$=7,Qi=9007199254740991,dr=et(Qi/$),A={};A.absoluteValue=A.abs=function(){var e=new this.constructor(this);return e.s&&(e.s=1),e};A.comparedTo=A.cmp=function(e){var t,r,n,i,o=this;if(e=new o.constructor(e),o.s!==e.s)return o.s||-e.s;if(o.e!==e.e)return o.e>e.e^o.s<0?1:-1;for(n=o.d.length,i=e.d.length,t=0,r=ne.d[t]^o.s<0?1:-1;return n===i?0:n>i^o.s<0?1:-1};A.decimalPlaces=A.dp=function(){var e=this,t=e.d.length-1,r=(t-e.e)*$;if(t=e.d[t],t)for(;t%10==0;t/=10)r--;return r<0?0:r};A.dividedBy=A.div=function(e){return ve(this,new this.constructor(e))};A.dividedToIntegerBy=A.idiv=function(e){var t=this,r=t.constructor;return _(ve(t,new r(e),0,1),r.precision)};A.equals=A.eq=function(e){return!this.cmp(e)};A.exponent=function(){return J(this)};A.greaterThan=A.gt=function(e){return this.cmp(e)>0};A.greaterThanOrEqualTo=A.gte=function(e){return this.cmp(e)>=0};A.isInteger=A.isint=function(){return this.e>this.d.length-2};A.isNegative=A.isneg=function(){return this.s<0};A.isPositive=A.ispos=function(){return this.s>0};A.isZero=function(){return this.s===0};A.lessThan=A.lt=function(e){return this.cmp(e)<0};A.lessThanOrEqualTo=A.lte=function(e){return this.cmp(e)<1};A.logarithm=A.log=function(e){var t,r=this,n=r.constructor,i=n.precision,o=i+5;if(e===void 0)e=new n(10);else if(e=new n(e),e.s<1||e.eq(se))throw Error(le+"NaN");if(r.s<1)throw Error(le+(r.s?"NaN":"-Infinity"));return r.eq(se)?new n(0):(B=!1,t=ve(Ct(r,o),Ct(e,o),o),B=!0,_(t,i))};A.minus=A.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?Wi(t,e):Hi(t,(e.s=-e.s,e))};A.modulo=A.mod=function(e){var t,r=this,n=r.constructor,i=n.precision;if(e=new n(e),!e.s)throw Error(le+"NaN");return r.s?(B=!1,t=ve(r,e,0,1).times(e),B=!0,r.minus(t)):_(new n(r),i)};A.naturalExponential=A.exp=function(){return Ji(this)};A.naturalLogarithm=A.ln=function(){return Ct(this)};A.negated=A.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e};A.plus=A.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?Hi(t,e):Wi(t,(e.s=-e.s,e))};A.precision=A.sd=function(e){var t,r,n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(qe+e);if(t=J(i)+1,n=i.d.length-1,r=n*$+1,n=i.d[n],n){for(;n%10==0;n/=10)r--;for(n=i.d[0];n>=10;n/=10)r++}return e&&t>r?t:r};A.squareRoot=A.sqrt=function(){var e,t,r,n,i,o,s,a=this,d=a.constructor;if(a.s<1){if(!a.s)return new d(0);throw Error(le+"NaN")}for(e=J(a),B=!1,i=Math.sqrt(+a),i==0||i==1/0?(t=ge(a.d),(t.length+e)%2==0&&(t+="0"),i=Math.sqrt(t),e=et((e+1)/2)-(e<0||e%2),i==1/0?t="5e"+e:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+e),n=new d(t)):n=new d(i.toString()),r=d.precision,i=s=r+3;;)if(o=n,n=o.plus(ve(a,o,s+2)).times(.5),ge(o.d).slice(0,s)===(t=ge(n.d)).slice(0,s)){if(t=t.slice(s-3,s+1),i==s&&t=="4999"){if(_(o,r+1,0),o.times(o).eq(a)){n=o;break}}else if(t!="9999")break;s+=4}return B=!0,_(n,r)};A.times=A.mul=function(e){var t,r,n,i,o,s,a,d,f,P=this,v=P.constructor,S=P.d,C=(e=new v(e)).d;if(!P.s||!e.s)return new v(0);for(e.s*=P.s,r=P.e+e.e,d=S.length,f=C.length,d=0;){for(t=0,i=d+n;i>n;)a=o[i]+C[n]*S[i-n-1]+t,o[i--]=a%G|0,t=a/G|0;o[i]=(o[i]+t)%G|0}for(;!o[--s];)o.pop();return t?++r:o.shift(),e.d=o,e.e=r,B?_(e,v.precision):e};A.toDecimalPlaces=A.todp=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(ye(e,0,Xe),t===void 0?t=n.rounding:ye(t,0,8),_(r,e+J(r)+1,t))};A.toExponential=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=Ve(n,!0):(ye(e,0,Xe),t===void 0?t=i.rounding:ye(t,0,8),n=_(new i(n),e+1,t),r=Ve(n,!0,e+1)),r};A.toFixed=function(e,t){var r,n,i=this,o=i.constructor;return e===void 0?Ve(i):(ye(e,0,Xe),t===void 0?t=o.rounding:ye(t,0,8),n=_(new o(i),e+J(i)+1,t),r=Ve(n.abs(),!1,e+J(n)+1),i.isneg()&&!i.isZero()?"-"+r:r)};A.toInteger=A.toint=function(){var e=this,t=e.constructor;return _(new t(e),J(e)+1,t.rounding)};A.toNumber=function(){return+this};A.toPower=A.pow=function(e){var t,r,n,i,o,s,a=this,d=a.constructor,f=12,P=+(e=new d(e));if(!e.s)return new d(se);if(a=new d(a),!a.s){if(e.s<1)throw Error(le+"Infinity");return a}if(a.eq(se))return a;if(n=d.precision,e.eq(se))return _(a,n);if(t=e.e,r=e.d.length-1,s=t>=r,o=a.s,s){if((r=P<0?-P:P)<=Qi){for(i=new d(se),t=Math.ceil(n/$+4),B=!1;r%2&&(i=i.times(a),ji(i.d,t)),r=et(r/2),r!==0;)a=a.times(a),ji(a.d,t);return B=!0,e.s<0?new d(se).div(i):_(i,n)}}else if(o<0)throw Error(le+"NaN");return o=o<0&&e.d[Math.max(t,r)]&1?-1:1,a.s=1,B=!1,i=e.times(Ct(a,n+f)),B=!0,i=Ji(i),i.s=o,i};A.toPrecision=function(e,t){var r,n,i=this,o=i.constructor;return e===void 0?(r=J(i),n=Ve(i,r<=o.toExpNeg||r>=o.toExpPos)):(ye(e,1,Xe),t===void 0?t=o.rounding:ye(t,0,8),i=_(new o(i),e,t),r=J(i),n=Ve(i,e<=r||r<=o.toExpNeg,e)),n};A.toSignificantDigits=A.tosd=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(ye(e,1,Xe),t===void 0?t=n.rounding:ye(t,0,8)),_(new n(r),e,t)};A.toString=A.valueOf=A.val=A.toJSON=A[Symbol.for("nodejs.util.inspect.custom")]=function(){var e=this,t=J(e),r=e.constructor;return Ve(e,t<=r.toExpNeg||t>=r.toExpPos)};ve=function(){function e(n,i){var o,s=0,a=n.length;for(n=n.slice();a--;)o=n[a]*i+s,n[a]=o%G|0,s=o/G|0;return s&&n.unshift(s),n}function t(n,i,o,s){var a,d;if(o!=s)d=o>s?1:-1;else for(a=d=0;ai[a]?1:-1;break}return d}function r(n,i,o){for(var s=0;o--;)n[o]-=s,s=n[o]1;)n.shift()}return function(n,i,o,s){var a,d,f,P,v,S,C,M,R,k,Pe,re,F,ne,Fe,bn,ce,ur,cr=n.constructor,ru=n.s==i.s?1:-1,de=n.d,Q=i.d;if(!n.s)return new cr(n);if(!i.s)throw Error(le+"Division by zero");for(d=n.e-i.e,ce=Q.length,Fe=de.length,C=new cr(ru),M=C.d=[],f=0;Q[f]==(de[f]||0);)++f;if(Q[f]>(de[f]||0)&&--d,o==null?re=o=cr.precision:s?re=o+(J(n)-J(i))+1:re=o,re<0)return new cr(0);if(re=re/$+2|0,f=0,ce==1)for(P=0,Q=Q[0],re++;(f1&&(Q=e(Q,P),de=e(de,P),ce=Q.length,Fe=de.length),ne=ce,R=de.slice(0,ce),k=R.length;k=G/2&&++bn;do P=0,a=t(Q,R,ce,k),a<0?(Pe=R[0],ce!=k&&(Pe=Pe*G+(R[1]||0)),P=Pe/bn|0,P>1?(P>=G&&(P=G-1),v=e(Q,P),S=v.length,k=R.length,a=t(v,R,S,k),a==1&&(P--,r(v,ce{"use strict";zi()});var In={};Ye(In,{Hash:()=>Ot,createHash:()=>yo,default:()=>rt,randomFillSync:()=>wr,randomUUID:()=>hr,webcrypto:()=>kt});function hr(){return globalThis.crypto.randomUUID()}function wr(e,t,r){return t!==void 0&&(r!==void 0?e=e.subarray(t,t+r):e=e.subarray(t)),globalThis.crypto.getRandomValues(e)}function yo(e){return new Ot(e)}var kt,Ot,rt,Be=fe(()=>{"use strict";l();u();c();p();m();kt=globalThis.crypto;Ot=class{#t=[];#e;constructor(t){this.#e=t}update(t){this.#t.push(t)}async digest(){let t=new Uint8Array(this.#t.reduce((i,o)=>i+o.length,0)),r=0;for(let i of this.#t)t.set(i,r),r+=i.length;let n=await globalThis.crypto.subtle.digest(this.#e,t);return new Uint8Array(n)}},rt={webcrypto:kt,randomUUID:hr,randomFillSync:wr,createHash:yo,Hash:Ot}});var ho=oe(()=>{"use strict";l();u();c();p();m()});var wo=oe((jg,vu)=>{vu.exports={name:"@prisma/engines-version",version:"7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3",main:"index.js",types:"index.d.ts",license:"Apache-2.0",author:"Tim Suchanek ",prisma:{enginesVersion:"0c8ef2ce45c83248ab3df073180d5eda9e8be7a3"},repository:{type:"git",url:"https://github.com/prisma/engines-wrapper.git",directory:"packages/engines-version"},devDependencies:{"@types/node":"18.19.76",typescript:"4.9.5"},files:["index.js","index.d.ts"],scripts:{build:"tsc -d"}}});var bo=oe(br=>{"use strict";l();u();c();p();m();Object.defineProperty(br,"__esModule",{value:!0});br.enginesVersion=void 0;br.enginesVersion=wo().prisma.enginesVersion});var Po=oe((ry,To)=>{"use strict";l();u();c();p();m();To.exports=(e,t=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof e!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if(typeof t!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(t===0)return e;let n=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(n,r.indent.repeat(t))}});var Ao=oe((Dy,Er)=>{"use strict";l();u();c();p();m();Er.exports=(e={})=>{let t;if(e.repoUrl)t=e.repoUrl;else if(e.user&&e.repo)t=`https://github.com/${e.user}/${e.repo}`;else throw new Error("You need to specify either the `repoUrl` option or both the `user` and `repo` options");let r=new URL(`${t}/issues/new`),n=["body","title","labels","template","milestone","assignee","projects"];for(let i of n){let o=e[i];if(o!==void 0){if(i==="labels"||i==="projects"){if(!Array.isArray(o))throw new TypeError(`The \`${i}\` option should be an array`);o=o.join(",")}r.searchParams.set(i,o)}}return r.toString()};Er.exports.default=Er.exports});var _n=oe((Ew,Ro)=>{"use strict";l();u();c();p();m();Ro.exports=function(){function e(t,r,n,i,o){return tn?n+1:t+1:i===o?r:r+1}return function(t,r){if(t===r)return 0;if(t.length>r.length){var n=t;t=r,r=n}for(var i=t.length,o=r.length;i>0&&t.charCodeAt(i-1)===r.charCodeAt(o-1);)i--,o--;for(var s=0;s{"use strict";l();u();c();p();m()});var No=fe(()=>{"use strict";l();u();c();p();m()});var $r,os=fe(()=>{"use strict";l();u();c();p();m();$r=class{events={};on(t,r){return this.events[t]||(this.events[t]=[]),this.events[t].push(r),this}emit(t,...r){return this.events[t]?(this.events[t].forEach(n=>{n(...r)}),!0):!1}}});var ri=oe(Je=>{"use strict";l();u();c();p();m();Object.defineProperty(Je,"__esModule",{value:!0});Je.anumber=ti;Je.abytes=Gs;Je.ahash=ip;Je.aexists=op;Je.aoutput=sp;function ti(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function np(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Gs(e,...t){if(!np(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function ip(e){if(typeof e!="function"||typeof e.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");ti(e.outputLen),ti(e.blockLen)}function op(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function sp(e,t){Gs(e);let r=t.outputLen;if(e.length{"use strict";l();u();c();p();m();Object.defineProperty(O,"__esModule",{value:!0});O.add5L=O.add5H=O.add4H=O.add4L=O.add3H=O.add3L=O.rotlBL=O.rotlBH=O.rotlSL=O.rotlSH=O.rotr32L=O.rotr32H=O.rotrBL=O.rotrBH=O.rotrSL=O.rotrSH=O.shrSL=O.shrSH=O.toBig=void 0;O.fromBig=ii;O.split=Ks;O.add=ua;var Gr=BigInt(2**32-1),ni=BigInt(32);function ii(e,t=!1){return t?{h:Number(e&Gr),l:Number(e>>ni&Gr)}:{h:Number(e>>ni&Gr)|0,l:Number(e&Gr)|0}}function Ks(e,t=!1){let r=new Uint32Array(e.length),n=new Uint32Array(e.length);for(let i=0;iBigInt(e>>>0)<>>0);O.toBig=zs;var Zs=(e,t,r)=>e>>>r;O.shrSH=Zs;var Ys=(e,t,r)=>e<<32-r|t>>>r;O.shrSL=Ys;var Xs=(e,t,r)=>e>>>r|t<<32-r;O.rotrSH=Xs;var ea=(e,t,r)=>e<<32-r|t>>>r;O.rotrSL=ea;var ta=(e,t,r)=>e<<64-r|t>>>r-32;O.rotrBH=ta;var ra=(e,t,r)=>e>>>r-32|t<<64-r;O.rotrBL=ra;var na=(e,t)=>t;O.rotr32H=na;var ia=(e,t)=>e;O.rotr32L=ia;var oa=(e,t,r)=>e<>>32-r;O.rotlSH=oa;var sa=(e,t,r)=>t<>>32-r;O.rotlSL=sa;var aa=(e,t,r)=>t<>>64-r;O.rotlBH=aa;var la=(e,t,r)=>e<>>64-r;O.rotlBL=la;function ua(e,t,r,n){let i=(t>>>0)+(n>>>0);return{h:e+r+(i/2**32|0)|0,l:i|0}}var ca=(e,t,r)=>(e>>>0)+(t>>>0)+(r>>>0);O.add3L=ca;var pa=(e,t,r,n)=>t+r+n+(e/2**32|0)|0;O.add3H=pa;var ma=(e,t,r,n)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0);O.add4L=ma;var da=(e,t,r,n,i)=>t+r+n+i+(e/2**32|0)|0;O.add4H=da;var fa=(e,t,r,n,i)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0)+(i>>>0);O.add5L=fa;var ga=(e,t,r,n,i,o)=>t+r+n+i+o+(e/2**32|0)|0;O.add5H=ga;var ap={fromBig:ii,split:Ks,toBig:zs,shrSH:Zs,shrSL:Ys,rotrSH:Xs,rotrSL:ea,rotrBH:ta,rotrBL:ra,rotr32H:na,rotr32L:ia,rotlSH:oa,rotlSL:sa,rotlBH:aa,rotlBL:la,add:ua,add3L:ca,add3H:pa,add4L:ma,add4H:da,add5H:ga,add5L:fa};O.default=ap});var ha=oe(Kr=>{"use strict";l();u();c();p();m();Object.defineProperty(Kr,"__esModule",{value:!0});Kr.crypto=void 0;var Ne=(Be(),$i(In));Kr.crypto=Ne&&typeof Ne=="object"&&"webcrypto"in Ne?Ne.webcrypto:Ne&&typeof Ne=="object"&&"randomBytes"in Ne?Ne:void 0});var xa=oe(N=>{"use strict";l();u();c();p();m();Object.defineProperty(N,"__esModule",{value:!0});N.Hash=N.nextTick=N.byteSwapIfBE=N.isLE=void 0;N.isBytes=lp;N.u8=up;N.u32=cp;N.createView=pp;N.rotr=mp;N.rotl=dp;N.byteSwap=ai;N.byteSwap32=fp;N.bytesToHex=yp;N.hexToBytes=hp;N.asyncLoop=bp;N.utf8ToBytes=ba;N.toBytes=zr;N.concatBytes=xp;N.checkOpts=Ep;N.wrapConstructor=Tp;N.wrapConstructorWithOpts=Pp;N.wrapXOFConstructorWithOpts=vp;N.randomBytes=Ap;var wt=ha(),si=ri();function lp(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function up(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function cp(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function pp(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function mp(e,t){return e<<32-t|e>>>t}function dp(e,t){return e<>>32-t>>>0}N.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ai(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}N.byteSwapIfBE=N.isLE?e=>e:e=>ai(e);function fp(e){for(let t=0;tt.toString(16).padStart(2,"0"));function yp(e){(0,si.abytes)(e);let t="";for(let r=0;r=Ce._0&&e<=Ce._9)return e-Ce._0;if(e>=Ce.A&&e<=Ce.F)return e-(Ce.A-10);if(e>=Ce.a&&e<=Ce.f)return e-(Ce.a-10)}function hp(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);let t=e.length,r=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(r);for(let i=0,o=0;i{};N.nextTick=wp;async function bp(e,t,r){let n=Date.now();for(let i=0;i=0&&oe().update(zr(n)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}function Pp(e){let t=(n,i)=>e(i).update(zr(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}function vp(e){let t=(n,i)=>e(i).update(zr(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}function Ap(e=32){if(wt.crypto&&typeof wt.crypto.getRandomValues=="function")return wt.crypto.getRandomValues(new Uint8Array(e));if(wt.crypto&&typeof wt.crypto.randomBytes=="function")return wt.crypto.randomBytes(e);throw new Error("crypto.getRandomValues must be defined")}});var Ra=oe(V=>{"use strict";l();u();c();p();m();Object.defineProperty(V,"__esModule",{value:!0});V.shake256=V.shake128=V.keccak_512=V.keccak_384=V.keccak_256=V.keccak_224=V.sha3_512=V.sha3_384=V.sha3_256=V.sha3_224=V.Keccak=void 0;V.keccakP=Ca;var bt=ri(),zt=ya(),Se=xa(),Pa=[],va=[],Aa=[],Cp=BigInt(0),Kt=BigInt(1),Sp=BigInt(2),Rp=BigInt(7),Ip=BigInt(256),Op=BigInt(113);for(let e=0,t=Kt,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],Pa.push(2*(5*n+r)),va.push((e+1)*(e+2)/2%64);let i=Cp;for(let o=0;o<7;o++)t=(t<>Rp)*Op)%Ip,t&Sp&&(i^=Kt<<(Kt<r>32?(0,zt.rotlBH)(e,t,r):(0,zt.rotlSH)(e,t,r),Ta=(e,t,r)=>r>32?(0,zt.rotlBL)(e,t,r):(0,zt.rotlSL)(e,t,r);function Ca(e,t=24){let r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let s=0;s<10;s++)r[s]=e[s]^e[s+10]^e[s+20]^e[s+30]^e[s+40];for(let s=0;s<10;s+=2){let a=(s+8)%10,d=(s+2)%10,f=r[d],P=r[d+1],v=Ea(f,P,1)^r[a],S=Ta(f,P,1)^r[a+1];for(let C=0;C<50;C+=10)e[s+C]^=v,e[s+C+1]^=S}let i=e[2],o=e[3];for(let s=0;s<24;s++){let a=va[s],d=Ea(i,o,a),f=Ta(i,o,a),P=Pa[s];i=e[P],o=e[P+1],e[P]=d,e[P+1]=f}for(let s=0;s<50;s+=10){for(let a=0;a<10;a++)r[a]=e[s+a];for(let a=0;a<10;a++)e[s+a]^=~r[(a+2)%10]&r[(a+4)%10]}e[0]^=kp[n],e[1]^=Mp[n]}r.fill(0)}var Zt=class e extends Se.Hash{constructor(t,r,n,i=!1,o=24){if(super(),this.blockLen=t,this.suffix=r,this.outputLen=n,this.enableXOF=i,this.rounds=o,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,(0,bt.anumber)(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=(0,Se.u32)(this.state)}keccak(){Se.isLE||(0,Se.byteSwap32)(this.state32),Ca(this.state32,this.rounds),Se.isLE||(0,Se.byteSwap32)(this.state32),this.posOut=0,this.pos=0}update(t){(0,bt.aexists)(this);let{blockLen:r,state:n}=this;t=(0,Se.toBytes)(t);let i=t.length;for(let o=0;o=n&&this.keccak();let s=Math.min(n-this.posOut,o-i);t.set(r.subarray(this.posOut,this.posOut+s),i),this.posOut+=s,i+=s}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return(0,bt.anumber)(t),this.xofInto(new Uint8Array(t))}digestInto(t){if((0,bt.aoutput)(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){let{blockLen:r,suffix:n,outputLen:i,rounds:o,enableXOF:s}=this;return t||(t=new e(r,n,i,s,o)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=o,t.suffix=n,t.outputLen=i,t.enableXOF=s,t.destroyed=this.destroyed,t}};V.Keccak=Zt;var Le=(e,t,r)=>(0,Se.wrapConstructor)(()=>new Zt(t,e,r));V.sha3_224=Le(6,144,224/8);V.sha3_256=Le(6,136,256/8);V.sha3_384=Le(6,104,384/8);V.sha3_512=Le(6,72,512/8);V.keccak_224=Le(1,144,224/8);V.keccak_256=Le(1,136,256/8);V.keccak_384=Le(1,104,384/8);V.keccak_512=Le(1,72,512/8);var Sa=(e,t,r)=>(0,Se.wrapXOFConstructorWithOpts)((n={})=>new Zt(t,e,n.dkLen===void 0?r:n.dkLen,!0));V.shake128=Sa(31,168,128/8);V.shake256=Sa(31,136,256/8)});var _a=oe((_I,_e)=>{"use strict";l();u();c();p();m();var{sha3_512:Dp}=Ra(),Oa=24,Yt=32,li=(e=4,t=Math.random)=>{let r="";for(;r.lengthka(Dp(e)).toString(36).slice(1),Ia=Array.from({length:26},(e,t)=>String.fromCharCode(t+97)),Np=e=>Ia[Math.floor(e()*Ia.length)],Da=({globalObj:e=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},random:t=Math.random}={})=>{let r=Object.keys(e).toString(),n=r.length?r+li(Yt,t):li(Yt,t);return Ma(n).substring(0,Yt)},Na=e=>()=>e++,Lp=476782367,La=({random:e=Math.random,counter:t=Na(Math.floor(e()*Lp)),length:r=Oa,fingerprint:n=Da({random:e})}={})=>function(){let o=Np(e),s=Date.now().toString(36),a=t().toString(36),d=li(r,e),f=`${s+d+a+n}`;return`${o+Ma(f).substring(1,r)}`},_p=La(),Fp=(e,{minLength:t=2,maxLength:r=Yt}={})=>{let n=e.length,i=/^[0-9a-z]+$/;try{if(typeof e=="string"&&n>=t&&n<=r&&i.test(e))return!0}finally{}return!1};_e.exports.getConstants=()=>({defaultLength:Oa,bigLength:Yt});_e.exports.init=La;_e.exports.createId=_p;_e.exports.bufToBigInt=ka;_e.exports.createCounter=Na;_e.exports.createFingerprint=Da;_e.exports.isCuid=Fp});var Fa=oe((BI,Xt)=>{"use strict";l();u();c();p();m();var{createId:Up,init:$p,getConstants:qp,isCuid:Vp}=_a();Xt.exports.createId=Up;Xt.exports.init=$p;Xt.exports.getConstants=qp;Xt.exports.isCuid=Vp});var id={};Ye(id,{AnyNull:()=>ee.AnyNull,DMMF:()=>_t,DbNull:()=>ee.DbNull,Debug:()=>X,Decimal:()=>tu.Decimal,Extensions:()=>vn,JsonNull:()=>ee.JsonNull,NullTypes:()=>ee.NullTypes,ObjectEnumValue:()=>ee.ObjectEnumValue,PrismaClientInitializationError:()=>D.PrismaClientInitializationError,PrismaClientKnownRequestError:()=>D.PrismaClientKnownRequestError,PrismaClientRustPanicError:()=>D.PrismaClientRustPanicError,PrismaClientUnknownRequestError:()=>D.PrismaClientUnknownRequestError,PrismaClientValidationError:()=>D.PrismaClientValidationError,Public:()=>An,Sql:()=>Te.Sql,createParam:()=>Yo,defineDmmfProperty:()=>ns,deserializeJsonResponse:()=>De,deserializeRawResult:()=>hn,dmmfToRuntimeDataModel:()=>to,empty:()=>Te.empty,getPrismaClient:()=>Yl,getRuntime:()=>eu,isAnyNull:()=>ee.isAnyNull,isDbNull:()=>ee.isDbNull,isJsonNull:()=>ee.isJsonNull,join:()=>Te.join,makeStrictEnum:()=>Xl,makeTypedQueryFactory:()=>is,raw:()=>Te.raw,serializeJsonQuery:()=>_r,skip:()=>Lr,sqltag:()=>Te.sql,warnOnce:()=>Ln});module.exports=$i(id);l();u();c();p();m();var vn={};Ye(vn,{defineExtension:()=>Zi,getExtensionContext:()=>Yi});l();u();c();p();m();l();u();c();p();m();function Zi(e){return typeof e=="function"?e:t=>t.$extends(e)}l();u();c();p();m();function Yi(e){return e}var An={};Ye(An,{validator:()=>Xi});l();u();c();p();m();l();u();c();p();m();function Xi(...e){return t=>t}l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();var he=class{_map=new Map;get(t){return this._map.get(t)?.value}set(t,r){this._map.set(t,{value:r})}getOrCreate(t,r){let n=this._map.get(t);if(n)return n.value;let i=r();return this.set(t,i),i}};l();u();c();p();m();function Ie(e){return e.substring(0,1).toLowerCase()+e.substring(1)}l();u();c();p();m();function eo(e,t){let r={};for(let n of e){let i=n[t];r[i]=n}return r}l();u();c();p();m();function St(e){let t;return{get(){return t||(t={value:e()}),t.value}}}l();u();c();p();m();function to(e){return{models:Cn(e.models),enums:Cn(e.enums),types:Cn(e.types)}}function Cn(e){let t={};for(let{name:r,...n}of e)t[r]=n;return t}var ke=require("@prisma/client-runtime-utils");l();u();c();p();m();l();u();c();p();m();var Sn,ro,no,io,oo=!0;typeof g<"u"&&({FORCE_COLOR:Sn,NODE_DISABLE_COLORS:ro,NO_COLOR:no,TERM:io}=g.env||{},oo=g.stdout&&g.stdout.isTTY);var bu={enabled:!ro&&no==null&&io!=="dumb"&&(Sn!=null&&Sn!=="0"||oo)};function U(e,t){let r=new RegExp(`\\x1b\\[${t}m`,"g"),n=`\x1B[${e}m`,i=`\x1B[${t}m`;return function(o){return!bu.enabled||o==null?o:n+(~(""+o).indexOf(i)?o.replace(r,i+n):o)+i}}var Jf=U(0,0),fr=U(1,22),gr=U(2,22),Wf=U(3,23),yr=U(4,24),Gf=U(7,27),Kf=U(8,28),zf=U(9,29),Zf=U(30,39),tt=U(31,39),so=U(32,39),ao=U(33,39),lo=U(34,39),Yf=U(35,39),uo=U(36,39),Xf=U(37,39),co=U(90,39),eg=U(90,39),tg=U(40,49),rg=U(41,49),ng=U(42,49),ig=U(43,49),og=U(44,49),sg=U(45,49),ag=U(46,49),lg=U(47,49);l();u();c();p();m();var xu=100,po=["green","yellow","blue","magenta","cyan","red"],Rt=[],mo=Date.now(),Eu=0,Rn=typeof g<"u"?g.env:{};globalThis.DEBUG??=Rn.DEBUG??"";globalThis.DEBUG_COLORS??=Rn.DEBUG_COLORS?Rn.DEBUG_COLORS==="true":!0;var It={enable(e){typeof e=="string"&&(globalThis.DEBUG=e)},disable(){let e=globalThis.DEBUG;return globalThis.DEBUG="",e},enabled(e){let t=globalThis.DEBUG.split(",").map(i=>i.replace(/[.+?^${}()|[\]\\]/g,"\\$&")),r=t.some(i=>i===""||i[0]==="-"?!1:e.match(RegExp(i.split("*").join(".*")+"$"))),n=t.some(i=>i===""||i[0]!=="-"?!1:e.match(RegExp(i.slice(1).split("*").join(".*")+"$")));return r&&!n},log:(...e)=>{let[t,r,...n]=e;(console.warn??console.log)(`${t} ${r}`,...n)},formatters:{}};function Tu(e){let t={color:po[Eu++%po.length],enabled:It.enabled(e),namespace:e,log:It.log,extend:()=>{}},r=(...n)=>{let{enabled:i,namespace:o,color:s,log:a}=t;if(n.length!==0&&Rt.push([o,...n]),Rt.length>xu&&Rt.shift(),It.enabled(o)||i){let d=n.map(P=>typeof P=="string"?P:Pu(P)),f=`+${Date.now()-mo}ms`;mo=Date.now(),a(o,...d,f)}};return new Proxy(r,{get:(n,i)=>t[i],set:(n,i,o)=>t[i]=o})}var X=new Proxy(Tu,{get:(e,t)=>It[t],set:(e,t,r)=>It[t]=r});function Pu(e,t=2){let r=new Set;return JSON.stringify(e,(n,i)=>{if(typeof i=="object"&&i!==null){if(r.has(i))return"[Circular *]";r.add(i)}else if(typeof i=="bigint")return i.toString();return i},t)}function fo(e=7500){let t=Rt.map(([r,...n])=>`${r} ${n.map(i=>typeof i=="string"?i:JSON.stringify(i)).join(" ")}`).join(` +`);return t.lengthSu,info:()=>Cu,log:()=>Au,query:()=>Ru,should:()=>vo,tags:()=>Mt,warn:()=>kn});l();u();c();p();m();var Mt={error:tt("prisma:error"),warn:ao("prisma:warn"),info:uo("prisma:info"),query:lo("prisma:query")},vo={warn:()=>!g.env.PRISMA_DISABLE_WARNINGS};function Au(...e){console.log(...e)}function kn(e,...t){vo.warn()&&console.warn(`${Mt.warn} ${e}`,...t)}function Cu(e,...t){console.info(`${Mt.info} ${e}`,...t)}function Su(e,...t){console.error(`${Mt.error} ${e}`,...t)}function Ru(e,...t){console.log(`${Mt.query} ${e}`,...t)}l();u();c();p();m();function Ae(e,t){throw new Error(t)}l();u();c();p();m();l();u();c();p();m();function Mn({onlyFirst:e=!1}={}){let r=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(r,e?void 0:"g")}var Iu=Mn();function nt(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(Iu,"")}l();u();c();p();m();function Dn(e,t){return Object.prototype.hasOwnProperty.call(e,t)}l();u();c();p();m();function Tr(e,t){let r={};for(let n of Object.keys(e))r[n]=t(e[n],n);return r}l();u();c();p();m();function Nn(e,t){if(e.length===0)return;let r=e[0];for(let n=1;n{Co.has(e)||(Co.add(e),kn(t,...r))};l();u();c();p();m();function it(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function Pr(e){return e.toString()!=="Invalid Date"}l();u();c();p();m();var So=require("@prisma/client-runtime-utils");function ot(e){return So.Decimal.isDecimal(e)?!0:e!==null&&typeof e=="object"&&typeof e.s=="number"&&typeof e.e=="number"&&typeof e.toFixed=="function"&&Array.isArray(e.d)}l();u();c();p();m();var Jo=require("@prisma/client-runtime-utils");l();u();c();p();m();var _t={};Ye(_t,{ModelAction:()=>Lt,datamodelEnumToSchemaEnum:()=>Ou,datamodelSchemaEnumToSchemaEnum:()=>ku});l();u();c();p();m();l();u();c();p();m();function Ou(e){return{name:e.name,data:e.values.map(t=>({key:t.name,value:t.dbName??t.name}))}}function ku(e){return{name:e.name,data:e.values.map(t=>({key:t,value:t}))}}l();u();c();p();m();var Lt=(F=>(F.findUnique="findUnique",F.findUniqueOrThrow="findUniqueOrThrow",F.findFirst="findFirst",F.findFirstOrThrow="findFirstOrThrow",F.findMany="findMany",F.create="create",F.createMany="createMany",F.createManyAndReturn="createManyAndReturn",F.update="update",F.updateMany="updateMany",F.updateManyAndReturn="updateManyAndReturn",F.upsert="upsert",F.delete="delete",F.deleteMany="deleteMany",F.groupBy="groupBy",F.count="count",F.aggregate="aggregate",F.findRaw="findRaw",F.aggregateRaw="aggregateRaw",F))(Lt||{});var Mu=Ue(Po());var Du={red:tt,gray:co,dim:gr,bold:fr,underline:yr,highlightSource:e=>e.highlight()},Nu={red:e=>e,gray:e=>e,dim:e=>e,bold:e=>e,underline:e=>e,highlightSource:e=>e};function Lu({message:e,originalMethod:t,isPanic:r,callArguments:n}){return{functionName:`prisma.${t}()`,message:e,isPanic:r??!1,callArguments:n}}function _u({functionName:e,location:t,message:r,isPanic:n,contextLines:i,callArguments:o},s){let a=[""],d=t?" in":":";if(n?(a.push(s.red(`Oops, an unknown error occurred! This is ${s.bold("on us")}, you did nothing wrong.`)),a.push(s.red(`It occurred in the ${s.bold(`\`${e}\``)} invocation${d}`))):a.push(s.red(`Invalid ${s.bold(`\`${e}\``)} invocation${d}`)),t&&a.push(s.underline(Fu(t))),i){a.push("");let f=[i.toString()];o&&(f.push(o),f.push(s.dim(")"))),a.push(f.join("")),o&&a.push("")}else a.push(""),o&&a.push(o),a.push("");return a.push(r),a.join(` +`)}function Fu(e){let t=[e.fileName];return e.lineNumber&&t.push(String(e.lineNumber)),e.columnNumber&&t.push(String(e.columnNumber)),t.join(":")}function vr(e){let t=e.showColors?Du:Nu,r;return typeof $getTemplateParameters<"u"?r=$getTemplateParameters(e,t):r=Lu(e),_u(r,t)}l();u();c();p();m();var _o=Ue(_n());l();u();c();p();m();function ko(e,t,r){let n=Mo(e),i=Uu(n),o=qu(i);o?Ar(o,t,r):t.addErrorMessage(()=>"Unknown error")}function Mo(e){return e.errors.flatMap(t=>t.kind==="Union"?Mo(t):[t])}function Uu(e){let t=new Map,r=[];for(let n of e){if(n.kind!=="InvalidArgumentType"){r.push(n);continue}let i=`${n.selectionPath.join(".")}:${n.argumentPath.join(".")}`,o=t.get(i);o?t.set(i,{...n,argument:{...n.argument,typeNames:$u(o.argument.typeNames,n.argument.typeNames)}}):t.set(i,n)}return r.push(...t.values()),r}function $u(e,t){return[...new Set(e.concat(t))]}function qu(e){return Nn(e,(t,r)=>{let n=Io(t),i=Io(r);return n!==i?n-i:Oo(t)-Oo(r)})}function Io(e){let t=0;return Array.isArray(e.selectionPath)&&(t+=e.selectionPath.length),Array.isArray(e.argumentPath)&&(t+=e.argumentPath.length),t}function Oo(e){switch(e.kind){case"InvalidArgumentValue":case"ValueTooLarge":return 20;case"InvalidArgumentType":return 10;case"RequiredArgumentMissing":return-10;default:return 0}}l();u();c();p();m();var ae=class{constructor(t,r){this.name=t;this.value=r}isRequired=!1;makeRequired(){return this.isRequired=!0,this}write(t){let{colors:{green:r}}=t.context;t.addMarginSymbol(r(this.isRequired?"+":"?")),t.write(r(this.name)),this.isRequired||t.write(r("?")),t.write(r(": ")),typeof this.value=="string"?t.write(r(this.value)):t.write(this.value)}};l();u();c();p();m();l();u();c();p();m();No();l();u();c();p();m();var st=class{constructor(t=0,r){this.context=r;this.currentIndent=t}lines=[];currentLine="";currentIndent=0;marginSymbol;afterNextNewLineCallback;write(t){return typeof t=="string"?this.currentLine+=t:t.write(this),this}writeJoined(t,r,n=(i,o)=>o.write(i)){let i=r.length-1;for(let o=0;o0&&this.currentIndent--,this}addMarginSymbol(t){return this.marginSymbol=t,this}toString(){return this.lines.concat(this.indentedCurrentLine()).join(` +`)}getCurrentLineLength(){return this.currentLine.length}indentedCurrentLine(){let t=this.currentLine.padStart(this.currentLine.length+2*this.currentIndent);return this.marginSymbol?this.marginSymbol+t.slice(1):t}};Do();l();u();c();p();m();l();u();c();p();m();var Cr=class{constructor(t){this.value=t}write(t){t.write(this.value)}markAsError(){this.value.markAsError()}};l();u();c();p();m();var Sr=e=>e,Rr={bold:Sr,red:Sr,green:Sr,dim:Sr,enabled:!1},Lo={bold:fr,red:tt,green:so,dim:gr,enabled:!0},at={write(e){e.writeLine(",")}};l();u();c();p();m();var we=class{constructor(t){this.contents=t}isUnderlined=!1;color=t=>t;underline(){return this.isUnderlined=!0,this}setColor(t){return this.color=t,this}write(t){let r=t.getCurrentLineLength();t.write(this.color(this.contents)),this.isUnderlined&&t.afterNextNewline(()=>{t.write(" ".repeat(r)).writeLine(this.color("~".repeat(this.contents.length)))})}};l();u();c();p();m();var Oe=class{hasError=!1;markAsError(){return this.hasError=!0,this}};var lt=class extends Oe{items=[];addItem(t){return this.items.push(new Cr(t)),this}getField(t){return this.items[t]}getPrintWidth(){return this.items.length===0?2:Math.max(...this.items.map(r=>r.value.getPrintWidth()))+2}write(t){if(this.items.length===0){this.writeEmpty(t);return}this.writeWithItems(t)}writeEmpty(t){let r=new we("[]");this.hasError&&r.setColor(t.context.colors.red).underline(),t.write(r)}writeWithItems(t){let{colors:r}=t.context;t.writeLine("[").withIndent(()=>t.writeJoined(at,this.items).newLine()).write("]"),this.hasError&&t.afterNextNewline(()=>{t.writeLine(r.red("~".repeat(this.getPrintWidth())))})}asObject(){}};var ut=class e extends Oe{fields={};suggestions=[];addField(t){this.fields[t.name]=t}addSuggestion(t){this.suggestions.push(t)}getField(t){return this.fields[t]}getDeepField(t){let[r,...n]=t,i=this.getField(r);if(!i)return;let o=i;for(let s of n){let a;if(o.value instanceof e?a=o.value.getField(s):o.value instanceof lt&&(a=o.value.getField(Number(s))),!a)return;o=a}return o}getDeepFieldValue(t){return t.length===0?this:this.getDeepField(t)?.value}hasField(t){return!!this.getField(t)}removeAllFields(){this.fields={}}removeField(t){delete this.fields[t]}getFields(){return this.fields}isEmpty(){return Object.keys(this.fields).length===0}getFieldValue(t){return this.getField(t)?.value}getDeepSubSelectionValue(t){let r=this;for(let n of t){if(!(r instanceof e))return;let i=r.getSubSelectionValue(n);if(!i)return;r=i}return r}getDeepSelectionParent(t){let r=this.getSelectionParent();if(!r)return;let n=r;for(let i of t){let o=n.value.getFieldValue(i);if(!o||!(o instanceof e))return;let s=o.getSelectionParent();if(!s)return;n=s}return n}getSelectionParent(){let t=this.getField("select")?.value.asObject();if(t)return{kind:"select",value:t};let r=this.getField("include")?.value.asObject();if(r)return{kind:"include",value:r}}getSubSelectionValue(t){return this.getSelectionParent()?.value.fields[t].value}getPrintWidth(){let t=Object.values(this.fields);return t.length==0?2:Math.max(...t.map(n=>n.getPrintWidth()))+2}write(t){let r=Object.values(this.fields);if(r.length===0&&this.suggestions.length===0){this.writeEmpty(t);return}this.writeWithContents(t,r)}asObject(){return this}writeEmpty(t){let r=new we("{}");this.hasError&&r.setColor(t.context.colors.red).underline(),t.write(r)}writeWithContents(t,r){t.writeLine("{").withIndent(()=>{t.writeJoined(at,[...r,...this.suggestions]).newLine()}),t.write("}"),this.hasError&&t.afterNextNewline(()=>{t.writeLine(t.context.colors.red("~".repeat(this.getPrintWidth())))})}};l();u();c();p();m();var K=class extends Oe{constructor(r){super();this.text=r}getPrintWidth(){return this.text.length}write(r){let n=new we(this.text);this.hasError&&n.underline().setColor(r.context.colors.red),r.write(n)}asObject(){}};l();u();c();p();m();var Ft=class{fields=[];addField(t,r){return this.fields.push({write(n){let{green:i,dim:o}=n.context.colors;n.write(i(o(`${t}: ${r}`))).addMarginSymbol(i(o("+")))}}),this}write(t){let{colors:{green:r}}=t.context;t.writeLine(r("{")).withIndent(()=>{t.writeJoined(at,this.fields).newLine()}).write(r("}")).addMarginSymbol(r("+"))}};function Ar(e,t,r){switch(e.kind){case"MutuallyExclusiveFields":Vu(e,t);break;case"IncludeOnScalar":Bu(e,t);break;case"EmptySelection":ju(e,t,r);break;case"UnknownSelectionField":Wu(e,t);break;case"InvalidSelectionValue":Gu(e,t);break;case"UnknownArgument":Ku(e,t);break;case"UnknownInputField":zu(e,t);break;case"RequiredArgumentMissing":Zu(e,t);break;case"InvalidArgumentType":Yu(e,t);break;case"InvalidArgumentValue":Xu(e,t);break;case"ValueTooLarge":ec(e,t);break;case"SomeFieldsMissing":tc(e,t);break;case"TooManyFieldsGiven":rc(e,t);break;case"Union":ko(e,t,r);break;default:throw new Error("not implemented: "+e.kind)}}function Vu(e,t){let r=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();r&&(r.getField(e.firstField)?.markAsError(),r.getField(e.secondField)?.markAsError()),t.addErrorMessage(n=>`Please ${n.bold("either")} use ${n.green(`\`${e.firstField}\``)} or ${n.green(`\`${e.secondField}\``)}, but ${n.red("not both")} at the same time.`)}function Bu(e,t){let[r,n]=ct(e.selectionPath),i=e.outputType,o=t.arguments.getDeepSelectionParent(r)?.value;if(o&&(o.getField(n)?.markAsError(),i))for(let s of i.fields)s.isRelation&&o.addSuggestion(new ae(s.name,"true"));t.addErrorMessage(s=>{let a=`Invalid scalar field ${s.red(`\`${n}\``)} for ${s.bold("include")} statement`;return i?a+=` on model ${s.bold(i.name)}. ${Ut(s)}`:a+=".",a+=` +Note that ${s.bold("include")} statements only accept relation fields.`,a})}function ju(e,t,r){let n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();if(n){let i=n.getField("omit")?.value.asObject();if(i){Qu(e,t,i);return}if(n.hasField("select")){Hu(e,t);return}}if(r?.[Ie(e.outputType.name)]){Ju(e,t);return}t.addErrorMessage(()=>`Unknown field at "${e.selectionPath.join(".")} selection"`)}function Qu(e,t,r){r.removeAllFields();for(let n of e.outputType.fields)r.addSuggestion(new ae(n.name,"false"));t.addErrorMessage(n=>`The ${n.red("omit")} statement includes every field of the model ${n.bold(e.outputType.name)}. At least one field must be included in the result`)}function Hu(e,t){let r=e.outputType,n=t.arguments.getDeepSelectionParent(e.selectionPath)?.value,i=n?.isEmpty()??!1;n&&(n.removeAllFields(),$o(n,r)),t.addErrorMessage(o=>i?`The ${o.red("`select`")} statement for type ${o.bold(r.name)} must not be empty. ${Ut(o)}`:`The ${o.red("`select`")} statement for type ${o.bold(r.name)} needs ${o.bold("at least one truthy value")}.`)}function Ju(e,t){let r=new Ft;for(let i of e.outputType.fields)i.isRelation||r.addField(i.name,"false");let n=new ae("omit",r).makeRequired();if(e.selectionPath.length===0)t.arguments.addSuggestion(n);else{let[i,o]=ct(e.selectionPath),a=t.arguments.getDeepSelectionParent(i)?.value.asObject()?.getField(o);if(a){let d=a?.value.asObject()??new ut;d.addSuggestion(n),a.value=d}}t.addErrorMessage(i=>`The global ${i.red("omit")} configuration excludes every field of the model ${i.bold(e.outputType.name)}. At least one field must be included in the result`)}function Wu(e,t){let r=qo(e.selectionPath,t);if(r.parentKind!=="unknown"){r.field.markAsError();let n=r.parent;switch(r.parentKind){case"select":$o(n,e.outputType);break;case"include":nc(n,e.outputType);break;case"omit":ic(n,e.outputType);break}}t.addErrorMessage(n=>{let i=[`Unknown field ${n.red(`\`${r.fieldName}\``)}`];return r.parentKind!=="unknown"&&i.push(`for ${n.bold(r.parentKind)} statement`),i.push(`on model ${n.bold(`\`${e.outputType.name}\``)}.`),i.push(Ut(n)),i.join(" ")})}function Gu(e,t){let r=qo(e.selectionPath,t);r.parentKind!=="unknown"&&r.field.value.markAsError(),t.addErrorMessage(n=>`Invalid value for selection field \`${n.red(r.fieldName)}\`: ${e.underlyingError}`)}function Ku(e,t){let r=e.argumentPath[0],n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();n&&(n.getField(r)?.markAsError(),oc(n,e.arguments)),t.addErrorMessage(i=>Fo(i,r,e.arguments.map(o=>o.name)))}function zu(e,t){let[r,n]=ct(e.argumentPath),i=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();if(i){i.getDeepField(e.argumentPath)?.markAsError();let o=i.getDeepFieldValue(r)?.asObject();o&&Vo(o,e.inputType)}t.addErrorMessage(o=>Fo(o,n,e.inputType.fields.map(s=>s.name)))}function Fo(e,t,r){let n=[`Unknown argument \`${e.red(t)}\`.`],i=ac(t,r);return i&&n.push(`Did you mean \`${e.green(i)}\`?`),r.length>0&&n.push(Ut(e)),n.join(" ")}function Zu(e,t){let r;t.addErrorMessage(d=>r?.value instanceof K&&r.value.text==="null"?`Argument \`${d.green(o)}\` must not be ${d.red("null")}.`:`Argument \`${d.green(o)}\` is missing.`);let n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();if(!n)return;let[i,o]=ct(e.argumentPath),s=new Ft,a=n.getDeepFieldValue(i)?.asObject();if(a){if(r=a.getField(o),r&&a.removeField(o),e.inputTypes.length===1&&e.inputTypes[0].kind==="object"){for(let d of e.inputTypes[0].fields)s.addField(d.name,d.typeNames.join(" | "));a.addSuggestion(new ae(o,s).makeRequired())}else{let d=e.inputTypes.map(Uo).join(" | ");a.addSuggestion(new ae(o,d).makeRequired())}if(e.dependentArgumentPath){n.getDeepField(e.dependentArgumentPath)?.markAsError();let[,d]=ct(e.dependentArgumentPath);t.addErrorMessage(f=>`Argument \`${f.green(o)}\` is required because argument \`${f.green(d)}\` was provided.`)}}}function Uo(e){return e.kind==="list"?`${Uo(e.elementType)}[]`:e.name}function Yu(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();n&&n.getDeepFieldValue(e.argumentPath)?.markAsError(),t.addErrorMessage(i=>{let o=Ir("or",e.argument.typeNames.map(s=>i.green(s)));return`Argument \`${i.bold(r)}\`: Invalid value provided. Expected ${o}, provided ${i.red(e.inferredType)}.`})}function Xu(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();n&&n.getDeepFieldValue(e.argumentPath)?.markAsError(),t.addErrorMessage(i=>{let o=[`Invalid value for argument \`${i.bold(r)}\``];if(e.underlyingError&&o.push(`: ${e.underlyingError}`),o.push("."),e.argument.typeNames.length>0){let s=Ir("or",e.argument.typeNames.map(a=>i.green(a)));o.push(` Expected ${s}.`)}return o.join("")})}function ec(e,t){let r=e.argument.name,n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject(),i;if(n){let s=n.getDeepField(e.argumentPath)?.value;s?.markAsError(),s instanceof K&&(i=s.text)}t.addErrorMessage(o=>{let s=["Unable to fit value"];return i&&s.push(o.red(i)),s.push(`into a 64-bit signed integer for field \`${o.bold(r)}\``),s.join(" ")})}function tc(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject();if(n){let i=n.getDeepFieldValue(e.argumentPath)?.asObject();i&&Vo(i,e.inputType)}t.addErrorMessage(i=>{let o=[`Argument \`${i.bold(r)}\` of type ${i.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1?e.constraints.requiredFields?o.push(`${i.green("at least one of")} ${Ir("or",e.constraints.requiredFields.map(s=>`\`${i.bold(s)}\``))} arguments.`):o.push(`${i.green("at least one")} argument.`):o.push(`${i.green(`at least ${e.constraints.minFieldCount}`)} arguments.`),o.push(Ut(i)),o.join(" ")})}function rc(e,t){let r=e.argumentPath[e.argumentPath.length-1],n=t.arguments.getDeepSubSelectionValue(e.selectionPath)?.asObject(),i=[];if(n){let o=n.getDeepFieldValue(e.argumentPath)?.asObject();o&&(o.markAsError(),i=Object.keys(o.getFields()))}t.addErrorMessage(o=>{let s=[`Argument \`${o.bold(r)}\` of type ${o.bold(e.inputType.name)} needs`];return e.constraints.minFieldCount===1&&e.constraints.maxFieldCount==1?s.push(`${o.green("exactly one")} argument,`):e.constraints.maxFieldCount==1?s.push(`${o.green("at most one")} argument,`):s.push(`${o.green(`at most ${e.constraints.maxFieldCount}`)} arguments,`),s.push(`but you provided ${Ir("and",i.map(a=>o.red(a)))}. Please choose`),e.constraints.maxFieldCount===1?s.push("one."):s.push(`${e.constraints.maxFieldCount}.`),s.join(" ")})}function $o(e,t){for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new ae(r.name,"true"))}function nc(e,t){for(let r of t.fields)r.isRelation&&!e.hasField(r.name)&&e.addSuggestion(new ae(r.name,"true"))}function ic(e,t){for(let r of t.fields)!e.hasField(r.name)&&!r.isRelation&&e.addSuggestion(new ae(r.name,"true"))}function oc(e,t){for(let r of t)e.hasField(r.name)||e.addSuggestion(new ae(r.name,r.typeNames.join(" | ")))}function qo(e,t){let[r,n]=ct(e),i=t.arguments.getDeepSubSelectionValue(r)?.asObject();if(!i)return{parentKind:"unknown",fieldName:n};let o=i.getFieldValue("select")?.asObject(),s=i.getFieldValue("include")?.asObject(),a=i.getFieldValue("omit")?.asObject(),d=o?.getField(n);return o&&d?{parentKind:"select",parent:o,field:d,fieldName:n}:(d=s?.getField(n),s&&d?{parentKind:"include",field:d,parent:s,fieldName:n}:(d=a?.getField(n),a&&d?{parentKind:"omit",field:d,parent:a,fieldName:n}:{parentKind:"unknown",fieldName:n}))}function Vo(e,t){if(t.kind==="object")for(let r of t.fields)e.hasField(r.name)||e.addSuggestion(new ae(r.name,r.typeNames.join(" | ")))}function ct(e){let t=[...e],r=t.pop();if(!r)throw new Error("unexpected empty path");return[t,r]}function Ut({green:e,enabled:t}){return"Available options are "+(t?`listed in ${e("green")}`:"marked with ?")+"."}function Ir(e,t){if(t.length===1)return t[0];let r=[...t],n=r.pop();return`${r.join(", ")} ${e} ${n}`}var sc=3;function ac(e,t){let r=1/0,n;for(let i of t){let o=(0,_o.default)(e,i);o>sc||o`}};function pt(e){return e instanceof $t}l();u();c();p();m();var Bo=": ",Or=class{constructor(t,r){this.name=t;this.value=r}hasError=!1;markAsError(){this.hasError=!0}getPrintWidth(){return this.name.length+this.value.getPrintWidth()+Bo.length}write(t){let r=new we(this.name);this.hasError&&r.underline().setColor(t.context.colors.red),t.write(r).write(Bo).write(this.value)}};var Un=class{arguments;errorMessages=[];constructor(t){this.arguments=t}write(t){t.write(this.arguments)}addErrorMessage(t){this.errorMessages.push(t)}renderAllMessages(t){return this.errorMessages.map(r=>r(t)).join(` +`)}};function mt(e){return new Un(Qo(e))}function Qo(e){let t=new ut;for(let[r,n]of Object.entries(e)){let i=new Or(r,Ho(n));t.addField(i)}return t}function Ho(e){if(typeof e=="string")return new K(JSON.stringify(e));if(typeof e=="number"||typeof e=="boolean")return new K(String(e));if(typeof e=="bigint")return new K(`${e}n`);if(e===null)return new K("null");if(e===void 0)return new K("undefined");if(ot(e))return new K(`new Prisma.Decimal("${e.toFixed()}")`);if(e instanceof Uint8Array)return y.isBuffer(e)?new K(`Buffer.alloc(${e.byteLength})`):new K(`new Uint8Array(${e.byteLength})`);if(e instanceof Date){let t=Pr(e)?e.toISOString():"Invalid Date";return new K(`new Date("${t}")`)}return e instanceof jo.ObjectEnumValue?new K(`Prisma.${e._getName()}`):pt(e)?new K(`prisma.${Ie(e.modelName)}.$fields.${e.name}`):Array.isArray(e)?lc(e):typeof e=="object"?Qo(e):new K(Object.prototype.toString.call(e))}function lc(e){let t=new lt;for(let r of e)t.addItem(Ho(r));return t}function kr(e,t){let r=t==="pretty"?Lo:Rr,n=e.renderAllMessages(r),i=new st(0,{colors:r}).write(e).toString();return{message:n,args:i}}function Mr({args:e,errors:t,errorFormat:r,callsite:n,originalMethod:i,clientVersion:o,globalOmit:s}){let a=mt(e);for(let v of t)Ar(v,a,s);let{message:d,args:f}=kr(a,r),P=vr({message:d,callsite:n,originalMethod:i,showColors:r==="pretty",callArguments:f});throw new Jo.PrismaClientValidationError(P,{clientVersion:o})}l();u();c();p();m();l();u();c();p();m();function be(e){return e.replace(/^./,t=>t.toLowerCase())}l();u();c();p();m();function Go(e,t,r){let n=be(r);return!t.result||!(t.result.$allModels||t.result[n])?e:uc({...e,...Wo(t.name,e,t.result.$allModels),...Wo(t.name,e,t.result[n])})}function uc(e){let t=new he,r=(n,i)=>t.getOrCreate(n,()=>i.has(n)?[n]:(i.add(n),e[n]?e[n].needs.flatMap(o=>r(o,i)):[n]));return Tr(e,n=>({...n,needs:r(n.name,new Set)}))}function Wo(e,t,r){return r?Tr(r,({needs:n,compute:i},o)=>({name:o,needs:n?Object.keys(n).filter(s=>n[s]):[],compute:cc(t,o,i)})):{}}function cc(e,t,r){let n=e?.[t]?.compute;return n?i=>r({...i,[t]:n(i)}):r}function Ko(e,t){if(!t)return e;let r={...e};for(let n of Object.values(t))if(e[n.name])for(let i of n.needs)r[i]=!0;return r}function zo(e,t){if(!t)return e;let r={...e};for(let n of Object.values(t))if(!e[n.name])for(let i of n.needs)delete r[i];return r}var Dr=class{constructor(t,r){this.extension=t;this.previous=r}computedFieldsCache=new he;modelExtensionsCache=new he;queryCallbacksCache=new he;clientExtensions=St(()=>this.extension.client?{...this.previous?.getAllClientExtensions(),...this.extension.client}:this.previous?.getAllClientExtensions());batchCallbacks=St(()=>{let t=this.previous?.getAllBatchQueryCallbacks()??[],r=this.extension.query?.$__internalBatch;return r?t.concat(r):t});getAllComputedFields(t){return this.computedFieldsCache.getOrCreate(t,()=>Go(this.previous?.getAllComputedFields(t),this.extension,t))}getAllClientExtensions(){return this.clientExtensions.get()}getAllModelExtensions(t){return this.modelExtensionsCache.getOrCreate(t,()=>{let r=be(t);return!this.extension.model||!(this.extension.model[r]||this.extension.model.$allModels)?this.previous?.getAllModelExtensions(t):{...this.previous?.getAllModelExtensions(t),...this.extension.model.$allModels,...this.extension.model[r]}})}getAllQueryCallbacks(t,r){return this.queryCallbacksCache.getOrCreate(`${t}:${r}`,()=>{let n=this.previous?.getAllQueryCallbacks(t,r)??[],i=[],o=this.extension.query;return!o||!(o[t]||o.$allModels||o[r]||o.$allOperations)?n:(o[t]!==void 0&&(o[t][r]!==void 0&&i.push(o[t][r]),o[t].$allOperations!==void 0&&i.push(o[t].$allOperations)),t!=="$none"&&o.$allModels!==void 0&&(o.$allModels[r]!==void 0&&i.push(o.$allModels[r]),o.$allModels.$allOperations!==void 0&&i.push(o.$allModels.$allOperations)),o[r]!==void 0&&i.push(o[r]),o.$allOperations!==void 0&&i.push(o.$allOperations),n.concat(i))})}getAllBatchQueryCallbacks(){return this.batchCallbacks.get()}},dt=class e{constructor(t){this.head=t}static empty(){return new e}static single(t){return new e(new Dr(t))}isEmpty(){return this.head===void 0}append(t){return new e(new Dr(t,this.head))}getAllComputedFields(t){return this.head?.getAllComputedFields(t)}getAllClientExtensions(){return this.head?.getAllClientExtensions()}getAllModelExtensions(t){return this.head?.getAllModelExtensions(t)}getAllQueryCallbacks(t,r){return this.head?.getAllQueryCallbacks(t,r)??[]}getAllBatchQueryCallbacks(){return this.head?.getAllBatchQueryCallbacks()??[]}};l();u();c();p();m();var Nr=class{constructor(t){this.name=t}};function Zo(e){return e instanceof Nr}function Yo(e){return new Nr(e)}l();u();c();p();m();l();u();c();p();m();var Xo=Symbol(),qt=class{constructor(t){if(t!==Xo)throw new Error("Skip instance can not be constructed directly")}ifUndefined(t){return t===void 0?Lr:t}},Lr=new qt(Xo);function xe(e){return e instanceof qt}var pc={findUnique:"findUnique",findUniqueOrThrow:"findUniqueOrThrow",findFirst:"findFirst",findFirstOrThrow:"findFirstOrThrow",findMany:"findMany",count:"aggregate",create:"createOne",createMany:"createMany",createManyAndReturn:"createManyAndReturn",update:"updateOne",updateMany:"updateMany",updateManyAndReturn:"updateManyAndReturn",upsert:"upsertOne",delete:"deleteOne",deleteMany:"deleteMany",executeRaw:"executeRaw",queryRaw:"queryRaw",aggregate:"aggregate",groupBy:"groupBy",runCommandRaw:"runCommandRaw",findRaw:"findRaw",aggregateRaw:"aggregateRaw"},es="explicitly `undefined` values are not allowed";function _r({modelName:e,action:t,args:r,runtimeDataModel:n,extensions:i=dt.empty(),callsite:o,clientMethod:s,errorFormat:a,clientVersion:d,previewFeatures:f,globalOmit:P}){let v=new $n({runtimeDataModel:n,modelName:e,action:t,rootArgs:r,callsite:o,extensions:i,selectionPath:[],argumentPath:[],originalMethod:s,errorFormat:a,clientVersion:d,previewFeatures:f,globalOmit:P});return{modelName:e,action:pc[t],query:Vt(r,v)}}function Vt({select:e,include:t,...r}={},n){let i=r.omit;return delete r.omit,{arguments:rs(r,n),selection:mc(e,t,i,n)}}function mc(e,t,r,n){return e?(t?n.throwValidationError({kind:"MutuallyExclusiveFields",firstField:"include",secondField:"select",selectionPath:n.getSelectionPath()}):r&&n.throwValidationError({kind:"MutuallyExclusiveFields",firstField:"omit",secondField:"select",selectionPath:n.getSelectionPath()}),yc(e,n)):dc(n,t,r)}function dc(e,t,r){let n={};return e.modelOrType&&!e.isRawAction()&&(n.$composites=!0,n.$scalars=!0),t&&fc(n,t,e),gc(n,r,e),n}function fc(e,t,r){for(let[n,i]of Object.entries(t)){if(xe(i))continue;let o=r.nestSelection(n);if(qn(i,o),i===!1||i===void 0){e[n]=!1;continue}let s=r.findField(n);if(s&&s.kind!=="object"&&r.throwValidationError({kind:"IncludeOnScalar",selectionPath:r.getSelectionPath().concat(n),outputType:r.getOutputTypeDescription()}),s){e[n]=Vt(i===!0?{}:i,o);continue}if(i===!0){e[n]=!0;continue}e[n]=Vt(i,o)}}function gc(e,t,r){let n=r.getComputedFields(),i={...r.getGlobalOmit(),...t},o=zo(i,n);for(let[s,a]of Object.entries(o)){if(xe(a))continue;qn(a,r.nestSelection(s));let d=r.findField(s);n?.[s]&&!d||(e[s]=!a)}}function yc(e,t){let r={},n=t.getComputedFields(),i=Ko(e,n);for(let[o,s]of Object.entries(i)){if(xe(s))continue;let a=t.nestSelection(o);qn(s,a);let d=t.findField(o);if(!(n?.[o]&&!d)){if(s===!1||s===void 0||xe(s)){r[o]=!1;continue}if(s===!0){d?.kind==="object"?r[o]=Vt({},a):r[o]=!0;continue}r[o]=Vt(s,a)}}return r}function ts(e,t){if(e===null)return null;if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="bigint")return{$type:"BigInt",value:String(e)};if(it(e)){if(Pr(e))return{$type:"DateTime",value:e.toISOString()};t.throwValidationError({kind:"InvalidArgumentValue",selectionPath:t.getSelectionPath(),argumentPath:t.getArgumentPath(),argument:{name:t.getArgumentName(),typeNames:["Date"]},underlyingError:"Provided Date object is invalid"})}if(Zo(e))return{$type:"Param",value:e.name};if(pt(e))return{$type:"FieldRef",value:{_ref:e.name,_container:e.modelName}};if(Array.isArray(e))return hc(e,t);if(ArrayBuffer.isView(e)){let{buffer:r,byteOffset:n,byteLength:i}=e;return{$type:"Bytes",value:y.from(r,n,i).toString("base64")}}if(wc(e))return e.values;if(ot(e))return{$type:"Decimal",value:e.toFixed()};if(e instanceof ke.ObjectEnumValue){if(!(0,ke.isDbNull)(e)&&!(0,ke.isJsonNull)(e)&&!(0,ke.isAnyNull)(e))throw new Error("Invalid ObjectEnumValue");return{$type:"Enum",value:e._getName()}}if(bc(e))return e.toJSON();if(typeof e=="object")return rs(e,t);t.throwValidationError({kind:"InvalidArgumentValue",selectionPath:t.getSelectionPath(),argumentPath:t.getArgumentPath(),argument:{name:t.getArgumentName(),typeNames:[]},underlyingError:`We could not serialize ${Object.prototype.toString.call(e)} value. Serialize the object to JSON or implement a ".toJSON()" method on it`})}function rs(e,t){if(e.$type)return{$type:"Raw",value:e};let r={};for(let n in e){let i=e[n],o=t.nestArgument(n);xe(i)||(i!==void 0?r[n]=ts(i,o):t.isPreviewFeatureOn("strictUndefinedChecks")&&t.throwValidationError({kind:"InvalidArgumentValue",argumentPath:o.getArgumentPath(),selectionPath:t.getSelectionPath(),argument:{name:t.getArgumentName(),typeNames:[]},underlyingError:es}))}return r}function hc(e,t){let r=[];for(let n=0;n({name:t.name,typeName:"boolean",isRelation:t.kind==="object"}))}}isRawAction(){return["executeRaw","queryRaw","runCommandRaw","findRaw","aggregateRaw"].includes(this.params.action)}isPreviewFeatureOn(t){return this.params.previewFeatures.includes(t)}getComputedFields(){if(this.params.modelName)return this.params.extensions.getAllComputedFields(this.params.modelName)}findField(t){return this.modelOrType?.fields.find(r=>r.name===t)}nestSelection(t){let r=this.findField(t),n=r?.kind==="object"?r.type:void 0;return new e({...this.params,modelName:n,selectionPath:this.params.selectionPath.concat(t)})}getGlobalOmit(){return this.params.modelName&&this.shouldApplyGlobalOmit()?this.params.globalOmit?.[Ie(this.params.modelName)]??{}:{}}shouldApplyGlobalOmit(){switch(this.params.action){case"findFirst":case"findFirstOrThrow":case"findUniqueOrThrow":case"findMany":case"upsert":case"findUnique":case"createManyAndReturn":case"create":case"update":case"updateManyAndReturn":case"delete":return!0;case"executeRaw":case"aggregateRaw":case"runCommandRaw":case"findRaw":case"createMany":case"deleteMany":case"groupBy":case"updateMany":case"count":case"aggregate":case"queryRaw":return!1;default:Ae(this.params.action,"Unknown action")}}nestArgument(t){return new e({...this.params,argumentPath:this.params.argumentPath.concat(t)})}};l();u();c();p();m();function ns(e,t){let r=St(()=>xc(t));Object.defineProperty(e,"dmmf",{get:()=>r.get()})}function xc(e){throw new Error("Prisma.dmmf is not available when running in edge runtimes.")}function Vn(e){return Object.entries(e).map(([t,r])=>({name:t,...r}))}l();u();c();p();m();var Bn=new WeakMap,Fr="$$PrismaTypedSql",Bt=class{constructor(t,r){Bn.set(this,{sql:t,values:r}),Object.defineProperty(this,Fr,{value:Fr})}get sql(){return Bn.get(this).sql}get values(){return Bn.get(this).values}};function is(e){return(...t)=>new Bt(e,t)}function Ur(e){return e!=null&&e[Fr]===Fr}l();u();c();p();m();var Zl=require("@prisma/client-runtime-utils");l();u();c();p();m();os();l();u();c();p();m();l();u();c();p();m();function jt(e){return{getKeys(){return Object.keys(e)},getPropertyValue(t){return e[t]}}}l();u();c();p();m();function te(e,t){return{getKeys(){return[e]},getPropertyValue(){return t()}}}l();u();c();p();m();function je(e){let t=new he;return{getKeys(){return e.getKeys()},getPropertyValue(r){return t.getOrCreate(r,()=>e.getPropertyValue(r))},getPropertyDescriptor(r){return e.getPropertyDescriptor?.(r)}}}l();u();c();p();m();l();u();c();p();m();var qr={enumerable:!0,configurable:!0,writable:!0};function Vr(e){let t=new Set(e);return{getPrototypeOf:()=>Object.prototype,getOwnPropertyDescriptor:()=>qr,has:(r,n)=>t.has(n),set:(r,n,i)=>t.add(n)&&Reflect.set(r,n,i),ownKeys:()=>[...t]}}var ss=Symbol.for("nodejs.util.inspect.custom");function pe(e,t){let r=Ec(t),n=new Set,i=new Proxy(e,{get(o,s){if(n.has(s))return o[s];let a=r.get(s);return a?a.getPropertyValue(s):o[s]},has(o,s){if(n.has(s))return!0;let a=r.get(s);return a?a.has?.(s)??!0:Reflect.has(o,s)},ownKeys(o){let s=as(Reflect.ownKeys(o),r),a=as(Array.from(r.keys()),r);return[...new Set([...s,...a,...n])]},set(o,s,a){return r.get(s)?.getPropertyDescriptor?.(s)?.writable===!1?!1:(n.add(s),Reflect.set(o,s,a))},getOwnPropertyDescriptor(o,s){let a=Reflect.getOwnPropertyDescriptor(o,s);if(a&&!a.configurable)return a;let d=r.get(s);return d?d.getPropertyDescriptor?{...qr,...d?.getPropertyDescriptor(s)}:qr:a},defineProperty(o,s,a){return n.add(s),Reflect.defineProperty(o,s,a)},getPrototypeOf:()=>Object.prototype});return i[ss]=function(){let o={...this};return delete o[ss],o},i}function Ec(e){let t=new Map;for(let r of e){let n=r.getKeys();for(let i of n)t.set(i,r)}return t}function as(e,t){return e.filter(r=>t.get(r)?.has?.(r)??!0)}l();u();c();p();m();function ft(e){return{getKeys(){return e},has(){return!1},getPropertyValue(){}}}l();u();c();p();m();function ls(e){if(e===void 0)return"";let t=mt(e);return new st(0,{colors:Rr}).write(t).toString()}l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();var jn=class{getLocation(){return null}};function Me(e){return typeof $EnabledCallSite=="function"&&e!=="minimal"?new $EnabledCallSite:new jn}l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();var us={_avg:!0,_count:!0,_sum:!0,_min:!0,_max:!0};function gt(e={}){let t=Pc(e);return Object.entries(t).reduce((n,[i,o])=>(us[i]!==void 0?n.select[i]={select:o}:n[i]=o,n),{select:{}})}function Pc(e={}){return typeof e._count=="boolean"?{...e,_count:{_all:e._count}}:e}function Br(e={}){return t=>(typeof e._count=="boolean"&&(t._count=t._count._all),t)}function cs(e,t){let r=Br(e);return t({action:"aggregate",unpacker:r,argsMapper:gt})(e)}l();u();c();p();m();function vc(e={}){let{select:t,...r}=e;return typeof t=="object"?gt({...r,_count:t}):gt({...r,_count:{_all:!0}})}function Ac(e={}){return typeof e.select=="object"?t=>Br(e)(t)._count:t=>Br(e)(t)._count._all}function ps(e,t){return t({action:"count",unpacker:Ac(e),argsMapper:vc})(e)}l();u();c();p();m();function Cc(e={}){let t=gt(e);if(Array.isArray(t.by))for(let r of t.by)typeof r=="string"&&(t.select[r]=!0);else typeof t.by=="string"&&(t.select[t.by]=!0);return t}function Sc(e={}){return t=>(typeof e?._count=="boolean"&&t.forEach(r=>{r._count=r._count._all}),t)}function ms(e,t){return t({action:"groupBy",unpacker:Sc(e),argsMapper:Cc})(e)}function ds(e,t,r){if(t==="aggregate")return n=>cs(n,r);if(t==="count")return n=>ps(n,r);if(t==="groupBy")return n=>ms(n,r)}l();u();c();p();m();function fs(e,t){let r=t.fields.filter(i=>!i.relationName),n=eo(r,"name");return new Proxy({},{get(i,o){if(o in i||typeof o=="symbol")return i[o];let s=n[o];if(s)return new $t(e,o,s.type,s.isList,s.kind==="enum")},...Vr(Object.keys(n))})}l();u();c();p();m();l();u();c();p();m();var gs=e=>Array.isArray(e)?e:e.split("."),Qn=(e,t)=>gs(t).reduce((r,n)=>r&&r[n],e),ys=(e,t,r)=>gs(t).reduceRight((n,i,o,s)=>Object.assign({},Qn(e,s.slice(0,o)),{[i]:n}),r);function Rc(e,t){return e===void 0||t===void 0?[]:[...t,"select",e]}function Ic(e,t,r){return t===void 0?e??{}:ys(t,r,e||!0)}function Hn(e,t,r,n,i,o){let a=e._runtimeDataModel.models[t].fields.reduce((d,f)=>({...d,[f.name]:f}),{});return d=>{let f=Me(e._errorFormat),P=Rc(n,i),v=Ic(d,o,P),S=r({dataPath:P,callsite:f})(v),C=Oc(e,t);return new Proxy(S,{get(M,R){if(!C.includes(R))return M[R];let Pe=[a[R].type,r,R],re=[P,v];return Hn(e,...Pe,...re)},...Vr([...C,...Object.getOwnPropertyNames(S)])})}}function Oc(e,t){return e._runtimeDataModel.models[t].fields.filter(r=>r.kind==="object").map(r=>r.name)}var kc=["findUnique","findUniqueOrThrow","findFirst","findFirstOrThrow","create","update","upsert","delete"],Mc=["aggregate","count","groupBy"];function Jn(e,t){let r=e._extensions.getAllModelExtensions(t)??{},n=[Dc(e,t),Lc(e,t),jt(r),te("name",()=>t),te("$name",()=>t),te("$parent",()=>e._appliedParent)];return pe({},n)}function Dc(e,t){let r=be(t),n=Object.keys(Lt).concat("count");return{getKeys(){return n},getPropertyValue(i){let o=i,s=a=>d=>{let f=Me(e._errorFormat);return e._createPrismaPromise(P=>{let v={args:d,dataPath:[],action:o,model:t,clientMethod:`${r}.${i}`,jsModelName:r,transaction:P,callsite:f};return e._request({...v,...a})},{action:o,args:d,model:t})};return kc.includes(o)?Hn(e,t,s):Nc(i)?ds(e,i,s):s({})}}}function Nc(e){return Mc.includes(e)}function Lc(e,t){return je(te("fields",()=>{let r=e._runtimeDataModel.models[t];return fs(t,r)}))}l();u();c();p();m();function hs(e){return e.replace(/^./,t=>t.toUpperCase())}var Wn=Symbol();function Qt(e){let t=[_c(e),Fc(e),te(Wn,()=>e),te("$parent",()=>e._appliedParent)],r=e._extensions.getAllClientExtensions();return r&&t.push(jt(r)),pe(e,t)}function _c(e){let t=Object.getPrototypeOf(e._originalClient),r=[...new Set(Object.getOwnPropertyNames(t))];return{getKeys(){return r},getPropertyValue(n){return e[n]}}}function Fc(e){let t=Object.keys(e._runtimeDataModel.models),r=t.map(be),n=[...new Set(t.concat(r))];return je({getKeys(){return n},getPropertyValue(i){let o=hs(i);if(e._runtimeDataModel.models[o]!==void 0)return Jn(e,o);if(e._runtimeDataModel.models[i]!==void 0)return Jn(e,i)},getPropertyDescriptor(i){if(!r.includes(i))return{enumerable:!1}}})}function ws(e){return e[Wn]?e[Wn]:e}function bs(e){if(typeof e=="function")return e(this);let t=Object.create(this._originalClient,{_extensions:{value:this._extensions.append(e)},_appliedParent:{value:this,configurable:!0},$on:{value:void 0}});return Qt(t)}l();u();c();p();m();l();u();c();p();m();function xs({result:e,modelName:t,select:r,omit:n,extensions:i}){let o=i.getAllComputedFields(t);if(!o)return e;let s=[],a=[];for(let d of Object.values(o)){if(n){if(n[d.name])continue;let f=d.needs.filter(P=>n[P]);f.length>0&&a.push(ft(f))}else if(r){if(!r[d.name])continue;let f=d.needs.filter(P=>!r[P]);f.length>0&&a.push(ft(f))}Uc(e,d.needs)&&s.push($c(d,pe(e,s)))}return s.length>0||a.length>0?pe(e,[...s,...a]):e}function Uc(e,t){return t.every(r=>Dn(e,r))}function $c(e,t){return je(te(e.name,()=>e.compute(t)))}l();u();c();p();m();function jr({visitor:e,result:t,args:r,runtimeDataModel:n,modelName:i}){if(Array.isArray(t)){for(let s=0;sP.name===o);if(!d||d.kind!=="object"||!d.relationName)continue;let f=typeof s=="object"?s:{};t[o]=jr({visitor:i,result:t[o],args:f,modelName:d.type,runtimeDataModel:n})}}function Ts({result:e,modelName:t,args:r,extensions:n,runtimeDataModel:i,globalOmit:o}){return n.isEmpty()||e==null||typeof e!="object"||!i.models[t]?e:jr({result:e,args:r??{},modelName:t,runtimeDataModel:i,visitor:(a,d,f)=>{let P=be(d);return xs({result:a,modelName:P,select:f.select,omit:f.select?void 0:{...o?.[P],...f.omit},extensions:n})}})}l();u();c();p();m();l();u();c();p();m();var Qe=require("@prisma/client-runtime-utils");l();u();c();p();m();var qc=["$connect","$disconnect","$on","$transaction","$extends"],Ps=qc;function vs(e){if(e instanceof Qe.Sql)return Vc(e);if(Ur(e))return Bc(e);if(Array.isArray(e)){let r=[e[0]];for(let n=1;n{let o=t.customDataProxyFetch;return"transaction"in t&&i!==void 0&&(t.transaction?.kind==="batch"&&t.transaction.lock.then(),t.transaction=i),n===r.length?e._executeRequest(t):r[n]({model:t.model,operation:t.model?t.action:t.clientMethod,args:vs(t.args??{}),__internalParams:t,query:(s,a=t)=>{let d=a.customDataProxyFetch;return a.customDataProxyFetch=Os(o,d),a.args=s,Cs(e,a,r,n+1)}})})}function Ss(e,t){let{jsModelName:r,action:n,clientMethod:i}=t,o=r?n:i;if(e._extensions.isEmpty())return e._executeRequest(t);let s=e._extensions.getAllQueryCallbacks(r??"$none",o);return Cs(e,t,s)}function Rs(e){return t=>{let r={requests:t},n=t[0].extensions.getAllBatchQueryCallbacks();return n.length?Is(r,n,0,e):e(r)}}function Is(e,t,r,n){if(r===t.length)return n(e);let i=e.customDataProxyFetch,o=e.requests[0].transaction;return t[r]({args:{queries:e.requests.map(s=>({model:s.modelName,operation:s.action,args:s.args})),transaction:o?{isolationLevel:o.kind==="batch"?o.isolationLevel:void 0}:void 0},__internalParams:e,query(s,a=e){let d=a.customDataProxyFetch;return a.customDataProxyFetch=Os(i,d),Is(a,t,r+1,n)}})}var As=e=>e;function Os(e=As,t=As){return r=>e(t(r))}l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();var _s=require("@prisma/client-runtime-utils");l();u();c();p();m();var Jt=require("@prisma/client-runtime-utils");function L(e,t){throw new Error(t)}function Gn(e,t){return e===t||e!==null&&t!==null&&typeof e=="object"&&typeof t=="object"&&Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every(r=>Gn(e[r],t[r]))}function yt(e,t){let r=Object.keys(e),n=Object.keys(t);return(r.length{if(typeof e[o]==typeof t[o]&&typeof e[o]!="object")return e[o]===t[o];if(Jt.Decimal.isDecimal(e[o])||Jt.Decimal.isDecimal(t[o])){let s=ks(e[o]),a=ks(t[o]);return s&&a&&s.equals(a)}else if(e[o]instanceof Uint8Array||t[o]instanceof Uint8Array){let s=Ms(e[o]),a=Ms(t[o]);return s&&a&&s.equals(a)}else{if(e[o]instanceof Date||t[o]instanceof Date)return Ds(e[o])?.getTime()===Ds(t[o])?.getTime();if(typeof e[o]=="bigint"||typeof t[o]=="bigint")return Ns(e[o])===Ns(t[o]);if(typeof e[o]=="number"||typeof t[o]=="number")return Ls(e[o])===Ls(t[o])}return Gn(e[o],t[o])})}function ks(e){return Jt.Decimal.isDecimal(e)?e:typeof e=="number"||typeof e=="string"?new Jt.Decimal(e):void 0}function Ms(e){return y.isBuffer(e)?e:e instanceof Uint8Array?y.from(e.buffer,e.byteOffset,e.byteLength):typeof e=="string"?y.from(e,"base64"):void 0}function Ds(e){return e instanceof Date?e:typeof e=="string"||typeof e=="number"?new Date(e):void 0}function Ns(e){return typeof e=="bigint"?e:typeof e=="number"||typeof e=="string"?BigInt(e):void 0}function Ls(e){return typeof e=="number"?e:typeof e=="string"?Number(e):void 0}function Wt(e){return JSON.stringify(e,(t,r)=>typeof r=="bigint"?r.toString():ArrayBuffer.isView(r)?y.from(r.buffer,r.byteOffset,r.byteLength).toString("base64"):r)}function jc(e){return e!==null&&typeof e=="object"&&typeof e.$type=="string"}function Qc(e,t){let r={};for(let n of Object.keys(e))r[n]=t(e[n],n);return r}function De(e){return e===null?e:Array.isArray(e)?e.map(De):typeof e=="object"?jc(e)?Hc(e):e.constructor!==null&&e.constructor.name!=="Object"?e:Qc(e,De):e}function Hc({$type:e,value:t}){switch(e){case"BigInt":return BigInt(t);case"Bytes":{let{buffer:r,byteOffset:n,byteLength:i}=y.from(t,"base64");return new Uint8Array(r,n,i)}case"DateTime":return new Date(t);case"Decimal":return new _s.Decimal(t);case"Json":return JSON.parse(t);default:L(t,"Unknown tagged value")}}l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();function Qr(e){return e.name==="DriverAdapterError"&&typeof e.cause=="object"}l();u();c();p();m();var I={Int32:0,Int64:1,Float:2,Double:3,Numeric:4,Boolean:5,Character:6,Text:7,Date:8,Time:9,DateTime:10,Json:11,Enum:12,Bytes:13,Set:14,Uuid:15,Int32Array:64,Int64Array:65,FloatArray:66,DoubleArray:67,NumericArray:68,BooleanArray:69,CharacterArray:70,TextArray:71,DateArray:72,TimeArray:73,DateTimeArray:74,JsonArray:75,EnumArray:76,BytesArray:77,UuidArray:78,UnknownNumber:128};var z=class extends Error{name="UserFacingError";code;meta;constructor(t,r,n){super(t),this.code=r,this.meta=n??{}}toQueryResponseErrorObject(){return{error:this.message,user_facing_error:{is_panic:!1,message:this.message,meta:this.meta,error_code:this.code}}}};function ht(e){if(!Qr(e))throw e;let t=Jc(e),r=Fs(e);throw!t||!r?e:new z(r,t,{driverAdapterError:e})}function zn(e){throw Qr(e)?new z(`Raw query failed. Code: \`${e.cause.originalCode??"N/A"}\`. Message: \`${e.cause.originalMessage??Fs(e)}\``,"P2010",{driverAdapterError:e}):e}function Jc(e){switch(e.cause.kind){case"AuthenticationFailed":return"P1000";case"DatabaseNotReachable":return"P1001";case"DatabaseDoesNotExist":return"P1003";case"SocketTimeout":return"P1008";case"DatabaseAlreadyExists":return"P1009";case"DatabaseAccessDenied":return"P1010";case"TlsConnectionError":return"P1011";case"ConnectionClosed":return"P1017";case"TransactionAlreadyClosed":return"P1018";case"LengthMismatch":return"P2000";case"UniqueConstraintViolation":return"P2002";case"ForeignKeyConstraintViolation":return"P2003";case"InvalidInputValue":return"P2007";case"UnsupportedNativeDataType":return"P2010";case"NullConstraintViolation":return"P2011";case"ValueOutOfRange":return"P2020";case"TableDoesNotExist":return"P2021";case"ColumnNotFound":return"P2022";case"InvalidIsolationLevel":case"InconsistentColumnData":return"P2023";case"MissingFullTextSearchIndex":return"P2030";case"TransactionWriteConflict":return"P2034";case"GenericJs":return"P2036";case"TooManyConnections":return"P2037";case"postgres":case"sqlite":case"mysql":case"mssql":return;default:L(e.cause,`Unknown error: ${e.cause}`)}}function Fs(e){switch(e.cause.kind){case"AuthenticationFailed":return`Authentication failed against the database server, the provided database credentials for \`${e.cause.user??"(not available)"}\` are not valid`;case"DatabaseNotReachable":{let t=e.cause.host&&e.cause.port?`${e.cause.host}:${e.cause.port}`:e.cause.host;return`Can't reach database server${t?` at ${t}`:""}`}case"DatabaseDoesNotExist":return`Database \`${e.cause.db??"(not available)"}\` does not exist on the database server`;case"SocketTimeout":return"Operation has timed out";case"DatabaseAlreadyExists":return`Database \`${e.cause.db??"(not available)"}\` already exists on the database server`;case"DatabaseAccessDenied":return`User was denied access on the database \`${e.cause.db??"(not available)"}\``;case"TlsConnectionError":return`Error opening a TLS connection: ${e.cause.reason}`;case"ConnectionClosed":return"Server has closed the connection.";case"TransactionAlreadyClosed":return e.cause.cause;case"LengthMismatch":return`The provided value for the column is too long for the column's type. Column: ${e.cause.column??"(not available)"}`;case"UniqueConstraintViolation":return`Unique constraint failed on the ${Kn(e.cause.constraint)}`;case"ForeignKeyConstraintViolation":return`Foreign key constraint violated on the ${Kn(e.cause.constraint)}`;case"UnsupportedNativeDataType":return`Failed to deserialize column of type '${e.cause.type}'. If you're using $queryRaw and this column is explicitly marked as \`Unsupported\` in your Prisma schema, try casting this column to any supported Prisma type such as \`String\`.`;case"NullConstraintViolation":return`Null constraint violation on the ${Kn(e.cause.constraint)}`;case"ValueOutOfRange":return`Value out of range for the type: ${e.cause.cause}`;case"TableDoesNotExist":return`The table \`${e.cause.table??"(not available)"}\` does not exist in the current database.`;case"ColumnNotFound":return`The column \`${e.cause.column??"(not available)"}\` does not exist in the current database.`;case"InvalidIsolationLevel":return`Error in connector: Conversion error: ${e.cause.level}`;case"InconsistentColumnData":return`Inconsistent column data: ${e.cause.cause}`;case"MissingFullTextSearchIndex":return"Cannot find a fulltext index to use for the native search, try adding a @@fulltext([Fields...]) to your schema";case"TransactionWriteConflict":return"Transaction failed due to a write conflict or a deadlock. Please retry your transaction";case"GenericJs":return`Error in external connector (id ${e.cause.id})`;case"TooManyConnections":return`Too many database connections opened: ${e.cause.cause}`;case"InvalidInputValue":return`Invalid input value: ${e.cause.message}`;case"sqlite":case"postgres":case"mysql":case"mssql":return;default:L(e.cause,`Unknown error: ${e.cause}`)}}function Kn(e){return e&&"fields"in e?`fields: (${e.fields.map(t=>`\`${t}\``).join(", ")})`:e&&"index"in e?`constraint: \`${e.index}\``:e&&"foreignKey"in e?"foreign key":"(not available)"}function Us(e,t){let r=e.map(i=>t.keys.reduce((o,s)=>(o[s]=De(i[s]),o),{})),n=new Set(t.nestedSelection);return t.arguments.map(i=>{let o=r.findIndex(s=>yt(s,i));if(o===-1)return t.expectNonEmpty?new z("An operation failed because it depends on one or more records that were required but not found","P2025"):null;{let s=Object.entries(e[o]).filter(([a])=>n.has(a));return Object.fromEntries(s)}})}l();u();c();p();m();var qs=require("@prisma/client-runtime-utils");var q=class extends z{name="DataMapperError";constructor(t,r){super(t,"P2023",r)}};function Vs(e,t,r){switch(t.type){case"affectedRows":if(typeof e!="number")throw new q(`Expected an affected rows count, got: ${typeof e} (${e})`);return{count:e};case"object":return Yn(e,t.fields,r,t.skipNulls);case"field":return Zn(e,"",t.fieldType,r);default:L(t,`Invalid data mapping type: '${t.type}'`)}}function Yn(e,t,r,n){if(e===null)return null;if(Array.isArray(e)){let i=e;return n&&(i=i.filter(o=>o!==null)),i.map(o=>$s(o,t,r))}if(typeof e=="object")return $s(e,t,r);if(typeof e=="string"){let i;try{i=JSON.parse(e)}catch(o){throw new q("Expected an array or object, got a string that is not valid JSON",{cause:o})}return Yn(i,t,r,n)}throw new q(`Expected an array or an object, got: ${typeof e}`)}function $s(e,t,r){if(typeof e!="object")throw new q(`Expected an object, but got '${typeof e}'`);let n={};for(let[i,o]of Object.entries(t))switch(o.type){case"affectedRows":throw new q(`Unexpected 'AffectedRows' node in data mapping for field '${i}'`);case"object":{if(o.serializedName!==null&&!Object.hasOwn(e,o.serializedName))throw new q(`Missing data field (Object): '${i}'; node: ${JSON.stringify(o)}; data: ${JSON.stringify(e)}`);let s=o.serializedName!==null?e[o.serializedName]:e;n[i]=Yn(s,o.fields,r,o.skipNulls);break}case"field":{let s=o.dbName;if(Object.hasOwn(e,s))n[i]=Wc(e[s],s,o.fieldType,r);else throw new q(`Missing data field (Value): '${s}'; node: ${JSON.stringify(o)}; data: ${JSON.stringify(e)}`)}break;default:L(o,`DataMapper: Invalid data mapping node type: '${o.type}'`)}return n}function Wc(e,t,r,n){return e===null?r.arity==="list"?[]:null:r.arity==="list"?e.map((o,s)=>Zn(o,`${t}[${s}]`,r,n)):Zn(e,t,r,n)}function Zn(e,t,r,n){switch(r.type){case"unsupported":return e;case"string":{if(typeof e!="string")throw new q(`Expected a string in column '${t}', got ${typeof e}: ${e}`);return e}case"int":switch(typeof e){case"number":return Math.trunc(e);case"string":{let i=Math.trunc(Number(e));if(Number.isNaN(i)||!Number.isFinite(i))throw new q(`Expected an integer in column '${t}', got string: ${e}`);if(!Number.isSafeInteger(i))throw new q(`Integer value in column '${t}' is too large to represent as a JavaScript number without loss of precision, got: ${e}. Consider using BigInt type.`);return i}default:throw new q(`Expected an integer in column '${t}', got ${typeof e}: ${e}`)}case"bigint":{if(typeof e!="number"&&typeof e!="string")throw new q(`Expected a bigint in column '${t}', got ${typeof e}: ${e}`);return{$type:"BigInt",value:e}}case"float":{if(typeof e=="number")return e;if(typeof e=="string"){let i=Number(e);if(Number.isNaN(i)&&!/^[-+]?nan$/.test(e.toLowerCase()))throw new q(`Expected a float in column '${t}', got string: ${e}`);return i}throw new q(`Expected a float in column '${t}', got ${typeof e}: ${e}`)}case"boolean":{if(typeof e=="boolean")return e;if(typeof e=="number")return e===1;if(typeof e=="string"){if(e==="true"||e==="TRUE"||e==="1")return!0;if(e==="false"||e==="FALSE"||e==="0")return!1;throw new q(`Expected a boolean in column '${t}', got ${typeof e}: ${e}`)}if(Array.isArray(e)||e instanceof Uint8Array){for(let i of e)if(i!==0)return!0;return!1}throw new q(`Expected a boolean in column '${t}', got ${typeof e}: ${e}`)}case"decimal":if(typeof e!="number"&&typeof e!="string"&&!qs.Decimal.isDecimal(e))throw new q(`Expected a decimal in column '${t}', got ${typeof e}: ${e}`);return{$type:"Decimal",value:e};case"datetime":{if(typeof e=="string")return{$type:"DateTime",value:Kc(e)};if(typeof e=="number"||e instanceof Date)return{$type:"DateTime",value:e};throw new q(`Expected a date in column '${t}', got ${typeof e}: ${e}`)}case"object":return{$type:"Json",value:Wt(e)};case"json":return{$type:"Json",value:`${e}`};case"bytes":{switch(r.encoding){case"base64":if(typeof e!="string")throw new q(`Expected a base64-encoded byte array in column '${t}', got ${typeof e}: ${e}`);return{$type:"Bytes",value:e};case"hex":if(typeof e!="string"||!e.startsWith("\\x"))throw new q(`Expected a hex-encoded byte array in column '${t}', got ${typeof e}: ${e}`);return{$type:"Bytes",value:y.from(e.slice(2),"hex").toString("base64")};case"array":if(Array.isArray(e))return{$type:"Bytes",value:y.from(e).toString("base64")};if(e instanceof Uint8Array)return{$type:"Bytes",value:y.from(e).toString("base64")};throw new q(`Expected a byte array in column '${t}', got ${typeof e}: ${e}`);default:L(r.encoding,`DataMapper: Unknown bytes encoding: ${r.encoding}`)}break}case"enum":{let i=n[r.name];if(i===void 0)throw new q(`Unknown enum '${r.name}'`);let o=i[`${e}`];if(o===void 0)throw new q(`Value '${e}' not found in enum '${r.name}'`);return o}default:L(r,`DataMapper: Unknown result type: ${r.type}`)}}var Gc=/\d{2}:\d{2}:\d{2}(?:\.\d+)?(Z|[+-]\d{2}(:?\d{2})?)?$/;function Kc(e){let t=Gc.exec(e);if(t===null)return`${e}T00:00:00Z`;let r=e,[n,i,o]=t;if(i!==void 0&&i!=="Z"&&o===void 0?r=`${e}:00`:i===void 0&&(r=`${e}Z`),n.length===e.length)return`1970-01-01T${r}`;let s=t.index-1;return r[s]===" "&&(r=`${r.slice(0,s)}T${r.slice(s+1)}`),r}l();u();c();p();m();l();u();c();p();m();function zc(e){let t=Object.entries(e);return t.length===0?"":(t.sort(([n],[i])=>n.localeCompare(i)),`/*${t.map(([n,i])=>{let o=encodeURIComponent(n),s=encodeURIComponent(i).replace(/'/g,"\\'");return`${o}='${s}'`}).join(",")}*/`)}function Hr(e,t){let r={};for(let n of e){let i=n(t);for(let[o,s]of Object.entries(i))s!==void 0&&(r[o]=s)}return r}function Bs(e,t){let r=Hr(e,t);return zc(r)}function js(e,t){return t?`${e} ${t}`:e}l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();var Gt;(function(e){e[e.INTERNAL=0]="INTERNAL",e[e.SERVER=1]="SERVER",e[e.CLIENT=2]="CLIENT",e[e.PRODUCER=3]="PRODUCER",e[e.CONSUMER=4]="CONSUMER"})(Gt||(Gt={}));function Zc(e){switch(e){case"postgresql":case"postgres":case"prisma+postgres":return"postgresql";case"sqlserver":return"mssql";case"mysql":case"sqlite":case"cockroachdb":case"mongodb":return e;default:L(e,`Unknown provider: ${e}`)}}async function Jr({query:e,tracingHelper:t,provider:r,onQuery:n,execute:i}){return await t.runInChildSpan({name:"db_query",kind:Gt.CLIENT,attributes:{"db.query.text":e.sql,"db.system.name":Zc(r)}},async()=>{let o=new Date,s=w.now(),a=await i(),d=w.now();return n?.({timestamp:o,duration:d-s,query:e.sql,params:e.args}),a})}l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();function He(e,t){var r="000000000"+e;return r.substr(r.length-t)}var Qs=Ue(ho(),1);function Yc(){try{return Qs.default.hostname()}catch{return g.env._CLUSTER_NETWORK_NAME_||g.env.COMPUTERNAME||"hostname"}}var Hs=2,Xc=He(g.pid.toString(36),Hs),Js=Yc(),ep=Js.length,tp=He(Js.split("").reduce(function(e,t){return+e+t.charCodeAt(0)},+ep+36).toString(36),Hs);function Xn(){return Xc+tp}l();u();c();p();m();l();u();c();p();m();function Wr(e){return typeof e=="string"&&/^c[a-z0-9]{20,32}$/.test(e)}function ei(e){let n=Math.pow(36,4),i=0;function o(){return He((Math.random()*n<<0).toString(36),4)}function s(){return i=iWe.length&&(kt.getRandomValues(We),xt=0),xt+=e}function ui(e=21){jp(e|=0);let t="";for(let r=xt-e;r{let n=new Uint8Array(1);return r.getRandomValues(n),n[0]/255};if(typeof r?.randomBytes=="function")return()=>r.randomBytes(1).readUInt8()/255;if(rt?.randomBytes)return()=>rt.randomBytes(1).readUInt8()/255;throw new Ke(Ge.PRNGDetectFailure,"Failed to find a reliable PRNG")}function Wp(){return zp()?self:typeof window<"u"?window:typeof globalThis<"u"||typeof globalThis<"u"?globalThis:null}function Gp(e,t){let r="";for(;e>0;e--)r=Hp(t)+r;return r}function Kp(e,t=Va){if(isNaN(e))throw new Ke(Ge.EncodeTimeValueMalformed,`Time must be a number: ${e}`);if(e>$a)throw new Ke(Ge.EncodeTimeSizeExceeded,`Cannot encode a time larger than ${$a}: ${e}`);if(e<0)throw new Ke(Ge.EncodeTimeNegative,`Time must be positive: ${e}`);if(Number.isInteger(e)===!1)throw new Ke(Ge.EncodeTimeValueMalformed,`Time must be an integer: ${e}`);let r,n="";for(let i=t;i>0;i--)r=e%er,n=qa.charAt(r)+n,e=(e-r)/er;return n}function zp(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}function Ba(e,t){let r=t||Jp(),n=!e||isNaN(e)?Date.now():e;return Kp(n,Va)+Gp(Qp,r)}l();u();c();p();m();l();u();c();p();m();var Z=[];for(let e=0;e<256;++e)Z.push((e+256).toString(16).slice(1));function Zr(e,t=0){return(Z[e[t+0]]+Z[e[t+1]]+Z[e[t+2]]+Z[e[t+3]]+"-"+Z[e[t+4]]+Z[e[t+5]]+"-"+Z[e[t+6]]+Z[e[t+7]]+"-"+Z[e[t+8]]+Z[e[t+9]]+"-"+Z[e[t+10]]+Z[e[t+11]]+Z[e[t+12]]+Z[e[t+13]]+Z[e[t+14]]+Z[e[t+15]]).toLowerCase()}l();u();c();p();m();Be();var Xr=new Uint8Array(256),Yr=Xr.length;function Et(){return Yr>Xr.length-16&&(wr(Xr),Yr=0),Xr.slice(Yr,Yr+=16)}l();u();c();p();m();l();u();c();p();m();Be();var ci={randomUUID:hr};function Zp(e,t,r){if(ci.randomUUID&&!t&&!e)return ci.randomUUID();e=e||{};let n=e.random??e.rng?.()??Et();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){if(r=r||0,r<0||r+16>t.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let i=0;i<16;++i)t[r+i]=n[i];return t}return Zr(n)}var pi=Zp;l();u();c();p();m();var mi={};function Yp(e,t,r){let n;if(e)n=ja(e.random??e.rng?.()??Et(),e.msecs,e.seq,t,r);else{let i=Date.now(),o=Et();Xp(mi,i,o),n=ja(o,mi.msecs,mi.seq,t,r)}return t??Zr(n)}function Xp(e,t,r){return e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=r[6]<<23|r[7]<<16|r[8]<<8|r[9],e.msecs=t):(e.seq=e.seq+1|0,e.seq===0&&e.msecs++),e}function ja(e,t,r,n,i=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(!n)n=new Uint8Array(16),i=0;else if(i<0||i+16>n.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);return t??=Date.now(),r??=e[6]*127<<24|e[7]<<16|e[8]<<8|e[9],n[i++]=t/1099511627776&255,n[i++]=t/4294967296&255,n[i++]=t/16777216&255,n[i++]=t/65536&255,n[i++]=t/256&255,n[i++]=t&255,n[i++]=112|r>>>28&15,n[i++]=r>>>20&255,n[i++]=128|r>>>14&63,n[i++]=r>>>6&255,n[i++]=r<<2&255|e[10]&3,n[i++]=e[11],n[i++]=e[12],n[i++]=e[13],n[i++]=e[14],n[i++]=e[15],n}var di=Yp;var en=class{#t={};constructor(){this.register("uuid",new gi),this.register("cuid",new yi),this.register("ulid",new hi),this.register("nanoid",new wi),this.register("product",new bi)}snapshot(){return Object.create(this.#t,{now:{value:new fi}})}register(t,r){this.#t[t]=r}},fi=class{#t=new Date;generate(){return this.#t.toISOString()}},gi=class{generate(t){if(t===4)return pi();if(t===7)return di();throw new Error("Invalid UUID generator arguments")}},yi=class{generate(t){if(t===1)return Ws();if(t===2)return(0,Qa.createId)();throw new Error("Invalid CUID generator arguments")}},hi=class{generate(){return Ba()}},wi=class{generate(t){if(typeof t=="number")return ui(t);if(t===void 0)return ui();throw new Error("Invalid Nanoid generator arguments")}},bi=class{generate(t,r){if(t===void 0||r===void 0)throw new Error("Invalid Product generator arguments");return Array.isArray(t)&&Array.isArray(r)?t.flatMap(n=>r.map(i=>[n,i])):Array.isArray(t)?t.map(n=>[n,r]):Array.isArray(r)?r.map(n=>[t,n]):[[t,r]]}};l();u();c();p();m();function tn(e,t){return e==null?e:typeof e=="string"?tn(JSON.parse(e),t):Array.isArray(e)?tm(e,t):em(e,t)}function em(e,t){if(t.pagination){let{skip:r,take:n,cursor:i}=t.pagination;if(r!==null&&r>0||n===0||i!==null&&!yt(e,i))return null}return Ja(e,t.nested)}function Ja(e,t){for(let[r,n]of Object.entries(t))e[r]=tn(e[r],n);return e}function tm(e,t){if(t.distinct!==null){let r=t.linkingFields!==null?[...t.distinct,...t.linkingFields]:t.distinct;e=rm(e,r)}return t.pagination&&(e=nm(e,t.pagination,t.linkingFields)),t.reverse&&e.reverse(),Object.keys(t.nested).length===0?e:e.map(r=>Ja(r,t.nested))}function rm(e,t){let r=new Set,n=[];for(let i of e){let o=Tt(i,t);r.has(o)||(r.add(o),n.push(i))}return n}function nm(e,t,r){if(r===null)return Ha(e,t);let n=new Map;for(let o of e){let s=Tt(o,r);n.has(s)||n.set(s,[]),n.get(s).push(o)}let i=Array.from(n.entries());return i.sort(([o],[s])=>os?1:0),i.flatMap(([,o])=>Ha(o,t))}function Ha(e,{cursor:t,skip:r,take:n}){let i=t!==null?e.findIndex(a=>yt(a,t)):0;if(i===-1)return[];let o=i+(r??0),s=n!==null?o+n:e.length;return e.slice(o,s)}function Tt(e,t){return JSON.stringify(t.map(r=>e[r]))}l();u();c();p();m();l();u();c();p();m();function xi(e){return typeof e=="object"&&e!==null&&e.prisma__type==="param"}function Ei(e){return typeof e=="object"&&e!==null&&e.prisma__type==="generatorCall"}function vi(e,t,r,n){let i=e.args.map(o=>me(o,t,r));switch(e.type){case"rawSql":return[sm(e.sql,i,e.argTypes)];case"templateSql":return(e.chunkable?lm(e.fragments,i,n):[i]).map(s=>{if(n!==void 0&&s.length>n)throw new z("The query parameter limit supported by your database is exceeded.","P2029");return im(e.fragments,e.placeholderFormat,s,e.argTypes)});default:L(e.type,"Invalid query type")}}function me(e,t,r){for(;am(e);)if(xi(e)){let n=t[e.prisma__value.name];if(n===void 0)throw new Error(`Missing value for query variable ${e.prisma__value.name}`);e=n}else if(Ei(e)){let{name:n,args:i}=e.prisma__value,o=r[n];if(!o)throw new Error(`Encountered an unknown generator '${n}'`);e=o.generate(...i.map(s=>me(s,t,r)))}else L(e,`Unexpected unevaluated value type: ${e}`);return Array.isArray(e)&&(e=e.map(n=>me(n,t,r))),e}function im(e,t,r,n){let i="",o={placeholderNumber:1},s=[],a=[];for(let d of Pi(e,r,n)){if(i+=om(d,t,o),d.type==="stringChunk")continue;let f=s.length,P=s.push(...Wa(d))-f;if(d.argType.arity==="tuple"){if(P%d.argType.elements.length!==0)throw new Error(`Malformed query template. Expected the number of parameters to match the tuple arity, but got ${P} parameters for a tuple of arity ${d.argType.elements.length}.`);for(let v=0;v

Ti(t,r.placeholderNumber++)).join(",")})`;case"parameterTupleList":return e.value.map(i=>{let o=i.map(()=>Ti(t,r.placeholderNumber++)).join(e.itemSeparator);return`${e.itemPrefix}${o}${e.itemSuffix}`}).join(e.groupSeparator);default:L(n,"Invalid fragment type")}}function Ti(e,t){return e.hasNumbering?`${e.prefix}${t}`:e.prefix}function sm(e,t,r){return{sql:e,args:t,argTypes:r}}function am(e){return xi(e)||Ei(e)}function*Pi(e,t,r){let n=0;for(let i of e)switch(i.type){case"parameter":{if(n>=t.length)throw new Error(`Malformed query template. Fragments attempt to read over ${t.length} parameters.`);yield{...i,value:t[n],argType:r?.[n]},n++;break}case"stringChunk":{yield i;break}case"parameterTuple":{if(n>=t.length)throw new Error(`Malformed query template. Fragments attempt to read over ${t.length} parameters.`);let o=t[n];yield{...i,value:Array.isArray(o)?o:[o],argType:r?.[n]},n++;break}case"parameterTupleList":{if(n>=t.length)throw new Error(`Malformed query template. Fragments attempt to read over ${t.length} parameters.`);let o=t[n];if(!Array.isArray(o))throw new Error("Malformed query template. Tuple list expected.");if(o.length===0)throw new Error("Malformed query template. Tuple list cannot be empty.");for(let s of o)if(!Array.isArray(s))throw new Error("Malformed query template. Tuple expected.");yield{...i,value:o,argType:r?.[n]},n++;break}}}function*Wa(e){switch(e.type){case"parameter":yield e.value;break;case"stringChunk":break;case"parameterTuple":yield*e.value;break;case"parameterTupleList":for(let t of e.value)yield*t;break}}function lm(e,t,r){let n=0,i=0;for(let s of Pi(e,t,void 0)){let a=0;for(let d of Wa(s))a++;i=Math.max(i,a),n+=a}let o=[[]];for(let s of Pi(e,t,void 0))switch(s.type){case"parameter":{for(let a of o)a.push(s.value);break}case"stringChunk":break;case"parameterTuple":{let a=s.value.length,d=[];if(r&&o.length===1&&a===i&&n>r&&n-ad.map(P=>[...f,P]));break}case"parameterTupleList":{let a=s.value.reduce((v,S)=>v+S.length,0),d=[],f=[],P=0;for(let v of s.value)r&&o.length===1&&a===i&&f.length>0&&n-a+P+v.length>r&&(d.push(f),f=[],P=0),f.push(v),P+=v.length;f.length>0&&d.push(f),o=o.flatMap(v=>d.map(S=>[...v,S]));break}}return o}function um(e,t){let r=[];for(let n=0;nt.reduce((r,n,i)=>(r[e.columnNames[i]]=n,r),{}))}function Ka(e){return{columns:e.columnNames,types:e.columnTypes.map(t=>cm(t)),rows:e.rows.map(t=>t.map((r,n)=>tr(r,e.columnTypes[n])))}}function tr(e,t){if(e===null)return null;switch(t){case I.Int32:switch(typeof e){case"number":return Math.trunc(e);case"string":return Math.trunc(Number(e));default:throw new Error(`Cannot serialize value of type ${typeof e} as Int32`)}case I.Int32Array:if(!Array.isArray(e))throw new Error(`Cannot serialize value of type ${typeof e} as Int32Array`);return e.map(r=>tr(r,I.Int32));case I.Int64:switch(typeof e){case"number":return BigInt(Math.trunc(e));case"string":return e;default:throw new Error(`Cannot serialize value of type ${typeof e} as Int64`)}case I.Int64Array:if(!Array.isArray(e))throw new Error(`Cannot serialize value of type ${typeof e} as Int64Array`);return e.map(r=>tr(r,I.Int64));case I.Json:switch(typeof e){case"string":return JSON.parse(e);default:throw new Error(`Cannot serialize value of type ${typeof e} as Json`)}case I.JsonArray:if(!Array.isArray(e))throw new Error(`Cannot serialize value of type ${typeof e} as JsonArray`);return e.map(r=>tr(r,I.Json));case I.Boolean:switch(typeof e){case"boolean":return e;case"string":return e==="true"||e==="1";case"number":return e===1;default:throw new Error(`Cannot serialize value of type ${typeof e} as Boolean`)}case I.BooleanArray:if(!Array.isArray(e))throw new Error(`Cannot serialize value of type ${typeof e} as BooleanArray`);return e.map(r=>tr(r,I.Boolean));default:return e}}function cm(e){switch(e){case I.Int32:return"int";case I.Int64:return"bigint";case I.Float:return"float";case I.Double:return"double";case I.Text:return"string";case I.Enum:return"enum";case I.Bytes:return"bytes";case I.Boolean:return"bool";case I.Character:return"char";case I.Numeric:return"decimal";case I.Json:return"json";case I.Uuid:return"uuid";case I.DateTime:return"datetime";case I.Date:return"date";case I.Time:return"time";case I.Int32Array:return"int-array";case I.Int64Array:return"bigint-array";case I.FloatArray:return"float-array";case I.DoubleArray:return"double-array";case I.TextArray:return"string-array";case I.EnumArray:return"string-array";case I.BytesArray:return"bytes-array";case I.BooleanArray:return"bool-array";case I.CharacterArray:return"char-array";case I.NumericArray:return"decimal-array";case I.JsonArray:return"json-array";case I.UuidArray:return"uuid-array";case I.DateTimeArray:return"datetime-array";case I.DateArray:return"date-array";case I.TimeArray:return"time-array";case I.UnknownNumber:return"unknown";case I.Set:return"string";default:L(e,`Unexpected column type: ${e}`)}}l();u();c();p();m();function za(e,t,r){if(!t.every(n=>Ai(e,n))){let n=pm(e,r),i=mm(r);throw new z(n,i,r.context)}}function Ai(e,t){switch(t.type){case"rowCountEq":return Array.isArray(e)?e.length===t.args:e===null?t.args===0:t.args===1;case"rowCountNeq":return Array.isArray(e)?e.length!==t.args:e===null?t.args!==0:t.args!==1;case"affectedRowCountEq":return e===t.args;case"never":return!1;default:L(t,`Unknown rule type: ${t.type}`)}}function pm(e,t){switch(t.error_identifier){case"RELATION_VIOLATION":return`The change you are trying to make would violate the required relation '${t.context.relation}' between the \`${t.context.modelA}\` and \`${t.context.modelB}\` models.`;case"MISSING_RECORD":return`An operation failed because it depends on one or more records that were required but not found. No record was found for ${t.context.operation}.`;case"MISSING_RELATED_RECORD":{let r=t.context.neededFor?` (needed to ${t.context.neededFor})`:"";return`An operation failed because it depends on one or more records that were required but not found. No '${t.context.model}' record${r} was found for ${t.context.operation} on ${t.context.relationType} relation '${t.context.relation}'.`}case"INCOMPLETE_CONNECT_INPUT":return`An operation failed because it depends on one or more records that were required but not found. Expected ${t.context.expectedRows} records to be connected, found only ${Array.isArray(e)?e.length:e}.`;case"INCOMPLETE_CONNECT_OUTPUT":return`The required connected records were not found. Expected ${t.context.expectedRows} records to be connected after connect operation on ${t.context.relationType} relation '${t.context.relation}', found ${Array.isArray(e)?e.length:e}.`;case"RECORDS_NOT_CONNECTED":return`The records for relation \`${t.context.relation}\` between the \`${t.context.parent}\` and \`${t.context.child}\` models are not connected.`;default:L(t,`Unknown error identifier: ${t}`)}}function mm(e){switch(e.error_identifier){case"RELATION_VIOLATION":return"P2014";case"RECORDS_NOT_CONNECTED":return"P2017";case"INCOMPLETE_CONNECT_OUTPUT":return"P2018";case"MISSING_RECORD":case"MISSING_RELATED_RECORD":case"INCOMPLETE_CONNECT_INPUT":return"P2025";default:L(e,`Unknown error identifier: ${e}`)}}var rr=class e{#t;#e;#r;#n=new en;#l;#i;#s;#o;#u;#a;constructor({transactionManager:t,placeholderValues:r,onQuery:n,tracingHelper:i,serializer:o,rawSerializer:s,provider:a,connectionInfo:d,sqlCommenter:f}){this.#t=t,this.#e=r,this.#r=n,this.#l=i,this.#i=o,this.#s=s??o,this.#o=a,this.#u=d,this.#a=f}static forSql(t){return new e({transactionManager:t.transactionManager,placeholderValues:t.placeholderValues,onQuery:t.onQuery,tracingHelper:t.tracingHelper,serializer:Ga,rawSerializer:Ka,provider:t.provider,connectionInfo:t.connectionInfo,sqlCommenter:t.sqlCommenter})}async run(t,r){let{value:n}=await this.interpretNode(t,r,this.#e,this.#n.snapshot()).catch(i=>ht(i));return n}async interpretNode(t,r,n,i){switch(t.type){case"value":return{value:me(t.args,n,i)};case"seq":{let o;for(let s of t.args)o=await this.interpretNode(s,r,n,i);return o??{value:void 0}}case"get":return{value:n[t.args.name]};case"let":{let o=Object.create(n);for(let s of t.args.bindings){let{value:a}=await this.interpretNode(s.expr,r,o,i);o[s.name]=a}return this.interpretNode(t.args.expr,r,o,i)}case"getFirstNonEmpty":{for(let o of t.args.names){let s=n[o];if(!Za(s))return{value:s}}return{value:[]}}case"concat":{let o=await Promise.all(t.args.map(s=>this.interpretNode(s,r,n,i).then(a=>a.value)));return{value:o.length>0?o.reduce((s,a)=>s.concat(Ci(a)),[]):[]}}case"sum":{let o=await Promise.all(t.args.map(s=>this.interpretNode(s,r,n,i).then(a=>a.value)));return{value:o.length>0?o.reduce((s,a)=>Ee(s)+Ee(a)):0}}case"execute":{let o=vi(t.args,n,i,this.#c()),s=0;for(let a of o){let d=this.#d(a);s+=await this.#m(d,r,()=>r.executeRaw(d).catch(f=>t.args.type==="rawSql"?zn(f):ht(f)))}return{value:s}}case"query":{let o=vi(t.args,n,i,this.#c()),s;for(let a of o){let d=this.#d(a),f=await this.#m(d,r,()=>r.queryRaw(d).catch(P=>t.args.type==="rawSql"?zn(P):ht(P)));s===void 0?s=f:(s.rows.push(...f.rows),s.lastInsertId=f.lastInsertId)}return{value:t.args.type==="rawSql"?this.#s(s):this.#i(s),lastInsertId:s?.lastInsertId}}case"reverse":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args,r,n,i);return{value:Array.isArray(o)?o.reverse():o,lastInsertId:s}}case"unique":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args,r,n,i);if(!Array.isArray(o))return{value:o,lastInsertId:s};if(o.length>1)throw new Error(`Expected zero or one element, got ${o.length}`);return{value:o[0]??null,lastInsertId:s}}case"required":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args,r,n,i);if(Za(o))throw new Error("Required value is empty");return{value:o,lastInsertId:s}}case"mapField":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.records,r,n,i);return{value:Ya(o,t.args.field),lastInsertId:s}}case"join":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.parent,r,n,i);if(o===null)return{value:null,lastInsertId:s};let a=await Promise.all(t.args.children.map(async d=>({joinExpr:d,childRecords:(await this.interpretNode(d.child,r,n,i)).value})));return{value:dm(o,a),lastInsertId:s}}case"transaction":{if(!this.#t.enabled)return this.interpretNode(t.args,r,n,i);let o=this.#t.manager,s=await o.startInternalTransaction(),a=await o.getTransaction(s,"query");try{let d=await this.interpretNode(t.args,a,n,i);return await o.commitTransaction(s.id),d}catch(d){throw await o.rollbackTransaction(s.id),d}}case"dataMap":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.expr,r,n,i);return{value:Vs(o,t.args.structure,t.args.enums),lastInsertId:s}}case"validate":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.expr,r,n,i);return za(o,t.args.rules,t.args),{value:o,lastInsertId:s}}case"if":{let{value:o}=await this.interpretNode(t.args.value,r,n,i);return Ai(o,t.args.rule)?await this.interpretNode(t.args.then,r,n,i):await this.interpretNode(t.args.else,r,n,i)}case"unit":return{value:void 0};case"diff":{let{value:o}=await this.interpretNode(t.args.from,r,n,i),{value:s}=await this.interpretNode(t.args.to,r,n,i),a=f=>f!==null?Tt(rn(f),t.args.fields):null,d=new Set(Ci(s).map(a));return{value:Ci(o).filter(f=>!d.has(a(f)))}}case"process":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.expr,r,n,i);return{value:tn(o,t.args.operations),lastInsertId:s}}case"initializeRecord":{let{lastInsertId:o}=await this.interpretNode(t.args.expr,r,n,i),s={};for(let[a,d]of Object.entries(t.args.fields))s[a]=fm(d,o,n,i);return{value:s,lastInsertId:o}}case"mapRecord":{let{value:o,lastInsertId:s}=await this.interpretNode(t.args.expr,r,n,i),a=o===null?{}:rn(o);for(let[d,f]of Object.entries(t.args.fields))a[d]=gm(f,a[d],n,i);return{value:a,lastInsertId:s}}default:L(t,`Unexpected node type: ${t.type}`)}}#c(){return this.#u?.maxBindValues!==void 0?this.#u.maxBindValues:this.#p()}#p(){if(this.#o!==void 0)switch(this.#o){case"cockroachdb":case"postgres":case"postgresql":case"prisma+postgres":return 32766;case"mysql":return 65535;case"sqlite":return 999;case"sqlserver":return 2098;case"mongodb":return;default:L(this.#o,`Unexpected provider: ${this.#o}`)}}#m(t,r,n){return Jr({query:t,execute:n,provider:this.#o??r.provider,tracingHelper:this.#l,onQuery:this.#r})}#d(t){if(!this.#a||this.#a.plugins.length===0)return t;let r=Bs(this.#a.plugins,{query:this.#a.queryInfo,sql:t.sql});return r?{...t,sql:js(t.sql,r)}:t}};function Za(e){return Array.isArray(e)?e.length===0:e==null}function Ci(e){return Array.isArray(e)?e:[e]}function Ee(e){if(typeof e=="number")return e;if(typeof e=="string")return Number(e);throw new Error(`Expected number, got ${typeof e}`)}function rn(e){if(typeof e=="object"&&e!==null)return e;throw new Error(`Expected object, got ${typeof e}`)}function Ya(e,t){return Array.isArray(e)?e.map(r=>Ya(r,t)):typeof e=="object"&&e!==null?e[t]??null:e}function dm(e,t){for(let{joinExpr:r,childRecords:n}of t){let i=r.on.map(([a])=>a),o=r.on.map(([,a])=>a),s={};for(let a of Array.isArray(e)?e:[e]){let d=rn(a),f=Tt(d,i);s[f]||(s[f]=[]),s[f].push(d),r.isRelationUnique?d[r.parentField]=null:d[r.parentField]=[]}for(let a of Array.isArray(n)?n:[n]){if(a===null)continue;let d=Tt(rn(a),o);for(let f of s[d]??[])r.isRelationUnique?f[r.parentField]=a:f[r.parentField].push(a)}}return e}function fm(e,t,r,n){switch(e.type){case"value":return me(e.value,r,n);case"lastInsertId":return t;default:L(e,`Unexpected field initializer type: ${e.type}`)}}function gm(e,t,r,n){switch(e.type){case"set":return me(e.value,r,n);case"add":return Ee(t)+Ee(me(e.value,r,n));case"subtract":return Ee(t)-Ee(me(e.value,r,n));case"multiply":return Ee(t)*Ee(me(e.value,r,n));case"divide":{let i=Ee(t),o=Ee(me(e.value,r,n));return o===0?null:i/o}default:L(e,`Unexpected field operation type: ${e.type}`)}}l();u();c();p();m();l();u();c();p();m();async function ym(){return globalThis.crypto??await Promise.resolve().then(()=>(Be(),In))}async function Xa(){return(await ym()).randomUUID()}l();u();c();p();m();async function el(e,t){return new Promise(r=>{e.addEventListener(t,r,{once:!0})})}l();u();c();p();m();var ue=class extends z{name="TransactionManagerError";constructor(t,r){super("Transaction API error: "+t,"P2028",r)}},nr=class extends ue{constructor(){super("Transaction not found. Transaction ID is invalid, refers to an old closed transaction Prisma doesn't have information about anymore, or was obtained before disconnecting.")}},nn=class extends ue{constructor(t){super(`Transaction already closed: A ${t} cannot be executed on a committed transaction.`)}},on=class extends ue{constructor(t){super(`Transaction already closed: A ${t} cannot be executed on a transaction that was rolled back.`)}},sn=class extends ue{constructor(){super("Unable to start a transaction in the given time.")}},an=class extends ue{constructor(t,{timeout:r,timeTaken:n}){super(`A ${t} cannot be executed on an expired transaction. The timeout for this transaction was ${r} ms, however ${n} ms passed since the start of the transaction. Consider increasing the interactive transaction timeout or doing less work in the transaction.`,{operation:t,timeout:r,timeTaken:n})}},Pt=class extends ue{constructor(t){super(`Internal Consistency Error: ${t}`)}},ln=class extends ue{constructor(t){super(`Invalid isolation level: ${t}`,{isolationLevel:t})}};var hm=100,vt=X("prisma:client:transactionManager"),wm=()=>({sql:"COMMIT",args:[],argTypes:[]}),bm=()=>({sql:"ROLLBACK",args:[],argTypes:[]}),xm=()=>({sql:'-- Implicit "COMMIT" query via underlying driver',args:[],argTypes:[]}),Em=()=>({sql:'-- Implicit "ROLLBACK" query via underlying driver',args:[],argTypes:[]}),ir=class{transactions=new Map;closedTransactions=[];driverAdapter;transactionOptions;tracingHelper;#t;#e;constructor({driverAdapter:t,transactionOptions:r,tracingHelper:n,onQuery:i,provider:o}){this.driverAdapter=t,this.transactionOptions=r,this.tracingHelper=n,this.#t=i,this.#e=o}async startInternalTransaction(t){let r=t!==void 0?this.#s(t):{};return await this.tracingHelper.runInChildSpan("start_transaction",()=>this.#r(r))}async startTransaction(t){let r=t!==void 0?this.#s(t):this.transactionOptions;return await this.tracingHelper.runInChildSpan("start_transaction",()=>this.#r(r))}async#r(t){let r={id:await Xa(),status:"waiting",timer:void 0,timeout:t.timeout,startedAt:Date.now(),transaction:void 0},n=new AbortController,i=tl(()=>n.abort(),t.maxWait);i?.unref?.();let o=this.driverAdapter.startTransaction(t.isolationLevel).catch(ht);switch(r.transaction=await Promise.race([o.finally(()=>clearTimeout(i)),el(n.signal,"abort").then(()=>{})]),this.transactions.set(r.id,r),r.status){case"waiting":if(n.signal.aborted)throw o.then(s=>s.rollback()).catch(s=>vt("error in discarded transaction:",s)),await this.#i(r,"timed_out"),new sn;return r.status="running",r.timer=this.#l(r.id,t.timeout),{id:r.id};case"timed_out":case"running":case"committed":case"rolled_back":throw new Pt(`Transaction in invalid state ${r.status} although it just finished startup.`);default:L(r.status,"Unknown transaction status.")}}async commitTransaction(t){return await this.tracingHelper.runInChildSpan("commit_transaction",async()=>{let r=this.#n(t,"commit");await this.#i(r,"committed")})}async rollbackTransaction(t){return await this.tracingHelper.runInChildSpan("rollback_transaction",async()=>{let r=this.#n(t,"rollback");await this.#i(r,"rolled_back")})}async getTransaction(t,r){let n=this.#n(t.id,r);if(n.status==="closing"&&(await n.closing,n=this.#n(t.id,r)),!n.transaction)throw new nr;return n.transaction}#n(t,r){let n=this.transactions.get(t);if(!n){let i=this.closedTransactions.find(o=>o.id===t);if(i)switch(vt("Transaction already closed.",{transactionId:t,status:i.status}),i.status){case"closing":case"waiting":case"running":throw new Pt("Active transaction found in closed transactions list.");case"committed":throw new nn(r);case"rolled_back":throw new on(r);case"timed_out":throw new an(r,{timeout:i.timeout,timeTaken:Date.now()-i.startedAt})}else throw vt("Transaction not found.",t),new nr}if(["committed","rolled_back","timed_out"].includes(n.status))throw new Pt("Closed transaction found in active transactions map.");return n}async cancelAllTransactions(){await Promise.allSettled([...this.transactions.values()].map(t=>this.#i(t,"rolled_back")))}#l(t,r){let n=Date.now(),i=tl(async()=>{vt("Transaction timed out.",{transactionId:t,timeoutStartedAt:n,timeout:r});let o=this.transactions.get(t);o&&["running","waiting"].includes(o.status)?await this.#i(o,"timed_out"):vt("Transaction already committed or rolled back when timeout happened.",t)},r);return i?.unref?.(),i}async#i(t,r){let n=async()=>{vt("Closing transaction.",{transactionId:t.id,status:r});try{if(t.transaction&&r==="committed")if(t.transaction.options.usePhantomQuery)await this.#o(xm(),t.transaction,()=>t.transaction.commit());else{let i=wm();await this.#o(i,t.transaction,()=>t.transaction.executeRaw(i)).then(()=>t.transaction.commit(),o=>{let s=()=>Promise.reject(o);return t.transaction.rollback().then(s,s)})}else if(t.transaction)if(t.transaction.options.usePhantomQuery)await this.#o(Em(),t.transaction,()=>t.transaction.rollback());else{let i=bm();try{await this.#o(i,t.transaction,()=>t.transaction.executeRaw(i))}finally{await t.transaction.rollback()}}}finally{t.status=r,clearTimeout(t.timer),t.timer=void 0,this.transactions.delete(t.id),this.closedTransactions.push(t),this.closedTransactions.length>hm&&this.closedTransactions.shift()}};t.status==="closing"?(await t.closing,this.#n(t.id,r==="committed"?"commit":"rollback")):await Object.assign(t,{status:"closing",reason:r,closing:n()}).closing}#s(t){if(!t.timeout)throw new ue("timeout is required");if(!t.maxWait)throw new ue("maxWait is required");if(t.isolationLevel==="SNAPSHOT")throw new ln(t.isolationLevel);return{...t,timeout:t.timeout,maxWait:t.maxWait}}#o(t,r,n){return Jr({query:t,execute:n,provider:this.#e??r.provider,tracingHelper:this.tracingHelper,onQuery:this.#t})}};function tl(e,t){return t!==void 0?setTimeout(e,t):void 0}var Y=require("@prisma/client-runtime-utils");var un="7.2.0";l();u();c();p();m();function rl(e,t){return{batch:e,transaction:t?.kind==="batch"?{isolationLevel:t.options.isolationLevel}:void 0}}l();u();c();p();m();l();u();c();p();m();function nl(e){return e?e.replace(/".*"/g,'"X"').replace(/[\s:\[]([+-]?([0-9]*[.])?[0-9]+)/g,t=>`${t[0]}5`):""}l();u();c();p();m();function il(e){return e.split(` +`).map(t=>t.replace(/^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)\s*/,"").replace(/\+\d+\s*ms$/,"")).join(` +`)}l();u();c();p();m();var ol=Ue(Ao());function sl({title:e,user:t="prisma",repo:r="prisma",template:n="bug_report.yml",body:i}){return(0,ol.default)({user:t,repo:r,template:n,title:e,body:i})}function al({version:e,binaryTarget:t,title:r,description:n,engineVersion:i,database:o,query:s}){let a=fo(6e3-(s?.length??0)),d=il(nt(a)),f=n?`# Description +\`\`\` +${n} +\`\`\``:"",P=nt(`Hi Prisma Team! My Prisma Client just crashed. This is the report: +## Versions + +| Name | Version | +|-----------------|--------------------| +| Node | ${g.version?.padEnd(19)}| +| OS | ${t?.padEnd(19)}| +| Prisma Client | ${e?.padEnd(19)}| +| Query Engine | ${i?.padEnd(19)}| +| Database | ${o?.padEnd(19)}| + +${f} + +## Logs +\`\`\` +${d} +\`\`\` + +## Client Snippet +\`\`\`ts +// PLEASE FILL YOUR CODE SNIPPET HERE +\`\`\` + +## Schema +\`\`\`prisma +// PLEASE ADD YOUR SCHEMA HERE IF POSSIBLE +\`\`\` + +## Prisma Engine Query +\`\`\` +${s?nl(s):""} +\`\`\` +`),v=sl({title:r,body:P});return`${r} + +This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic. + +${yr(v)} + +If you want the Prisma team to look into it, please open the link above \u{1F64F} +To increase the chance of success, please post your schema and a snippet of +how you used Prisma Client in the issue. +`}l();u();c();p();m();var cn=class e{#t;#e;#r;#n;constructor(t,r,n){this.#t=t,this.#e=r,this.#r=n,this.#n=r.getConnectionInfo?.()}static async connect(t){let r,n;try{r=await t.driverAdapterFactory.connect(),n=new ir({driverAdapter:r,transactionOptions:t.transactionOptions,tracingHelper:t.tracingHelper,onQuery:t.onQuery,provider:t.provider})}catch(i){throw await r?.dispose(),i}return new e(t,r,n)}getConnectionInfo(){let t=this.#n??{supportsRelationJoins:!1};return Promise.resolve({provider:this.#e.provider,connectionInfo:t})}async execute({plan:t,placeholderValues:r,transaction:n,batchIndex:i,queryInfo:o}){let s=n?await this.#r.getTransaction(n,i!==void 0?"batch query":"query"):this.#e;return await rr.forSql({transactionManager:n?{enabled:!1}:{enabled:!0,manager:this.#r},placeholderValues:r,onQuery:this.#t.onQuery,tracingHelper:this.#t.tracingHelper,provider:this.#t.provider,connectionInfo:this.#n,sqlCommenter:this.#t.sqlCommenters&&{plugins:this.#t.sqlCommenters,queryInfo:o}}).run(t,s)}async startTransaction(t){return{...await this.#r.startTransaction(t),payload:void 0}}async commitTransaction(t){await this.#r.commitTransaction(t.id)}async rollbackTransaction(t){await this.#r.rollbackTransaction(t.id)}async disconnect(){try{await this.#r.cancelAllTransactions()}finally{await this.#e.dispose()}}apiKey(){return null}};l();u();c();p();m();var dl=require("@prisma/client-runtime-utils");l();u();c();p();m();var pn=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function ll(e,t,r){let n=r||{},i=n.encode||encodeURIComponent;if(typeof i!="function")throw new TypeError("option encode is invalid");if(!pn.test(e))throw new TypeError("argument name is invalid");let o=i(t);if(o&&!pn.test(o))throw new TypeError("argument val is invalid");let s=e+"="+o;if(n.maxAge!==void 0&&n.maxAge!==null){let a=n.maxAge-0;if(Number.isNaN(a)||!Number.isFinite(a))throw new TypeError("option maxAge is invalid");s+="; Max-Age="+Math.floor(a)}if(n.domain){if(!pn.test(n.domain))throw new TypeError("option domain is invalid");s+="; Domain="+n.domain}if(n.path){if(!pn.test(n.path))throw new TypeError("option path is invalid");s+="; Path="+n.path}if(n.expires){if(!Pm(n.expires)||Number.isNaN(n.expires.valueOf()))throw new TypeError("option expires is invalid");s+="; Expires="+n.expires.toUTCString()}if(n.httpOnly&&(s+="; HttpOnly"),n.secure&&(s+="; Secure"),n.priority)switch(typeof n.priority=="string"?n.priority.toLowerCase():n.priority){case"low":{s+="; Priority=Low";break}case"medium":{s+="; Priority=Medium";break}case"high":{s+="; Priority=High";break}default:throw new TypeError("option priority is invalid")}if(n.sameSite)switch(typeof n.sameSite=="string"?n.sameSite.toLowerCase():n.sameSite){case!0:{s+="; SameSite=Strict";break}case"lax":{s+="; SameSite=Lax";break}case"strict":{s+="; SameSite=Strict";break}case"none":{s+="; SameSite=None";break}default:throw new TypeError("option sameSite is invalid")}return n.partitioned&&(s+="; Partitioned"),s}function Pm(e){return Object.prototype.toString.call(e)==="[object Date]"||e instanceof Date}function ul(e,t){let r=(e||"").split(";").filter(d=>typeof d=="string"&&!!d.trim()),n=r.shift()||"",i=vm(n),o=i.name,s=i.value;try{s=t?.decode===!1?s:(t?.decode||decodeURIComponent)(s)}catch{}let a={name:o,value:s};for(let d of r){let f=d.split("="),P=(f.shift()||"").trimStart().toLowerCase(),v=f.join("=");switch(P){case"expires":{a.expires=new Date(v);break}case"max-age":{a.maxAge=Number.parseInt(v,10);break}case"secure":{a.secure=!0;break}case"httponly":{a.httpOnly=!0;break}case"samesite":{a.sameSite=v;break}default:a[P]=v}}return a}function vm(e){let t="",r="",n=e.split("=");return n.length>1?(t=n.shift(),r=n.join("=")):r=e,{name:t,value:r}}l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();var mn=class extends Error{clientVersion;cause;constructor(t,r){super(t),this.clientVersion=r.clientVersion,this.cause=r.cause}get[Symbol.toStringTag](){return this.name}};var dn=class extends mn{isRetryable;constructor(t,r){super(t,r),this.isRetryable=r.isRetryable??!0}};l();u();c();p();m();function cl(e,t){return{...e,isRetryable:t}}var ze=class extends dn{name="InvalidDatasourceError";code="P6001";constructor(t,r){super(t,cl(r,!1))}};Nt(ze,"InvalidDatasourceError");function pl(e){let t={clientVersion:e.clientVersion},r;try{r=new URL(e.accelerateUrl)}catch(d){let f=d.message;throw new ze(`Error validating \`accelerateUrl\`, the URL cannot be parsed, reason: ${f}`,t)}let{protocol:n,searchParams:i}=r;if(n!=="prisma:"&&n!==xr)throw new ze("Error validating `accelerateUrl`: the URL must start with the protocol `prisma://` or `prisma+postgres://`",t);let o=i.get("api_key");if(o===null||o.length<1)throw new ze("Error validating `accelerateUrl`: the URL must contain a valid API key",t);let s=On(r)?"http:":"https:";g.env.TEST_CLIENT_ENGINE_REMOTE_EXECUTOR&&r.searchParams.has("use_http")&&(s="http:");let a=new URL(r.href.replace(n,s));return{apiKey:o,url:a}}l();u();c();p();m();var ml=Ue(bo()),fn=class{apiKey;tracingHelper;logLevel;logQueries;engineHash;constructor({apiKey:t,tracingHelper:r,logLevel:n,logQueries:i,engineHash:o}){this.apiKey=t,this.tracingHelper=r,this.logLevel=n,this.logQueries=i,this.engineHash=o}build({traceparent:t,transactionId:r}={}){let n={Accept:"application/json",Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json","Prisma-Engine-Hash":this.engineHash,"Prisma-Engine-Version":ml.enginesVersion};this.tracingHelper.isEnabled()&&(n.traceparent=t??this.tracingHelper.getTraceParent()),r&&(n["X-Transaction-Id"]=r);let i=this.#t();return i.length>0&&(n["X-Capture-Telemetry"]=i.join(", ")),n}#t(){let t=[];return this.tracingHelper.isEnabled()&&t.push("tracing"),this.logLevel&&t.push(this.logLevel),this.logQueries&&t.push("query"),t}};l();u();c();p();m();function Am(e){return e[0]*1e3+e[1]/1e6}function Si(e){return new Date(Am(e))}var fl=X("prisma:client:clientEngine:remoteExecutor"),gn=class{#t;#e;#r;#n;#l;#i;constructor(t){this.#t=t.clientVersion,this.#n=t.logEmitter,this.#l=t.tracingHelper,this.#i=t.sqlCommenters;let{url:r,apiKey:n}=pl({clientVersion:t.clientVersion,accelerateUrl:t.accelerateUrl});this.#r=new Ri(r),this.#e=new fn({apiKey:n,engineHash:t.clientVersion,logLevel:t.logLevel,logQueries:t.logQueries,tracingHelper:t.tracingHelper})}async getConnectionInfo(){return await this.#s({path:"/connection-info",method:"GET"})}async execute({plan:t,placeholderValues:r,batchIndex:n,model:i,operation:o,transaction:s,customFetch:a,queryInfo:d}){let f=d&&this.#i?.length?Hr(this.#i,{query:d}):void 0;return(await this.#s({path:s?`/transaction/${s.id}/query`:"/query",method:"POST",body:{model:i,operation:o,plan:t,params:r,comments:f&&Object.keys(f).length>0?f:void 0},batchRequestIdx:n,fetch:a})).data}async startTransaction(t){return{...await this.#s({path:"/transaction/start",method:"POST",body:t}),payload:void 0}}async commitTransaction(t){await this.#s({path:`/transaction/${t.id}/commit`,method:"POST"})}async rollbackTransaction(t){await this.#s({path:`/transaction/${t.id}/rollback`,method:"POST"})}disconnect(){return Promise.resolve()}apiKey(){return this.#e.apiKey}async#s({path:t,method:r,body:n,fetch:i=globalThis.fetch,batchRequestIdx:o}){let s=await this.#r.request({method:r,path:t,headers:this.#e.build(),body:n,fetch:i});s.ok||await this.#o(s,o);let a=await s.json();return typeof a.extensions=="object"&&a.extensions!==null&&this.#u(a.extensions),a}async#o(t,r){let n=t.headers.get("Prisma-Error-Code"),i=await t.text(),o,s=i;try{o=JSON.parse(i)}catch{o={}}typeof o.code=="string"&&(n=o.code),typeof o.error=="string"?s=o.error:typeof o.message=="string"?s=o.message:typeof o.InvalidRequestError=="object"&&o.InvalidRequestError!==null&&typeof o.InvalidRequestError.reason=="string"&&(s=o.InvalidRequestError.reason),s=s||`HTTP ${t.status}: ${t.statusText}`;let a=typeof o.meta=="object"&&o.meta!==null?o.meta:o;throw new dl.PrismaClientKnownRequestError(s,{clientVersion:this.#t,code:n??"P6000",batchRequestIdx:r,meta:a})}#u(t){if(t.logs)for(let r of t.logs)this.#a(r);t.spans&&this.#l.dispatchEngineSpans(t.spans)}#a(t){switch(t.level){case"debug":case"trace":fl(t);break;case"error":case"warn":case"info":{this.#n.emit(t.level,{timestamp:Si(t.timestamp),message:t.attributes.message??"",target:t.target??"RemoteExecutor"});break}case"query":{this.#n.emit("query",{query:t.attributes.query??"",timestamp:Si(t.timestamp),duration:t.attributes.duration_ms??0,params:t.attributes.params??"",target:t.target??"RemoteExecutor"});break}default:throw new Error(`Unexpected log level: ${t.level}`)}}},Ri=class{#t;#e;#r;constructor(t){this.#t=t,this.#e=new Map}async request({method:t,path:r,headers:n,body:i,fetch:o}){let s=new URL(r,this.#t),a=this.#n(s);a&&(n.Cookie=a),this.#r&&(n["Accelerate-Query-Engine-Jwt"]=this.#r);let d=await o(s.href,{method:t,body:i!==void 0?JSON.stringify(i):void 0,headers:n});return fl(t,s,d.status,d.statusText),this.#r=d.headers.get("Accelerate-Query-Engine-Jwt")??void 0,this.#l(s,d),d}#n(t){let r=[],n=new Date;for(let[i,o]of this.#e){if(o.expires&&o.expires0?r.join("; "):void 0}#l(t,r){let n=r.headers.getSetCookie?.()||[];if(n.length===0){let i=r.headers.get("Set-Cookie");i&&n.push(i)}for(let i of n){let o=ul(i),s=o.domain??t.hostname,a=o.path??"/",d=`${s}:${a}:${o.name}`;this.#e.set(d,{name:o.name,value:o.value,domain:s,path:a,expires:o.expires})}}};l();u();c();p();m();var Oi=require("@prisma/client-runtime-utils"),Ii={},gl={async loadQueryCompiler(e){let{clientVersion:t,compilerWasm:r}=e;if(r===void 0)throw new Oi.PrismaClientInitializationError("WASM query compiler was unexpectedly `undefined`",t);let n;return e.activeProvider===void 0||Ii[e.activeProvider]===void 0?(n=(async()=>{let i=await r.getRuntime(),o=await r.getQueryCompilerWasmModule();if(o==null)throw new Oi.PrismaClientInitializationError("The loaded wasm module was unexpectedly `undefined` or `null` once loaded",t);let s={"./query_compiler_bg.js":i},a=new WebAssembly.Instance(o,s),d=a.exports.__wbindgen_start;return i.__wbg_set_wasm(a.exports),d(),i.QueryCompiler})(),e.activeProvider!==void 0&&(Ii[e.activeProvider]=n)):n=Ii[e.activeProvider],await n}};var Cm="P2038",or=X("prisma:client:clientEngine"),hl=globalThis;hl.PRISMA_WASM_PANIC_REGISTRY={set_message(e){throw new Y.PrismaClientRustPanicError(e,un)}};var sr=class{name="ClientEngine";#t;#e={type:"disconnected"};#r;#n;config;datamodel;logEmitter;logQueries;logLevel;tracingHelper;#l;constructor(t,r){if(t.accelerateUrl!==void 0)this.#n={remote:!0,accelerateUrl:t.accelerateUrl};else if(t.adapter)this.#n={remote:!1,driverAdapterFactory:t.adapter},or("Using driver adapter: %O",t.adapter);else throw new Y.PrismaClientInitializationError("Missing configured driver adapter. Engine type `client` requires an active driver adapter. Please check your PrismaClient initialization code.",t.clientVersion,Cm);this.#r=r??gl,this.config=t,this.logQueries=t.logQueries??!1,this.logLevel=t.logLevel??"error",this.logEmitter=t.logEmitter,this.datamodel=t.inlineSchema,this.tracingHelper=t.tracingHelper,t.enableDebugLogs&&(this.logLevel="debug"),this.logQueries&&(this.#l=n=>{this.logEmitter.emit("query",{...n,params:Wt(n.params),target:"ClientEngine"})})}async#i(){switch(this.#e.type){case"disconnected":{let t=this.tracingHelper.runInChildSpan("connect",async()=>{let r,n;try{r=await this.#s(),n=await this.#o(r)}catch(o){throw this.#e={type:"disconnected"},n?.free(),await r?.disconnect(),o}let i={executor:r,queryCompiler:n};return this.#e={type:"connected",engine:i},i});return this.#e={type:"connecting",promise:t},await t}case"connecting":return await this.#e.promise;case"connected":return this.#e.engine;case"disconnecting":return await this.#e.promise,await this.#i()}}async#s(){return this.#n.remote?new gn({clientVersion:this.config.clientVersion,accelerateUrl:this.#n.accelerateUrl,logEmitter:this.logEmitter,logLevel:this.logLevel,logQueries:this.logQueries,tracingHelper:this.tracingHelper,sqlCommenters:this.config.sqlCommenters}):await cn.connect({driverAdapterFactory:this.#n.driverAdapterFactory,tracingHelper:this.tracingHelper,transactionOptions:{...this.config.transactionOptions,isolationLevel:this.#m(this.config.transactionOptions.isolationLevel)},onQuery:this.#l,provider:this.config.activeProvider,sqlCommenters:this.config.sqlCommenters})}async#o(t){let r=this.#t;r===void 0&&(r=await this.#r.loadQueryCompiler(this.config),this.#t=r);let{provider:n,connectionInfo:i}=await t.getConnectionInfo();try{return this.#p(()=>new r({datamodel:this.datamodel,provider:n,connectionInfo:i}),void 0,!1)}catch(o){throw this.#u(o)}}#u(t){if(t instanceof Y.PrismaClientRustPanicError)return t;try{let r=JSON.parse(t.message);return new Y.PrismaClientInitializationError(r.message,this.config.clientVersion,r.error_code)}catch{return t}}#a(t,r){if(t instanceof Y.PrismaClientInitializationError)return t;if(t.code==="GenericFailure"&&t.message?.startsWith("PANIC:"))return new Y.PrismaClientRustPanicError(yl(this,t.message,r),this.config.clientVersion);if(t instanceof z)return new Y.PrismaClientKnownRequestError(t.message,{code:t.code,meta:t.meta,clientVersion:this.config.clientVersion});try{let n=JSON.parse(t);return new Y.PrismaClientUnknownRequestError(`${n.message} +${n.backtrace}`,{clientVersion:this.config.clientVersion})}catch{return t}}#c(t){return t instanceof Y.PrismaClientRustPanicError?t:typeof t.message=="string"&&typeof t.code=="string"?new Y.PrismaClientKnownRequestError(t.message,{code:t.code,meta:t.meta,clientVersion:this.config.clientVersion}):typeof t.message=="string"?new Y.PrismaClientUnknownRequestError(t.message,{clientVersion:this.config.clientVersion}):t}#p(t,r,n=!0){let i=hl.PRISMA_WASM_PANIC_REGISTRY.set_message,o;globalThis.PRISMA_WASM_PANIC_REGISTRY.set_message=s=>{o=s};try{return t()}finally{if(globalThis.PRISMA_WASM_PANIC_REGISTRY.set_message=i,o)throw this.#t=void 0,n&&this.stop().catch(s=>or("failed to disconnect:",s)),new Y.PrismaClientRustPanicError(yl(this,o,r),this.config.clientVersion)}}onBeforeExit(){throw new Error('"beforeExit" hook is not applicable to the client engine, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead.')}async start(){await this.#i()}async stop(){switch(this.#e.type){case"disconnected":return;case"connecting":return await this.#e.promise,await this.stop();case"connected":{let t=this.#e.engine,r=this.tracingHelper.runInChildSpan("disconnect",async()=>{try{await t.executor.disconnect(),t.queryCompiler.free()}finally{this.#e={type:"disconnected"}}});return this.#e={type:"disconnecting",promise:r},await r}case"disconnecting":return await this.#e.promise}}version(){return"unknown"}async transaction(t,r,n){let i,{executor:o}=await this.#i();try{if(t==="start"){let s=n;i=await o.startTransaction({...s,isolationLevel:this.#m(s.isolationLevel)})}else if(t==="commit"){let s=n;await o.commitTransaction(s)}else if(t==="rollback"){let s=n;await o.rollbackTransaction(s)}else Ae(t,"Invalid transaction action.")}catch(s){throw this.#a(s)}return i?{id:i.id,payload:void 0}:void 0}async request(t,{interactiveTransaction:r,customDataProxyFetch:n}){or("sending request");let i=JSON.stringify(t),{executor:o,queryCompiler:s}=await this.#i().catch(d=>{throw this.#a(d,i)}),a;try{a=this.#p(()=>this.#d({queries:[t],execute:()=>s.compile(i)}))}catch(d){throw this.#c(d)}try{or("query plan created",a);let d={},f=await o.execute({plan:a,model:t.modelName,operation:t.action,placeholderValues:d,transaction:r,batchIndex:void 0,customFetch:n?.(globalThis.fetch),queryInfo:{type:"single",modelName:t.modelName,action:t.action,query:t.query}});return or("query plan executed"),{data:{[t.action]:f}}}catch(d){throw this.#a(d,i)}}async requestBatch(t,{transaction:r,customDataProxyFetch:n}){if(t.length===0)return[];let i=t[0].action,o=t[0].modelName,s=JSON.stringify(rl(t,r)),{executor:a,queryCompiler:d}=await this.#i().catch(P=>{throw this.#a(P,s)}),f;try{f=this.#p(()=>this.#d({queries:t,execute:()=>d.compileBatch(s)}))}catch(P){throw this.#c(P)}try{let P;r?.kind==="itx"&&(P=r.options);let v={};switch(f.type){case"multi":{if(r?.kind!=="itx"){let M=r?.options.isolationLevel?{...this.config.transactionOptions,isolationLevel:r.options.isolationLevel}:this.config.transactionOptions;P=await this.transaction("start",{},M)}let S=[],C=!1;for(let[M,R]of f.plans.entries())try{let k=await a.execute({plan:R,placeholderValues:v,model:t[M].modelName,operation:t[M].action,batchIndex:M,transaction:P,customFetch:n?.(globalThis.fetch),queryInfo:{type:"single",...t[M]}});S.push({data:{[t[M].action]:k}})}catch(k){S.push(k),C=!0;break}return P!==void 0&&r?.kind!=="itx"&&(C?await this.transaction("rollback",{},P):await this.transaction("commit",{},P)),S}case"compacted":{if(!t.every(M=>M.action===i&&M.modelName===o)){let M=t.map(k=>k.action).join(", "),R=t.map(k=>k.modelName).join(", ");throw new Error(`Internal error: All queries in a compacted batch must have the same action and model name, but received actions: [${M}] and model names: [${R}]. This indicates a bug in the client. Please report this issue to the Prisma team with your query details.`)}if(o===void 0)throw new Error("Internal error: A compacted batch cannot contain raw queries. This indicates a bug in the client. Please report this issue to the Prisma team with your query details.");let S=await a.execute({plan:f.plan,placeholderValues:v,model:o,operation:i,batchIndex:void 0,transaction:P,customFetch:n?.(globalThis.fetch),queryInfo:{type:"compacted",action:i,modelName:o,queries:t}});return Us(S,f).map(M=>({data:{[i]:M}}))}}}catch(P){throw this.#a(P,s)}}async apiKey(){let{executor:t}=await this.#i();return t.apiKey()}#m(t){switch(t){case void 0:return;case"ReadUncommitted":return"READ UNCOMMITTED";case"ReadCommitted":return"READ COMMITTED";case"RepeatableRead":return"REPEATABLE READ";case"Serializable":return"SERIALIZABLE";case"Snapshot":return"SNAPSHOT";default:throw new Y.PrismaClientKnownRequestError(`Inconsistent column data: Conversion failed: Invalid isolation level \`${t}\``,{code:"P2023",clientVersion:this.config.clientVersion,meta:{providedIsolationLevel:t}})}}#d({queries:t,execute:r}){return this.tracingHelper.runInChildSpan({name:"compile",attributes:{models:t.map(n=>n.modelName).filter(n=>n!==void 0),actions:t.map(n=>n.action)}},r)}};function yl(e,t,r){return al({binaryTarget:void 0,title:t,version:e.config.clientVersion,engineVersion:"unknown",database:e.config.activeProvider,query:r})}function wl(e){return new sr(e)}l();u();c();p();m();var bl=e=>({command:e});l();u();c();p();m();var Sl=require("@prisma/client-runtime-utils");l();u();c();p();m();var xl=e=>e.strings.reduce((t,r,n)=>`${t}@P${n}${r}`);l();u();c();p();m();var Pl=require("@prisma/client-runtime-utils");function At(e){try{return El(e,"fast")}catch{return El(e,"slow")}}function El(e,t){return JSON.stringify(e.map(r=>vl(r,t)))}function vl(e,t){if(Array.isArray(e))return e.map(r=>vl(r,t));if(typeof e=="bigint")return{prisma__type:"bigint",prisma__value:e.toString()};if(it(e))return{prisma__type:"date",prisma__value:e.toJSON()};if(Pl.Decimal.isDecimal(e))return{prisma__type:"decimal",prisma__value:e.toJSON()};if(y.isBuffer(e))return{prisma__type:"bytes",prisma__value:e.toString("base64")};if(Sm(e))return{prisma__type:"bytes",prisma__value:y.from(e).toString("base64")};if(ArrayBuffer.isView(e)){let{buffer:r,byteOffset:n,byteLength:i}=e;return{prisma__type:"bytes",prisma__value:y.from(r,n,i).toString("base64")}}return typeof e=="object"&&t==="slow"?Al(e):e}function Sm(e){return e instanceof ArrayBuffer||e instanceof SharedArrayBuffer?!0:typeof e=="object"&&e!==null?e[Symbol.toStringTag]==="ArrayBuffer"||e[Symbol.toStringTag]==="SharedArrayBuffer":!1}function Al(e){if(typeof e!="object"||e===null)return e;if(typeof e.toJSON=="function")return e.toJSON();if(Array.isArray(e))return e.map(Tl);let t={};for(let r of Object.keys(e))t[r]=Tl(e[r]);return t}function Tl(e){return typeof e=="bigint"?e.toString():Al(e)}var Rm=/^(\s*alter\s)/i,Cl=X("prisma:client");function ki(e,t,r,n){if(!(e!=="postgresql"&&e!=="cockroachdb")&&r.length>0&&Rm.exec(t))throw new Error(`Running ALTER using ${n} is not supported +Using the example below you can still execute your query with Prisma, but please note that it is vulnerable to SQL injection attacks and requires you to take care of input sanitization. + +Example: + await prisma.$executeRawUnsafe(\`ALTER USER prisma WITH PASSWORD '\${password}'\`) + +More Information: https://pris.ly/d/execute-raw +`)}var Mi=({clientMethod:e,activeProvider:t})=>r=>{let n="",i;if(Ur(r))n=r.sql,i={values:At(r.values),__prismaRawParameters__:!0};else if(Array.isArray(r)){let[o,...s]=r;n=o,i={values:At(s||[]),__prismaRawParameters__:!0}}else switch(t){case"sqlite":case"mysql":{n=r.sql,i={values:At(r.values),__prismaRawParameters__:!0};break}case"cockroachdb":case"postgresql":case"postgres":{n=r.text,i={values:At(r.values),__prismaRawParameters__:!0};break}case"sqlserver":{n=xl(r),i={values:At(r.values),__prismaRawParameters__:!0};break}default:throw new Error(`The ${t} provider does not support ${e}`)}return i?.values?Cl(`prisma.${e}(${n}, ${i.values})`):Cl(`prisma.${e}(${n})`),{query:n,parameters:i}},Rl={requestArgsToMiddlewareArgs(e){return[e.strings,...e.values]},middlewareArgsToRequestArgs(e){let[t,...r]=e;return new Sl.Sql(t,r)}},Il={requestArgsToMiddlewareArgs(e){return[e]},middlewareArgsToRequestArgs(e){return e[0]}};l();u();c();p();m();function Di(e){return function(r,n){let i,o=(s=e)=>{try{return s===void 0||s?.kind==="itx"?i??=Ol(r(s)):Ol(r(s))}catch(a){return Promise.reject(a)}};return{get spec(){return n},then(s,a){return o().then(s,a)},catch(s){return o().catch(s)},finally(s){return o().finally(s)},requestTransaction(s){let a=o(s);return a.requestTransaction?a.requestTransaction(s):a},[Symbol.toStringTag]:"PrismaPromise"}}}function Ol(e){return typeof e.then=="function"?e:Promise.resolve(e)}l();u();c();p();m();l();u();c();p();m();l();u();c();p();m();var kl={name:"@prisma/instrumentation-contract",version:"7.2.0",description:"Shared types and utilities for Prisma instrumentation",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{require:{types:"./dist/index.d.ts",default:"./dist/index.js"},import:{types:"./dist/index.d.mts",default:"./dist/index.mjs"}}},license:"Apache-2.0",homepage:"https://www.prisma.io",repository:{type:"git",url:"https://github.com/prisma/prisma.git",directory:"packages/instrumentation-contract"},bugs:"https://github.com/prisma/prisma/issues",scripts:{dev:"DEV=true tsx helpers/build.ts",build:"tsx helpers/build.ts",prepublishOnly:"pnpm run build",test:"vitest run"},files:["dist"],sideEffects:!1,devDependencies:{"@opentelemetry/api":"1.9.0"},peerDependencies:{"@opentelemetry/api":"^1.8"}};var Om=kl.version.split(".")[0],km="PRISMA_INSTRUMENTATION",Mm=`V${Om}_PRISMA_INSTRUMENTATION`,Ml=globalThis;function Dl(){let e=Ml[Mm];return e?.helper?e.helper:Ml[km]?.helper}var Dm={isEnabled(){return!1},getTraceParent(){return"00-10-10-00"},dispatchEngineSpans(){},getActiveContext(){},runInChildSpan(e,t){return t()}},Ni=class{isEnabled(){return this.getTracingHelper().isEnabled()}getTraceParent(t){return this.getTracingHelper().getTraceParent(t)}dispatchEngineSpans(t){return this.getTracingHelper().dispatchEngineSpans(t)}getActiveContext(){return this.getTracingHelper().getActiveContext()}runInChildSpan(t,r){return this.getTracingHelper().runInChildSpan(t,r)}getTracingHelper(){return Dl()??Dm}};function Nl(){return new Ni}l();u();c();p();m();function Ll(e,t=()=>{}){let r,n=new Promise(i=>r=i);return{then(i){return--e===0&&r(t()),i?.(n)}}}l();u();c();p();m();function _l(e){return typeof e=="string"?e:e.reduce((t,r)=>{let n=typeof r=="string"?r:r.level;return n==="query"?t:t&&(r==="info"||t==="info")?"info":n},void 0)}l();u();c();p();m();var $l=require("@prisma/client-runtime-utils");l();u();c();p();m();function Fl(e){if(e.action!=="findUnique"&&e.action!=="findUniqueOrThrow")return;let t=[];return e.modelName&&t.push(e.modelName),e.query.arguments&&t.push(Li(e.query.arguments)),t.push(Li(e.query.selection)),t.join("")}function Li(e){return`(${Object.keys(e).sort().map(r=>{let n=e[r];return typeof n=="object"&&n!==null?`(${r} ${Li(n)})`:r}).join(" ")})`}l();u();c();p();m();var Nm={aggregate:!1,aggregateRaw:!1,createMany:!0,createManyAndReturn:!0,createOne:!0,deleteMany:!0,deleteOne:!0,executeRaw:!0,findFirst:!1,findFirstOrThrow:!1,findMany:!1,findRaw:!1,findUnique:!1,findUniqueOrThrow:!1,groupBy:!1,queryRaw:!1,runCommandRaw:!0,updateMany:!0,updateManyAndReturn:!0,updateOne:!0,upsertOne:!0};function _i(e){return Nm[e]}l();u();c();p();m();var yn=class{constructor(t){this.options=t;this.batches={}}batches;tickActive=!1;request(t){let r=this.options.batchBy(t);return r?(this.batches[r]||(this.batches[r]=[],this.tickActive||(this.tickActive=!0,g.nextTick(()=>{this.dispatchBatches(),this.tickActive=!1}))),new Promise((n,i)=>{this.batches[r].push({request:t,resolve:n,reject:i})})):this.options.singleLoader(t)}dispatchBatches(){for(let t in this.batches){let r=this.batches[t];delete this.batches[t],r.length===1?this.options.singleLoader(r[0].request).then(n=>{n instanceof Error?r[0].reject(n):r[0].resolve(n)}).catch(n=>{r[0].reject(n)}):(r.sort((n,i)=>this.options.batchOrder(n.request,i.request)),this.options.batchLoader(r.map(n=>n.request)).then(n=>{if(n instanceof Error)for(let i=0;i{for(let i=0;iZe("bigint",r));case"bytes-array":return t.map(r=>Ze("bytes",r));case"decimal-array":return t.map(r=>Ze("decimal",r));case"datetime-array":return t.map(r=>Ze("datetime",r));case"date-array":return t.map(r=>Ze("date",r));case"time-array":return t.map(r=>Ze("time",r));default:return t}}function hn(e){let t=[],r=Lm(e);for(let n=0;n{let{transaction:o,otelParentCtx:s}=n[0],a=n.map(v=>v.protocolQuery),d=this.client._tracingHelper.getTraceParent(s),f=n.some(v=>_i(v.protocolQuery.action));return(await this.client._engine.requestBatch(a,{traceparent:d,transaction:Fm(o),containsWrite:f,customDataProxyFetch:i})).map((v,S)=>{if(v instanceof Error)return v;try{return this.mapQueryEngineResult(n[S],v)}catch(C){return C}})}),singleLoader:async n=>{let i=n.transaction?.kind==="itx"?ql(n.transaction):void 0,o=await this.client._engine.request(n.protocolQuery,{traceparent:this.client._tracingHelper.getTraceParent(),interactiveTransaction:i,isWrite:_i(n.protocolQuery.action),customDataProxyFetch:n.customDataProxyFetch});return this.mapQueryEngineResult(n,o)},batchBy:n=>n.transaction?.id?`transaction-${n.transaction.id}`:Fl(n.protocolQuery),batchOrder(n,i){return n.transaction?.kind==="batch"&&i.transaction?.kind==="batch"?n.transaction.index-i.transaction.index:0}})}async request(t){try{return await this.dataloader.request(t)}catch(r){let{clientMethod:n,callsite:i,transaction:o,args:s,modelName:a}=t;this.handleAndLogRequestError({error:r,clientMethod:n,callsite:i,transaction:o,args:s,modelName:a,globalOmit:t.globalOmit})}}mapQueryEngineResult({dataPath:t,unpacker:r},n){let i=n?.data,o=this.unpack(i,t,r);return g.env.PRISMA_CLIENT_GET_TIME?{data:o}:o}handleAndLogRequestError(t){try{this.handleRequestError(t)}catch(r){throw this.logEmitter&&this.logEmitter.emit("error",{message:r.message,target:t.clientMethod,timestamp:new Date}),r}}handleRequestError({error:t,clientMethod:r,callsite:n,transaction:i,args:o,modelName:s,globalOmit:a}){if(_m(t),Um(t,i))throw t;if(t instanceof D.PrismaClientKnownRequestError&&$m(t)){let f=Vl(t.meta);Mr({args:o,errors:[f],callsite:n,errorFormat:this.client._errorFormat,originalMethod:r,clientVersion:this.client._clientVersion,globalOmit:a})}let d=t.message;if(n&&(d=vr({callsite:n,originalMethod:r,isPanic:t.isPanic,showColors:this.client._errorFormat==="pretty",message:d})),d=this.sanitizeMessage(d),t.code){let f=s?{modelName:s,...t.meta}:t.meta;throw new D.PrismaClientKnownRequestError(d,{code:t.code,clientVersion:this.client._clientVersion,meta:f,batchRequestIdx:t.batchRequestIdx})}else{if(t.isPanic)throw new D.PrismaClientRustPanicError(d,this.client._clientVersion);if(t instanceof D.PrismaClientUnknownRequestError)throw new D.PrismaClientUnknownRequestError(d,{clientVersion:this.client._clientVersion,batchRequestIdx:t.batchRequestIdx});if(t instanceof D.PrismaClientInitializationError)throw new D.PrismaClientInitializationError(d,this.client._clientVersion);if(t instanceof D.PrismaClientRustPanicError)throw new D.PrismaClientRustPanicError(d,this.client._clientVersion)}throw t.clientVersion=this.client._clientVersion,t}sanitizeMessage(t){return this.client._errorFormat&&this.client._errorFormat!=="pretty"?nt(t):t}unpack(t,r,n){if(!t||(t.data&&(t=t.data),!t))return t;let i=Object.keys(t)[0],o=Object.values(t)[0],s=r.filter(f=>f!=="select"&&f!=="include"),a=Qn(o,s),d=i==="queryRaw"?hn(a):De(a);return n?n(d):d}get[Symbol.toStringTag](){return"RequestHandler"}};function Fm(e){if(e){if(e.kind==="batch")return{kind:"batch",options:{isolationLevel:e.isolationLevel}};if(e.kind==="itx")return{kind:"itx",options:ql(e)};Ae(e,"Unknown transaction kind")}}function ql(e){return{id:e.id,payload:e.payload}}function Um(e,t){return(0,$l.hasBatchIndex)(e)&&t?.kind==="batch"&&e.batchRequestIdx!==t.index}function $m(e){return e.code==="P2009"||e.code==="P2012"}function Vl(e){if(e.kind==="Union")return{kind:"Union",errors:e.errors.map(Vl)};if(Array.isArray(e.selectionPath)){let[,...t]=e.selectionPath;return{...e,selectionPath:t}}return e}l();u();c();p();m();var Fi=un;l();u();c();p();m();var Jl=Ue(_n());l();u();c();p();m();var j=class extends Error{constructor(t){super(t+` +Read more at https://pris.ly/d/client-constructor`),this.name="PrismaClientConstructorValidationError"}get[Symbol.toStringTag](){return"PrismaClientConstructorValidationError"}};Nt(j,"PrismaClientConstructorValidationError");var Bl=["errorFormat","adapter","accelerateUrl","log","transactionOptions","omit","comments","__internal"],jl=["pretty","colorless","minimal"],Ql=["info","query","warn","error"],qm={adapter:()=>{},accelerateUrl:e=>{if(e!==void 0){if(typeof e!="string")throw new j(`Invalid value ${JSON.stringify(e)} for "accelerateUrl" provided to PrismaClient constructor.`);if(e.trim().length===0)throw new j('"accelerateUrl" provided to PrismaClient constructor must be a non-empty string.')}},errorFormat:e=>{if(e){if(typeof e!="string")throw new j(`Invalid value ${JSON.stringify(e)} for "errorFormat" provided to PrismaClient constructor.`);if(!jl.includes(e)){let t=ar(e,jl);throw new j(`Invalid errorFormat ${e} provided to PrismaClient constructor.${t}`)}}},log:e=>{if(!e)return;if(!Array.isArray(e))throw new j(`Invalid value ${JSON.stringify(e)} for "log" provided to PrismaClient constructor.`);function t(r){if(typeof r=="string"&&!Ql.includes(r)){let n=ar(r,Ql);throw new j(`Invalid log level "${r}" provided to PrismaClient constructor.${n}`)}}for(let r of e){t(r);let n={level:t,emit:i=>{let o=["stdout","event"];if(!o.includes(i)){let s=ar(i,o);throw new j(`Invalid value ${JSON.stringify(i)} for "emit" in logLevel provided to PrismaClient constructor.${s}`)}}};if(r&&typeof r=="object")for(let[i,o]of Object.entries(r))if(n[i])n[i](o);else throw new j(`Invalid property ${i} for "log" provided to PrismaClient constructor`)}},transactionOptions:e=>{if(!e)return;let t=e.maxWait;if(t!=null&&t<=0)throw new j(`Invalid value ${t} for maxWait in "transactionOptions" provided to PrismaClient constructor. maxWait needs to be greater than 0`);let r=e.timeout;if(r!=null&&r<=0)throw new j(`Invalid value ${r} for timeout in "transactionOptions" provided to PrismaClient constructor. timeout needs to be greater than 0`)},omit:(e,t)=>{if(typeof e!="object")throw new j('"omit" option is expected to be an object.');if(e===null)throw new j('"omit" option can not be `null`');let r=[];for(let[n,i]of Object.entries(e)){let o=jm(n,t.runtimeDataModel);if(!o){r.push({kind:"UnknownModel",modelKey:n});continue}for(let[s,a]of Object.entries(i)){let d=o.fields.find(f=>f.name===s);if(!d){r.push({kind:"UnknownField",modelKey:n,fieldName:s});continue}if(d.relationName){r.push({kind:"RelationInOmit",modelKey:n,fieldName:s});continue}typeof a!="boolean"&&r.push({kind:"InvalidFieldValue",modelKey:n,fieldName:s})}}if(r.length>0)throw new j(Qm(e,r))},comments:e=>{if(e!==void 0){if(!Array.isArray(e))throw new j(`Invalid value ${JSON.stringify(e)} for "comments" provided to PrismaClient constructor. Expected an array of SQL commenter plugins.`);for(let t=0;t{if(!e)return;let t=["debug","engine","configOverride"];if(typeof e!="object")throw new j(`Invalid value ${JSON.stringify(e)} for "__internal" to PrismaClient constructor`);for(let[r]of Object.entries(e))if(!t.includes(r)){let n=ar(r,t);throw new j(`Invalid property ${JSON.stringify(r)} for "__internal" provided to PrismaClient constructor.${n}`)}}};function Vm(e){let t=e.adapter!==void 0,r=e.accelerateUrl!==void 0;if(t&&r)throw new j('The "adapter" and "accelerateUrl" options are mutually exclusive. Please provide only one of them.');if(!t&&!r)throw new j('Using engine type "client" requires either "adapter" or "accelerateUrl" to be provided to PrismaClient constructor.')}function Wl(e,t){for(let[r,n]of Object.entries(e)){if(!Bl.includes(r)){let i=ar(r,Bl);throw new j(`Unknown property ${r} provided to PrismaClient constructor.${i}`)}qm[r](n,t)}Vm(e)}function ar(e,t){if(t.length===0||typeof e!="string")return"";let r=Bm(e,t);return r?` Did you mean "${r}"?`:""}function Bm(e,t){if(t.length===0)return null;let r=t.map(i=>({value:i,distance:(0,Jl.default)(e,i)}));r.sort((i,o)=>i.distanceIe(n)===t);if(r)return e[r]}function Qm(e,t){let r=mt(e);for(let o of t)switch(o.kind){case"UnknownModel":r.arguments.getField(o.modelKey)?.markAsError(),r.addErrorMessage(()=>`Unknown model name: ${o.modelKey}.`);break;case"UnknownField":r.arguments.getDeepField([o.modelKey,o.fieldName])?.markAsError(),r.addErrorMessage(()=>`Model "${o.modelKey}" does not have a field named "${o.fieldName}".`);break;case"RelationInOmit":r.arguments.getDeepField([o.modelKey,o.fieldName])?.markAsError(),r.addErrorMessage(()=>'Relations are already excluded by default and can not be specified in "omit".');break;case"InvalidFieldValue":r.arguments.getDeepFieldValue([o.modelKey,o.fieldName])?.markAsError(),r.addErrorMessage(()=>"Omit field option value must be a boolean.");break}let{message:n,args:i}=kr(r,"colorless");return`Error validating "omit" option: + +${i} + +${n}`}l();u();c();p();m();var Gl=require("@prisma/client-runtime-utils");function Kl(e){return e.length===0?Promise.resolve([]):new Promise((t,r)=>{let n=new Array(e.length),i=null,o=!1,s=0,a=()=>{o||(s++,s===e.length&&(o=!0,i?r(i):t(n)))},d=f=>{o||(o=!0,r(f))};for(let f=0;f{n[f]=P,a()},P=>{if(!(0,Gl.hasBatchIndex)(P)){d(P);return}P.batchRequestIdx===f?d(P):(i||(i=P),a())})})}var lr=X("prisma:client");typeof globalThis=="object"&&(globalThis.NODE_CLIENT=!0);var Hm={requestArgsToMiddlewareArgs:e=>e,middlewareArgsToRequestArgs:e=>e},Jm=Symbol.for("prisma.client.transaction.id"),Wm={id:0,nextId(){return++this.id}};function Yl(e){class t{_originalClient=this;_runtimeDataModel;_requestHandler;_connectionPromise;_disconnectionPromise;_engineConfig;_accelerateEngineConfig;_clientVersion;_errorFormat;_tracingHelper;_previewFeatures;_activeProvider;_globalOmit;_extensions;_engine;_appliedParent;_createPrismaPromise=Di();constructor(n){if(!n)throw new D.PrismaClientInitializationError("`PrismaClient` needs to be constructed with a non-empty, valid `PrismaClientOptions`:\n\n```\nnew PrismaClient({\n ...\n})\n```\n\nor\n\n```\nconstructor() {\n super({ ... });\n}\n```\n ",Fi);e=n.__internal?.configOverride?.(e)??e,Wl(n,e);let i=new $r().on("error",()=>{});this._extensions=dt.empty(),this._previewFeatures=e.previewFeatures,this._clientVersion=e.clientVersion??Fi,this._activeProvider=e.activeProvider,this._globalOmit=n?.omit,this._tracingHelper=Nl();let o;if(n.adapter){o=n.adapter;let s=e.activeProvider==="postgresql"||e.activeProvider==="cockroachdb"?"postgres":e.activeProvider;if(o.provider!==s)throw new D.PrismaClientInitializationError(`The Driver Adapter \`${o.adapterName}\`, based on \`${o.provider}\`, is not compatible with the provider \`${s}\` specified in the Prisma schema.`,this._clientVersion)}try{let s=n??{},d=(s.__internal??{}).debug===!0;if(d&&X.enable("prisma:client"),s.errorFormat?this._errorFormat=s.errorFormat:g.env.NODE_ENV==="production"?this._errorFormat="minimal":g.env.NO_COLOR?this._errorFormat="colorless":this._errorFormat="colorless",this._runtimeDataModel=e.runtimeDataModel,this._engineConfig={enableDebugLogs:d,logLevel:s.log&&_l(s.log),logQueries:s.log&&!!(typeof s.log=="string"?s.log==="query":s.log.find(f=>typeof f=="string"?f==="query":f.level==="query")),compilerWasm:e.compilerWasm,clientVersion:e.clientVersion,previewFeatures:this._previewFeatures,activeProvider:e.activeProvider,inlineSchema:e.inlineSchema,tracingHelper:this._tracingHelper,transactionOptions:{maxWait:s.transactionOptions?.maxWait??2e3,timeout:s.transactionOptions?.timeout??5e3,isolationLevel:s.transactionOptions?.isolationLevel},logEmitter:i,adapter:o,accelerateUrl:s.accelerateUrl,sqlCommenters:s.comments},this._accelerateEngineConfig=Object.create(this._engineConfig),this._accelerateEngineConfig.accelerateUtils={resolveDatasourceUrl:()=>{if(s.accelerateUrl)return s.accelerateUrl;throw new D.PrismaClientInitializationError(`\`accelerateUrl\` is required when using \`@prisma/extension-accelerate\`: + +new PrismaClient({ + accelerateUrl: "prisma://...", +}).$extends(withAccelerate()) +`,e.clientVersion)}},lr("clientVersion",e.clientVersion),this._engine=wl(this._engineConfig),this._requestHandler=new wn(this,i),s.log)for(let f of s.log){let P=typeof f=="string"?f:f.emit==="stdout"?f.level:null;P&&this.$on(P,v=>{Dt.log(`${Dt.tags[P]??""}`,v.message||v.query)})}}catch(s){throw s.clientVersion=this._clientVersion,s}return this._appliedParent=Qt(this)}get[Symbol.toStringTag](){return"PrismaClient"}$on(n,i){return n==="beforeExit"?this._engine.onBeforeExit(i):n&&this._engineConfig.logEmitter.on(n,i),this}$connect(){try{return this._engine.start()}catch(n){throw n.clientVersion=this._clientVersion,n}}async $disconnect(){try{await this._engine.stop()}catch(n){throw n.clientVersion=this._clientVersion,n}finally{go()}}$executeRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"executeRaw",args:o,transaction:n,clientMethod:i,argsMapper:Mi({clientMethod:i,activeProvider:a}),callsite:Me(this._errorFormat),dataPath:[],middlewareArgsMapper:s})}$executeRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0){let[s,a]=zl(n,i);return ki(this._activeProvider,s.text,s.values,Array.isArray(n)?"prisma.$executeRaw``":"prisma.$executeRaw(sql``)"),this.$executeRawInternal(o,"$executeRaw",s,a)}throw new D.PrismaClientValidationError("`$executeRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw\n",{clientVersion:this._clientVersion})})}$executeRawUnsafe(n,...i){return this._createPrismaPromise(o=>(ki(this._activeProvider,n,i,"prisma.$executeRawUnsafe(, [...values])"),this.$executeRawInternal(o,"$executeRawUnsafe",[n,...i])))}$runCommandRaw(n){if(e.activeProvider!=="mongodb")throw new D.PrismaClientValidationError(`The ${e.activeProvider} provider does not support $runCommandRaw. Use the mongodb provider.`,{clientVersion:this._clientVersion});return this._createPrismaPromise(i=>this._request({args:n,clientMethod:"$runCommandRaw",dataPath:[],action:"runCommandRaw",argsMapper:bl,callsite:Me(this._errorFormat),transaction:i}))}async $queryRawInternal(n,i,o,s){let a=this._activeProvider;return this._request({action:"queryRaw",args:o,transaction:n,clientMethod:i,argsMapper:Mi({clientMethod:i,activeProvider:a}),callsite:Me(this._errorFormat),dataPath:[],middlewareArgsMapper:s})}$queryRaw(n,...i){return this._createPrismaPromise(o=>{if(n.raw!==void 0||n.sql!==void 0)return this.$queryRawInternal(o,"$queryRaw",...zl(n,i));throw new D.PrismaClientValidationError("`$queryRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#queryraw\n",{clientVersion:this._clientVersion})})}$queryRawTyped(n){return this._createPrismaPromise(i=>{if(!this._hasPreviewFlag("typedSql"))throw new D.PrismaClientValidationError("`typedSql` preview feature must be enabled in order to access $queryRawTyped API",{clientVersion:this._clientVersion});return this.$queryRawInternal(i,"$queryRawTyped",n)})}$queryRawUnsafe(n,...i){return this._createPrismaPromise(o=>this.$queryRawInternal(o,"$queryRawUnsafe",[n,...i]))}_transactionWithArray({promises:n,options:i}){let o=Wm.nextId(),s=Ll(n.length),a=n.map((d,f)=>{if(d?.[Symbol.toStringTag]!=="PrismaPromise")throw new Error("All elements of the array need to be Prisma Client promises. Hint: Please make sure you are not awaiting the Prisma client calls you intended to pass in the $transaction function.");let P=i?.isolationLevel??this._engineConfig.transactionOptions.isolationLevel,v={kind:"batch",id:o,index:f,isolationLevel:P,lock:s};return d.requestTransaction?.(v)??d});return Kl(a)}async _transactionWithCallback({callback:n,options:i}){let o={traceparent:this._tracingHelper.getTraceParent()},s={maxWait:i?.maxWait??this._engineConfig.transactionOptions.maxWait,timeout:i?.timeout??this._engineConfig.transactionOptions.timeout,isolationLevel:i?.isolationLevel??this._engineConfig.transactionOptions.isolationLevel},a=await this._engine.transaction("start",o,s),d;try{let f={kind:"itx",...a};d=await n(this._createItxClient(f)),await this._engine.transaction("commit",o,a)}catch(f){throw await this._engine.transaction("rollback",o,a).catch(()=>{}),f}return d}_createItxClient(n){return pe(Qt(pe(ws(this),[te("_appliedParent",()=>this._appliedParent._createItxClient(n)),te("_createPrismaPromise",()=>Di(n)),te(Jm,()=>n.id)])),[ft(Ps)])}$transaction(n,i){let o;typeof n=="function"?this._engineConfig.adapter?.adapterName==="@prisma/adapter-d1"?o=()=>{throw new Error("Cloudflare D1 does not support interactive transactions. We recommend you to refactor your queries with that limitation in mind, and use batch transactions with `prisma.$transactions([])` where applicable.")}:o=()=>this._transactionWithCallback({callback:n,options:i}):o=()=>this._transactionWithArray({promises:n,options:i});let s={name:"transaction",attributes:{method:"$transaction"}};return this._tracingHelper.runInChildSpan(s,o)}_request(n){n.otelParentCtx=this._tracingHelper.getActiveContext();let i=n.middlewareArgsMapper??Hm,o={args:i.requestArgsToMiddlewareArgs(n.args),dataPath:n.dataPath,runInTransaction:!!n.transaction,action:n.action,model:n.model},s={operation:{name:"operation",attributes:{method:o.action,model:o.model,name:o.model?`${o.model}.${o.action}`:o.action}}},a=async d=>{let{runInTransaction:f,args:P,...v}=d,S={...n,...v};P&&(S.args=i.middlewareArgsToRequestArgs(P)),n.transaction!==void 0&&f===!1&&delete S.transaction;let C=await Ss(this,S);return S.model?Ts({result:C,modelName:S.model,args:S.args,extensions:this._extensions,runtimeDataModel:this._runtimeDataModel,globalOmit:this._globalOmit}):C};return this._tracingHelper.runInChildSpan(s.operation,()=>a(o))}async _executeRequest({args:n,clientMethod:i,dataPath:o,callsite:s,action:a,model:d,argsMapper:f,transaction:P,unpacker:v,otelParentCtx:S,customDataProxyFetch:C}){try{n=f?f(n):n;let M={name:"serialize"},R=this._tracingHelper.runInChildSpan(M,()=>_r({modelName:d,runtimeDataModel:this._runtimeDataModel,action:a,args:n,clientMethod:i,callsite:s,extensions:this._extensions,errorFormat:this._errorFormat,clientVersion:this._clientVersion,previewFeatures:this._previewFeatures,globalOmit:this._globalOmit}));return X.enabled("prisma:client")&&(lr("Prisma Client call:"),lr(`prisma.${i}(${ls(n)})`),lr("Generated request:"),lr(JSON.stringify(R,null,2)+` +`)),P?.kind==="batch"&&await P.lock,this._requestHandler.request({protocolQuery:R,modelName:d,action:a,clientMethod:i,dataPath:o,callsite:s,args:n,extensions:this._extensions,transaction:P,unpacker:v,otelParentCtx:S,otelChildCtx:this._tracingHelper.getActiveContext(),globalOmit:this._globalOmit,customDataProxyFetch:C})}catch(M){throw M.clientVersion=this._clientVersion,M}}_hasPreviewFlag(n){return!!this._engineConfig.previewFeatures?.includes(n)}$extends=bs}return t}function zl(e,t){return Gm(e)?[new Zl.Sql(e,t),Rl]:[e,Il]}function Gm(e){return Array.isArray(e)&&Array.isArray(e.raw)}l();u();c();p();m();var Km=new Set(["toJSON","$$typeof","asymmetricMatch",Symbol.iterator,Symbol.toStringTag,Symbol.isConcatSpreadable,Symbol.toPrimitive]);function Xl(e){return new Proxy(e,{get(t,r){if(r in t)return t[r];if(!Km.has(r))throw new TypeError(`Invalid enum value: ${String(r)}`)}})}l();u();c();p();m();var zm=()=>globalThis.process?.release?.name==="node",Zm=()=>!!globalThis.Bun||!!globalThis.process?.versions?.bun,Ym=()=>!!globalThis.Deno,Xm=()=>typeof globalThis.Netlify=="object",ed=()=>typeof globalThis.EdgeRuntime=="object",td=()=>globalThis.navigator?.userAgent==="Cloudflare-Workers";function rd(){return[[Xm,"netlify"],[ed,"edge-light"],[td,"workerd"],[Ym,"deno"],[Zm,"bun"],[zm,"node"]].flatMap(r=>r[0]()?[r[1]]:[]).at(0)??""}var nd={node:"Node.js",workerd:"Cloudflare Workers",deno:"Deno and Deno Deploy",netlify:"Netlify Edge Functions","edge-light":"Edge Runtime (Vercel Edge Functions, Vercel Edge Middleware, Next.js (Pages Router) Edge API Routes, Next.js (App Router) Edge Route Handlers or Next.js Middleware)"};function eu(){let e=rd();return{id:e,prettyName:nd[e]||e,isEdge:["workerd","deno","netlify","edge-light"].includes(e)}}var D=require("@prisma/client-runtime-utils"),Te=require("@prisma/client-runtime-utils"),ee=require("@prisma/client-runtime-utils"),tu=require("@prisma/client-runtime-utils");0&&(module.exports={AnyNull,DMMF,DbNull,Debug,Decimal,Extensions,JsonNull,NullTypes,ObjectEnumValue,PrismaClientInitializationError,PrismaClientKnownRequestError,PrismaClientRustPanicError,PrismaClientUnknownRequestError,PrismaClientValidationError,Public,Sql,createParam,defineDmmfProperty,deserializeJsonResponse,deserializeRawResult,dmmfToRuntimeDataModel,empty,getPrismaClient,getRuntime,isAnyNull,isDbNull,isJsonNull,join,makeStrictEnum,makeTypedQueryFactory,raw,serializeJsonQuery,skip,sqltag,warnOnce}); +//# sourceMappingURL=wasm-compiler-edge.js.map diff --git a/server/prisma/generated/client/schema.prisma b/server/prisma/generated/client/schema.prisma new file mode 100644 index 0000000..eac121e --- /dev/null +++ b/server/prisma/generated/client/schema.prisma @@ -0,0 +1,45 @@ +datasource db { + provider = "sqlite" +} + +generator client { + provider = "prisma-client-js" + output = "./generated/client" +} + +model User { + id String @id @default(cuid()) + username String @unique + password String + displayName String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + Session Session[] + UserPreferences UserPreferences? + channels Channel[] +} + +model Session { + id String @id + userId String + expiresAt DateTime + user User @relation(references: [id], fields: [userId], onDelete: Cascade) + + @@index([userId]) +} + +model UserPreferences { + userId String @id + toggleInputHotkey String? @default("") + toggleOutputHotkey String? @default("") + user User @relation(fields: [userId], references: [id], onDelete: Cascade) +} + +model Channel { + id String @id + name String + maxClients Int? + persistent Boolean @default(false) + owner_id String? + owner User? @relation(fields: [owner_id], references: [id], onDelete: Cascade) +} diff --git a/server/prisma/generated/client/wasm-edge-light-loader.mjs b/server/prisma/generated/client/wasm-edge-light-loader.mjs new file mode 100644 index 0000000..0a9d732 --- /dev/null +++ b/server/prisma/generated/client/wasm-edge-light-loader.mjs @@ -0,0 +1,5 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file +export default import('./query_compiler_bg.wasm?module') \ No newline at end of file diff --git a/server/prisma/generated/client/wasm-worker-loader.mjs b/server/prisma/generated/client/wasm-worker-loader.mjs new file mode 100644 index 0000000..15f856c --- /dev/null +++ b/server/prisma/generated/client/wasm-worker-loader.mjs @@ -0,0 +1,5 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! +/* eslint-disable */ +// biome-ignore-all lint: generated file +export default import('./query_compiler_bg.wasm') \ No newline at end of file diff --git a/server/prisma/migrations/20260113070142_channels/migration.sql b/server/prisma/migrations/20260113070142_channels/migration.sql new file mode 100644 index 0000000..d0df18e --- /dev/null +++ b/server/prisma/migrations/20260113070142_channels/migration.sql @@ -0,0 +1,30 @@ +/* + Warnings: + + - You are about to drop the column `volumes` on the `UserPreferences` table. All the data in the column will be lost. + +*/ +-- CreateTable +CREATE TABLE "Channel" ( + "id" TEXT NOT NULL PRIMARY KEY, + "name" TEXT NOT NULL, + "maxClients" INTEGER, + "persistent" BOOLEAN NOT NULL DEFAULT false, + "owner_id" TEXT, + CONSTRAINT "Channel_owner_id_fkey" FOREIGN KEY ("owner_id") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE +); + +-- RedefineTables +PRAGMA defer_foreign_keys=ON; +PRAGMA foreign_keys=OFF; +CREATE TABLE "new_UserPreferences" ( + "userId" TEXT NOT NULL PRIMARY KEY, + "toggleInputHotkey" TEXT DEFAULT '', + "toggleOutputHotkey" TEXT DEFAULT '', + CONSTRAINT "UserPreferences_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE +); +INSERT INTO "new_UserPreferences" ("toggleInputHotkey", "toggleOutputHotkey", "userId") SELECT "toggleInputHotkey", "toggleOutputHotkey", "userId" FROM "UserPreferences"; +DROP TABLE "UserPreferences"; +ALTER TABLE "new_UserPreferences" RENAME TO "UserPreferences"; +PRAGMA foreign_keys=ON; +PRAGMA defer_foreign_keys=OFF; diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index 8477571..e87a2de 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -1,11 +1,11 @@ datasource db { provider = "sqlite" - url = env("DATABASE_URL") + // url = env("DATABASE_URL") } generator client { - provider = "prisma-client-js" - // output = "./generated/client" + provider = "prisma-client" + output = "./generated/client" } model User { @@ -15,16 +15,15 @@ model User { displayName String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt - Session Session[] UserPreferences UserPreferences? + channels Channel[] } model Session { id String @id userId String expiresAt DateTime - user User @relation(references: [id], fields: [userId], onDelete: Cascade) @@index([userId]) @@ -34,7 +33,14 @@ model UserPreferences { userId String @id toggleInputHotkey String? @default("") toggleOutputHotkey String? @default("") - volumes Json? @default("{}") - user User @relation(fields: [userId], references: [id], onDelete: Cascade) +} + +model Channel { + id String @id @default(cuid()) + name String + maxClients Int? + persistent Boolean @default(false) + owner_id String? + owner User? @relation(fields: [owner_id], references: [id], onDelete: Cascade) } \ No newline at end of file diff --git a/server/prisma/seed.ts b/server/prisma/seed.ts new file mode 100644 index 0000000..aea42a0 --- /dev/null +++ b/server/prisma/seed.ts @@ -0,0 +1,23 @@ +import prisma from '../prisma/client.ts' + +async function main() { + await prisma.channel.upsert({ + where: { id: 'default' }, + update: {}, + create: { + id: 'default', + name: 'Default', + persistent: true, + }, + }) +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) diff --git a/server/routes/user.ts b/server/routes/user.ts index 6272104..cc3934d 100644 --- a/server/routes/user.ts +++ b/server/routes/user.ts @@ -1,5 +1,5 @@ import type { FastifyInstance } from 'fastify' -import type { Namespace } from '../types/webrtc.ts' +import type { Namespace } from '../types/socket.ts' import { z } from 'zod' import prisma from '../prisma/client.ts' import { socketToClient } from '../utils/socket-to-client.ts' diff --git a/server/socket/channel.ts b/server/socket/channel.ts new file mode 100644 index 0000000..18dceba --- /dev/null +++ b/server/socket/channel.ts @@ -0,0 +1,449 @@ +import type { types } from 'mediasoup' +import type { Server as SocketServer } from 'socket.io' +import type { + Namespace, + SomeSocket, +} from '../types/socket.ts' +import { consola } from 'consola' +import prisma from '../prisma/client.ts' +import { socketToClient } from '../utils/socket-to-client.ts' + +export default function (io: SocketServer) { + io.on('connection', async (socket) => { + consola.info('[WebRtc]', 'Client connected', socket.id) + + socket.data.joined = false + + socket.data.inputMuted = false + socket.data.outputMuted = false + + socket.data.transports = new Map() + socket.data.producers = new Map() + socket.data.consumers = new Map() + + const user = await prisma.user.findUnique({ + where: { + id: socket.handshake.auth.userId, + }, + select: { + id: true, + username: true, + displayName: true, + }, + }) + + if (!user) { + socket.disconnect() + + return + } + + const { id, username, displayName } = user + + socket.data.userId = id + socket.data.username = username + socket.data.displayName = displayName + + socket.emit('authenticated', { channels }) + + socket.on('join', async ({ rtpCapabilities }, cb) => { + if (socket.data.joined) { + consola.error('[WebRtc]', 'Already joined') + cb({ error: 'Already joined' }) + } + + socket.data.joined = true + socket.data.rtpCapabilities = rtpCapabilities + + const joinedSockets = await getJoinedSockets() + + cb(joinedSockets.map(socketToClient)) + + for (const joinedSocket of joinedSockets.filter(joinedSocket => joinedSocket.id !== socket.id)) { + for (const producer of joinedSocket.data.producers.values()) { + createConsumer( + socket, + joinedSocket, + producer, + ) + } + } + + socket.broadcast.emit('newPeer', socketToClient(socket)) + }) + + socket.on('getRtpCapabilities', (cb) => { + cb(router.rtpCapabilities) + }) + + socket.on('createTransport', async ({ producing, consuming }, cb) => { + try { + const transport = await router.createWebRtcTransport({ + listenInfos: [ + { + protocol: 'udp', + ip: '0.0.0.0', + announcedAddress: process.env.ANNOUNCED_ADDRESS || '127.0.0.1', + portRange: { + min: 40000, + max: 40100, + }, + }, + ], + enableUdp: true, + preferUdp: true, + appData: { + producing, + consuming, + }, + }) + + socket.data.transports.set(transport.id, transport) + + cb({ + id: transport.id, + iceParameters: transport.iceParameters, + iceCandidates: transport.iceCandidates, + dtlsParameters: transport.dtlsParameters, + }) + + transport.on('icestatechange', (iceState: types.IceState) => { + if (iceState === 'disconnected' || iceState === 'closed') { + consola.info('[WebRtc]', '[WebRtcTransport]', `"icestatechange" event [iceState:${iceState}], closing peer`, transport.id) + + socket.disconnect() + } + }) + + transport.on('dtlsstatechange', (dtlsState: types.DtlsState) => { + if (dtlsState === 'failed' || dtlsState === 'closed') { + consola.warn('WebRtcTransport "dtlsstatechange" event [dtlsState:%s], closing peer', dtlsState) + + socket.disconnect() + } + }) + } + catch (error) { + if (error instanceof Error) { + consola.error('[WebRtc]', '[createTransport]', error.message) + cb({ error: error.message }) + } + } + }) + + socket.on('connectTransport', async ({ transportId, dtlsParameters }, cb) => { + const transport = socket.data.transports.get(transportId) + + if (!transport) { + consola.error('[WebRtc]', '[connectTransport]', `Transport with id ${transportId} not found`) + cb({ error: 'Transport not found' }) + + return + } + + try { + await transport.connect({ dtlsParameters }) + + cb({ ok: true }) + } + catch (error) { + if (error instanceof Error) { + consola.error('[WebRtc]', '[connectTransport]', error.message) + cb({ error: error.message }) + } + } + }) + + socket.on('produce', async ({ transportId, kind, rtpParameters, appData }, cb) => { + if (!socket.data.joined) { + consola.error('Peer not joined yet') + cb({ error: 'Peer not joined yet' }) + + return + } + + const transport = socket.data.transports.get(transportId) + + if (!transport) { + consola.error('[WebRtc]', '[produce]', `Transport with id ${transportId} not found`) + cb({ error: 'Transport not found' }) + + return + } + + try { + const producer = await transport.produce({ kind, rtpParameters, appData: { ...appData, socketId: socket.id } }) + + socket.data.producers.set(producer.id, producer) + + cb({ id: producer.id }) + + const otherSockets = await getJoinedSockets(socket.id) + + for (const otherSocket of otherSockets) { + createConsumer( + otherSocket, + socket, + producer, + ) + } + + // TODO: Add into the AudioLevelObserver and ActiveSpeakerObserver. + // https://github.com/versatica/mediasoup-demo/blob/v3/server/lib/Room.js#L1276 + } + catch (error) { + if (error instanceof Error) { + consola.error('[WebRtc]', '[produce]', error.message) + cb({ error: error.message }) + } + } + }) + + socket.on('closeProducer', async ({ producerId }, cb) => { + if (!socket.data.joined) { + consola.error('Peer not joined yet') + cb({ error: 'Peer not joined yet' }) + + return + } + + const producer = socket.data.producers.get(producerId) + + if (!producer) { + consola.error(`producer with id "${producerId}" not found`) + cb({ error: `producer with id "${producerId}" not found` }) + + return + } + + producer.close() + + socket.data.producers.delete(producerId) + + cb({ ok: true }) + }) + + socket.on('pauseProducer', async ({ producerId }, cb) => { + if (!socket.data.joined) { + consola.error('Peer not joined yet') + cb({ error: 'Peer not joined yet' }) + + return + } + + const producer = socket.data.producers.get(producerId) + + if (!producer) { + consola.error(`producer with id "${producerId}" not found`) + cb({ error: `producer with id "${producerId}" not found` }) + + return + } + + if (producer.paused) + return + + await producer.pause() + + cb({ ok: true }) + }) + + socket.on('resumeProducer', async ({ producerId }, cb) => { + if (!socket.data.joined) { + consola.error('Peer not joined yet') + cb({ error: 'Peer not joined yet' }) + + return + } + + const producer = socket.data.producers.get(producerId) + + if (!producer) { + consola.error(`producer with id "${producerId}" not found`) + cb({ error: `producer with id "${producerId}" not found` }) + + return + } + + await producer.resume() + + cb({ ok: true }) + }) + + socket.on('pauseConsumer', async ({ consumerId }, cb) => { + if (!socket.data.joined) { + consola.error('Peer not joined yet') + cb({ error: 'Peer not joined yet' }) + + return + } + + const consumer = socket.data.consumers.get(consumerId) + + if (!consumer) { + consola.error(`consumer with id "${consumerId}" not found`) + cb({ error: `consumer with id "${consumerId}" not found` }) + + return + } + + await consumer.pause() + + cb({ ok: true }) + }) + + socket.on('resumeConsumer', async ({ consumerId }, cb) => { + if (!socket.data.joined) { + consola.error('Peer not joined yet') + cb({ error: 'Peer not joined yet' }) + + return + } + + const consumer = socket.data.consumers.get(consumerId) + + if (!consumer) { + consola.error(`consumer with id "${consumerId}" not found`) + cb({ error: `consumer with id "${consumerId}" not found` }) + + return + } + + await consumer.resume() + + cb({ ok: true }) + }) + + socket.on('updateClient', async (updatedClient, cb) => { + if (typeof updatedClient.inputMuted === 'boolean') { + socket.data.inputMuted = updatedClient.inputMuted + } + + if (typeof updatedClient.outputMuted === 'boolean') { + socket.data.outputMuted = updatedClient.outputMuted + } + + cb(socketToClient(socket)) + + namespace.emit('clientChanged', socket.id, socketToClient(socket)) + }) + + socket.on('disconnect', () => { + consola.info('Client disconnected:', socket.id) + + if (socket.data.joined) { + socket.broadcast.emit('peerClosed', socket.id) + } + + for (const transport of socket.data.transports.values()) { + transport.close() + } + }) + }) + + async function getJoinedSockets(excludeId?: string) { + const sockets = await namespace.fetchSockets() + + return sockets.filter(socket => socket.data.joined && (excludeId ? excludeId !== socket.id : true)) + } + + async function createConsumer( + consumerSocket: SomeSocket, + producerSocket: SomeSocket, + producer: types.Producer, + ) { + if ( + !consumerSocket.data.rtpCapabilities + || !router.canConsume( + { + producerId: producer.id, + rtpCapabilities: consumerSocket.data.rtpCapabilities, + }, + ) + ) { + return + } + + const transport = Array.from(consumerSocket.data.transports.values()) + .find(t => t.appData.consuming) + + if (!transport) { + consola.error('createConsumer() | Transport for consuming not found') + + return + } + + let consumer: types.Consumer + + try { + consumer = await transport.consume( + { + producerId: producer.id, + rtpCapabilities: consumerSocket.data.rtpCapabilities, + // Enable NACK for OPUS. + enableRtx: true, + paused: true, + ignoreDtx: true, + }, + ) + } + catch (error) { + consola.error('_createConsumer() | transport.consume():%o', error) + + return + } + + consumerSocket.data.consumers.set(consumer.id, consumer) + + consumer.on('transportclose', () => { + consumerSocket.data.consumers.delete(consumer.id) + }) + + consumer.on('producerclose', () => { + consumerSocket.data.consumers.delete(consumer.id) + + consumerSocket.emit('consumerClosed', { consumerId: consumer.id }) + }) + + consumer.on('producerpause', () => { + consumerSocket.emit('consumerPaused', { consumerId: consumer.id }) + }) + + consumer.on('producerresume', () => { + consumerSocket.emit('consumerResumed', { consumerId: consumer.id }) + }) + + consumer.on('score', (score: types.ConsumerScore) => { + consumerSocket.emit('consumerScore', { consumerId: consumer.id, score }) + }) + + try { + await consumerSocket.emitWithAck( + 'newConsumer', + { + socketId: producerSocket.id, + producerId: producer.id, + id: consumer.id, + kind: consumer.kind, + rtpParameters: consumer.rtpParameters, + type: consumer.type, + appData: producer.appData, + producerPaused: consumer.producerPaused, + }, + ) + + await consumer.resume() + + consumerSocket.emit( + 'consumerScore', + { + consumerId: consumer.id, + score: consumer.score, + }, + ) + } + catch (error) { + consola.error('_createConsumer() | failed:%o', error) + } + } +} diff --git a/server/socket/webrtc.ts b/server/socket/webrtc.ts index 501e10e..31c9e1c 100644 --- a/server/socket/webrtc.ts +++ b/server/socket/webrtc.ts @@ -1,17 +1,14 @@ import type { types } from 'mediasoup' import type { Server as SocketServer } from 'socket.io' import type { - Namespace, SomeSocket, -} from '../types/webrtc.ts' +} from '../types/socket.ts' import { consola } from 'consola' import prisma from '../prisma/client.ts' import { socketToClient } from '../utils/socket-to-client.ts' export default function (io: SocketServer, router: types.Router) { - const namespace: Namespace = io.of('/webrtc') - - namespace.on('connection', async (socket) => { + io.on('connection', async (socket) => { consola.info('[WebRtc]', 'Client connected', socket.id) socket.data.joined = false @@ -23,7 +20,7 @@ export default function (io: SocketServer, router: types.Router) { socket.data.producers = new Map() socket.data.consumers = new Map() - const { id, username, displayName } = await prisma.user.findUnique({ + const user = await prisma.user.findUnique({ where: { id: socket.handshake.auth.userId, }, @@ -34,11 +31,19 @@ export default function (io: SocketServer, router: types.Router) { }, }) + if (!user) { + socket.disconnect() + + return + } + + const { id, username, displayName } = user + socket.data.userId = id socket.data.username = username socket.data.displayName = displayName - socket.emit('authenticated') + socket.emit('authenticated', { channels }) socket.on('join', async ({ rtpCapabilities }, cb) => { if (socket.data.joined) { @@ -319,7 +324,7 @@ export default function (io: SocketServer, router: types.Router) { cb(socketToClient(socket)) - namespace.emit('clientChanged', socket.id, socketToClient(socket)) + io.emit('clientChanged', socket.id, socketToClient(socket)) }) socket.on('disconnect', () => { @@ -336,7 +341,7 @@ export default function (io: SocketServer, router: types.Router) { }) async function getJoinedSockets(excludeId?: string) { - const sockets = await namespace.fetchSockets() + const sockets = await io.fetchSockets() return sockets.filter(socket => socket.data.joined && (excludeId ? excludeId !== socket.id : true)) } diff --git a/server/tsconfig.json b/server/tsconfig.json index 14fbc8b..6b18d5f 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -1,12 +1,12 @@ { "compilerOptions": { - "target": "es2016", - "module": "ESNext", - "moduleResolution": "nodenext", - "esModuleInterop": true, "forceConsistentCasingInFileNames": true, - "strict": true, "skipLibCheck": true, - "allowImportingTsExtensions": true + "allowImportingTsExtensions": true, + "module": "ESNext", + "moduleResolution": "node", + "target": "ES2023", + "strict": true, + "esModuleInterop": true } } diff --git a/server/types/webrtc.ts b/server/types/socket.ts similarity index 82% rename from server/types/webrtc.ts rename to server/types/socket.ts index e2dfd6e..dfff3f0 100644 --- a/server/types/webrtc.ts +++ b/server/types/socket.ts @@ -1,12 +1,18 @@ import type { types } from 'mediasoup' -import type { RemoteSocket, Socket, Namespace as SocketNamespace } from 'socket.io' -import type { User } from '../prisma/client' +import type { RemoteSocket, Server, Socket } from 'socket.io' +import type { ChannelModel, UserModel } from '../prisma/generated/client/models.ts' + +export interface ServerInfo { + owner_id: UserModel['id'] + channels: ChannelModel[] + rtpCapabilities: types.RtpCapabilities +} export interface ChadClient { socketId: string - userId: User['id'] - username: User['username'] - displayName: User['displayName'] + userId: UserModel['id'] + username: UserModel['username'] + displayName: UserModel['displayName'] inputMuted: boolean outputMuted: boolean } @@ -96,7 +102,7 @@ export interface ClientToServerEvents { } export interface ServerToClientEvents { - authenticated: () => void + authenticated: (arg: ServerInfo) => void newPeer: (arg: ChadClient) => void producers: (arg: ProducerShort[]) => void newConsumer: ( @@ -124,9 +130,9 @@ export interface InterServerEvent {} export interface SocketData { joined: boolean - userId: User['id'] - username: User['username'] - displayName: User['displayName'] + userId: UserModel['id'] + username: UserModel['username'] + displayName: UserModel['displayName'] inputMuted: boolean outputMuted: boolean rtpCapabilities: types.RtpCapabilities @@ -135,6 +141,7 @@ export interface SocketData { consumers: Map } -export type SomeSocket = Socket | RemoteSocket +export type SomeSocket = Socket + | RemoteSocket -export type Namespace = SocketNamespace +export type SocketServer = Server diff --git a/server/utils/socket-to-client.ts b/server/utils/socket-to-client.ts index 7d024be..7840a9f 100644 --- a/server/utils/socket-to-client.ts +++ b/server/utils/socket-to-client.ts @@ -1,4 +1,4 @@ -import type { ChadClient, SomeSocket } from '../types/webrtc.ts' +import type { ChadClient, SomeSocket } from '../types/socket.ts' export function socketToClient(socket: SomeSocket): ChadClient { return { diff --git a/server/yarn.lock b/server/yarn.lock index f2ea299..df58787 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -119,6 +119,41 @@ __metadata: languageName: node linkType: hard +"@chevrotain/cst-dts-gen@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/cst-dts-gen@npm:10.5.0" + dependencies: + "@chevrotain/gast": "npm:10.5.0" + "@chevrotain/types": "npm:10.5.0" + lodash: "npm:4.17.21" + checksum: 10c0/ae621f2255be6f2838775aa022e54c9557a7fe3f42b52ced3d44b2dac26a48020c9db76c49b90dbb2982eb152c385a4ff2dac7578deef6131592fe13bda93ea7 + languageName: node + linkType: hard + +"@chevrotain/gast@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/gast@npm:10.5.0" + dependencies: + "@chevrotain/types": "npm:10.5.0" + lodash: "npm:4.17.21" + checksum: 10c0/4e894fe9932ef8a74a0d147c78f73fc0ef8aeb7170a79d66648c07c1de505ef0dc8b8dc0a5a69a58abd92adb7a165d9a540cb6b2393589b1025af18bcdb585ab + languageName: node + linkType: hard + +"@chevrotain/types@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/types@npm:10.5.0" + checksum: 10c0/9131b833e9658263c114713758379e06e79e94e0cd0cf178ec9ddbc5672896c7e890d230b5e72402cd4d7ce861835ce9489d0402723620650d4b6c353b497ec6 + languageName: node + linkType: hard + +"@chevrotain/utils@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/utils@npm:10.5.0" + checksum: 10c0/a7d99b8e9ecc8ceb0d46b5f194710768055c2b932aca316a5f1e77d8c1a6ecb8f4c5b39e4bac4dcd7189dfa5025dcdc112903511037b03a4ea88d216b68b4708 + languageName: node + linkType: hard + "@clack/core@npm:0.5.0": version: 0.5.0 resolution: "@clack/core@npm:0.5.0" @@ -149,6 +184,33 @@ __metadata: languageName: node linkType: hard +"@electric-sql/pglite-socket@npm:0.0.6": + version: 0.0.6 + resolution: "@electric-sql/pglite-socket@npm:0.0.6" + peerDependencies: + "@electric-sql/pglite": 0.3.2 + bin: + pglite-server: dist/scripts/server.js + checksum: 10c0/20f54fecb6fbbadac800aa508f7444565f817d78fcb20ff0a7098b4844db1fc54002452415d49755ba8415c5317708e6a4de27242622e1f2aaff26852cf2d1ca + languageName: node + linkType: hard + +"@electric-sql/pglite-tools@npm:0.2.7": + version: 0.2.7 + resolution: "@electric-sql/pglite-tools@npm:0.2.7" + peerDependencies: + "@electric-sql/pglite": 0.3.2 + checksum: 10c0/4b7c5638959771f1b46ebc16ea926371bb7efd58306c6c63ba4fbe4acbd80b687174310e57219fa88aae2a207bbb75e711e4456a93af5df7e671008c770f2c29 + languageName: node + linkType: hard + +"@electric-sql/pglite@npm:0.3.2": + version: 0.3.2 + resolution: "@electric-sql/pglite@npm:0.3.2" + checksum: 10c0/9aa153f9b573be16855cfd89f42af2571239c07f96a160ac97cb09b420ad3bbcabdd96684150a0e7a3cdc48bf80a7d01c2292ce448dc13658033e106733ec7c2 + languageName: node + linkType: hard + "@es-joy/jsdoccomment@npm:^0.50.2": version: 0.50.2 resolution: "@es-joy/jsdoccomment@npm:0.50.2" @@ -393,6 +455,15 @@ __metadata: languageName: node linkType: hard +"@hono/node-server@npm:1.19.6": + version: 1.19.6 + resolution: "@hono/node-server@npm:1.19.6" + peerDependencies: + hono: ^4 + checksum: 10c0/f3caacbbfa1826b669ef7b3fd486ad9d66ea0df0662e4957ebaedacabaa14e3d19cc127c0a74d527ebda64b1aef3670c6949d7fad772b06a27b945a5b770d85b + languageName: node + linkType: hard + "@humanfs/core@npm:^0.19.1": version: 0.19.1 resolution: "@humanfs/core@npm:0.19.1" @@ -481,6 +552,16 @@ __metadata: languageName: node linkType: hard +"@mrleebo/prisma-ast@npm:0.12.1": + version: 0.12.1 + resolution: "@mrleebo/prisma-ast@npm:0.12.1" + dependencies: + chevrotain: "npm:^10.5.0" + lilconfig: "npm:^2.1.0" + checksum: 10c0/b1766db8745c6c3abded20001e9233fa68ef93a03af8da2323d175ef5fc00719a315a7018980e8e9d8d1d4c36b58f182972f6b335b1253d1dfb5590d4e260fb9 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -577,76 +658,163 @@ __metadata: languageName: node linkType: hard -"@prisma/client@npm:^6.17.0": - version: 6.17.0 - resolution: "@prisma/client@npm:6.17.0" +"@prisma/adapter-better-sqlite3@npm:^7.2.0": + version: 7.2.0 + resolution: "@prisma/adapter-better-sqlite3@npm:7.2.0" + dependencies: + "@prisma/driver-adapter-utils": "npm:7.2.0" + better-sqlite3: "npm:^12.4.5" + checksum: 10c0/b748ce3cf7bcdb0db78179c37cc3ec1d0512b3f9cece672e2936ff985f3e8c764a929e768cd9bf2b8e4cd685086c222476c25401d1da3913b6004d3766cba2fe + languageName: node + linkType: hard + +"@prisma/client-runtime-utils@npm:7.2.0": + version: 7.2.0 + resolution: "@prisma/client-runtime-utils@npm:7.2.0" + checksum: 10c0/2d28cd04f3e8ef156d27bfc405d85603f9f4c604a54c935a9bbb8ace322c47f795223d168945e5f76ec1978dcdba10d2cef29853e91a93735fc654c69dd5deb4 + languageName: node + linkType: hard + +"@prisma/client@npm:7": + version: 7.2.0 + resolution: "@prisma/client@npm:7.2.0" + dependencies: + "@prisma/client-runtime-utils": "npm:7.2.0" peerDependencies: prisma: "*" - typescript: ">=5.1.0" + typescript: ">=5.4.0" peerDependenciesMeta: prisma: optional: true typescript: optional: true - checksum: 10c0/4089fded6544df4ec3c17818a6aeb2fed555134234cd30978f27a793e382037d93d951de96c369fbef44cec261b074963150b0f4d206c81f2ad1abc95514f023 + checksum: 10c0/3c790af2bbfbbcdcaae0f0a8d33b17e8945daa0f731007d85d95ec1c726c7f8a8ed617802e39bde905613d302eaa8eaac804ab9bce5efc4ed174d9985cdf942a languageName: node linkType: hard -"@prisma/config@npm:6.17.0": - version: 6.17.0 - resolution: "@prisma/config@npm:6.17.0" +"@prisma/config@npm:7.2.0": + version: 7.2.0 + resolution: "@prisma/config@npm:7.2.0" dependencies: c12: "npm:3.1.0" deepmerge-ts: "npm:7.1.5" - effect: "npm:3.16.12" + effect: "npm:3.18.4" empathic: "npm:2.0.0" - checksum: 10c0/8bcffb8b8d8e433027f3acbf2ff45ef399edaefc248ff4097f26715ad0a3082830cf7db40ea7955230985cfb67e1be4f436e8c41c56ace55a8067829b8326b24 + checksum: 10c0/5b923390882563d2bba6dc34af06f7d91c2c1111bc2f7fbe9fbde8242cdb05e3f4d8fd923d4e5c3e6a1b99a4e814a7e4d65627cb7126533394f19dc2c42d8560 languageName: node linkType: hard -"@prisma/debug@npm:6.17.0": - version: 6.17.0 - resolution: "@prisma/debug@npm:6.17.0" - checksum: 10c0/6a89c24083c9759adcdfa8b4f056f3f724c931e6a6f4c10653ed1d1e1d734e3cce4fb5564398085fabf500e405a45dcbb7208198dc4407d39acda718eacb902a +"@prisma/debug@npm:6.8.2": + version: 6.8.2 + resolution: "@prisma/debug@npm:6.8.2" + checksum: 10c0/5843db8a502aa379fe6f7e69d887a3bd35a13c379dd09e28ba93e506807eb2190a12c6a339232d0c64f94d064cd54de70365a92a597b62484bfdb1e37c03f85b languageName: node linkType: hard -"@prisma/engines-version@npm:6.17.0-16.c0aafc03b8ef6cdced8654b9a817999e02457d6a": - version: 6.17.0-16.c0aafc03b8ef6cdced8654b9a817999e02457d6a - resolution: "@prisma/engines-version@npm:6.17.0-16.c0aafc03b8ef6cdced8654b9a817999e02457d6a" - checksum: 10c0/0ae1747e95b4cc8437fa2bc6fd068bc00fd87a2507f861f8efcd47e0bb317f50ddac77e747e02db7c00638185c6e6e8de92f9a3ba0a68f3e8f6f4926d1b64d3e +"@prisma/debug@npm:7.2.0": + version: 7.2.0 + resolution: "@prisma/debug@npm:7.2.0" + checksum: 10c0/eabdb738c2486abedb4abae510507166ee15dbe1d444bfc0b1406ed4c7145753ae17366cb2fef5ae70b0fa1a97de860ad69ddc3c43e3936722a9bce0aa375290 languageName: node linkType: hard -"@prisma/engines@npm:6.17.0": - version: 6.17.0 - resolution: "@prisma/engines@npm:6.17.0" +"@prisma/dev@npm:0.17.0": + version: 0.17.0 + resolution: "@prisma/dev@npm:0.17.0" dependencies: - "@prisma/debug": "npm:6.17.0" - "@prisma/engines-version": "npm:6.17.0-16.c0aafc03b8ef6cdced8654b9a817999e02457d6a" - "@prisma/fetch-engine": "npm:6.17.0" - "@prisma/get-platform": "npm:6.17.0" - checksum: 10c0/516ddff330428ba2ad73de4fb9b0c0ea49645a396b1d82db4b988a7d0d8281a365d96058b3e41210039e2fcbd4a43ac16506b8e72b5325a8e707f68fac46df22 + "@electric-sql/pglite": "npm:0.3.2" + "@electric-sql/pglite-socket": "npm:0.0.6" + "@electric-sql/pglite-tools": "npm:0.2.7" + "@hono/node-server": "npm:1.19.6" + "@mrleebo/prisma-ast": "npm:0.12.1" + "@prisma/get-platform": "npm:6.8.2" + "@prisma/query-plan-executor": "npm:6.18.0" + foreground-child: "npm:3.3.1" + get-port-please: "npm:3.1.2" + hono: "npm:4.10.6" + http-status-codes: "npm:2.3.0" + pathe: "npm:2.0.3" + proper-lockfile: "npm:4.1.2" + remeda: "npm:2.21.3" + std-env: "npm:3.9.0" + valibot: "npm:1.2.0" + zeptomatch: "npm:2.0.2" + checksum: 10c0/84fc8e4a068fa18d54051f038b1741ec38563dcb9776378db0c41776f0d99fd6157295567141848b91db3942e4e189329994a0a47a299004dc7e04beb3bed960 languageName: node linkType: hard -"@prisma/fetch-engine@npm:6.17.0": - version: 6.17.0 - resolution: "@prisma/fetch-engine@npm:6.17.0" +"@prisma/driver-adapter-utils@npm:7.2.0": + version: 7.2.0 + resolution: "@prisma/driver-adapter-utils@npm:7.2.0" dependencies: - "@prisma/debug": "npm:6.17.0" - "@prisma/engines-version": "npm:6.17.0-16.c0aafc03b8ef6cdced8654b9a817999e02457d6a" - "@prisma/get-platform": "npm:6.17.0" - checksum: 10c0/0a631532ff7f0b969f99784e032e49fb2509b11c6b191c8e131d73793d5f52d6ee064603195b2a6d94b0efc384e614c904aa59b6de4312d601ab7aab54a3dfbf + "@prisma/debug": "npm:7.2.0" + checksum: 10c0/2ecb54d66c4f98212ee42f2aa4995b1980a31468f1e144ad1e6046f7cc96155bb7eb5bfd421ea0937052dfb44bd4b2373ba1ab07f103a89746045e319d69463b languageName: node linkType: hard -"@prisma/get-platform@npm:6.17.0": - version: 6.17.0 - resolution: "@prisma/get-platform@npm:6.17.0" +"@prisma/engines-version@npm:7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3": + version: 7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + resolution: "@prisma/engines-version@npm:7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" + checksum: 10c0/49d78fdb845a92ab79fdc62793e64072a5c86fa960e2e9a836040dc1f04d80aa9ce85da654e8fdfd980901c5c7609d600ce40da6ed01742cecc055a9a432e9cf + languageName: node + linkType: hard + +"@prisma/engines@npm:7.2.0": + version: 7.2.0 + resolution: "@prisma/engines@npm:7.2.0" dependencies: - "@prisma/debug": "npm:6.17.0" - checksum: 10c0/edafada774827d95c8214f957a80772786bf29e1a7a31ba5e0e815e1339a6799121f42bd47cb20f2c5f90634b06cc4b14a27e4e92a7959f66adc254bc76c41bd + "@prisma/debug": "npm:7.2.0" + "@prisma/engines-version": "npm:7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" + "@prisma/fetch-engine": "npm:7.2.0" + "@prisma/get-platform": "npm:7.2.0" + checksum: 10c0/5d28df359f61608fce5b0709728938f2d2940f3b28456b2c6bade71dfe082949d081eb0b9b7b2f00031e87eb6d8398f9c8a28c49f93c2f8c6655107afcedbf23 + languageName: node + linkType: hard + +"@prisma/fetch-engine@npm:7.2.0": + version: 7.2.0 + resolution: "@prisma/fetch-engine@npm:7.2.0" + dependencies: + "@prisma/debug": "npm:7.2.0" + "@prisma/engines-version": "npm:7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" + "@prisma/get-platform": "npm:7.2.0" + checksum: 10c0/d4d74fa44916dc4c7fff3d640baa69c8c9ec1ac752897df5fe082655208dcf5157eb1e6924781982f76e6d41013ef80339020e5eb7df7cd1611d3e605c73c72e + languageName: node + linkType: hard + +"@prisma/get-platform@npm:6.8.2": + version: 6.8.2 + resolution: "@prisma/get-platform@npm:6.8.2" + dependencies: + "@prisma/debug": "npm:6.8.2" + checksum: 10c0/3bab5b39d03c884bd23b69f7ee9092d060aa60bd737293529bb21282a6abdb690a208af49eb5644b509d402e863f09512a2ccf53bdde8860de8a2825d6f3d122 + languageName: node + linkType: hard + +"@prisma/get-platform@npm:7.2.0": + version: 7.2.0 + resolution: "@prisma/get-platform@npm:7.2.0" + dependencies: + "@prisma/debug": "npm:7.2.0" + checksum: 10c0/8a14f19079821ebe1631e75c9905935317fd324edcfe1580a493ce6f13ed9015486c4675d8bfb066fb9c4946c8cb93fb682c54be2bd0b9f1bcfc20feadc8200f + languageName: node + linkType: hard + +"@prisma/query-plan-executor@npm:6.18.0": + version: 6.18.0 + resolution: "@prisma/query-plan-executor@npm:6.18.0" + checksum: 10c0/661e5b491f50e48cdbd941481cb1ca6ceeb9822213da4fb186fc21c254f5a77a407596e4f2551a938a9f15067c1475ba53163720134fb454d73cb8b6cf4f366e + languageName: node + linkType: hard + +"@prisma/studio-core@npm:0.9.0": + version: 0.9.0 + resolution: "@prisma/studio-core@npm:0.9.0" + peerDependencies: + "@types/react": ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/fa53decead29315db7675e2dfa5164557b3675cb6e4857e16563484dc830e9d247374136eaf12816ee3d6357a1d1993c093dc67a8a42e539da2ec32a4ee0477c languageName: node linkType: hard @@ -1124,6 +1292,13 @@ __metadata: languageName: node linkType: hard +"aws-ssl-profiles@npm:^1.1.1": + version: 1.1.2 + resolution: "aws-ssl-profiles@npm:1.1.2" + checksum: 10c0/e5f59a4146fe3b88ad2a84f814886c788557b80b744c8cbcb1cbf8cf5ba19cc006a7a12e88819adc614ecda9233993f8f1d1f3b612cbc2f297196df9e8f4f66e + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -1131,6 +1306,13 @@ __metadata: languageName: node linkType: hard +"base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + "base64id@npm:2.0.0, base64id@npm:~2.0.0": version: 2.0.0 resolution: "base64id@npm:2.0.0" @@ -1158,6 +1340,37 @@ __metadata: languageName: node linkType: hard +"better-sqlite3@npm:^12.4.5": + version: 12.6.0 + resolution: "better-sqlite3@npm:12.6.0" + dependencies: + bindings: "npm:^1.5.0" + node-gyp: "npm:latest" + prebuild-install: "npm:^7.1.1" + checksum: 10c0/33d6ac2fbfa2cbf7e264a927097a8123c6c44c28e299c74783b844b4ad2417d3fa6508f4e10121bd2844fb3ee504752d33f3ba019c4472d4cbe1258a4186efc3 + languageName: node + linkType: hard + +"bindings@npm:^1.5.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + languageName: node + linkType: hard + +"bl@npm:^4.0.3": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + "boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" @@ -1208,6 +1421,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + "builtin-modules@npm:^5.0.0": version: 5.0.0 resolution: "builtin-modules@npm:5.0.0" @@ -1312,6 +1535,20 @@ __metadata: languageName: node linkType: hard +"chevrotain@npm:^10.5.0": + version: 10.5.0 + resolution: "chevrotain@npm:10.5.0" + dependencies: + "@chevrotain/cst-dts-gen": "npm:10.5.0" + "@chevrotain/gast": "npm:10.5.0" + "@chevrotain/types": "npm:10.5.0" + "@chevrotain/utils": "npm:10.5.0" + lodash: "npm:4.17.21" + regexp-to-ast: "npm:0.5.0" + checksum: 10c0/a67a8b9f326231e6e4bf42e0c82d5f6e0b69bcfe4266e406d644ee58d22f7cba63deb034973813d0f5761026328cd4928250136cde940e3ef238a1f020c7307a + languageName: node + linkType: hard + "chokidar@npm:^4.0.3": version: 4.0.3 resolution: "chokidar@npm:4.0.3" @@ -1321,6 +1558,13 @@ __metadata: languageName: node linkType: hard +"chownr@npm:^1.1.1": + version: 1.1.4 + resolution: "chownr@npm:1.1.4" + checksum: 10c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db + languageName: node + linkType: hard + "chownr@npm:^3.0.0": version: 3.0.0 resolution: "chownr@npm:3.0.0" @@ -1504,6 +1748,22 @@ __metadata: languageName: node linkType: hard +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" + dependencies: + mimic-response: "npm:^3.1.0" + checksum: 10c0/bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e + languageName: node + linkType: hard + +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 + languageName: node + linkType: hard + "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -1525,6 +1785,13 @@ __metadata: languageName: node linkType: hard +"denque@npm:^2.1.0": + version: 2.1.0 + resolution: "denque@npm:2.1.0" + checksum: 10c0/f9ef81aa0af9c6c614a727cb3bd13c5d7db2af1abf9e6352045b86e85873e629690f6222f4edd49d10e4ccf8f078bbeec0794fafaf61b659c0589d0c511ec363 + languageName: node + linkType: hard + "dequal@npm:^2.0.0, dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" @@ -1539,6 +1806,13 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^2.0.0": + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2" + checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 + languageName: node + linkType: hard + "devlop@npm:^1.0.0, devlop@npm:^1.1.0": version: 1.1.0 resolution: "devlop@npm:1.1.0" @@ -1576,13 +1850,13 @@ __metadata: languageName: node linkType: hard -"effect@npm:3.16.12": - version: 3.16.12 - resolution: "effect@npm:3.16.12" +"effect@npm:3.18.4": + version: 3.18.4 + resolution: "effect@npm:3.18.4" dependencies: "@standard-schema/spec": "npm:^1.0.0" fast-check: "npm:^3.23.1" - checksum: 10c0/43b73cece506926ff086fdaf62943c2706a83c4192f81f6cba5ff85761e05f5da3c72a547936678ad432a6ea7585cf8f9c38f2f6344492f132e986fd04425c58 + checksum: 10c0/086603b2b4e13426b5230e65a8ed9da8db7f00918c2e2c783565b40d5e5f59050148900dd7c9eee56ea0ff2ea48c1dd7e95b0879e1b1025752fbd9027a830f36 languageName: node linkType: hard @@ -1623,6 +1897,15 @@ __metadata: languageName: node linkType: hard +"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": + version: 1.4.5 + resolution: "end-of-stream@npm:1.4.5" + dependencies: + once: "npm:^1.4.0" + checksum: 10c0/b0701c92a10b89afb1cb45bf54a5292c6f008d744eb4382fa559d54775ff31617d1d7bc3ef617575f552e24fad2c7c1a1835948c66b3f3a4be0a6c1f35c883d8 + languageName: node + linkType: hard + "engine.io-parser@npm:~5.2.1": version: 5.2.3 resolution: "engine.io-parser@npm:5.2.3" @@ -2157,6 +2440,13 @@ __metadata: languageName: node linkType: hard +"expand-template@npm:^2.0.3": + version: 2.0.3 + resolution: "expand-template@npm:2.0.3" + checksum: 10c0/1c9e7afe9acadf9d373301d27f6a47b34e89b3391b1ef38b7471d381812537ef2457e620ae7f819d2642ce9c43b189b3583813ec395e2938319abe356a9b2f51 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.2 resolution: "exponential-backoff@npm:3.1.2" @@ -2330,6 +2620,13 @@ __metadata: languageName: node linkType: hard +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -2391,7 +2688,7 @@ __metadata: languageName: node linkType: hard -"foreground-child@npm:^3.1.0": +"foreground-child@npm:3.3.1, foreground-child@npm:^3.1.0": version: 3.3.1 resolution: "foreground-child@npm:3.3.1" dependencies: @@ -2417,6 +2714,13 @@ __metadata: languageName: node linkType: hard +"fs-constants@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-constants@npm:1.0.0" + checksum: 10c0/a0cde99085f0872f4d244e83e03a46aa387b74f5a5af750896c6b05e9077fac00e9932fdf5aef84f2f16634cd473c63037d7a512576da7d5c2b9163d1909f3a8 + languageName: node + linkType: hard + "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -2426,6 +2730,22 @@ __metadata: languageName: node linkType: hard +"generate-function@npm:^2.3.1": + version: 2.3.1 + resolution: "generate-function@npm:2.3.1" + dependencies: + is-property: "npm:^1.0.2" + checksum: 10c0/4645cf1da90375e46a6f1dc51abc9933e5eafa4cd1a44c2f7e3909a30a4e9a1a08c14cd7d5b32da039da2dba2a085e1ed4597b580c196c3245b2d35d8bc0de5d + languageName: node + linkType: hard + +"get-port-please@npm:3.1.2": + version: 3.1.2 + resolution: "get-port-please@npm:3.1.2" + checksum: 10c0/61237342fe035967e5ad1b67a2dee347a64de093bf1222b7cd50072568d73c48dad5cc5cd4fa44635b7cfdcd14d6c47554edb9891c2ec70ab33ecb831683e257 + languageName: node + linkType: hard + "get-tsconfig@npm:^4.8.1": version: 4.10.1 resolution: "get-tsconfig@npm:4.10.1" @@ -2451,6 +2771,13 @@ __metadata: languageName: node linkType: hard +"github-from-package@npm:0.0.0": + version: 0.0.0 + resolution: "github-from-package@npm:0.0.0" + checksum: 10c0/737ee3f52d0a27e26332cde85b533c21fcdc0b09fb716c3f8e522cfaa9c600d4a631dec9fcde179ec9d47cca89017b7848ed4d6ae6b6b78f936c06825b1fcc12 + languageName: node + linkType: hard + "github-slugger@npm:^2.0.0": version: 2.0.0 resolution: "github-slugger@npm:2.0.0" @@ -2527,6 +2854,13 @@ __metadata: languageName: node linkType: hard +"grammex@npm:^3.1.10": + version: 3.1.12 + resolution: "grammex@npm:3.1.12" + checksum: 10c0/6c096ef84e1a6a0e4a50a6ba11b582b5d61d60b76830d38a5cee0383529ccdb2ac1b419695edb9877bf93717bb0ff71fba54e1e2a76bbfb61a2cca456164ef44 + languageName: node + linkType: hard + "graphemer@npm:^1.4.0": version: 1.4.0 resolution: "graphemer@npm:1.4.0" @@ -2550,6 +2884,13 @@ __metadata: languageName: node linkType: hard +"hono@npm:4.10.6": + version: 4.10.6 + resolution: "hono@npm:4.10.6" + checksum: 10c0/a4df5a44378df640464a468cfa6364cc90fbf0a0d89c1bc8fa704c8450855b17baf7a5837655b1c00d6cf8dcecffc2ee702bf3f2c66dda243fe845b75b4b7f4b + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.1": version: 4.2.0 resolution: "http-cache-semantics@npm:4.2.0" @@ -2567,6 +2908,13 @@ __metadata: languageName: node linkType: hard +"http-status-codes@npm:2.3.0": + version: 2.3.0 + resolution: "http-status-codes@npm:2.3.0" + checksum: 10c0/c2412188929e8eed6623eef468c62d0c3c082919c03e9b74fd79cfd060d11783dba44603e38a3cee52d26563fe32005913eaf6120aa8ba907da1238f3eaad5fe + languageName: node + linkType: hard + "https-proxy-agent@npm:^7.0.1": version: 7.0.6 resolution: "https-proxy-agent@npm:7.0.6" @@ -2586,6 +2934,22 @@ __metadata: languageName: node linkType: hard +"iconv-lite@npm:^0.7.0": + version: 0.7.2 + resolution: "iconv-lite@npm:0.7.2" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/3c228920f3bd307f56bf8363706a776f4a060eb042f131cd23855ceca962951b264d0997ab38a1ad340e1c5df8499ed26e1f4f0db6b2a2ad9befaff22f14b722 + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + "ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.2": version: 5.3.2 resolution: "ignore@npm:5.3.2" @@ -2624,6 +2988,13 @@ __metadata: languageName: node linkType: hard +"inherits@npm:^2.0.3, inherits@npm:^2.0.4": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + "ini@npm:^5.0.0": version: 5.0.0 resolution: "ini@npm:5.0.0" @@ -2631,6 +3002,13 @@ __metadata: languageName: node linkType: hard +"ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + languageName: node + linkType: hard + "ip-address@npm:^10.0.1": version: 10.0.1 resolution: "ip-address@npm:10.0.1" @@ -2684,6 +3062,13 @@ __metadata: languageName: node linkType: hard +"is-property@npm:^1.0.2": + version: 1.0.2 + resolution: "is-property@npm:1.0.2" + checksum: 10c0/33ab65a136e4ba3f74d4f7d9d2a013f1bd207082e11cedb160698e8d5394644e873c39668d112a402175ccbc58a087cef87198ed46829dbddb479115a0257283 + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -2849,6 +3234,13 @@ __metadata: languageName: node linkType: hard +"lilconfig@npm:^2.1.0": + version: 2.1.0 + resolution: "lilconfig@npm:2.1.0" + checksum: 10c0/64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 + languageName: node + linkType: hard + "local-pkg@npm:^1.1.2": version: 1.1.2 resolution: "local-pkg@npm:1.1.2" @@ -2876,13 +3268,20 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.19": +"lodash@npm:4.17.21, lodash@npm:^4.17.19": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c languageName: node linkType: hard +"long@npm:^5.2.1": + version: 5.3.2 + resolution: "long@npm:5.3.2" + checksum: 10c0/7130fe1cbce2dca06734b35b70d380ca3f70271c7f8852c922a7c62c86c4e35f0c39290565eca7133c625908d40e126ac57c02b1b1a4636b9457d77e1e60b981 + languageName: node + linkType: hard + "longest-streak@npm:^3.0.0": version: 3.1.0 resolution: "longest-streak@npm:3.1.0" @@ -2897,6 +3296,13 @@ __metadata: languageName: node linkType: hard +"lru.min@npm:^1.0.0, lru.min@npm:^1.1.0": + version: 1.1.3 + resolution: "lru.min@npm:1.1.3" + checksum: 10c0/62567c9d9e6e3b1b3793853ac509007082d93dc838819998a9911a3058b7ca53045ba6a477ab8ccb983788591dd7ff90e05f3b073ba0d30d8b8245c9ef17a06d + languageName: node + linkType: hard + "lucia@npm:^3.2.2": version: 3.2.2 resolution: "lucia@npm:3.2.2" @@ -3489,6 +3895,13 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 10c0/0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 + languageName: node + linkType: hard + "minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -3507,6 +3920,13 @@ __metadata: languageName: node linkType: hard +"minimist@npm:^1.2.0, minimist@npm:^1.2.3": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + "minipass-collect@npm:^2.0.1": version: 2.0.1 resolution: "minipass-collect@npm:2.0.1" @@ -3583,6 +4003,13 @@ __metadata: languageName: node linkType: hard +"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": + version: 0.5.3 + resolution: "mkdirp-classic@npm:0.5.3" + checksum: 10c0/95371d831d196960ddc3833cc6907e6b8f67ac5501a6582f47dfae5eb0f092e9f8ce88e0d83afcae95d6e2b61a01741ba03714eeafb6f7a6e9dcc158ac85b168 + languageName: node + linkType: hard + "mlly@npm:^1.7.4": version: 1.8.0 resolution: "mlly@npm:1.8.0" @@ -3602,6 +4029,39 @@ __metadata: languageName: node linkType: hard +"mysql2@npm:3.15.3": + version: 3.15.3 + resolution: "mysql2@npm:3.15.3" + dependencies: + aws-ssl-profiles: "npm:^1.1.1" + denque: "npm:^2.1.0" + generate-function: "npm:^2.3.1" + iconv-lite: "npm:^0.7.0" + long: "npm:^5.2.1" + lru.min: "npm:^1.0.0" + named-placeholders: "npm:^1.1.3" + seq-queue: "npm:^0.0.5" + sqlstring: "npm:^2.3.2" + checksum: 10c0/e10c51eebb2b2783837b732f1f4edc9e0ea15d9c5d80167e739b1dc97a323c786f5b3261e229f586b2903c44abcc71422c473113dfb261fa6215efcbbb5fe6ef + languageName: node + linkType: hard + +"named-placeholders@npm:^1.1.3": + version: 1.1.6 + resolution: "named-placeholders@npm:1.1.6" + dependencies: + lru.min: "npm:^1.1.0" + checksum: 10c0/65b7ffaf932a371602e4153808601e8f377d7fc85fa15b491ee821418e52ab4950155b840803a6eaf3d5b94d6e8aedc1bee723475541cb4713feb3544dca9336 + languageName: node + linkType: hard + +"napi-build-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "napi-build-utils@npm:2.0.0" + checksum: 10c0/5833aaeb5cc5c173da47a102efa4680a95842c13e0d9cc70428bd3ee8d96bb2172f8860d2811799b5daa5cbeda779933601492a2028a6a5351c6d0fcf6de83db + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -3630,6 +4090,15 @@ __metadata: languageName: node linkType: hard +"node-abi@npm:^3.3.0": + version: 3.85.0 + resolution: "node-abi@npm:3.85.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/d51b5718b6ebfcb23858e5429b74798c05fe3ab436d8afd8480b4809706bc53d6af3a60714ecc85e8c943f4e06e6378ca1935725c7611f3d1febdd3fc3bb5fe3 + languageName: node + linkType: hard + "node-addon-api@npm:^8.3.0": version: 8.5.0 resolution: "node-addon-api@npm:8.5.0" @@ -3767,6 +4236,15 @@ __metadata: languageName: node linkType: hard +"once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + "optionator@npm:^0.9.3": version: 0.9.4 resolution: "optionator@npm:0.9.4" @@ -3876,7 +4354,7 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^2.0.1, pathe@npm:^2.0.3": +"pathe@npm:2.0.3, pathe@npm:^2.0.1, pathe@npm:^2.0.3": version: 2.0.3 resolution: "pathe@npm:2.0.3" checksum: 10c0/c118dc5a8b5c4166011b2b70608762e260085180bb9e33e80a50dcdb1e78c010b1624f4280c492c92b05fc276715a4c357d1f9edc570f8f1b3d90b6839ebaca1 @@ -3996,6 +4474,35 @@ __metadata: languageName: node linkType: hard +"postgres@npm:3.4.7": + version: 3.4.7 + resolution: "postgres@npm:3.4.7" + checksum: 10c0/b2e61b1064d38e7e1df8291f6d5a7e11f892a3240e00cf2b5e5542bf9abbfe97f3963164aeb56b42c1ab6b8aae3454c57f5bbc1791df0769375542740a7cde72 + languageName: node + linkType: hard + +"prebuild-install@npm:^7.1.1": + version: 7.1.3 + resolution: "prebuild-install@npm:7.1.3" + dependencies: + detect-libc: "npm:^2.0.0" + expand-template: "npm:^2.0.3" + github-from-package: "npm:0.0.0" + minimist: "npm:^1.2.3" + mkdirp-classic: "npm:^0.5.3" + napi-build-utils: "npm:^2.0.0" + node-abi: "npm:^3.3.0" + pump: "npm:^3.0.0" + rc: "npm:^1.2.7" + simple-get: "npm:^4.0.0" + tar-fs: "npm:^2.0.0" + tunnel-agent: "npm:^0.6.0" + bin: + prebuild-install: bin.js + checksum: 10c0/25919a42b52734606a4036ab492d37cfe8b601273d8dfb1fa3c84e141a0a475e7bad3ab848c741d2f810cef892fcf6059b8c7fe5b29f98d30e0c29ad009bedff + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -4003,20 +4510,27 @@ __metadata: languageName: node linkType: hard -"prisma@npm:^6.17.0": - version: 6.17.0 - resolution: "prisma@npm:6.17.0" +"prisma@npm:7": + version: 7.2.0 + resolution: "prisma@npm:7.2.0" dependencies: - "@prisma/config": "npm:6.17.0" - "@prisma/engines": "npm:6.17.0" + "@prisma/config": "npm:7.2.0" + "@prisma/dev": "npm:0.17.0" + "@prisma/engines": "npm:7.2.0" + "@prisma/studio-core": "npm:0.9.0" + mysql2: "npm:3.15.3" + postgres: "npm:3.4.7" peerDependencies: - typescript: ">=5.1.0" + better-sqlite3: ">=9.0.0" + typescript: ">=5.4.0" peerDependenciesMeta: + better-sqlite3: + optional: true typescript: optional: true bin: prisma: build/index.js - checksum: 10c0/88958d86f8a91626345bdf9a552602570148ac742bd71902ba55a967bad78ab3f9415e129fccba9ee9fd5756aaadceeba1667583502c49e0e5110b0cba2dcae6 + checksum: 10c0/ea0ade8b64483a9d90d6947d539af1f57a0362776e7329ad592693f9c4d94caa8665c3cf9e20d08a47f5b3b0fae63e7684a0236ec01f7dc6ebc7c5d58bf9b432 languageName: node linkType: hard @@ -4051,6 +4565,27 @@ __metadata: languageName: node linkType: hard +"proper-lockfile@npm:4.1.2": + version: 4.1.2 + resolution: "proper-lockfile@npm:4.1.2" + dependencies: + graceful-fs: "npm:^4.2.4" + retry: "npm:^0.12.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/2f265dbad15897a43110a02dae55105c04d356ec4ed560723dcb9f0d34bc4fb2f13f79bb930e7561be10278e2314db5aca2527d5d3dcbbdee5e6b331d1571f6d + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.3 + resolution: "pump@npm:3.0.3" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/ada5cdf1d813065bbc99aa2c393b8f6beee73b5de2890a8754c9f488d7323ffd2ca5f5a0943b48934e3fcbd97637d0337369c3c631aeb9614915db629f1c75c9 + languageName: node + linkType: hard + "punycode@npm:^2.1.0": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -4096,6 +4631,31 @@ __metadata: languageName: node linkType: hard +"rc@npm:^1.2.7": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: "npm:^0.6.0" + ini: "npm:~1.3.0" + minimist: "npm:^1.2.0" + strip-json-comments: "npm:~2.0.1" + bin: + rc: ./cli.js + checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 + languageName: node + linkType: hard + +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + "readdirp@npm:^4.0.1": version: 4.1.2 resolution: "readdirp@npm:4.1.2" @@ -4129,6 +4689,13 @@ __metadata: languageName: node linkType: hard +"regexp-to-ast@npm:0.5.0": + version: 0.5.0 + resolution: "regexp-to-ast@npm:0.5.0" + checksum: 10c0/16d3c3905fb24866c3bff689ab177c1e63a7283a3cd1ba95987ef86020526f9827f5c60794197311f0e8a967889131142fe7a2e5ed3523ffe2ac9f55052e1566 + languageName: node + linkType: hard + "regexp-tree@npm:^0.1.27": version: 0.1.27 resolution: "regexp-tree@npm:0.1.27" @@ -4149,6 +4716,15 @@ __metadata: languageName: node linkType: hard +"remeda@npm:2.21.3": + version: 2.21.3 + resolution: "remeda@npm:2.21.3" + dependencies: + type-fest: "npm:^4.39.1" + checksum: 10c0/ba63d70e95e92cdd843c3497f0a9be1039644d586f56ea62ff3e7736e3981932c6e999c3670c81623bac48944fd03ea52f43566143460924f44b6522759f6e51 + languageName: node + linkType: hard + "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" @@ -4207,6 +4783,13 @@ __metadata: languageName: node linkType: hard +"safe-buffer@npm:^5.0.1, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + "safe-regex2@npm:^5.0.0": version: 5.0.0 resolution: "safe-regex2@npm:5.0.0" @@ -4257,6 +4840,13 @@ __metadata: languageName: node linkType: hard +"seq-queue@npm:^0.0.5": + version: 0.0.5 + resolution: "seq-queue@npm:0.0.5" + checksum: 10c0/ec870fc392f0e6e99ec0e551c3041c1a66144d1580efabae7358e572de127b0ad2f844c95a4861d2e6203f836adea4c8196345b37bed55331ead8f22d99ac84c + languageName: node + linkType: hard + "server@workspace:.": version: 0.0.0-use.local resolution: "server@workspace:." @@ -4266,7 +4856,8 @@ __metadata: "@fastify/cookie": "npm:^11.0.2" "@fastify/cors": "npm:^11.1.0" "@lucia-auth/adapter-prisma": "npm:^4.0.1" - "@prisma/client": "npm:^6.17.0" + "@prisma/adapter-better-sqlite3": "npm:^7.2.0" + "@prisma/client": "npm:7" "@types/bcrypt": "npm:^6" "@types/ws": "npm:^8" bcrypt: "npm:^6.0.0" @@ -4277,7 +4868,7 @@ __metadata: fastify-plugin: "npm:^5.1.0" lucia: "npm:^3.2.2" mediasoup: "npm:^3.19.3" - prisma: "npm:^6.17.0" + prisma: "npm:7" socket.io: "npm:^4.8.1" ts-node: "npm:^10.9.2" typescript: "npm:^5.9.3" @@ -4309,6 +4900,13 @@ __metadata: languageName: node linkType: hard +"signal-exit@npm:^3.0.2": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + "signal-exit@npm:^4.0.1": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" @@ -4316,6 +4914,24 @@ __metadata: languageName: node linkType: hard +"simple-concat@npm:^1.0.0": + version: 1.0.1 + resolution: "simple-concat@npm:1.0.1" + checksum: 10c0/62f7508e674414008910b5397c1811941d457dfa0db4fd5aa7fa0409eb02c3609608dfcd7508cace75b3a0bf67a2a77990711e32cd213d2c76f4fd12ee86d776 + languageName: node + linkType: hard + +"simple-get@npm:^4.0.0": + version: 4.0.1 + resolution: "simple-get@npm:4.0.1" + dependencies: + decompress-response: "npm:^6.0.0" + once: "npm:^1.3.1" + simple-concat: "npm:^1.0.0" + checksum: 10c0/b0649a581dbca741babb960423248899203165769747142033479a7dc5e77d7b0fced0253c731cd57cf21e31e4d77c9157c3069f4448d558ebc96cf9e1eebcf0 + languageName: node + linkType: hard + "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" @@ -4433,6 +5049,13 @@ __metadata: languageName: node linkType: hard +"sqlstring@npm:^2.3.2": + version: 2.3.3 + resolution: "sqlstring@npm:2.3.3" + checksum: 10c0/3b5dd7badb3d6312f494cfa6c9a381ee630fbe3dbd571c4c9eb8ecdb99a7bf5a1f7a5043191d768797f6b3c04eed5958ac6a5f948b998f0a138294c6d3125fbd + languageName: node + linkType: hard + "ssri@npm:^12.0.0": version: 12.0.0 resolution: "ssri@npm:12.0.0" @@ -4442,6 +5065,13 @@ __metadata: languageName: node linkType: hard +"std-env@npm:3.9.0": + version: 3.9.0 + resolution: "std-env@npm:3.9.0" + checksum: 10c0/4a6f9218aef3f41046c3c7ecf1f98df00b30a07f4f35c6d47b28329bc2531eef820828951c7d7b39a1c5eb19ad8a46e3ddfc7deb28f0a2f3ceebee11bab7ba50 + languageName: node + linkType: hard + "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -4464,6 +5094,15 @@ __metadata: languageName: node linkType: hard +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -4496,6 +5135,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 + languageName: node + linkType: hard + "supports-color@npm:^10.2.2": version: 10.2.2 resolution: "supports-color@npm:10.2.2" @@ -4528,6 +5174,31 @@ __metadata: languageName: node linkType: hard +"tar-fs@npm:^2.0.0": + version: 2.1.4 + resolution: "tar-fs@npm:2.1.4" + dependencies: + chownr: "npm:^1.1.1" + mkdirp-classic: "npm:^0.5.2" + pump: "npm:^3.0.0" + tar-stream: "npm:^2.1.4" + checksum: 10c0/decb25acdc6839182c06ec83cba6136205bda1db984e120c8ffd0d80182bc5baa1d916f9b6c5c663ea3f9975b4dd49e3c6bb7b1707cbcdaba4e76042f43ec84c + languageName: node + linkType: hard + +"tar-stream@npm:^2.1.4": + version: 2.2.0 + resolution: "tar-stream@npm:2.2.0" + dependencies: + bl: "npm:^4.0.3" + end-of-stream: "npm:^1.4.1" + fs-constants: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + checksum: 10c0/2f4c910b3ee7196502e1ff015a7ba321ec6ea837667220d7bcb8d0852d51cb04b87f7ae471008a6fb8f5b1a1b5078f62f3a82d30c706f20ada1238ac797e7692 + languageName: node + linkType: hard + "tar@npm:^7.4.3, tar@npm:^7.4.4": version: 7.5.1 resolution: "tar@npm:7.5.1" @@ -4650,6 +5321,15 @@ __metadata: languageName: node linkType: hard +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/4c7a1b813e7beae66fdbf567a65ec6d46313643753d0beefb3c7973d66fcec3a1e7f39759f0a0b4465883499c6dc8b0750ab8b287399af2e583823e40410a17a + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -4666,6 +5346,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^4.39.1": + version: 4.41.0 + resolution: "type-fest@npm:4.41.0" + checksum: 10c0/f5ca697797ed5e88d33ac8f1fec21921839871f808dc59345c9cf67345bfb958ce41bd821165dbf3ae591cedec2bf6fe8882098dfdd8dc54320b859711a2c1e4 + languageName: node + linkType: hard + "typescript@npm:^5.9.3": version: 5.9.3 resolution: "typescript@npm:5.9.3" @@ -4780,7 +5467,7 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.2": +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 @@ -4794,6 +5481,18 @@ __metadata: languageName: node linkType: hard +"valibot@npm:1.2.0": + version: 1.2.0 + resolution: "valibot@npm:1.2.0" + peerDependencies: + typescript: ">=5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/e6897ed2008fc900380a6ce39b62bc5fca45fd5e070f70571c6380ede3ba026d0b7016230215d87f7f3d672a28dbde5a0522d39830b493fdc3dccd1a59ef4ee6 + languageName: node + linkType: hard + "vary@npm:^1": version: 1.1.2 resolution: "vary@npm:1.1.2" @@ -4875,6 +5574,13 @@ __metadata: languageName: node linkType: hard +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + "ws@npm:^8.18.3": version: 8.18.3 resolution: "ws@npm:8.18.3" @@ -4959,6 +5665,15 @@ __metadata: languageName: node linkType: hard +"zeptomatch@npm:2.0.2": + version: 2.0.2 + resolution: "zeptomatch@npm:2.0.2" + dependencies: + grammex: "npm:^3.1.10" + checksum: 10c0/a40e4159aac8e5afa1977591ec71803265a28a436010e0cc046a0fb893c06aaeb4f51c40cd8eba7ab6cad4c499af98eccc16d7e12171b228ca936f6ef2eb1529 + languageName: node + linkType: hard + "zod@npm:^4.1.12": version: 4.1.12 resolution: "zod@npm:4.1.12"

[]>(arg: [...P], options?: { + isolationLevel?: TypeMap['meta']['txIsolationLevel']; + }): Promise>; + $transaction(fn: (client: Omit, ITXClientDenyList>) => Promise, options?: { + maxWait?: number; + timeout?: number; + isolationLevel?: TypeMap['meta']['txIsolationLevel']; + }): Promise; + $disconnect(): Promise; + $connect(): Promise; +}; + +/** Model */ +export declare type DynamicModelExtensionArgs> = { + [K in keyof M_]: K extends '$allModels' ? { + [P in keyof M_[K]]?: unknown; + } & { + [K: symbol]: {}; + } : K extends TypeMap['meta']['modelProps'] ? { + [P in keyof M_[K]]?: unknown; + } & { + [K: symbol]: { + ctx: DynamicModelExtensionThis, ExtArgs> & { + $parent: DynamicClientExtensionThis; + } & { + $name: ModelKey; + } & { + /** + * @deprecated Use `$name` instead. + */ + name: ModelKey; + }; + }; + } : never; +}; + +export declare type DynamicModelExtensionFluentApi = { + [K in keyof TypeMap['model'][M]['payload']['objects']]: (args?: Exact>) => PrismaPromise, [K]> | Null> & DynamicModelExtensionFluentApi>; +}; + +export declare type DynamicModelExtensionFnResult = P extends FluentOperation ? DynamicModelExtensionFluentApi & PrismaPromise | Null> : PrismaPromise>; + +export declare type DynamicModelExtensionFnResultBase = GetResult; + +export declare type DynamicModelExtensionFnResultNull