diff --git a/.claude/DECISIONS.md b/.claude/DECISIONS.md index 395dd7f8..6ecb7d5c 100644 --- a/.claude/DECISIONS.md +++ b/.claude/DECISIONS.md @@ -181,3 +181,14 @@ Critical, non-obvious decisions made while working in this repo. Newest first. 3. **"Nothing loaded yet" is `lastPage: null`, not `0`.** A node at the nesting limit ships `{ count, data: [] }`, so `toPagination` maps any empty page to `null` and `nextPageToLoad()` (in `comment-tree.ts`) starts it at page 0 instead of skipping page 0 outright. 4. **Frontend tree defaults are display-only.** `COMMENT_TREE_DEFAULTS` → `COMMENT_VIEW_DEFAULTS` with just `maximumNested`; the `maximumShownRepliesPerLevel` prop is deleted from `CommentView`/`CommentsPanel` (it sliced nothing — it only leaked a page size into the request path). 5. **`installCommentFetchMock` now pages like the server:** `toApiComment` takes `{page, limit}`, slices replies at `offset = page * limit`, embeds nested levels at the server's size (2), and the thread GET honors the querystring. A `roots` option serves custom trees. The old mock returned every fixture reply at page 0, which is why the bug was invisible to the component suite. + +## 2026-07-28 — Notification feed: `GET /v1/me/notifications` + mark-read + +**Context:** `apps/modeling-commons-backend/src/modules/user-notification`. The durable pipeline (2026-07-27) deliberately shipped without a read layer — `doc/notification-pipeline-plan.md` lists the in-app feed API as out of scope, with the ledger already carrying `title`/`body`/`url`/`readAt` so it could be added without schema churn. That read layer now exists. + +**Decisions:** +1. **The ledger is not the feed.** `UserNotification` rows are written whenever *any* channel is on (the unique key is the email-idempotency guard), so the feed re-derives the visible set: `listUserNotificationsQuery` resolves the caller's preferences through `userNotificationDomain.inAppEnabledCategories(overrides)` and passes that list as a `category IN (...)` filter. A category muted in-app is still emailed and still leaves a row, but never appears in the feed. Muting everything short-circuits to an empty page with no DB read. +2. **`unreadCount` rides along in the paginated response** (`user-notification.paginated.response.dto.ts`) and counts every unread in-app notification, ignoring `since`/`unreadOnly`/paging — a poll for the bell badge is one request, not two. +3. **A read receipt is not an audit event.** `userNotificationService.markRead` does a single `update` outside `transactionManager`/the outbox, like `markEmailSent`. Routing it through the event table would feed the event processor its own noise for zero audit value. It is idempotent: an already-read row is a no-op. +4. **Mark-read 404s on someone else's notification** rather than 403 (`assertOwnedByRecipient` → `NotificationNotFoundError` for both missing and not-owned), so the endpoint doesn't confirm that an id exists. +5. **`NOTIFICATION_CATEGORIES` is the const tuple behind `NotificationCategory`**, and the response DTO's `category` is `Type.Enum(NOTIFICATION_CATEGORIES)` — typebox v1.1.x's `Type.Enum` takes a readonly value tuple and infers the literal union, so the catalog stays the single source of truth. (`Type.Union([...arr.map(Type.Literal)])` does *not* infer — it widens to `never`.) diff --git a/apps/modeling-commons-backend/.dependency-cruiser.cjs b/apps/modeling-commons-backend/.dependency-cruiser.cjs index 7e6819a5..fa9832f7 100644 --- a/apps/modeling-commons-backend/.dependency-cruiser.cjs +++ b/apps/modeling-commons-backend/.dependency-cruiser.cjs @@ -7,6 +7,7 @@ const applicationLayerPaths = [ '\\.service\\.ts$', '\\.handler\\.ts$', '\\.event-handler\\.ts$', + '\\.notifier\\.ts$', ]; const infrastructureLayerPaths = ['infrastructure', 'infra', 'database', 'repository']; diff --git a/apps/modeling-commons-backend/.ongoing/README.md b/apps/modeling-commons-backend/.ongoing/README.md new file mode 100644 index 00000000..6872af13 --- /dev/null +++ b/apps/modeling-commons-backend/.ongoing/README.md @@ -0,0 +1,29 @@ +# .ongoing + +Plans for future work. Nothing here is implemented until its task file is picked up and approved. + +## Layout + +`.ongoing///-.md` + +- `` — optional, nestable (`billing/invoicing/...`). +- `` — one coherent unit of work. +- `-.md` — one file per planned PR; `` is the intended merge order within the task (`schema-1.md`, `endpoints-2.md`). + +## PR file contract + +A PR is a very small part of the task with one clear goal. Required fields: + +- **Goal** — one sentence. +- **In scope** / **Out of scope** +- **Description** +- **Acceptance criteria** — verifiable. +- **Depends on** — other PR files, or `none`. +- **Notes** + +Additional fields (Risks, Rollback, Open questions, Status, …) at the author's discretion. + +## Rules + +- Can't state acceptance criteria → it's a task, not a PR. Split it. +- Delete a PR file when it merges. Stale plans are noise. diff --git a/apps/modeling-commons-backend/.ongoing/durable-notifications/comment-notifier-5.md b/apps/modeling-commons-backend/.ongoing/durable-notifications/comment-notifier-5.md new file mode 100644 index 00000000..dbaf073f --- /dev/null +++ b/apps/modeling-commons-backend/.ongoing/durable-notifications/comment-notifier-5.md @@ -0,0 +1,95 @@ +# comment-notifier-5 — Move comment notifications onto the durable pipeline + +**Goal** — Move comment notification wording into a notifier owned by `model-comment`, and +delete the inline fire-and-forget send. + +## In scope + +- `src/modules/model-comment/notifications/model-comment.notifier.ts` (new). +- `src/modules/model-comment/notifications/model-comment.notifier.spec.ts` (new). +- `src/modules/model-comment/index.ts` — declare `modelCommentNotifier`. +- `src/modules/user-notification/user-notification.service.ts` — add `modelCommentNotifier` to + the notifiers array. +- `src/modules/model-comment/model-comment.service.ts` — delete the notification code. +- `src/modules/model-comment/model-comment.service.spec.ts` — drop the notification block. +- `tests/api/model-comment.feature` / `.steps.ts` and `tests/api/user-notification.feature` / + `.steps.ts` — move the two notification scenarios. + +## Out of scope + +- Changing who gets notified, or the wording of either email. This is a move, not a redesign. +- Notifiers for `model_comment.updated` or `model_comment.deleted`. Both events are emitted; + neither notifies anyone today and neither should start here. +- Comment likes. They send nothing and write no event row today; unchanged. + +## Description + +The notifier subscribes to `model_comment.created` and resolves the comment from +`event.payload.commentId` — the event row is now the only input, so it no longer receives the +entity from the caller. + +Everything moves across with semantics unchanged: + +- `truncatePreview` (`model-comment.service.ts:9-12`), now using + `rules.limits.notification.previewLength`. +- `buildEmailModel` (`:55-76`), including its `getModelCardQuery` failure fallback to + `{ name: 'a model', url }`. +- The thread deep link (`:81-89`): a reply's own URL opens detached, so the URL roots at + `parent?.id ?? entity.id` and sets `highlightedCommentId` to the new comment. +- The recipient set (`:99-105`): the parent comment's author gets + `createRepliedToCommentEmail` under `comment.reply_to_you` unless they are the commenter; + every other `ModelAuthor`, minus the commenter and minus the parent author, gets + `createCommentedOnModelEmail` under `comment.on_your_model`. + +Two things change. The notifier returns `NotificationIntent[]` instead of calling `mailService`, +and `unsubscribeUrl` comes from the `links` argument instead of +`` `mailto:${env.product.supportEmail}` ``. Each intent's `buildEmail` closes over the already- +computed model card and preview, so the card query runs once per event rather than once per +recipient. + +Then `model-comment.service.ts` loses `truncatePreview`, `buildEmailModel`, +`notifyOnNewComment`, and the `void notifyOnNewComment(entity, parent)` call at line 209, plus +the now-unused dependencies `modelAuthorRepository`, `userRepository`, `getModelCardQuery`, +`mailService`, `mailDomain` and the `env` / `EmailModel` imports. It becomes purely +transactional. + +## Acceptance criteria + +- Posting a comment on a model with an owner and a contributor, then draining the queue, + produces exactly two emails; neither goes to the commenter. +- Commenting on your own model produces no email. +- Replying to someone else's comment sends them the reply template exactly once, and they do + not also receive the commented-on-model template. +- The `commentUrl` on every intent contains `highlightedCommentId=` and roots + at the parent's id for a reply, the comment's own id for a top-level comment. +- A `getModelCardQuery` failure still yields an email, with the model name `'a model'`. +- Recipients who opted out of the relevant category receive nothing, and no ledger row is + written for them. +- `getModelCardQuery.execute` is called once per event, not once per recipient. +- `model-comment.service.ts` no longer references `mailService`, `mailDomain`, or `env`. +- `model-comment.service.spec.ts` retains only transactional assertions and no longer defines + `flushMicrotasks`. +- `yarn run check`, `yarn run test:unit`, `yarn run test:e2e` pass. + +## Depends on + +`dispatch-4.md` + +## Notes + +The notifier spec should carry over the assertions currently in `model-comment.service.spec.ts` +rather than being written fresh — they encode behavior worth preserving exactly, including the +positional-argument assertion on `commentUrl`. + +The two e2e scenarios at `tests/api/model-comment.feature:179` ("Commenting notifies other +authors but never the commenter") and `:193` ("Commenting on your own model does not notify +yourself") assert inline sending and will fail as written. Move them into +`user-notification.feature` and trigger the batch with `boss.send('process-events', {})`, as +`tests/api/workers.steps.ts:42-45` already does. The mail-capturing monkey-patch and +`waitForMailCalls` helper at `tests/api/model-comment.steps.ts:314-344` move with them. + +Delivery is now up to ~60s slower (the cron interval). Expected and accepted. + +Once this merges, `mailDomain.createCommentedOnModelEmail` and `createRepliedToCommentEmail` +have exactly one caller each — the notifier — which is the intended shape: the producing module +picks its own template. diff --git a/apps/modeling-commons-backend/.ongoing/durable-notifications/dispatch-4.md b/apps/modeling-commons-backend/.ongoing/durable-notifications/dispatch-4.md new file mode 100644 index 00000000..8d28991b --- /dev/null +++ b/apps/modeling-commons-backend/.ongoing/durable-notifications/dispatch-4.md @@ -0,0 +1,101 @@ +# dispatch-4 — Event dispatch to the notification service + +**Goal** — Wire the event processor to a dispatcher that fans durable events out to the +notification service, with preference gating and ledger idempotency. + +## In scope + +- `src/modules/user-notification/domain/user-notification.types.ts` — add `NotificationIntent`, + `NotificationRecipient`, `NotificationLinks`, `Notifier`, `EventSubscriber`. +- `src/modules/user-notification/user-notification.service.ts` — `handles` + `handleEvent`. +- `src/modules/user-notification/user-notification.service.ts` — build `NotificationLinks`: + `unsubscribeUrl` is `` `mailto:${env.product.supportEmail}` `` (today's behaviour, unchanged), + `preferencesUrl` is `${env.product.website}/settings/notifications`. +- `src/modules/event/event-dispatcher.service.ts` +- `src/workers/event-processor.ts` — call `dispatch`, record `markFailed` on throw. +- `src/workers/index.ts` — thread `eventDispatcherService` through. +- `src/config/rules.ts` — `limits.notification`: `eventBatchSize: 50`, `maxEventAttempts: 5`, + `previewLength: 280`. +- `src/server/di/index.ts` — add `notifier` to the first glob; delete the second glob. +- `.dependency-cruiser.cjs` — add `'\\.notifier\\.ts$'` to `applicationLayerPaths`. + +## Out of scope + +- Any actual notifier. `notifiers` is an empty array in this PR, so `handles` returns false for + everything and dispatch is a no-op end to end. +- Touching `model-comment.service.ts`. The inline send keeps working until `comment-notifier-5`. +- A ledger sweeper for rows with a null `emailSentAt`. + +## Description + +`eventDispatcherService` holds an explicit subscriber array — `[userNotificationService]` — +filters by `handles(event.type)`, runs the survivors under `Promise.allSettled` so one failure +cannot block another, logs each rejection, and rethrows an `AggregateError` if any failed so the +processor records the attempt. + +`userNotificationService.handleEvent` resolves intents from its notifiers, then per intent: + +1. Load the recipient; skip if missing, soft-deleted, banned, or without an email — no ledger + row for someone who could never receive it. +2. Resolve the preference; skip the email channel on `email: false`, skip the ledger row on + `inApp: false`. +3. Insert the ledger row inside `transactionManager.run`. A unique violation on + `(eventId, recipientId, category)` means an earlier pass already delivered this — skip. +4. Invoke `intent.buildEmail(recipient, links)` and send. +5. Stamp `emailSentAt` on success; on failure log and leave it null. + +`buildEmail` is a thunk rather than a rendered email so nothing is rendered for a recipient who +opted out. `links` is passed in rather than built by each notifier so that the deferred +unsubscribe-token work changes one file instead of every notifier — see "Unsubscribe: deferred" +in `doc/notification-pipeline-plan.md`. Its values are constants for now. + +The processor changes from unconditional `markProcessed` to: + +```ts +try { await eventDispatcherService.dispatch(event); await eventRepository.markProcessed(event.id); } +catch (error) { await eventRepository.markFailed(event.id, error); } +``` + +so a failed event stays unprocessed and is retried on the next tick until `attempts` reaches +`maxEventAttempts`. + +The second `loadModules` call in `src/server/di/index.ts` (lines 33-44) is deleted rather than +extended. It globs `*.{handler,event-handler}`, matches zero files, and its `asyncInit: 'init'` +resolver option fires inside Fastify's `onReady` hook — which runs *after* `startWorkers` at +`src/server/index.ts:82`. Anything that self-registered there would race the worker it registers +with. Notifiers go in the first glob as plain singletons instead. + +## Acceptance criteria + +- The processor calls `dispatch` once per fetched event, then `markProcessed` on success. +- A subscriber that throws produces `markFailed` with `attempts` incremented and `lastError` + populated, and does not abort the remaining events in the batch. +- An event whose `attempts` has reached `maxEventAttempts` is not returned by `findUnprocessed`. +- Two subscribers, one throwing: the other still runs to completion. +- `handleEvent` with a recipient who has `email: false` for the category sends no mail. +- `handleEvent` on an event whose ledger row already exists sends no mail and does not throw. +- `buildEmail` is never invoked for an intent filtered out by preferences or recipient state. +- A `sendMail` rejection leaves `emailSentAt` null, is logged, and does not throw out of + `handleEvent`. +- `yarn run check` passes, including `deps:validate` with the new `applicationLayerPaths` entry. +- `yarn run test:unit` and `yarn run test:e2e` pass; existing `workers.feature` still goes green. + +## Depends on + +`mail-await-1.md`, `preferences-3.md` + +## Notes + +Nothing is observable to a user after this PR. That is intentional — every seam is unit-tested +in isolation before the cutover in `comment-notifier-5` gives it real traffic. + +The subscriber array is explicit rather than discovered by container enumeration. With one +subscriber, enumeration would be indirection without payoff; adding the FTS indexer from +`[[legacy-migration-search-spec]]` later is one line. + +`userNotificationService` will resolve notifiers by *name* from the awilix cradle in the next +PR, so there is no static import edge from `user-notification` to any producing module. Keep it +that way — the `Notifier` type is imported by producers, never the reverse. + +`previewLength: 280` in `rules.ts` is unused until `comment-notifier-5` consumes it; it is added +here to keep all three constants in one commit. diff --git a/apps/modeling-commons-backend/.ongoing/durable-notifications/mail-await-1.md b/apps/modeling-commons-backend/.ongoing/durable-notifications/mail-await-1.md new file mode 100644 index 00000000..dbc20329 --- /dev/null +++ b/apps/modeling-commons-backend/.ongoing/durable-notifications/mail-await-1.md @@ -0,0 +1,63 @@ +# mail-await-1 — Await SMTP delivery in mailService + +**Goal** — Make `mailService.sendMail` resolve only after nodemailer reports the delivery +outcome, so callers can observe failures. + +This PR is done. + +## In scope + +- `src/modules/mail/mail.service.ts` — promisify the nodemailer callback. +- A new `src/modules/mail/mail.service.spec.ts` covering both outcomes. + +## Out of scope + +- Retry logic, queueing, or backoff. This PR only makes the outcome *knowable*. +- The three direct `transporter.sendMail` call sites in `src/lib/auth.ts` (lines 59-69, 85-90, + 98-103). They bypass DI and use `void … .catch(console.error)`; leave them alone. +- Changing any caller's behavior. + +## Description + +`sendMail` is declared `async` but wraps nodemailer's callback API without bridging it: + +```ts +async sendMail(content: Mail.Options) { + transporter.sendMail(content, (error, info) => { + if (error) { logger.error({ name: 'Mail Service', message: 'Failed to send email', error, info }); } + else { logger.info({ name: 'Mail Service', message: 'Email sent successfully', info }); } + }); +} +``` + +The returned promise resolves as soon as `transporter.sendMail` is *called*, not when it +completes. Every `await mailService.sendMail(...)` in the codebase is therefore a no-op wait, +and the delivery result is only ever visible in the logs. + +Wrap the callback in a promise that resolves on success and rejects on error, keeping both log +lines exactly as they are so log output does not change. + +This is a prerequisite for the durable pipeline: `dispatch-4` stamps `emailSentAt` on a ledger +row after `sendMail` resolves, which is meaningless while it resolves unconditionally. + +## Acceptance criteria + +- `await mailService.sendMail(...)` rejects when the transporter invokes its callback with an + error, and resolves when it invokes it with `info`. +- Both existing log lines still fire, with unchanged `name` and `message` values. +- `mail.service.spec.ts` covers success and failure, stubbing the transporter. +- `yarn run check` and `yarn run test:unit` pass. + +## Depends on + +none + +## Notes + +Low risk. The only DI caller today is `notifyOnNewComment` in `model-comment.service.ts`, which +already awaits inside `Promise.allSettled` and logs rejections at lines 147-156 — so the change +activates error handling that was written but unreachable, rather than introducing a new +failure path. + +`src/lib/auth.ts` imports `transporter` directly rather than going through `mailService`, so it +is unaffected. diff --git a/apps/modeling-commons-backend/.ongoing/durable-notifications/preferences-3.md b/apps/modeling-commons-backend/.ongoing/durable-notifications/preferences-3.md new file mode 100644 index 00000000..234ca3f4 --- /dev/null +++ b/apps/modeling-commons-backend/.ongoing/durable-notifications/preferences-3.md @@ -0,0 +1,83 @@ +# preferences-3 — Notification preferences + +**Goal** — Let a signed-in user read and change their notification preferences. + +## In scope + +- `src/modules/user-notification/domain/user-notification.domain.ts` — category catalog and + default merge. Pure. +- `src/modules/user-notification/domain/user-notification.types.ts` — `NotificationCategory` + and the preference-facing types only. +- `src/modules/user-notification/domain/user-notification.errors.ts` — `UnknownCategoryError` (400). +- `src/modules/user-notification/dtos/notification-preference.response.dto.ts` and + `update-notification-preferences.request.dto.ts`. +- `src/modules/user-notification/queries/get-notification-preferences.query.ts` +- `src/modules/user-notification/user-notification.mapper.ts` +- `src/modules/user-notification/user-notification.route.ts` — the two routes below. +- `tests/api/user-notification.feature` + `.steps.ts`. + +## Out of scope + +- `NotificationIntent`, `Notifier`, `EventSubscriber` — those types land in `dispatch-4`. +- `user-notification.service.ts`. Preference writes go through the query + repository; the + service exists only once there is fan-out to orchestrate. +- Sending anything. No `mailService` dependency in this PR. +- **Unsubscribing from an email link.** Deferred to its own plan; see "Unsubscribe: deferred" + in `doc/notification-pipeline-plan.md`. No token service, no unauthenticated route, no + `Verification` rows in this PR. +- The frontend `/unsubscribe` and `/profile/preferences` pages. + +## Description + +Three routes: + +| Route | Auth | Behaviour | +|---|---|---| +| `GET /v1/me/notification-preferences` | `requireAuth` | Catalog merged with the caller's overrides: `{ categories: [{ category, label, description, email, inApp }] }` | +| `PATCH /v1/me/notification-preferences` | `requireAuth` | Body `{ preferences: [{ category, email?, inApp? }] }`. Upsert per category, `204`. Unknown category → 400. | + +Both require a session. There is no unauthenticated route in this PR. + +The catalog is a `const` literal in the domain, keyed by category, holding `label`, `displayName`, +`description`, and `defaults: { email, inApp }`. Three categories this pass: +`comment.on_your_model`, `comment.reply_to_you`, `general.daily_digest`. It is the single source of truth — a stored +row whose category is not in the catalog is ignored on read and rejected on write, so a retired +category cannot silently suppress notifications. + +Emails keep the footer link they have today — `` `mailto:${env.product.supportEmail}` `` — so +this PR changes nothing about what a recipient sees. Preferences are enforced from day one by +`dispatch-4`; what is deferred is only the way to reach them without signing in. + +Writes go through `transactionManager.run` per the module conventions, even though there is no +second write to pair with — consistency with every other mutation in the codebase. + +## Acceptance criteria + +- `GET` for a user with no stored rows returns every catalog category with its default values. +- `PATCH { preferences: [{ category: 'comment.on_your_model', email: false }] }` then `GET` + shows `email: false` for that category and unchanged defaults for the other; `inApp` is + untouched when omitted. +- `PATCH` with a category absent from the catalog returns 400 and writes nothing. +- Both routes reject an anonymous request with 401. +- A `PATCH` from user A cannot change user B's preferences — the session is the only source of + the user id, never the request body. +- Unit specs: catalog default merge matrix; unknown-category rejection. +- E2E feature covers both routes plus the anonymous rejection. +- `yarn run check`, `yarn run test:unit`, `yarn run test:e2e` pass. + +## Depends on + +`schema-2.md` + +## Notes + +This PR is independently useful and shippable — a user can manage preferences before anything +consumes them. That is deliberate: it keeps `comment-notifier-5` a cutover rather than a +big-bang. + +Route paths use `/v1/me/...` rather than `/v1/users/:id/...`. Preferences are only ever +self-scoped; there is no admin surface for editing someone else's. + +Preference reads happen in the fan-out hot path in `dispatch-4`, so the repository's +"fetch all overrides for a user" method should return the whole (tiny) set in one query +rather than one query per category. diff --git a/apps/modeling-commons-backend/.ongoing/durable-notifications/schema-2.md b/apps/modeling-commons-backend/.ongoing/durable-notifications/schema-2.md new file mode 100644 index 00000000..e90b4afe --- /dev/null +++ b/apps/modeling-commons-backend/.ongoing/durable-notifications/schema-2.md @@ -0,0 +1,74 @@ +# schema-2 — Notification tables and event retry columns + +**Goal** — Land the `UserNotification` and `UserNotificationPreference` tables, the `Event` +retry columns, and their repositories, with no behavior change anywhere. + +## In scope + +- `prisma/schema.prisma`: two new models; `attempts` / `lastError` on `Event`; back-relations + on `Event` and `User`. +- The migration, plus the regenerated `generated/prisma` client (it is committed). +- `src/modules/user-notification/database/user-notification.{record,repository,repository.port,repository.mock}.ts` +- `src/modules/user-notification/database/notification-preference.{record,repository,repository.port,repository.mock}.ts` +- `src/modules/user-notification/index.ts` with the `Dependencies` augmentation for both repositories. +- `src/modules/event/database/event.repository.{ts,port.ts,mock.ts}`: add `markFailed`, extend + `EventRecord`, add the `attempts` ceiling to `findUnprocessed`. +- `src/modules/event/database/event.repository.port.ts`: add `model.created`, + `model.version.created`, `model.version.updated` to `KnownEvents`. + +## Out of scope + +- Any service, route, DTO, domain, or worker change. Nothing calls the new repositories yet. +- `markFailed` being wired into the processor — that is `dispatch-4`. +- Reconciling the `model_version.created` vs `model.version.created` naming split. Both stay. + +## Description + +Schema as specified in `doc/notification-pipeline-plan.md` under "Schema". Two points that +matter for review: + +- `UserNotification` carries `@@unique([eventId, recipientId, category])`. This is the + idempotency key the whole pipeline rests on — a redelivered event hits the constraint instead + of sending a second email. +- `UserNotificationPreference` rows are **sparse overrides**. Absence means "use the catalog + default", so there is no backfill and adding a category later needs no data change. + +`title` / `body` / `url` / `readAt` and `@@index([recipientId, readAt, createdAt])` on +`UserNotification` serve the in-app feed, which is out of scope for this task. They are included +now so the feed is a pure read-layer addition rather than another migration. + +`findUnprocessed` gains `attempts: { lt: }`. The max is passed in as an argument here; it +becomes `rules.limits.notification.maxEventAttempts` in `dispatch-4`. + +The three `KnownEvents` additions are a correctness fix in passing: `model-draft.service.ts:558` +and `:660` emit `model.created`, `model.version.created`, and `model.version.updated`, none of +which are in the union today. + +## Acceptance criteria + +- `yarn run db:migrate:dev` applies cleanly against a fresh database (`yarn run db:reset` then migrate). +- `yarn run db:generate` produces a client that is committed alongside the migration. +- `yarn run check` (`check-types` + `deps:validate`) passes. +- Both new mocks are the `{ [K in keyof Port]: ReturnType }` mapped type used by + `src/modules/model/database/model.repository.mock.ts`, so a port method with no mock entry is + a type error. +- `yarn run test:unit` and `yarn run test:e2e` pass unchanged — no existing spec should need editing. +- Inserting two `UserNotification` rows with the same `(eventId, recipientId, category)` raises + a unique-constraint error. + +## Depends on + +none + +## Notes + +Migration directory naming: the repo mixes real `prisma migrate dev` timestamps +(`20260506184907_library_model_flag`) with hand-authored `…000000` ones +(`20260720000000_add_model_comment`). Either is fine; prefer the generated timestamp. + +Two repositories in one module directory is consistent with existing practice — +`model-comment` handles both comments and comment likes through one repository, and splitting +these two keeps each port small. + +The `Event` → `UserNotification` relation is `onDelete: Cascade`. Events are never deleted today, +so this is defensive rather than load-bearing. diff --git a/apps/modeling-commons-backend/client/rest.d.ts b/apps/modeling-commons-backend/client/rest.d.ts index 81df42ad..1c857a3b 100644 --- a/apps/modeling-commons-backend/client/rest.d.ts +++ b/apps/modeling-commons-backend/client/rest.d.ts @@ -2298,7 +2298,7 @@ export interface paths { limit?: number; /** @description Page number */ page?: number; - sort?: "createdAt" | "likes"; + sort?: "createdAt" | "newest" | "likes"; }; header?: never; path: { @@ -2487,7 +2487,6 @@ export interface paths { limit?: number; /** @description Page number */ page?: number; - sort?: "createdAt" | "likes"; }; header?: never; path: { @@ -6376,6 +6375,358 @@ export interface paths { patch?: never; trace?: never; }; + "/api/v1/me/notification-preferences": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Default Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + categories: { + category: string; + label: string; + description: string; + email: boolean; + inApp: boolean; + }[]; + }; + }; + }; + /** @description Default Response */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": { + preferences: { + category: string; + email?: boolean; + inApp?: boolean; + }[]; + }; + }; + }; + responses: { + /** @description Default Response */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + }; + }; + trace?: never; + }; + "/api/v1/me/notifications": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: { + parameters: { + query?: { + /** @description Specifies a limit of returned records */ + limit?: number; + /** @description Page number */ + page?: number; + /** + * @description Only return notifications created at or after this instant + * @example 2026-07-28T12:00:00.000Z + */ + since?: string; + /** @description Only return notifications that have not been read yet */ + unreadOnly?: boolean; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Default Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + /** + * @description Total number of items + * @example 5 + */ + count: number; + /** + * @description Number of items per page + * @example 10 + */ + limit: number; + /** + * @description Page number + * @example 0 + */ + page: number; + data: unknown[]; + } & { + data: { + /** Format: uuid */ + id: string; + /** @enum {unknown} */ + category: "comment.on_your_model" | "comment.reply_to_you" | "general.daily_digest"; + title: string; + body: string; + /** Format: uri */ + url: string; + /** Format: date-time */ + createdAt: string; + readAt: string | null; + }[]; + /** @description Unread notifications across every in-app category, ignoring the page filters */ + unreadCount: number; + }; + }; + }; + /** @description Default Response */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/me/notifications/{id}/read": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Entity's id */ + id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Default Response */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + }; + }; + trace?: never; + }; "/api/health": { parameters: { query?: never; diff --git a/apps/modeling-commons-backend/doc/notification-pipeline-plan.md b/apps/modeling-commons-backend/doc/notification-pipeline-plan.md new file mode 100644 index 00000000..724f2124 --- /dev/null +++ b/apps/modeling-commons-backend/doc/notification-pipeline-plan.md @@ -0,0 +1,589 @@ +# Notification pipeline plan + +## Framing + +Notifications are sent inline today, on the request path, with no durability and no way for a +user to opt out. Three concrete problems, all visible in one file: + +1. **Fire-and-forget.** `src/modules/model-comment/model-comment.service.ts:209` does + `void notifyOnNewComment(entity, parent)` after the transaction commits. Nothing awaits + it, nothing retries it. If the SMTP host is down for thirty seconds, those notifications + are gone — no record that they were owed, no way to find out. + +2. **The delivery result is unknowable anyway.** `mailService.sendMail` + (`src/modules/mail/mail.service.ts:6-14`) wraps nodemailer's callback API without + promisifying it: + + ```ts + async sendMail(content: Mail.Options) { + transporter.sendMail(content, (error, info) => { + if (error) { logger.error(...); } else { logger.info(...); } + }); + } + ``` + + The `async` function returns as soon as `transporter.sendMail` is *called*. Even the + `await mailService.sendMail(content)` inside `notifyOnNewComment`'s `Promise.allSettled` + resolves before SMTP has done anything. The surrounding rejection handling at + `model-comment.service.ts:147-156` can never fire for a delivery failure. + +3. **No opt-out exists.** Every comment email is rendered with an `unsubscribeUrl` — the + `@repo/emails` `Layout` component renders the footer link only when one is passed — but + the value is `` `mailto:${env.product.supportEmail}` `` (`model-comment.service.ts:80`), + above a comment conceding that "a real unsubscribe/preferences endpoint doesn't exist + yet". A user who wants fewer emails has to write to support and have a human do it. + + This plan fixes the half that matters most — preferences exist and are enforced on every + send — but deliberately leaves the footer link as `mailto:`. Reaching preferences still + requires signing in until the deferred unsubscribe plan lands. + +Meanwhile the durable path is already built, and unused. `Event` rows are written inside +`transactionManager.run` alongside the domain write (`model-comment.service.ts:198-207`), so +the table is already a correct transactional outbox: the event and the comment commit or roll +back together. `src/workers/event-processor.ts` already polls it every minute via pg-boss. +Its dispatch body is a placeholder: + +```ts +for (const event of events) { + // Future: dispatch side effects based on event.type + await eventRepository.markProcessed(event.id); +} +``` + +This plan closes that loop. Events become the delivery trigger; a new `user-notification` +module owns fan-out, preferences, and a delivery ledger; and each producing module keeps +ownership of *what its notifications say*. + +Nothing here requires new infrastructure. pg-boss is already a production dependency, the +worker is already started from `src/server/index.ts:82`, and the outbox already has the right +transactional semantics. + +## Scope + +In scope: + +- A `user-notification` module: category catalog, per-user preferences, delivery ledger, send. +- An `eventDispatcherService` in the `event` module: routes an `EventRecord` to subscribers. +- A `Notifier` contract that producing modules implement to own their own wording. +- One notifier: `model-comment`, covering `model_comment.created`. It replaces + `notifyOnNewComment` with identical recipient semantics. +- Authenticated preference routes. +- Making `mailService.sendMail` actually await delivery. + +Out of scope (deliberately): + +- **In-app feed read API.** `GET /v1/me/notifications`, unread counts, mark-read. The ledger + table carries `title` / `body` / `url` / `readAt` precisely so this is a later read-layer + addition with no schema churn. The `inApp` preference channel is stored and honoured at + fan-out; only the routes are missing. +- Digest / batching. `mailDomain.createNotificationSummaryEmail` remains defined and unused. +- Notifiers for non-comment events (`model.liked`, `model_author.added`, + `model_permission.granted`, …). Each is a new file in its own module once the seam exists. +- **One-click unsubscribe from an email link.** Deferred to its own plan; see "Unsubscribe: + deferred" below for the design work already done. Emails keep today's + `` `mailto:${env.product.supportEmail}` `` footer link in the meantime. +- The frontend `/unsubscribe` and `/settings/notifications` pages. +- `List-Unsubscribe` / `List-Unsubscribe-Post` headers. +- Removing the dead `src/shared/cqrs/` bus. It is never registered — `CQRSPlugin` is not in + `src/server/plugins/`, which is the only directory the plugin autoloader scans — and + `src/server/di/index.ts:12` passes `fastify.eventBus`, which is `undefined` at that point. + Harmless only because no module injects it. Separate cleanup. + +## Architecture + +``` +model-comment.service.ts ──(event row, in-txn)──► Event table + │ + pg-boss cron ─► event-processor.ts + │ + eventDispatcherService.dispatch(event) + │ + userNotificationService.handleEvent(event) + │ + ┌─────────────────────────────┼─────────────────────────┐ + │ │ │ + modelCommentNotifier preferences lookup delivery ledger + (owns wording + (catalog defaults (unique key = + template choice) + user overrides) idempotency) + │ │ + Intent[] ──────────────────────────────────────────► mailService +``` + +Three seams, each earning its place: + +1. **`eventDispatcherService`** (event module) — routes an event to subscribers and isolates + their failures from each other. One subscriber today. When the FTS indexer described in + `[[legacy-migration-search-spec]]` lands, it becomes a second entry in one array. +2. **`userNotificationService`** — owns preferences, the ledger, and sending. It knows + nothing about comments, models, or any specific event payload. +3. **The `Notifier` contract** — a producing module answers "given this event, who should + hear about it, and what does the email say?" The wording, the template choice, and the + recipient rules stay in the module that understands them. + +### The wiring detail that makes this work + +`userNotificationService` resolves `modelCommentNotifier` **by name** from the awilix cradle: + +```ts +export default function makeUserNotificationService({ + modelCommentNotifier, + notificationPreferenceRepository, + userNotificationRepository, + userRepository, + userNotificationDomain, + transactionManager, + mailService, + logger, +}: Dependencies) { + const notifiers: Array = [modelCommentNotifier]; + // … +} +``` + +There is **no static import edge** from `user-notification` to `model-comment`. The type +arrives through the global ambient `Dependencies` interface, which `model-comment/index.ts` +reopens via declaration merging (`src/declarations.d.ts` is where the global is anchored). +dependency-cruiser sees nothing to complain about, and adding a notifier is a one-line change +to the array plus a file in the producing module. + +The only real import runs the other way: `model-comment` imports the `Notifier` contract it +fulfils. A producer depending on the contract it implements is the correct direction. + +Registration is by filename — `src/server/di/index.ts` autoloads +`modules/**/*.{repository,mapper,service,domain,query,storage}.{js,ts}` as awilix singletons, +naming them with `formatName` (`model-comment.notifier.ts` → `modelCommentNotifier`). This +plan adds `notifier` to that glob. + +## The `Notifier` contract + +`src/modules/user-notification/domain/user-notification.types.ts`: + +```ts +export type NotificationCategory = 'comment.on_your_model' | 'comment.reply_to_you'; + +export type NotificationRecipient = { id: string; email: string; name: string | null }; + +export type NotificationLinks = { unsubscribeUrl: string; preferencesUrl: string }; + +export type NotificationIntent = { + recipientUserId: string; + category: NotificationCategory; + title: string; // stored on the ledger row; surfaced by a later in-app feed + body: string; + url: string; + buildEmail: ( + recipient: NotificationRecipient, + links: NotificationLinks, + ) => Promise; +}; + +export type Notifier = { + eventTypes: ReadonlyArray; + resolve: (event: EventRecord) => Promise>; +}; + +export type EventSubscriber = { + handles: (eventType: string) => boolean; + handleEvent: (event: EventRecord) => Promise; +}; +``` + +Three things to call out: + +- **`buildEmail` is a thunk, not a rendered email.** The notifier is called before + preferences are checked; rendering React Email templates for a recipient who has opted out + would be wasted work. The service invokes the thunk only for intents that survive the + preference gate. +- **`links` is passed in, not constructed.** Today the service fills it with the `mailto:` + support link and the settings-page URL. Keeping it a parameter means the deferred token flow + changes one file instead of every notifier — a notifier that built its own unsubscribe URL + would have to learn about tokens later. +- **`EventRecord` is imported from `event.repository.port.ts`.** A `domain/` file importing + from `database/` is normally forbidden by `no-domain-to-infra-deps` in + `.dependency-cruiser.cjs`, but that rule carries `pathNot: ['port\\.ts$']` — depending on a + port interface is the sanctioned escape hatch. + +## Module layout + +`src/modules/user-notification/`: + +``` +index.ts # Dependencies augmentation +user-notification.service.ts # handleEvent, fan-out, send +user-notification.route.ts # preferences +user-notification.mapper.ts +domain/ + user-notification.domain.ts # catalog, default merge (pure) + user-notification.types.ts # the contract above + user-notification.errors.ts # UnknownCategoryError +database/ + user-notification.repository.{ts,port.ts,mock.ts,record.ts} + notification-preference.repository.{ts,port.ts,mock.ts,record.ts} +dtos/ + notification-preference.response.dto.ts + update-notification-preferences.request.dto.ts +queries/ + get-notification-preferences.query.ts +``` + +`src/modules/event/event-dispatcher.service.ts` — new file in the existing module. + +`src/modules/model-comment/notifications/model-comment.notifier.ts` — new subdirectory. The +existing module subdirectory names in this codebase are `database`, `domain`, `dtos`, +`queries`, `schemas`, `shared`; `notifications/` is new, and reads better than dropping the +notifier at module root next to the service. + +Reasoning for `user-notification` being a full module rather than something under +`src/shared/`: it has a persistence model, a repository, DTOs, routes, and domain rules. That +is a DDD aggregate, not cross-cutting infrastructure. Contrast with +`src/shared/permissions/` in `[[permission-unification-plan]]`, which has no entities and no +repository and correctly lives in `shared/`. + +## Domain module + +`domain/user-notification.domain.ts` is pure — no repository access, no I/O: + +```ts +const catalog = { + 'comment.on_your_model': { + label: 'Comments on your models', + description: 'When someone comments on a model you author.', + defaults: { email: true, inApp: true }, + }, + 'comment.reply_to_you': { + label: 'Replies to your comments', + description: 'When someone replies directly to a comment you wrote.', + defaults: { email: true, inApp: true }, + }, +} as const; + +export default function userNotificationDomain() { + return { + categories, // catalog as an array, for the GET route + isKnownCategory(value: string): value is NotificationCategory, + resolvePreference(category, override): { email: boolean; inApp: boolean }, + }; +} +``` + +The catalog is the single source of truth for what a preference row may reference. A row whose +`category` is not in the catalog is ignored on read and rejected on write — this keeps a +renamed or retired category from silently suppressing notifications. + +The domain stays pure — no repository access, no token issuance. + +## Unsubscribe: deferred + +One-click unsubscribe from an email link is **out of scope for this plan** and gets its own. +Until then, emails keep the footer link they have today, +`` `mailto:${env.product.supportEmail}` ``, and the only self-serve control is the +authenticated preference API. + +This is not a regression — it is exactly what `model-comment.service.ts:80` does now — but it +is worth naming the gap plainly: until either the frontend settings page or the token flow +lands, a recipient who wants fewer emails has to write to support and have a human act on it. +Preferences are enforced from day one; what is missing is a way to reach them without signing +in. + +The design work is recorded here so the later plan starts from a conclusion rather than a blank +page. + +### What that plan should use + +Better Auth's existing `Verification` table via `internalAdapter`, not a hand-rolled HMAC and +not either of the two plugins that look like they fit. `auth.$context` (typed +`Promise`) exposes `internalAdapter` outside of a request, +which is what makes it usable from a cron worker acting for a user who is not present: + +```ts +const ctx = await auth.$context; +await ctx.internalAdapter.createVerificationValue({ + identifier: `notification-unsubscribe:${token}`, + value: userId, + expiresAt, +}); +const row = await ctx.internalAdapter.findVerificationValue(`notification-unsubscribe:${token}`); +``` + +**One token per user, reused across every notification email.** Verification rows are not swept +in the background — `magicLink` checks `expiresAt` at read time +(`plugins/magic-link/index.mjs:125`) rather than deleting on a schedule — so minting per send +would grow a table that sits on the hot path for email verification, password reset, and OAuth +state, without bound. `issueUnsubscribeToken(userId)` finds a live row first and mints only when +there isn't one, refreshing `expiresAt` on reuse. Row count is then bounded by users who have +ever been notified. + +The token answers *who*, not *what*. The category travels in the frontend URL and the request +body; the stored `value` is the only authority on identity. Tampering with the category lets the +holder unsubscribe themselves from a different category, which they could already do — no +privilege gain. In exchange the token becomes **revocable**: delete the row and every +outstanding link for that user dies, something an HMAC cannot do without a secret rotation that +breaks everyone at once. + +Two Better Auth plugins look like they fit and do not: + +- **`oneTimeToken`** — `generateOneTimeToken` is session-gated (its `use` middleware resolves a + session) and defaults to a 3-minute expiry. It is built for cross-domain session handoff. +- **`magicLink`** — works mechanically, but makes an unsubscribe link an authentication + credential. Notification emails get forwarded, sit in shared inboxes, and surface in breaches; + "stop emailing me" must not escalate to "sign in as me." + +The cost to accept: `internalAdapter` is the surface Better Auth's own plugins use, not the +documented `auth.api.*` one. On `^1.5.6` a minor upgrade could move it, so the two calls should +stay behind a single `unsubscribe-token.service.ts` with an e2e test that mints and redeems a +real token, making a break loud rather than silent. + +### Open questions for that plan + +- **`List-Unsubscribe` / `List-Unsubscribe-Post` headers.** A token makes one-click unsubscribe + possible, and it materially improves deliverability with Gmail and Outlook. But + `List-Unsubscribe-Post` requires an endpoint the mail provider can POST to *without* a + browser, so the frontend-page indirection above needs a direct backend URL alongside it. + Decide both together or the header gets bolted on badly. +- **Is `internalAdapter` stable enough to depend on?** It is the API Better Auth's own plugins + use, not the documented `auth.api.*` surface, and `better-auth` is on `^1.5.6` with an active + release cadence. Recommendation: accept it, contained behind one service file. The + alternative — our own `NotificationUnsubscribeToken` table — is more code for the same shape + and re-creates what `Verification` already is. + +### What this plan does now so that plan stays cheap + +`NotificationIntent.buildEmail` already receives a `NotificationLinks` argument +(`{ unsubscribeUrl, preferencesUrl }`) rather than constructing URLs itself. Today the service +fills it with the `mailto:` link and the settings-page URL. When the token flow lands, only the +service changes — every notifier keeps working untouched. Keeping that parameter now is the one +piece of forward-compatibility worth paying for. + +## Service: fan-out + +Per intent returned by a notifier: + +1. Load the recipient via `userRepository.findOneById`. Skip if missing, `deletedAt` is set, + `banned` is true, or there is no `email` — no ledger row is written for someone who could + never receive it (see Open Questions 1). +2. `resolvePreference(intent.category, override)`. Skip the email channel if `email === false`; + skip the ledger row if `inApp === false`. +3. Insert the ledger row inside `transactionManager.run`. A unique-constraint violation on + `(eventId, recipientId, category)` means this was already delivered on an earlier pass — + skip, do not resend. +4. `await intent.buildEmail(recipient, links)` → `await mailService.sendMail(...)`. +5. On success stamp `emailSentAt`. On failure log and leave it null, so a future sweeper can + retry from the ledger without re-running the notifier. + +The service also exposes `handles(eventType)` — the union of its notifiers' `eventTypes` — so +the dispatcher can filter without doing any work. + +## Dispatcher + +```ts +export default function makeEventDispatcherService({ userNotificationService, logger }: Dependencies) { + const subscribers: Array = [userNotificationService]; + + return { + async dispatch(event: EventRecord): Promise { + const targets = subscribers.filter((s) => s.handles(event.type)); + if (targets.length === 0) return; + + const results = await Promise.allSettled(targets.map((s) => s.handleEvent(event))); + const failures = results.filter((r) => r.status === 'rejected'); + for (const failure of failures) { + logger.error({ name: 'EventDispatcher', message: 'Subscriber failed', error: failure.reason }); + } + if (failures.length > 0) throw new AggregateError(failures.map((f) => f.reason)); + }, + }; +} +``` + +`Promise.allSettled` isolates subscribers from each other; the rethrow lets the processor +record the attempt so the event is retried on the next tick. + +## Schema + +```prisma +model UserNotification { + id String @id @default(uuid()) + recipientId String + eventId String + category String + title String + body String @db.Text + url String + emailSentAt DateTime? @db.Timestamptz(3) + readAt DateTime? @db.Timestamptz(3) // unused this pass; here for the planned feed + createdAt DateTime @default(now()) @db.Timestamptz(3) + + recipient User @relation(fields: [recipientId], references: [id], onDelete: Cascade) + event Event @relation(fields: [eventId], references: [id], onDelete: Cascade) + + @@unique([eventId, recipientId, category]) + @@index([recipientId, readAt, createdAt]) +} + +model UserNotificationPreference { + id String @id @default(uuid()) + userId String + category String + email Boolean + inApp Boolean + updatedAt DateTime @updatedAt @db.Timestamptz(3) + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([userId, category]) +} +``` + +On `Event`: `attempts Int @default(0)`, `lastError String? @db.Text`, and the back-relation +`notifications UserNotification[]`. On `User`: `notifications UserNotification[]` and +`notificationPreferences UserNotificationPreference[]`. + +Preference rows are **sparse overrides** — absence means "use the catalog default". No backfill +migration, and adding a category later needs no data change. + +The `@@index([recipientId, readAt, createdAt])` is for the feed that is out of scope here. It +costs one index now and saves a migration later. + +## Routes + +| Route | Auth | Behaviour | +|---|---|---| +| `GET /v1/me/notification-preferences` | `requireAuth` | Catalog merged with the caller's overrides: `{ categories: [{ category, label, description, email, inApp }] }` | +| `PATCH /v1/me/notification-preferences` | `requireAuth` | Body `{ preferences: [{ category, email?, inApp? }] }`. Upsert per category, `204`. Unknown category → 400. | +Both routes require a session. There is no unauthenticated unsubscribe route in this plan — see +"Unsubscribe: deferred". When one is added it must be a **POST**, not a GET: email link scanners +and corporate URL-prefetchers follow GET links and would unsubscribe people who never clicked. + +## Idempotency and failure handling + +- **Duplicate sends** are prevented by `@@unique([eventId, recipientId, category])`. If the + worker dies between sending and `markProcessed`, the next pass re-resolves the same intents, + hits the constraint, and skips. +- **Concurrent workers.** Workers run in the API process (`src/server/index.ts:82`; there is no + separate worker container), so N API replicas means N pollers. pg-boss's `schedule()` stores + the cron in its own schema and emits one job per tick globally, so only one replica processes + each batch. The unique index is belt-and-braces for the case where that assumption breaks. +- **Poison events.** `markFailed(id, error)` increments `attempts` and stores `lastError`. + `findUnprocessed` filters on `attempts < rules.limits.notification.maxEventAttempts`, so a + permanently-failing event stops consuming batch slots after five tries while remaining + visible in the admin events list (`GET /api/v1/admin/events`) with its error attached. +- **Notifier isolation.** One throwing notifier does not prevent the others from running for + the same event. + +Delivery latency becomes up to ~60s (the cron interval) plus SMTP time, against roughly +instant today. This is an accepted trade: nothing about a comment notification is +latency-sensitive, and the alternative — having the service nudge the queue after commit — +would reintroduce a service→queue dependency that the outbox pattern exists to avoid. + +## Migration of existing call sites + +| File | Change | +|---|---| +| `src/modules/mail/mail.service.ts` | Promisify `sendMail` so rejections propagate. Keep both existing log lines. Without this the ledger's `emailSentAt` is meaningless — it would be stamped on every send regardless of outcome. | +| `src/modules/model-comment/model-comment.service.ts` | Delete `truncatePreview` (lines 9-12), `buildEmailModel` (55-76), `notifyOnNewComment` (78-164), and the `void notifyOnNewComment(entity, parent)` call at line 209. Drop the now-unused deps `modelAuthorRepository`, `userRepository`, `getModelCardQuery`, `mailService`, `mailDomain` from the factory signature, and the `env` / `EmailModel` imports. The service becomes purely transactional. | +| `src/modules/model-comment/model-comment.service.spec.ts` | Remove the notification block and the `flushMicrotasks` helper; the transactional assertions stay. The removed assertions move to the notifier spec. | +| `src/workers/event-processor.ts` | Accept `eventDispatcherService`. Per event: `try { await dispatch(event); await markProcessed(id) } catch (e) { await markFailed(id, e) }`. `BATCH_SIZE` moves to `rules.limits.notification.eventBatchSize`. | +| `src/workers/index.ts` | Pull `eventDispatcherService` from `fastify.diContainer.cradle` (line 15) and pass it to `startEventProcessor`. | +| `src/modules/event/database/event.repository.{ts,port.ts,mock.ts}` | Add `markFailed(id, error)`. Add `attempts: number` and `lastError: string \| null` to `EventRecord`. `findUnprocessed` gains the `attempts` ceiling. | +| `src/modules/event/database/event.repository.port.ts` | Add the three emitted-but-missing types to `KnownEvents`: `model.created`, `model.version.created`, `model.version.updated` — all three are emitted by `model-draft.service.ts` (lines 558, 660) but absent from the union. Note the pre-existing inconsistency that `model-version.service.ts` emits `model_version.created` for near-identical semantics; reconciling those two is out of scope here. | +| `src/server/di/index.ts` | Add `notifier` to the first `loadModules` glob (line 20). Delete the second `loadModules` call (lines 33-44): it globs `*.{handler,event-handler}` and matches zero files, and its `asyncInit: 'init'` fires in Fastify's `onReady` — i.e. *after* `startWorkers` at `src/server/index.ts:82` — which is a latent race for anything that self-registers there. | +| `.dependency-cruiser.cjs` | Add `'\\.notifier\\.ts$'` to `applicationLayerPaths` (lines 5-10) so notifiers inherit `no-command-query-to-api-deps` and cannot reach into `dtos/` or routes. | +| `src/config/rules.ts` | Add `limits.notification`: `eventBatchSize: 50`, `maxEventAttempts: 5`, `previewLength: 280`. The first two are currently module-local constants in `event-processor.ts`; the third is the `max = 280` default in `truncatePreview`. | +| `prisma/schema.prisma` | The two models above plus the `Event` and `User` additions, then `yarn run db:migrate:dev` and `yarn run db:generate` with the regenerated client committed. | + +## Rollout + +Five PRs, tracked at `.ongoing/modeling-commons-backend/durable-notifications/`. Merge order: + +1. `mail-await-1` — promisify `sendMail`. Independent, and the current inline path already + sits inside `Promise.allSettled` with a logger, so rejections simply start surfacing there. +2. `schema-2` — tables, `Event` retry columns, repositories and mocks. No behavior change. +3. `preferences-3` — domain, DTOs, query, and the three routes. Fully user-visible on its own, + before any dispatch exists. +4. `dispatch-4` — the contract types, dispatcher, `handleEvent`, processor wiring, DI and + dependency-cruiser changes. No notifiers registered yet, so dispatch is a no-op end to end + while every seam is unit-tested. +5. `comment-notifier-5` — the cutover. Add the notifier, delete the inline send. + +The ordering means the inline send keeps working until PR 5, and PR 5 is a move rather than a +rewrite. + +## Tests + +Unit specs are colocated (`*.spec.ts` next to source), built by calling the factory directly +with a hand-built dependencies literal cast `as never`, using the module's own +`*.repository.mock.ts` and the shared `src/shared/test/mock-transaction-manager.ts`. Domain is +used real, never mocked. Import `beforeEach` from `vitest`, never `node:test` — the wrong +import silently no-ops the hook. + +- **`user-notification.domain.spec.ts`** — catalog defaults; override merge; unknown category + rejected. +- **`user-notification.service.spec.ts`** — opted-out recipient gets no mail and no ledger row; + recipient with no email is skipped; soft-deleted and banned recipients are skipped; ledger + unique-violation short-circuits the resend; a `sendMail` rejection leaves `emailSentAt` null + and is logged rather than thrown; `buildEmail` is never invoked for a filtered-out intent. +- **`event-dispatcher.service.spec.ts`** — filters by `handles`; a throwing subscriber does not + prevent others from running; the aggregate rethrow reaches the caller. +- **`model-comment.notifier.spec.ts`** — carries over the existing assertions from + `model-comment.service.spec.ts`: owner and contributor both notified; commenter never + notified; parent author receives the reply template and is excluded from the + commented-on-model set; `highlightedCommentId` present in the URL with the thread rooted at + the parent; `getModelCardQuery` failure falls back to `'a model'`. +- **`event-processor.spec.ts`** (existing) — updated for `dispatch`; `markFailed` on throw; + an event at `maxEventAttempts` is not re-selected. + +New repository mocks follow `src/modules/model/database/model.repository.mock.ts` — a +`{ [K in keyof Port]: ReturnType }` mapped type, so adding a port method and +forgetting the mock entry is a type error. + +E2E (cucumber, `tests/api/`): a new `user-notification.feature` + `.steps.ts` covering +preference defaults, override roundtrip, and unknown category rejection. Both routes require a +session, so the feature also asserts an anonymous request is rejected. The two scenarios at +`tests/api/model-comment.feature:179` and `:193` currently assert +inline sending and must move here, triggering the batch with `boss.send('process-events', {})` +the way `tests/api/workers.steps.ts:42-45` already does, and capturing mail with the +`mailService.sendMail` monkey-patch and `waitForMailCalls` helper at +`tests/api/model-comment.steps.ts:314-344`. + +## Open questions and decisions + +1. **Skip unreachable recipients at fan-out or at send?** A soft-deleted, banned, or + email-less user could still get a ledger row (useful if the in-app feed later shows it) or + be dropped entirely. Recommendation: drop at fan-out. A banned user has no feed to read, + and a ledger row with a permanently-null `emailSentAt` looks like a delivery failure to any + future sweeper. + +2. **Should `emailSentAt IS NULL` rows be swept and retried?** A second worker could pick up + ledger rows whose send failed and retry them without re-running the notifier. Recommendation: + defer. The event-level `attempts` retry already covers transient SMTP failures, since a + failed dispatch leaves the event unprocessed. The column exists so a dedicated sweeper stays + possible if event-level retry proves too coarse. + +3. **`inApp: false` — suppress the ledger row, or store it and hide it?** Storing everything + makes "turn the feed back on and see history" possible; suppressing keeps the table honest + about what the user asked for. Recommendation: suppress. Storing notifications a user + explicitly declined is the kind of thing that is hard to justify later, and the feed is not + built yet. + +4. **Category naming.** `comment.on_your_model` and `comment.reply_to_you` are user-facing + preference keys, not event types, and deliberately do not mirror `model_comment.created`. + One event fans out to two categories. Confirm this split is wanted before the catalog + ossifies into stored rows. + +5. **Do preference writes belong in this module or in `user`?** They are user-scoped settings, + but they are not `User` columns and do not go through Better Auth. Recommendation: keep them + here. The `user` module's `updateFields` whitelist and the Better Auth `additionalFields` + list stay untouched, which is the point of choosing a separate table. + +## Cross-links + +- `[[legacy-migration-discussion-plan]]` — owns the comment module and its recipient rules; the + notifier is a move of logic that plan put in place, not a redesign of it. +- `[[legacy-migration-search-spec]]` — proposes a pg-boss handler for FTS indexing and asserts + one "already exists". It does not: the placeholder in `event-processor.ts` is all there is, + and the event type that spec names (`model.version.published`) is emitted as + `model.version.created`. `eventDispatcherService` is the seam that spec should register a + second subscriber on. +- `[[permission-unification-plan]]` — the contrasting placement decision: cross-cutting policy + with no entities belongs in `src/shared/`, whereas this feature has a persistence model and + routes, so it is a module. diff --git a/apps/modeling-commons-backend/generated/prisma/edge.js b/apps/modeling-commons-backend/generated/prisma/edge.js index e0e62511..d8703605 100644 --- a/apps/modeling-commons-backend/generated/prisma/edge.js +++ b/apps/modeling-commons-backend/generated/prisma/edge.js @@ -300,7 +300,31 @@ exports.Prisma.EventScalarFieldEnum = { resourceId: 'resourceId', payload: 'payload', createdAt: 'createdAt', - processedAt: 'processedAt' + processedAt: 'processedAt', + attempts: 'attempts', + lastError: 'lastError' +}; + +exports.Prisma.UserNotificationScalarFieldEnum = { + id: 'id', + recipientId: 'recipientId', + eventId: 'eventId', + category: 'category', + title: 'title', + body: 'body', + url: 'url', + emailSentAt: 'emailSentAt', + readAt: 'readAt', + createdAt: 'createdAt' +}; + +exports.Prisma.UserNotificationPreferenceScalarFieldEnum = { + id: 'id', + userId: 'userId', + category: 'category', + email: 'email', + inApp: 'inApp', + updatedAt: 'updatedAt' }; exports.Prisma.SortOrder = { @@ -392,7 +416,9 @@ exports.Prisma.ModelName = { ModelDraft: 'ModelDraft', ModelComment: 'ModelComment', ModelCommentLike: 'ModelCommentLike', - Event: 'Event' + Event: 'Event', + UserNotification: 'UserNotification', + UserNotificationPreference: 'UserNotificationPreference' }; /** * Create the Client @@ -402,14 +428,14 @@ const config = { "clientVersion": "7.8.0", "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\n// Enums\n\nenum ModelVisibility {\n public\n private\n unlisted\n}\n\nenum SystemRole {\n admin\n moderator\n user\n}\n\nenum UserKind {\n student\n teacher\n researcher\n other\n}\n\nenum AuthorRole {\n owner\n contributor\n}\n\nenum PermissionLevel {\n read\n write\n admin\n}\n\nenum ModelInteractionKind {\n view\n run\n download\n share\n}\n\nenum ModelFileKind {\n model\n additional\n}\n\n// Better Auth core tables\n\nmodel User {\n id String @id @default(uuid())\n name String?\n email String? @unique\n emailVerified Boolean @default(false)\n image String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n // Extended fields\n systemRole SystemRole @default(user)\n userKind UserKind @default(other)\n isProfilePublic Boolean @default(false)\n deletedAt DateTime?\n\n // User profile fields\n bio String?\n country String?\n socialLinks Json? // e.g. [{ platform: 'twitter', url: '...' }]\n dob DateTime? @db.Date\n affiliation String?\n\n // Better Auth relations\n accounts Account[]\n sessions Session[]\n verifications Verification[]\n\n // Domain relations\n authoredModels ModelAuthor[]\n grantedPermissions ModelPermission[]\n events Event[]\n modelLikes ModelLike[]\n modelInteractions ModelInteraction[]\n modelDrafts ModelDraft[]\n comments ModelComment[]\n commentLikes ModelCommentLike[]\n\n // Better Auth Admin plugin\n role String?\n banned Boolean?\n banReason String?\n banExpires DateTime? @db.Timestamptz(3)\n\n // Application behavior\n onboardedAt DateTime? @db.Timestamptz(3)\n legacyId Int? @unique\n\n // Passkey relations\n passkeys Passkey[]\n}\n\nmodel Account {\n id String @id @default(uuid())\n userId String\n accountId String\n providerId String\n accessToken String?\n refreshToken String?\n accessTokenExpiresAt DateTime? @db.Timestamptz(3)\n refreshTokenExpiresAt DateTime? @db.Timestamptz(3)\n scope String?\n idToken String?\n password String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n}\n\nmodel Session {\n id String @id @default(uuid())\n userId String\n expiresAt DateTime\n token String @unique\n ipAddress String?\n userAgent String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n // Better Auth Admin plugin fields\n impersonatedBy String?\n\n @@index([userId])\n}\n\nmodel Verification {\n id String @id @default(uuid())\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime? @default(now()) @db.Timestamptz(3)\n updatedAt DateTime? @updatedAt @db.Timestamptz(3)\n\n user User? @relation(fields: [userId], references: [id], onDelete: Cascade)\n userId String?\n\n @@index([userId])\n}\n\nmodel Passkey {\n id String @id @default(uuid())\n name String?\n publicKey String\n userId String\n credentialID String\n counter Int\n deviceType String\n backedUp Boolean\n transports String?\n createdAt DateTime? @default(now()) @db.Timestamptz(3)\n aaguid String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\n// Domain models\n\nmodel Model {\n id String @id @default(uuid())\n legacyId Int? @unique\n latestVersionNumber Int?\n parentModelId String?\n parentVersionNumber Int?\n visibility ModelVisibility @default(public)\n isEndorsed Boolean @default(false)\n isLibraryModel Boolean @default(false)\n viewCount Int @default(0)\n runCount Int @default(0)\n downloadCount Int @default(0)\n shareCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n deletedAt DateTime?\n\n latestVersion ModelVersion? @relation(\"LatestVersion\", fields: [id, latestVersionNumber], references: [modelId, versionNumber])\n parentModel Model? @relation(\"ModelParent\", fields: [parentModelId], references: [id])\n childModels Model[] @relation(\"ModelParent\")\n parentVersion ModelVersion? @relation(\"ParentVersion\", fields: [parentModelId, parentVersionNumber], references: [modelId, versionNumber])\n\n versions ModelVersion[] @relation(\"ModelVersions\")\n authors ModelAuthor[]\n permissions ModelPermission[]\n additionalFiles ModelAdditionalFile[]\n likes ModelLike[]\n interactions ModelInteraction[]\n drafts ModelDraft[]\n comments ModelComment[]\n\n @@unique([id, latestVersionNumber])\n @@index([parentModelId])\n @@index([parentModelId, parentVersionNumber])\n @@index([viewCount])\n @@index([runCount])\n @@index([downloadCount])\n}\n\nmodel ModelVersion {\n modelId String\n versionNumber Int\n title String\n description String?\n changeSummary String?\n previewImageFileKey String?\n netlogoFileKey String\n netlogoVersion String?\n infoTab String?\n createdAt DateTime @default(now())\n finalizedAt DateTime?\n\n model Model @relation(\"ModelVersions\", fields: [modelId], references: [id], onDelete: Cascade)\n\n // Reverse relations\n latestOfModel Model? @relation(\"LatestVersion\")\n parentOfModels Model[] @relation(\"ParentVersion\")\n\n tags ModelVersionTag[]\n taggedAdditionalFiles ModelAdditionalFile[]\n\n @@id([modelId, versionNumber])\n @@index([modelId])\n}\n\nmodel ModelVersionTag {\n modelId String\n versionNumber Int\n tagId String\n createdAt DateTime @default(now())\n\n modelVersion ModelVersion @relation(fields: [modelId, versionNumber], references: [modelId, versionNumber], onDelete: Cascade)\n tag Tag @relation(fields: [tagId], references: [id], onDelete: Cascade)\n\n @@id([modelId, versionNumber, tagId])\n @@index([tagId])\n}\n\nmodel ModelAdditionalFile {\n id String @id @default(uuid())\n modelId String\n taggedVersionNumber Int\n fileKey String\n kind ModelFileKind @default(additional)\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n taggedVersion ModelVersion @relation(fields: [modelId, taggedVersionNumber], references: [modelId, versionNumber])\n\n @@index([modelId])\n @@index([modelId, taggedVersionNumber])\n}\n\nmodel Tag {\n id String @id @default(uuid())\n legacyId Int? @unique\n name String @unique\n displayName String?\n createdAt DateTime @default(now())\n\n modelVersions ModelVersionTag[]\n}\n\nmodel ModelAuthor {\n modelId String\n userId String\n role AuthorRole\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelId, userId])\n @@index([userId])\n}\n\nmodel ModelPermission {\n id String @id @default(uuid())\n modelId String\n granteeUserId String?\n permissionLevel PermissionLevel\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n granteeUser User? @relation(fields: [granteeUserId], references: [id], onDelete: Cascade)\n\n @@unique([modelId, granteeUserId])\n @@index([modelId])\n @@index([granteeUserId])\n}\n\nmodel ModelLike {\n modelId String\n userId String\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelId, userId])\n @@index([userId])\n @@index([modelId, createdAt])\n}\n\nmodel ModelInteraction {\n id String @id @default(uuid())\n modelId String\n versionNumber Int?\n kind ModelInteractionKind\n userId String?\n sessionId String?\n ipHash String?\n userAgent String?\n referer String?\n geo Json?\n cookie String?\n\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n\n @@index([modelId, kind, createdAt])\n @@index([modelId, kind, userId])\n @@index([userId, createdAt])\n @@index([createdAt])\n}\n\nmodel ModelDraft {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n modelId String?\n model Model? @relation(fields: [modelId], references: [id], onDelete: Cascade)\n\n schemaVersion Int\n data Json\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@index([modelId])\n}\n\nmodel ModelComment {\n id String @id @default(uuid())\n legacyId Int? @unique\n\n parentId String?\n userId String?\n\n modelId String\n versionNumber Int?\n\n content String? @db.Text\n likesCount Int @default(0)\n\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n editedAt DateTime? @db.Timestamptz(3)\n deletedAt DateTime? @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n parent ModelComment? @relation(\"CommentReplies\", fields: [parentId], references: [id], onDelete: Cascade)\n replies ModelComment[] @relation(\"CommentReplies\")\n\n likes ModelCommentLike[]\n\n @@index([modelId, parentId, createdAt])\n @@index([parentId])\n @@index([userId])\n}\n\nmodel ModelCommentLike {\n modelCommentId String\n userId String\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n modelComment ModelComment @relation(fields: [modelCommentId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelCommentId, userId])\n @@index([userId])\n}\n\nmodel Event {\n id String @id @default(uuid())\n type String\n actorId String\n resourceType String\n resourceId String\n payload Json\n createdAt DateTime @default(now())\n processedAt DateTime?\n\n actor User @relation(fields: [actorId], references: [id])\n\n @@index([actorId])\n @@index([resourceType, resourceId])\n @@index([type])\n @@index([processedAt])\n}\n" + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\n// Enums\n\nenum ModelVisibility {\n public\n private\n unlisted\n}\n\nenum SystemRole {\n admin\n moderator\n user\n}\n\nenum UserKind {\n student\n teacher\n researcher\n other\n}\n\nenum AuthorRole {\n owner\n contributor\n}\n\nenum PermissionLevel {\n read\n write\n admin\n}\n\nenum ModelInteractionKind {\n view\n run\n download\n share\n}\n\nenum ModelFileKind {\n model\n additional\n}\n\n// Better Auth core tables\n\nmodel User {\n id String @id @default(uuid())\n name String?\n email String? @unique\n emailVerified Boolean @default(false)\n image String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n // Extended fields\n systemRole SystemRole @default(user)\n userKind UserKind @default(other)\n isProfilePublic Boolean @default(false)\n deletedAt DateTime?\n\n // User profile fields\n bio String?\n country String?\n socialLinks Json? // e.g. [{ platform: 'twitter', url: '...' }]\n dob DateTime? @db.Date\n affiliation String?\n\n // Better Auth relations\n accounts Account[]\n sessions Session[]\n verifications Verification[]\n\n // Domain relations\n authoredModels ModelAuthor[]\n grantedPermissions ModelPermission[]\n events Event[]\n modelLikes ModelLike[]\n modelInteractions ModelInteraction[]\n modelDrafts ModelDraft[]\n comments ModelComment[]\n commentLikes ModelCommentLike[]\n notifications UserNotification[]\n notificationPreferences UserNotificationPreference[]\n\n // Better Auth Admin plugin\n role String?\n banned Boolean?\n banReason String?\n banExpires DateTime? @db.Timestamptz(3)\n\n // Application behavior\n onboardedAt DateTime? @db.Timestamptz(3)\n legacyId Int? @unique\n\n // Passkey relations\n passkeys Passkey[]\n}\n\nmodel Account {\n id String @id @default(uuid())\n userId String\n accountId String\n providerId String\n accessToken String?\n refreshToken String?\n accessTokenExpiresAt DateTime? @db.Timestamptz(3)\n refreshTokenExpiresAt DateTime? @db.Timestamptz(3)\n scope String?\n idToken String?\n password String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n}\n\nmodel Session {\n id String @id @default(uuid())\n userId String\n expiresAt DateTime\n token String @unique\n ipAddress String?\n userAgent String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n // Better Auth Admin plugin fields\n impersonatedBy String?\n\n @@index([userId])\n}\n\nmodel Verification {\n id String @id @default(uuid())\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime? @default(now()) @db.Timestamptz(3)\n updatedAt DateTime? @updatedAt @db.Timestamptz(3)\n\n user User? @relation(fields: [userId], references: [id], onDelete: Cascade)\n userId String?\n\n @@index([userId])\n}\n\nmodel Passkey {\n id String @id @default(uuid())\n name String?\n publicKey String\n userId String\n credentialID String\n counter Int\n deviceType String\n backedUp Boolean\n transports String?\n createdAt DateTime? @default(now()) @db.Timestamptz(3)\n aaguid String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\n// Domain models\n\nmodel Model {\n id String @id @default(uuid())\n legacyId Int? @unique\n latestVersionNumber Int?\n parentModelId String?\n parentVersionNumber Int?\n visibility ModelVisibility @default(public)\n isEndorsed Boolean @default(false)\n isLibraryModel Boolean @default(false)\n viewCount Int @default(0)\n runCount Int @default(0)\n downloadCount Int @default(0)\n shareCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n deletedAt DateTime?\n\n latestVersion ModelVersion? @relation(\"LatestVersion\", fields: [id, latestVersionNumber], references: [modelId, versionNumber])\n parentModel Model? @relation(\"ModelParent\", fields: [parentModelId], references: [id])\n childModels Model[] @relation(\"ModelParent\")\n parentVersion ModelVersion? @relation(\"ParentVersion\", fields: [parentModelId, parentVersionNumber], references: [modelId, versionNumber])\n\n versions ModelVersion[] @relation(\"ModelVersions\")\n authors ModelAuthor[]\n permissions ModelPermission[]\n additionalFiles ModelAdditionalFile[]\n likes ModelLike[]\n interactions ModelInteraction[]\n drafts ModelDraft[]\n comments ModelComment[]\n\n @@unique([id, latestVersionNumber])\n @@index([parentModelId])\n @@index([parentModelId, parentVersionNumber])\n @@index([viewCount])\n @@index([runCount])\n @@index([downloadCount])\n}\n\nmodel ModelVersion {\n modelId String\n versionNumber Int\n title String\n description String?\n changeSummary String?\n previewImageFileKey String?\n netlogoFileKey String\n netlogoVersion String?\n infoTab String?\n createdAt DateTime @default(now())\n finalizedAt DateTime?\n\n model Model @relation(\"ModelVersions\", fields: [modelId], references: [id], onDelete: Cascade)\n\n // Reverse relations\n latestOfModel Model? @relation(\"LatestVersion\")\n parentOfModels Model[] @relation(\"ParentVersion\")\n\n tags ModelVersionTag[]\n taggedAdditionalFiles ModelAdditionalFile[]\n\n @@id([modelId, versionNumber])\n @@index([modelId])\n}\n\nmodel ModelVersionTag {\n modelId String\n versionNumber Int\n tagId String\n createdAt DateTime @default(now())\n\n modelVersion ModelVersion @relation(fields: [modelId, versionNumber], references: [modelId, versionNumber], onDelete: Cascade)\n tag Tag @relation(fields: [tagId], references: [id], onDelete: Cascade)\n\n @@id([modelId, versionNumber, tagId])\n @@index([tagId])\n}\n\nmodel ModelAdditionalFile {\n id String @id @default(uuid())\n modelId String\n taggedVersionNumber Int\n fileKey String\n kind ModelFileKind @default(additional)\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n taggedVersion ModelVersion @relation(fields: [modelId, taggedVersionNumber], references: [modelId, versionNumber])\n\n @@index([modelId])\n @@index([modelId, taggedVersionNumber])\n}\n\nmodel Tag {\n id String @id @default(uuid())\n legacyId Int? @unique\n name String @unique\n displayName String?\n createdAt DateTime @default(now())\n\n modelVersions ModelVersionTag[]\n}\n\nmodel ModelAuthor {\n modelId String\n userId String\n role AuthorRole\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelId, userId])\n @@index([userId])\n}\n\nmodel ModelPermission {\n id String @id @default(uuid())\n modelId String\n granteeUserId String?\n permissionLevel PermissionLevel\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n granteeUser User? @relation(fields: [granteeUserId], references: [id], onDelete: Cascade)\n\n @@unique([modelId, granteeUserId])\n @@index([modelId])\n @@index([granteeUserId])\n}\n\nmodel ModelLike {\n modelId String\n userId String\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelId, userId])\n @@index([userId])\n @@index([modelId, createdAt])\n}\n\nmodel ModelInteraction {\n id String @id @default(uuid())\n modelId String\n versionNumber Int?\n kind ModelInteractionKind\n userId String?\n sessionId String?\n ipHash String?\n userAgent String?\n referer String?\n geo Json?\n cookie String?\n\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n\n @@index([modelId, kind, createdAt])\n @@index([modelId, kind, userId])\n @@index([userId, createdAt])\n @@index([createdAt])\n}\n\nmodel ModelDraft {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n modelId String?\n model Model? @relation(fields: [modelId], references: [id], onDelete: Cascade)\n\n schemaVersion Int\n data Json\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@index([modelId])\n}\n\nmodel ModelComment {\n id String @id @default(uuid())\n legacyId Int? @unique\n\n parentId String?\n userId String?\n\n modelId String\n versionNumber Int?\n\n content String? @db.Text\n likesCount Int @default(0)\n\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n editedAt DateTime? @db.Timestamptz(3)\n deletedAt DateTime? @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n parent ModelComment? @relation(\"CommentReplies\", fields: [parentId], references: [id], onDelete: Cascade)\n replies ModelComment[] @relation(\"CommentReplies\")\n\n likes ModelCommentLike[]\n\n @@index([modelId, parentId, createdAt])\n @@index([parentId])\n @@index([userId])\n}\n\nmodel ModelCommentLike {\n modelCommentId String\n userId String\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n modelComment ModelComment @relation(fields: [modelCommentId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelCommentId, userId])\n @@index([userId])\n}\n\nmodel Event {\n id String @id @default(uuid())\n type String\n actorId String\n resourceType String\n resourceId String\n payload Json\n createdAt DateTime @default(now())\n processedAt DateTime?\n attempts Int @default(0)\n lastError String? @db.Text\n\n actor User @relation(fields: [actorId], references: [id])\n\n notifications UserNotification[]\n\n @@index([actorId])\n @@index([resourceType, resourceId])\n @@index([type])\n @@index([processedAt])\n}\n\nmodel UserNotification {\n id String @id @default(uuid())\n recipientId String\n eventId String\n category String\n title String\n body String @db.Text\n url String\n emailSentAt DateTime? @db.Timestamptz(3)\n readAt DateTime? @db.Timestamptz(3)\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n recipient User @relation(fields: [recipientId], references: [id], onDelete: Cascade)\n event Event @relation(fields: [eventId], references: [id], onDelete: Cascade)\n\n @@unique([eventId, recipientId, category])\n @@index([recipientId, readAt, createdAt])\n}\n\nmodel UserNotificationPreference {\n id String @id @default(uuid())\n userId String\n category String\n email Boolean\n inApp Boolean\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([userId, category])\n}\n" } -config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"systemRole\",\"kind\":\"enum\",\"type\":\"SystemRole\"},{\"name\":\"userKind\",\"kind\":\"enum\",\"type\":\"UserKind\"},{\"name\":\"isProfilePublic\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"socialLinks\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"dob\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"affiliation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"verifications\",\"kind\":\"object\",\"type\":\"Verification\",\"relationName\":\"UserToVerification\"},{\"name\":\"authoredModels\",\"kind\":\"object\",\"type\":\"ModelAuthor\",\"relationName\":\"ModelAuthorToUser\"},{\"name\":\"grantedPermissions\",\"kind\":\"object\",\"type\":\"ModelPermission\",\"relationName\":\"ModelPermissionToUser\"},{\"name\":\"events\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToUser\"},{\"name\":\"modelLikes\",\"kind\":\"object\",\"type\":\"ModelLike\",\"relationName\":\"ModelLikeToUser\"},{\"name\":\"modelInteractions\",\"kind\":\"object\",\"type\":\"ModelInteraction\",\"relationName\":\"ModelInteractionToUser\"},{\"name\":\"modelDrafts\",\"kind\":\"object\",\"type\":\"ModelDraft\",\"relationName\":\"ModelDraftToUser\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelCommentToUser\"},{\"name\":\"commentLikes\",\"kind\":\"object\",\"type\":\"ModelCommentLike\",\"relationName\":\"ModelCommentLikeToUser\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"banReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banExpires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"onboardedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"passkeys\",\"kind\":\"object\",\"type\":\"Passkey\",\"relationName\":\"PasskeyToUser\"}],\"dbName\":null},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"},{\"name\":\"impersonatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToVerification\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Passkey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"publicKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"credentialID\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"counter\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deviceType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"backedUp\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"transports\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"aaguid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PasskeyToUser\"}],\"dbName\":null},\"Model\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"latestVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentModelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"visibility\",\"kind\":\"enum\",\"type\":\"ModelVisibility\"},{\"name\":\"isEndorsed\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isLibraryModel\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"viewCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"runCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"downloadCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"shareCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"latestVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"LatestVersion\"},{\"name\":\"parentModel\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelParent\"},{\"name\":\"childModels\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelParent\"},{\"name\":\"parentVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ParentVersion\"},{\"name\":\"versions\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelVersions\"},{\"name\":\"authors\",\"kind\":\"object\",\"type\":\"ModelAuthor\",\"relationName\":\"ModelToModelAuthor\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"ModelPermission\",\"relationName\":\"ModelToModelPermission\"},{\"name\":\"additionalFiles\",\"kind\":\"object\",\"type\":\"ModelAdditionalFile\",\"relationName\":\"ModelToModelAdditionalFile\"},{\"name\":\"likes\",\"kind\":\"object\",\"type\":\"ModelLike\",\"relationName\":\"ModelToModelLike\"},{\"name\":\"interactions\",\"kind\":\"object\",\"type\":\"ModelInteraction\",\"relationName\":\"ModelToModelInteraction\"},{\"name\":\"drafts\",\"kind\":\"object\",\"type\":\"ModelDraft\",\"relationName\":\"ModelToModelDraft\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelToModelComment\"}],\"dbName\":null},\"ModelVersion\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"changeSummary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"previewImageFileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"netlogoFileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"netlogoVersion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"infoTab\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finalizedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelVersions\"},{\"name\":\"latestOfModel\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"LatestVersion\"},{\"name\":\"parentOfModels\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ParentVersion\"},{\"name\":\"tags\",\"kind\":\"object\",\"type\":\"ModelVersionTag\",\"relationName\":\"ModelVersionToModelVersionTag\"},{\"name\":\"taggedAdditionalFiles\",\"kind\":\"object\",\"type\":\"ModelAdditionalFile\",\"relationName\":\"ModelAdditionalFileToModelVersion\"}],\"dbName\":null},\"ModelVersionTag\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tagId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelVersionToModelVersionTag\"},{\"name\":\"tag\",\"kind\":\"object\",\"type\":\"Tag\",\"relationName\":\"ModelVersionTagToTag\"}],\"dbName\":null},\"ModelAdditionalFile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"taggedVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"kind\",\"kind\":\"enum\",\"type\":\"ModelFileKind\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelAdditionalFile\"},{\"name\":\"taggedVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelAdditionalFileToModelVersion\"}],\"dbName\":null},\"Tag\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelVersions\",\"kind\":\"object\",\"type\":\"ModelVersionTag\",\"relationName\":\"ModelVersionTagToTag\"}],\"dbName\":null},\"ModelAuthor\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"AuthorRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelAuthor\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelAuthorToUser\"}],\"dbName\":null},\"ModelPermission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"granteeUserId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissionLevel\",\"kind\":\"enum\",\"type\":\"PermissionLevel\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelPermission\"},{\"name\":\"granteeUser\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelPermissionToUser\"}],\"dbName\":null},\"ModelLike\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelLike\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelLikeToUser\"}],\"dbName\":null},\"ModelInteraction\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"kind\",\"kind\":\"enum\",\"type\":\"ModelInteractionKind\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"referer\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"geo\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"cookie\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelInteraction\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelInteractionToUser\"}],\"dbName\":null},\"ModelDraft\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelDraftToUser\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelDraft\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ModelComment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"likesCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"editedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelComment\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelCommentToUser\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"CommentReplies\"},{\"name\":\"replies\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"CommentReplies\"},{\"name\":\"likes\",\"kind\":\"object\",\"type\":\"ModelCommentLike\",\"relationName\":\"ModelCommentToModelCommentLike\"}],\"dbName\":null},\"ModelCommentLike\":{\"fields\":[{\"name\":\"modelCommentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelComment\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelCommentToModelCommentLike\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelCommentLikeToUser\"}],\"dbName\":null},\"Event\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"actorId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"processedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actor\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EventToUser\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"systemRole\",\"kind\":\"enum\",\"type\":\"SystemRole\"},{\"name\":\"userKind\",\"kind\":\"enum\",\"type\":\"UserKind\"},{\"name\":\"isProfilePublic\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"socialLinks\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"dob\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"affiliation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"verifications\",\"kind\":\"object\",\"type\":\"Verification\",\"relationName\":\"UserToVerification\"},{\"name\":\"authoredModels\",\"kind\":\"object\",\"type\":\"ModelAuthor\",\"relationName\":\"ModelAuthorToUser\"},{\"name\":\"grantedPermissions\",\"kind\":\"object\",\"type\":\"ModelPermission\",\"relationName\":\"ModelPermissionToUser\"},{\"name\":\"events\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToUser\"},{\"name\":\"modelLikes\",\"kind\":\"object\",\"type\":\"ModelLike\",\"relationName\":\"ModelLikeToUser\"},{\"name\":\"modelInteractions\",\"kind\":\"object\",\"type\":\"ModelInteraction\",\"relationName\":\"ModelInteractionToUser\"},{\"name\":\"modelDrafts\",\"kind\":\"object\",\"type\":\"ModelDraft\",\"relationName\":\"ModelDraftToUser\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelCommentToUser\"},{\"name\":\"commentLikes\",\"kind\":\"object\",\"type\":\"ModelCommentLike\",\"relationName\":\"ModelCommentLikeToUser\"},{\"name\":\"notifications\",\"kind\":\"object\",\"type\":\"UserNotification\",\"relationName\":\"UserToUserNotification\"},{\"name\":\"notificationPreferences\",\"kind\":\"object\",\"type\":\"UserNotificationPreference\",\"relationName\":\"UserToUserNotificationPreference\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"banReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banExpires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"onboardedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"passkeys\",\"kind\":\"object\",\"type\":\"Passkey\",\"relationName\":\"PasskeyToUser\"}],\"dbName\":null},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"},{\"name\":\"impersonatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToVerification\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Passkey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"publicKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"credentialID\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"counter\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deviceType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"backedUp\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"transports\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"aaguid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PasskeyToUser\"}],\"dbName\":null},\"Model\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"latestVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentModelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"visibility\",\"kind\":\"enum\",\"type\":\"ModelVisibility\"},{\"name\":\"isEndorsed\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isLibraryModel\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"viewCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"runCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"downloadCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"shareCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"latestVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"LatestVersion\"},{\"name\":\"parentModel\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelParent\"},{\"name\":\"childModels\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelParent\"},{\"name\":\"parentVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ParentVersion\"},{\"name\":\"versions\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelVersions\"},{\"name\":\"authors\",\"kind\":\"object\",\"type\":\"ModelAuthor\",\"relationName\":\"ModelToModelAuthor\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"ModelPermission\",\"relationName\":\"ModelToModelPermission\"},{\"name\":\"additionalFiles\",\"kind\":\"object\",\"type\":\"ModelAdditionalFile\",\"relationName\":\"ModelToModelAdditionalFile\"},{\"name\":\"likes\",\"kind\":\"object\",\"type\":\"ModelLike\",\"relationName\":\"ModelToModelLike\"},{\"name\":\"interactions\",\"kind\":\"object\",\"type\":\"ModelInteraction\",\"relationName\":\"ModelToModelInteraction\"},{\"name\":\"drafts\",\"kind\":\"object\",\"type\":\"ModelDraft\",\"relationName\":\"ModelToModelDraft\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelToModelComment\"}],\"dbName\":null},\"ModelVersion\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"changeSummary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"previewImageFileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"netlogoFileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"netlogoVersion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"infoTab\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finalizedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelVersions\"},{\"name\":\"latestOfModel\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"LatestVersion\"},{\"name\":\"parentOfModels\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ParentVersion\"},{\"name\":\"tags\",\"kind\":\"object\",\"type\":\"ModelVersionTag\",\"relationName\":\"ModelVersionToModelVersionTag\"},{\"name\":\"taggedAdditionalFiles\",\"kind\":\"object\",\"type\":\"ModelAdditionalFile\",\"relationName\":\"ModelAdditionalFileToModelVersion\"}],\"dbName\":null},\"ModelVersionTag\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tagId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelVersionToModelVersionTag\"},{\"name\":\"tag\",\"kind\":\"object\",\"type\":\"Tag\",\"relationName\":\"ModelVersionTagToTag\"}],\"dbName\":null},\"ModelAdditionalFile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"taggedVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"kind\",\"kind\":\"enum\",\"type\":\"ModelFileKind\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelAdditionalFile\"},{\"name\":\"taggedVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelAdditionalFileToModelVersion\"}],\"dbName\":null},\"Tag\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelVersions\",\"kind\":\"object\",\"type\":\"ModelVersionTag\",\"relationName\":\"ModelVersionTagToTag\"}],\"dbName\":null},\"ModelAuthor\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"AuthorRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelAuthor\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelAuthorToUser\"}],\"dbName\":null},\"ModelPermission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"granteeUserId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissionLevel\",\"kind\":\"enum\",\"type\":\"PermissionLevel\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelPermission\"},{\"name\":\"granteeUser\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelPermissionToUser\"}],\"dbName\":null},\"ModelLike\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelLike\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelLikeToUser\"}],\"dbName\":null},\"ModelInteraction\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"kind\",\"kind\":\"enum\",\"type\":\"ModelInteractionKind\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"referer\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"geo\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"cookie\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelInteraction\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelInteractionToUser\"}],\"dbName\":null},\"ModelDraft\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelDraftToUser\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelDraft\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ModelComment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"likesCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"editedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelComment\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelCommentToUser\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"CommentReplies\"},{\"name\":\"replies\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"CommentReplies\"},{\"name\":\"likes\",\"kind\":\"object\",\"type\":\"ModelCommentLike\",\"relationName\":\"ModelCommentToModelCommentLike\"}],\"dbName\":null},\"ModelCommentLike\":{\"fields\":[{\"name\":\"modelCommentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelComment\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelCommentToModelCommentLike\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelCommentLikeToUser\"}],\"dbName\":null},\"Event\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"actorId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"processedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"attempts\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"lastError\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"actor\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EventToUser\"},{\"name\":\"notifications\",\"kind\":\"object\",\"type\":\"UserNotification\",\"relationName\":\"EventToUserNotification\"}],\"dbName\":null},\"UserNotification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"recipientId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"body\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"readAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"recipient\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserNotification\"},{\"name\":\"event\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToUserNotification\"}],\"dbName\":null},\"UserNotificationPreference\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"inApp\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserNotificationPreference\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"sessions\",\"verifications\",\"model\",\"latestOfModel\",\"parentOfModels\",\"modelVersion\",\"modelVersions\",\"_count\",\"tag\",\"tags\",\"taggedVersion\",\"taggedAdditionalFiles\",\"latestVersion\",\"parentModel\",\"childModels\",\"parentVersion\",\"versions\",\"authors\",\"granteeUser\",\"permissions\",\"additionalFiles\",\"likes\",\"interactions\",\"drafts\",\"parent\",\"replies\",\"modelComment\",\"comments\",\"authoredModels\",\"grantedPermissions\",\"actor\",\"events\",\"modelLikes\",\"modelInteractions\",\"modelDrafts\",\"commentLikes\",\"passkeys\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"Passkey.findUnique\",\"Passkey.findUniqueOrThrow\",\"Passkey.findFirst\",\"Passkey.findFirstOrThrow\",\"Passkey.findMany\",\"Passkey.createOne\",\"Passkey.createMany\",\"Passkey.createManyAndReturn\",\"Passkey.updateOne\",\"Passkey.updateMany\",\"Passkey.updateManyAndReturn\",\"Passkey.upsertOne\",\"Passkey.deleteOne\",\"Passkey.deleteMany\",\"Passkey.groupBy\",\"Passkey.aggregate\",\"Model.findUnique\",\"Model.findUniqueOrThrow\",\"Model.findFirst\",\"Model.findFirstOrThrow\",\"Model.findMany\",\"Model.createOne\",\"Model.createMany\",\"Model.createManyAndReturn\",\"Model.updateOne\",\"Model.updateMany\",\"Model.updateManyAndReturn\",\"Model.upsertOne\",\"Model.deleteOne\",\"Model.deleteMany\",\"Model.groupBy\",\"Model.aggregate\",\"ModelVersion.findUnique\",\"ModelVersion.findUniqueOrThrow\",\"ModelVersion.findFirst\",\"ModelVersion.findFirstOrThrow\",\"ModelVersion.findMany\",\"ModelVersion.createOne\",\"ModelVersion.createMany\",\"ModelVersion.createManyAndReturn\",\"ModelVersion.updateOne\",\"ModelVersion.updateMany\",\"ModelVersion.updateManyAndReturn\",\"ModelVersion.upsertOne\",\"ModelVersion.deleteOne\",\"ModelVersion.deleteMany\",\"ModelVersion.groupBy\",\"ModelVersion.aggregate\",\"ModelVersionTag.findUnique\",\"ModelVersionTag.findUniqueOrThrow\",\"ModelVersionTag.findFirst\",\"ModelVersionTag.findFirstOrThrow\",\"ModelVersionTag.findMany\",\"ModelVersionTag.createOne\",\"ModelVersionTag.createMany\",\"ModelVersionTag.createManyAndReturn\",\"ModelVersionTag.updateOne\",\"ModelVersionTag.updateMany\",\"ModelVersionTag.updateManyAndReturn\",\"ModelVersionTag.upsertOne\",\"ModelVersionTag.deleteOne\",\"ModelVersionTag.deleteMany\",\"ModelVersionTag.groupBy\",\"ModelVersionTag.aggregate\",\"ModelAdditionalFile.findUnique\",\"ModelAdditionalFile.findUniqueOrThrow\",\"ModelAdditionalFile.findFirst\",\"ModelAdditionalFile.findFirstOrThrow\",\"ModelAdditionalFile.findMany\",\"ModelAdditionalFile.createOne\",\"ModelAdditionalFile.createMany\",\"ModelAdditionalFile.createManyAndReturn\",\"ModelAdditionalFile.updateOne\",\"ModelAdditionalFile.updateMany\",\"ModelAdditionalFile.updateManyAndReturn\",\"ModelAdditionalFile.upsertOne\",\"ModelAdditionalFile.deleteOne\",\"ModelAdditionalFile.deleteMany\",\"ModelAdditionalFile.groupBy\",\"ModelAdditionalFile.aggregate\",\"Tag.findUnique\",\"Tag.findUniqueOrThrow\",\"Tag.findFirst\",\"Tag.findFirstOrThrow\",\"Tag.findMany\",\"Tag.createOne\",\"Tag.createMany\",\"Tag.createManyAndReturn\",\"Tag.updateOne\",\"Tag.updateMany\",\"Tag.updateManyAndReturn\",\"Tag.upsertOne\",\"Tag.deleteOne\",\"Tag.deleteMany\",\"Tag.groupBy\",\"Tag.aggregate\",\"ModelAuthor.findUnique\",\"ModelAuthor.findUniqueOrThrow\",\"ModelAuthor.findFirst\",\"ModelAuthor.findFirstOrThrow\",\"ModelAuthor.findMany\",\"ModelAuthor.createOne\",\"ModelAuthor.createMany\",\"ModelAuthor.createManyAndReturn\",\"ModelAuthor.updateOne\",\"ModelAuthor.updateMany\",\"ModelAuthor.updateManyAndReturn\",\"ModelAuthor.upsertOne\",\"ModelAuthor.deleteOne\",\"ModelAuthor.deleteMany\",\"ModelAuthor.groupBy\",\"ModelAuthor.aggregate\",\"ModelPermission.findUnique\",\"ModelPermission.findUniqueOrThrow\",\"ModelPermission.findFirst\",\"ModelPermission.findFirstOrThrow\",\"ModelPermission.findMany\",\"ModelPermission.createOne\",\"ModelPermission.createMany\",\"ModelPermission.createManyAndReturn\",\"ModelPermission.updateOne\",\"ModelPermission.updateMany\",\"ModelPermission.updateManyAndReturn\",\"ModelPermission.upsertOne\",\"ModelPermission.deleteOne\",\"ModelPermission.deleteMany\",\"ModelPermission.groupBy\",\"ModelPermission.aggregate\",\"ModelLike.findUnique\",\"ModelLike.findUniqueOrThrow\",\"ModelLike.findFirst\",\"ModelLike.findFirstOrThrow\",\"ModelLike.findMany\",\"ModelLike.createOne\",\"ModelLike.createMany\",\"ModelLike.createManyAndReturn\",\"ModelLike.updateOne\",\"ModelLike.updateMany\",\"ModelLike.updateManyAndReturn\",\"ModelLike.upsertOne\",\"ModelLike.deleteOne\",\"ModelLike.deleteMany\",\"ModelLike.groupBy\",\"ModelLike.aggregate\",\"ModelInteraction.findUnique\",\"ModelInteraction.findUniqueOrThrow\",\"ModelInteraction.findFirst\",\"ModelInteraction.findFirstOrThrow\",\"ModelInteraction.findMany\",\"ModelInteraction.createOne\",\"ModelInteraction.createMany\",\"ModelInteraction.createManyAndReturn\",\"ModelInteraction.updateOne\",\"ModelInteraction.updateMany\",\"ModelInteraction.updateManyAndReturn\",\"ModelInteraction.upsertOne\",\"ModelInteraction.deleteOne\",\"ModelInteraction.deleteMany\",\"ModelInteraction.groupBy\",\"ModelInteraction.aggregate\",\"ModelDraft.findUnique\",\"ModelDraft.findUniqueOrThrow\",\"ModelDraft.findFirst\",\"ModelDraft.findFirstOrThrow\",\"ModelDraft.findMany\",\"ModelDraft.createOne\",\"ModelDraft.createMany\",\"ModelDraft.createManyAndReturn\",\"ModelDraft.updateOne\",\"ModelDraft.updateMany\",\"ModelDraft.updateManyAndReturn\",\"ModelDraft.upsertOne\",\"ModelDraft.deleteOne\",\"ModelDraft.deleteMany\",\"ModelDraft.groupBy\",\"ModelDraft.aggregate\",\"ModelComment.findUnique\",\"ModelComment.findUniqueOrThrow\",\"ModelComment.findFirst\",\"ModelComment.findFirstOrThrow\",\"ModelComment.findMany\",\"ModelComment.createOne\",\"ModelComment.createMany\",\"ModelComment.createManyAndReturn\",\"ModelComment.updateOne\",\"ModelComment.updateMany\",\"ModelComment.updateManyAndReturn\",\"ModelComment.upsertOne\",\"ModelComment.deleteOne\",\"ModelComment.deleteMany\",\"ModelComment.groupBy\",\"ModelComment.aggregate\",\"ModelCommentLike.findUnique\",\"ModelCommentLike.findUniqueOrThrow\",\"ModelCommentLike.findFirst\",\"ModelCommentLike.findFirstOrThrow\",\"ModelCommentLike.findMany\",\"ModelCommentLike.createOne\",\"ModelCommentLike.createMany\",\"ModelCommentLike.createManyAndReturn\",\"ModelCommentLike.updateOne\",\"ModelCommentLike.updateMany\",\"ModelCommentLike.updateManyAndReturn\",\"ModelCommentLike.upsertOne\",\"ModelCommentLike.deleteOne\",\"ModelCommentLike.deleteMany\",\"ModelCommentLike.groupBy\",\"ModelCommentLike.aggregate\",\"Event.findUnique\",\"Event.findUniqueOrThrow\",\"Event.findFirst\",\"Event.findFirstOrThrow\",\"Event.findMany\",\"Event.createOne\",\"Event.createMany\",\"Event.createManyAndReturn\",\"Event.updateOne\",\"Event.updateMany\",\"Event.updateManyAndReturn\",\"Event.upsertOne\",\"Event.deleteOne\",\"Event.deleteMany\",\"Event.groupBy\",\"Event.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"type\",\"actorId\",\"resourceType\",\"resourceId\",\"payload\",\"createdAt\",\"processedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"modelCommentId\",\"userId\",\"legacyId\",\"parentId\",\"modelId\",\"versionNumber\",\"content\",\"likesCount\",\"updatedAt\",\"editedAt\",\"deletedAt\",\"schemaVersion\",\"ModelInteractionKind\",\"kind\",\"sessionId\",\"ipHash\",\"userAgent\",\"referer\",\"geo\",\"cookie\",\"granteeUserId\",\"PermissionLevel\",\"permissionLevel\",\"AuthorRole\",\"role\",\"name\",\"displayName\",\"every\",\"some\",\"none\",\"taggedVersionNumber\",\"fileKey\",\"ModelFileKind\",\"tagId\",\"title\",\"description\",\"changeSummary\",\"previewImageFileKey\",\"netlogoFileKey\",\"netlogoVersion\",\"infoTab\",\"finalizedAt\",\"latestVersionNumber\",\"parentModelId\",\"parentVersionNumber\",\"ModelVisibility\",\"visibility\",\"isEndorsed\",\"isLibraryModel\",\"viewCount\",\"runCount\",\"downloadCount\",\"shareCount\",\"publicKey\",\"credentialID\",\"counter\",\"deviceType\",\"backedUp\",\"transports\",\"aaguid\",\"identifier\",\"value\",\"expiresAt\",\"token\",\"ipAddress\",\"impersonatedBy\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"idToken\",\"password\",\"email\",\"emailVerified\",\"image\",\"SystemRole\",\"systemRole\",\"UserKind\",\"userKind\",\"isProfilePublic\",\"bio\",\"country\",\"socialLinks\",\"dob\",\"affiliation\",\"banned\",\"banReason\",\"banExpires\",\"onboardedAt\",\"modelCommentId_userId\",\"modelId_userId\",\"modelId_granteeUserId\",\"modelId_versionNumber\",\"modelId_versionNumber_tagId\",\"id_latestVersionNumber\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "ygqqAaACJQQAAJUFACAFAACWBQAgBgAAlwUAICAAAO4EACAhAACJBQAgIgAAigUAICQAAJgFACAlAACLBQAgJgAAjAUAICcAAI0FACAoAADvBAAgKQAAmQUAINICAACRBQAw0wIAAA8AENQCAACRBQAw1QIBAAAAAdsCQADDBAAh8AICAAAAAfYCQADDBAAh-AJAAOMEACGGAwEAwgQAIYcDAQDCBAAhuQMBAAAAAboDIADiBAAhuwMBAMIEACG9AwAAkgW9AyK_AwAAkwW_AyLAAyAA4gQAIcEDAQDCBAAhwgMBAMIEACHDAwAA9AQAIMQDQADjBAAhxQMBAMIEACHGAyAAlAUAIccDAQDCBAAhyANAAOMEACHJA0AA4wQAIQEAAAABACARAwAA5AQAINICAACcBQAw0wIAAAMAENQCAACcBQAw1QIBAMAEACHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACGwAwEAwAQAIbEDAQDABAAhsgMBAMIEACGzAwEAwgQAIbQDQADjBAAhtQNAAOMEACG2AwEAwgQAIbcDAQDCBAAhuAMBAMIEACEIAwAAnAkAILIDAACdBQAgswMAAJ0FACC0AwAAnQUAILUDAACdBQAgtgMAAJ0FACC3AwAAnQUAILgDAACdBQAgEQMAAOQEACDSAgAAnAUAMNMCAAADABDUAgAAnAUAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACGwAwEAwAQAIbEDAQDABAAhsgMBAMIEACGzAwEAwgQAIbQDQADjBAAhtQNAAOMEACG2AwEAwgQAIbcDAQDCBAAhuAMBAMIEACEDAAAAAwAgAQAABAAwAgAABQAgDQMAAOQEACDSAgAAmwUAMNMCAAAHABDUAgAAmwUAMNUCAQDABAAh2wJAAMMEACHvAgEAwAQAIfYCQADDBAAh_gIBAMIEACGsA0AAwwQAIa0DAQDABAAhrgMBAMIEACGvAwEAwgQAIQQDAACcCQAg_gIAAJ0FACCuAwAAnQUAIK8DAACdBQAgDQMAAOQEACDSAgAAmwUAMNMCAAAHABDUAgAAmwUAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACH-AgEAwgQAIawDQADDBAAhrQMBAAAAAa4DAQDCBAAhrwMBAMIEACEDAAAABwAgAQAACAAwAgAACQAgCwMAAOwEACDSAgAAmgUAMNMCAAALABDUAgAAmgUAMNUCAQDABAAh2wJAAOMEACHvAgEAwgQAIfYCQADjBAAhqgMBAMAEACGrAwEAwAQAIawDQADDBAAhBAMAAJwJACDbAgAAnQUAIO8CAACdBQAg9gIAAJ0FACALAwAA7AQAINICAACaBQAw0wIAAAsAENQCAACaBQAw1QIBAAAAAdsCQADjBAAh7wIBAMIEACH2AkAA4wQAIaoDAQDABAAhqwMBAMAEACGsA0AAwwQAIQMAAAALACABAAAMADACAAANACAlBAAAlQUAIAUAAJYFACAGAACXBQAgIAAA7gQAICEAAIkFACAiAACKBQAgJAAAmAUAICUAAIsFACAmAACMBQAgJwAAjQUAICgAAO8EACApAACZBQAg0gIAAJEFADDTAgAADwAQ1AIAAJEFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhhgMBAMIEACGHAwEAwgQAIbkDAQDCBAAhugMgAOIEACG7AwEAwgQAIb0DAACSBb0DIr8DAACTBb8DIsADIADiBAAhwQMBAMIEACHCAwEAwgQAIcMDAAD0BAAgxANAAOMEACHFAwEAwgQAIcYDIACUBQAhxwMBAMIEACHIA0AA4wQAIckDQADjBAAhAQAAAA8AIAkDAADkBAAgBwAA6wQAINICAACPBQAw0wIAABEAENQCAACPBQAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhhgMAAJAFhgMiAgMAAJwJACAHAACeCQAgCgMAAOQEACAHAADrBAAg0gIAAI8FADDTAgAAEQAQ1AIAAI8FADDbAkAAwwQAIe8CAQDABAAh8gIBAMAEACGGAwAAkAWGAyLLAwAAjgUAIAMAAAARACABAAASADACAAATACATBwAA6wQAIAgAAPEEACAJAAD8BAAgDgAAxAQAIBAAAP0EACDSAgAA-wQAMNMCAAAVABDUAgAA-wQAMNsCQADDBAAh8gIBAMAEACHzAgIA4QQAIZADAQDABAAhkQMBAMIEACGSAwEAwgQAIZMDAQDCBAAhlAMBAMAEACGVAwEAwgQAIZYDAQDCBAAhlwNAAOMEACEBAAAAFQAgHhEAAIcFACASAADxBAAgEwAA_AQAIBQAAIcFACAVAACIBQAgFgAAiQUAIBgAAIoFACAZAAD9BAAgGgAAiwUAIBsAAIwFACAcAACNBQAgIAAA7gQAINICAACFBQAw0wIAABcAENQCAACFBQAw1QIBAMAEACHbAkAAwwQAIfACAgDBBAAh9gJAAMMEACH4AkAA4wQAIZgDAgDBBAAhmQMBAMIEACGaAwIAwQQAIZwDAACGBZwDIp0DIADiBAAhngMgAOIEACGfAwIA4QQAIaADAgDhBAAhoQMCAOEEACGiAwIA4QQAIQEAAAAXACAREQAAoQkAIBIAAJ4JACATAACfCQAgFAAAoQkAIBUAAKMJACAWAACTCQAgGAAAlAkAIBkAAKAJACAaAACWCQAgGwAAlwkAIBwAAJgJACAgAACZCQAg8AIAAJ0FACD4AgAAnQUAIJgDAACdBQAgmQMAAJ0FACCaAwAAnQUAIB8RAACHBQAgEgAA8QQAIBMAAPwEACAUAACHBQAgFQAAiAUAIBYAAIkFACAYAACKBQAgGQAA_QQAIBoAAIsFACAbAACMBQAgHAAAjQUAICAAAO4EACDSAgAAhQUAMNMCAAAXABDUAgAAhQUAMNUCAQAAAAHbAkAAwwQAIfACAgAAAAH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAhzwMAAIQFACADAAAAFwAgAQAAGQAwAgAAGgAgCQoAAIAFACANAACDBQAg0gIAAIIFADDTAgAAHAAQ1AIAAIIFADDbAkAAwwQAIfICAQDABAAh8wICAOEEACGPAwEAwAQAIQIKAAChCQAgDQAAogkAIAoKAACABQAgDQAAgwUAINICAACCBQAw0wIAABwAENQCAACCBQAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhjwMBAMAEACHOAwAAgQUAIAMAAAAcACABAAAdADACAAAeACADAAAAHAAgAQAAHQAwAgAAHgAgAQAAABwAIAsHAADrBAAgDwAAgAUAINICAAD-BAAw0wIAACIAENQCAAD-BAAw1QIBAMAEACHbAkAAwwQAIfICAQDABAAh-wIAAP8EjwMijAMCAOEEACGNAwEAwAQAIQIHAACeCQAgDwAAoQkAIAsHAADrBAAgDwAAgAUAINICAAD-BAAw0wIAACIAENQCAAD-BAAw1QIBAAAAAdsCQADDBAAh8gIBAMAEACH7AgAA_wSPAyKMAwIA4QQAIY0DAQDABAAhAwAAACIAIAEAACMAMAIAACQAIAEAAAAXACABAAAAHAAgAQAAACIAIAEAAAAXACADAAAAFwAgAQAAGQAwAgAAGgAgAQAAABUAIAsHAACeCQAgCAAAngkAIAkAAJ8JACAOAACWBgAgEAAAoAkAIJEDAACdBQAgkgMAAJ0FACCTAwAAnQUAIJUDAACdBQAglgMAAJ0FACCXAwAAnQUAIBQHAADrBAAgCAAA8QQAIAkAAPwEACAOAADEBAAgEAAA_QQAINICAAD7BAAw0wIAABUAENQCAAD7BAAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhkAMBAMAEACGRAwEAwgQAIZIDAQDCBAAhkwMBAMIEACGUAwEAwAQAIZUDAQDCBAAhlgMBAMIEACGXA0AA4wQAIc0DAAD6BAAgAwAAABUAIAEAACwAMAIAAC0AIAMAAAARACABAAASADACAAATACAKBwAA6wQAIBcAAOwEACDSAgAA-AQAMNMCAAAwABDUAgAA-AQAMNUCAQDABAAh2wJAAMMEACHyAgEAwAQAIYIDAQDCBAAhhAMAAPkEhAMiAwcAAJ4JACAXAACcCQAgggMAAJ0FACALBwAA6wQAIBcAAOwEACDSAgAA-AQAMNMCAAAwABDUAgAA-AQAMNUCAQAAAAHbAkAAwwQAIfICAQDABAAhggMBAMIEACGEAwAA-QSEAyLMAwAA9wQAIAMAAAAwACABAAAxADACAAAyACABAAAADwAgAwAAACIAIAEAACMAMAIAACQAIAgDAADkBAAgBwAA6wQAINICAAD2BAAw0wIAADYAENQCAAD2BAAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhAgMAAJwJACAHAACeCQAgCQMAAOQEACAHAADrBAAg0gIAAPYEADDTAgAANgAQ1AIAAPYEADDbAkAAwwQAIe8CAQDABAAh8gIBAMAEACHLAwAA9QQAIAMAAAA2ACABAAA3ADACAAA4ACARAwAA7AQAIAcAAOsEACDSAgAA8gQAMNMCAAA6ABDUAgAA8gQAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACEKAwAAnAkAIAcAAJ4JACDvAgAAnQUAIPMCAACdBQAg_AIAAJ0FACD9AgAAnQUAIP4CAACdBQAg_wIAAJ0FACCAAwAAnQUAIIEDAACdBQAgEQMAAOwEACAHAADrBAAg0gIAAPIEADDTAgAAOgAQ1AIAAPIEADDVAgEAAAAB2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACEDAAAAOgAgAQAAOwAwAgAAPAAgAQAAAA8AIAwDAADkBAAgBwAA8QQAIC8AAOYEACDSAgAA8AQAMNMCAAA_ABDUAgAA8AQAMNUCAQDABAAh2wJAAMMEACHvAgEAwAQAIfICAQDCBAAh9gJAAMMEACH5AgIA4QQAIQMDAACcCQAgBwAAngkAIPICAACdBQAgDAMAAOQEACAHAADxBAAgLwAA5gQAINICAADwBAAw0wIAAD8AENQCAADwBAAw1QIBAAAAAdsCQADDBAAh7wIBAMAEACHyAgEAwgQAIfYCQADDBAAh-QICAOEEACEDAAAAPwAgAQAAQAAwAgAAQQAgAQAAABcAIBQDAADsBAAgBwAA6wQAIBoAAO8EACAdAADtBAAgHgAA7gQAINICAADqBAAw0wIAAEQAENQCAADqBAAw1QIBAMAEACHbAkAAwwQAIe8CAQDCBAAh8AICAMEEACHxAgEAwgQAIfICAQDABAAh8wICAMEEACH0AgEAwgQAIfUCAgDhBAAh9gJAAMMEACH3AkAA4wQAIfgCQADjBAAhDAMAAJwJACAHAACeCQAgGgAAmgkAIB0AAJ0JACAeAACZCQAg7wIAAJ0FACDwAgAAnQUAIPECAACdBQAg8wIAAJ0FACD0AgAAnQUAIPcCAACdBQAg-AIAAJ0FACAUAwAA7AQAIAcAAOsEACAaAADvBAAgHQAA7QQAIB4AAO4EACDSAgAA6gQAMNMCAABEABDUAgAA6gQAMNUCAQAAAAHbAkAAwwQAIe8CAQDCBAAh8AICAAAAAfECAQDCBAAh8gIBAMAEACHzAgIAwQQAIfQCAQDCBAAh9QICAOEEACH2AkAAwwQAIfcCQADjBAAh-AJAAOMEACEDAAAARAAgAQAARQAwAgAARgAgAQAAAA8AIAEAAABEACADAAAARAAgAQAARQAwAgAARgAgCAMAAOQEACAfAADpBAAg0gIAAOgEADDTAgAASwAQ1AIAAOgEADDbAkAAwwQAIe4CAQDABAAh7wIBAMAEACECAwAAnAkAIB8AAJ0JACAJAwAA5AQAIB8AAOkEACDSAgAA6AQAMNMCAABLABDUAgAA6AQAMNsCQADDBAAh7gIBAMAEACHvAgEAwAQAIcoDAADnBAAgAwAAAEsAIAEAAEwAMAIAAE0AIAEAAABEACABAAAASwAgAQAAABcAIAEAAAAVACABAAAAEQAgAQAAADAAIAEAAAAiACABAAAANgAgAQAAADoAIAEAAAA_ACABAAAARAAgAwAAADAAIAEAADEAMAIAADIAIAwjAADkBAAg0gIAAOUEADDTAgAAWwAQ1AIAAOUEADDVAgEAwAQAIdYCAQDABAAh1wIBAMAEACHYAgEAwAQAIdkCAQDABAAh2gIAAOYEACDbAkAAwwQAIdwCQADjBAAhAiMAAJwJACDcAgAAnQUAIAwjAADkBAAg0gIAAOUEADDTAgAAWwAQ1AIAAOUEADDVAgEAAAAB1gIBAMAEACHXAgEAwAQAIdgCAQDABAAh2QIBAMAEACHaAgAA5gQAINsCQADDBAAh3AJAAOMEACEDAAAAWwAgAQAAXAAwAgAAXQAgAwAAADYAIAEAADcAMAIAADgAIAMAAAA6ACABAAA7ADACAAA8ACADAAAAPwAgAQAAQAAwAgAAQQAgAwAAAEQAIAEAAEUAMAIAAEYAIAMAAABLACABAABMADACAABNACAPAwAA5AQAINICAADgBAAw0wIAAGQAENQCAADgBAAw1QIBAMAEACHbAkAA4wQAIe8CAQDABAAhhwMBAMIEACGjAwEAwAQAIaQDAQDABAAhpQMCAOEEACGmAwEAwAQAIacDIADiBAAhqAMBAMIEACGpAwEAwgQAIQUDAACcCQAg2wIAAJ0FACCHAwAAnQUAIKgDAACdBQAgqQMAAJ0FACAPAwAA5AQAINICAADgBAAw0wIAAGQAENQCAADgBAAw1QIBAAAAAdsCQADjBAAh7wIBAMAEACGHAwEAwgQAIaMDAQDABAAhpAMBAMAEACGlAwIA4QQAIaYDAQDABAAhpwMgAOIEACGoAwEAwgQAIakDAQDCBAAhAwAAAGQAIAEAAGUAMAIAAGYAIAEAAAADACABAAAABwAgAQAAAAsAIAEAAAARACABAAAAMAAgAQAAAFsAIAEAAAA2ACABAAAAOgAgAQAAAD8AIAEAAABEACABAAAASwAgAQAAAGQAIAEAAAABACAbBAAAkAkAIAUAAJEJACAGAACSCQAgIAAAmQkAICEAAJMJACAiAACUCQAgJAAAlQkAICUAAJYJACAmAACXCQAgJwAAmAkAICgAAJoJACApAACbCQAg8AIAAJ0FACD4AgAAnQUAIIYDAACdBQAghwMAAJ0FACC5AwAAnQUAILsDAACdBQAgwQMAAJ0FACDCAwAAnQUAIMMDAACdBQAgxAMAAJ0FACDFAwAAnQUAIMYDAACdBQAgxwMAAJ0FACDIAwAAnQUAIMkDAACdBQAgAwAAAA8AIAEAAHUAMAIAAAEAIAMAAAAPACABAAB1ADACAAABACADAAAADwAgAQAAdQAwAgAAAQAgIgQAAIQJACAFAACFCQAgBgAAhgkAICAAAI0JACAhAACHCQAgIgAAiAkAICQAAIkJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQEvAAB5ACAW1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAS8AAHsAMAEvAAB7ADAiBAAA_QcAIAUAAP4HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhAgAAAAEAIC8AAH4AIBbVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhhgMBALMFACGHAwEAswUAIbkDAQCzBQAhugMgANIGACG7AwEAswUAIb0DAAD6B70DIr8DAAD7B78DIsADIADSBgAhwQMBALMFACHCAwEAswUAIcMDgAAAAAHEA0AAowUAIcUDAQCzBQAhxgMgAPwHACHHAwEAswUAIcgDQACjBQAhyQNAAKMFACECAAAADwAgLwAAgAEAIAIAAAAPACAvAACAAQAgAwAAAAEAIDYAAHkAIDcAAH4AIAEAAAABACABAAAADwAgFAwAAPUHACA8AAD2BwAgPQAA-QcAID4AAPgHACA_AAD3BwAg8AIAAJ0FACD4AgAAnQUAIIYDAACdBQAghwMAAJ0FACC5AwAAnQUAILsDAACdBQAgwQMAAJ0FACDCAwAAnQUAIMMDAACdBQAgxAMAAJ0FACDFAwAAnQUAIMYDAACdBQAgxwMAAJ0FACDIAwAAnQUAIMkDAACdBQAgGdICAADWBAAw0wIAAIcBABDUAgAA1gQAMNUCAQCWBAAh2wJAAJgEACHwAgIApQQAIfYCQACYBAAh-AJAAJkEACGGAwEApgQAIYcDAQCmBAAhuQMBAKYEACG6AyAAzQQAIbsDAQCmBAAhvQMAANcEvQMivwMAANgEvwMiwAMgAM0EACHBAwEApgQAIcIDAQCmBAAhwwMAALEEACDEA0AAmQQAIcUDAQCmBAAhxgMgANkEACHHAwEApgQAIcgDQACZBAAhyQNAAJkEACEDAAAADwAgAQAAhgEAMDsAAIcBACADAAAADwAgAQAAdQAwAgAAAQAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACAOAwAA9AcAINUCAQAAAAHbAkAAAAAB7wIBAAAAAfYCQAAAAAGwAwEAAAABsQMBAAAAAbIDAQAAAAGzAwEAAAABtANAAAAAAbUDQAAAAAG2AwEAAAABtwMBAAAAAbgDAQAAAAEBLwAAjwEAIA3VAgEAAAAB2wJAAAAAAe8CAQAAAAH2AkAAAAABsAMBAAAAAbEDAQAAAAGyAwEAAAABswMBAAAAAbQDQAAAAAG1A0AAAAABtgMBAAAAAbcDAQAAAAG4AwEAAAABAS8AAJEBADABLwAAkQEAMA4DAADzBwAg1QIBAKEFACHbAkAAogUAIe8CAQChBQAh9gJAAKIFACGwAwEAoQUAIbEDAQChBQAhsgMBALMFACGzAwEAswUAIbQDQACjBQAhtQNAAKMFACG2AwEAswUAIbcDAQCzBQAhuAMBALMFACECAAAABQAgLwAAlAEAIA3VAgEAoQUAIdsCQACiBQAh7wIBAKEFACH2AkAAogUAIbADAQChBQAhsQMBAKEFACGyAwEAswUAIbMDAQCzBQAhtANAAKMFACG1A0AAowUAIbYDAQCzBQAhtwMBALMFACG4AwEAswUAIQIAAAADACAvAACWAQAgAgAAAAMAIC8AAJYBACADAAAABQAgNgAAjwEAIDcAAJQBACABAAAABQAgAQAAAAMAIAoMAADwBwAgPgAA8gcAID8AAPEHACCyAwAAnQUAILMDAACdBQAgtAMAAJ0FACC1AwAAnQUAILYDAACdBQAgtwMAAJ0FACC4AwAAnQUAIBDSAgAA1QQAMNMCAACdAQAQ1AIAANUEADDVAgEAlgQAIdsCQACYBAAh7wIBAJYEACH2AkAAmAQAIbADAQCWBAAhsQMBAJYEACGyAwEApgQAIbMDAQCmBAAhtANAAJkEACG1A0AAmQQAIbYDAQCmBAAhtwMBAKYEACG4AwEApgQAIQMAAAADACABAACcAQAwOwAAnQEAIAMAAAADACABAAAEADACAAAFACABAAAACQAgAQAAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAoDAADvBwAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB9gJAAAAAAf4CAQAAAAGsA0AAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABAS8AAKUBACAJ1QIBAAAAAdsCQAAAAAHvAgEAAAAB9gJAAAAAAf4CAQAAAAGsA0AAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABAS8AAKcBADABLwAApwEAMAoDAADuBwAg1QIBAKEFACHbAkAAogUAIe8CAQChBQAh9gJAAKIFACH-AgEAswUAIawDQACiBQAhrQMBAKEFACGuAwEAswUAIa8DAQCzBQAhAgAAAAkAIC8AAKoBACAJ1QIBAKEFACHbAkAAogUAIe8CAQChBQAh9gJAAKIFACH-AgEAswUAIawDQACiBQAhrQMBAKEFACGuAwEAswUAIa8DAQCzBQAhAgAAAAcAIC8AAKwBACACAAAABwAgLwAArAEAIAMAAAAJACA2AAClAQAgNwAAqgEAIAEAAAAJACABAAAABwAgBgwAAOsHACA-AADtBwAgPwAA7AcAIP4CAACdBQAgrgMAAJ0FACCvAwAAnQUAIAzSAgAA1AQAMNMCAACzAQAQ1AIAANQEADDVAgEAlgQAIdsCQACYBAAh7wIBAJYEACH2AkAAmAQAIf4CAQCmBAAhrANAAJgEACGtAwEAlgQAIa4DAQCmBAAhrwMBAKYEACEDAAAABwAgAQAAsgEAMDsAALMBACADAAAABwAgAQAACAAwAgAACQAgAQAAAA0AIAEAAAANACADAAAACwAgAQAADAAwAgAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACAIAwAA6gcAINUCAQAAAAHbAkAAAAAB7wIBAAAAAfYCQAAAAAGqAwEAAAABqwMBAAAAAawDQAAAAAEBLwAAuwEAIAfVAgEAAAAB2wJAAAAAAe8CAQAAAAH2AkAAAAABqgMBAAAAAasDAQAAAAGsA0AAAAABAS8AAL0BADABLwAAvQEAMAEAAAAPACAIAwAA6QcAINUCAQChBQAh2wJAAKMFACHvAgEAswUAIfYCQACjBQAhqgMBAKEFACGrAwEAoQUAIawDQACiBQAhAgAAAA0AIC8AAMEBACAH1QIBAKEFACHbAkAAowUAIe8CAQCzBQAh9gJAAKMFACGqAwEAoQUAIasDAQChBQAhrANAAKIFACECAAAACwAgLwAAwwEAIAIAAAALACAvAADDAQAgAQAAAA8AIAMAAAANACA2AAC7AQAgNwAAwQEAIAEAAAANACABAAAACwAgBgwAAOYHACA-AADoBwAgPwAA5wcAINsCAACdBQAg7wIAAJ0FACD2AgAAnQUAIArSAgAA0wQAMNMCAADLAQAQ1AIAANMEADDVAgEAlgQAIdsCQACZBAAh7wIBAKYEACH2AkAAmQQAIaoDAQCWBAAhqwMBAJYEACGsA0AAmAQAIQMAAAALACABAADKAQAwOwAAywEAIAMAAAALACABAAAMADACAAANACABAAAAZgAgAQAAAGYAIAMAAABkACABAABlADACAABmACADAAAAZAAgAQAAZQAwAgAAZgAgAwAAAGQAIAEAAGUAMAIAAGYAIAwDAADlBwAg1QIBAAAAAdsCQAAAAAHvAgEAAAABhwMBAAAAAaMDAQAAAAGkAwEAAAABpQMCAAAAAaYDAQAAAAGnAyAAAAABqAMBAAAAAakDAQAAAAEBLwAA0wEAIAvVAgEAAAAB2wJAAAAAAe8CAQAAAAGHAwEAAAABowMBAAAAAaQDAQAAAAGlAwIAAAABpgMBAAAAAacDIAAAAAGoAwEAAAABqQMBAAAAAQEvAADVAQAwAS8AANUBADAMAwAA5AcAINUCAQChBQAh2wJAAKMFACHvAgEAoQUAIYcDAQCzBQAhowMBAKEFACGkAwEAoQUAIaUDAgC0BQAhpgMBAKEFACGnAyAA0gYAIagDAQCzBQAhqQMBALMFACECAAAAZgAgLwAA2AEAIAvVAgEAoQUAIdsCQACjBQAh7wIBAKEFACGHAwEAswUAIaMDAQChBQAhpAMBAKEFACGlAwIAtAUAIaYDAQChBQAhpwMgANIGACGoAwEAswUAIakDAQCzBQAhAgAAAGQAIC8AANoBACACAAAAZAAgLwAA2gEAIAMAAABmACA2AADTAQAgNwAA2AEAIAEAAABmACABAAAAZAAgCQwAAN8HACA8AADgBwAgPQAA4wcAID4AAOIHACA_AADhBwAg2wIAAJ0FACCHAwAAnQUAIKgDAACdBQAgqQMAAJ0FACAO0gIAANIEADDTAgAA4QEAENQCAADSBAAw1QIBAJYEACHbAkAAmQQAIe8CAQCWBAAhhwMBAKYEACGjAwEAlgQAIaQDAQCWBAAhpQMCAKcEACGmAwEAlgQAIacDIADNBAAhqAMBAKYEACGpAwEApgQAIQMAAABkACABAADgAQAwOwAA4QEAIAMAAABkACABAABlADACAABmACABAAAAGgAgAQAAABoAIAMAAAAXACABAAAZADACAAAaACADAAAAFwAgAQAAGQAwAgAAGgAgAwAAABcAIAEAABkAMAIAABoAIBsRAADOBwAgEgAAvwcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgHAAAyAcAICAAAMkHACDVAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZgDAgAAAAGZAwEAAAABmgMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAS8AAOkBACAP1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQEvAADrAQAwAS8AAOsBADABAAAAFQAgAQAAABcAIAEAAAAVACAbEQAA1AYAIBIAANUGACATAADWBgAgFAAA1AcAIBUAANcGACAWAADYBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIQIAAAAaACAvAADxAQAgD9UCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACECAAAAFwAgLwAA8wEAIAIAAAAXACAvAADzAQAgAQAAABUAIAEAAAAXACABAAAAFQAgAwAAABoAIDYAAOkBACA3AADxAQAgAQAAABoAIAEAAAAXACAKDAAA2gcAIDwAANsHACA9AADeBwAgPgAA3QcAID8AANwHACDwAgAAnQUAIPgCAACdBQAgmAMAAJ0FACCZAwAAnQUAIJoDAACdBQAgEtICAADLBAAw0wIAAP0BABDUAgAAywQAMNUCAQCWBAAh2wJAAJgEACHwAgIApQQAIfYCQACYBAAh-AJAAJkEACGYAwIApQQAIZkDAQCmBAAhmgMCAKUEACGcAwAAzAScAyKdAyAAzQQAIZ4DIADNBAAhnwMCAKcEACGgAwIApwQAIaEDAgCnBAAhogMCAKcEACEDAAAAFwAgAQAA_AEAMDsAAP0BACADAAAAFwAgAQAAGQAwAgAAGgAgAQAAAC0AIAEAAAAtACADAAAAFQAgAQAALAAwAgAALQAgAwAAABUAIAEAACwAMAIAAC0AIAMAAAAVACABAAAsADACAAAtACAQBwAA2QcAIAgAALkHACAJAAC6BwAgDgAAuwcAIBAAALwHACDbAkAAAAAB8gIBAAAAAfMCAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwEAAAABlwNAAAAAAQEvAACFAgAgC9sCQAAAAAHyAgEAAAAB8wICAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDAQAAAAGXA0AAAAABAS8AAIcCADABLwAAhwIAMBAHAACtBgAgCAAArgYAIAkAAK8GACAOAACwBgAgEAAAsQYAINsCQACiBQAh8gIBAKEFACHzAgIAtAUAIZADAQChBQAhkQMBALMFACGSAwEAswUAIZMDAQCzBQAhlAMBAKEFACGVAwEAswUAIZYDAQCzBQAhlwNAAKMFACECAAAALQAgLwAAigIAIAvbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhAgAAABUAIC8AAIwCACACAAAAFQAgLwAAjAIAIAMAAAAtACA2AACFAgAgNwAAigIAIAEAAAAtACABAAAAFQAgCwwAAKgGACA8AACpBgAgPQAArAYAID4AAKsGACA_AACqBgAgkQMAAJ0FACCSAwAAnQUAIJMDAACdBQAglQMAAJ0FACCWAwAAnQUAIJcDAACdBQAgDtICAADKBAAw0wIAAJMCABDUAgAAygQAMNsCQACYBAAh8gIBAJYEACHzAgIApwQAIZADAQCWBAAhkQMBAKYEACGSAwEApgQAIZMDAQCmBAAhlAMBAJYEACGVAwEApgQAIZYDAQCmBAAhlwNAAJkEACEDAAAAFQAgAQAAkgIAMDsAAJMCACADAAAAFQAgAQAALAAwAgAALQAgAQAAAB4AIAEAAAAeACADAAAAHAAgAQAAHQAwAgAAHgAgAwAAABwAIAEAAB0AMAIAAB4AIAMAAAAcACABAAAdADACAAAeACAGCgAAlAYAIA0AAKcGACDbAkAAAAAB8gIBAAAAAfMCAgAAAAGPAwEAAAABAS8AAJsCACAE2wJAAAAAAfICAQAAAAHzAgIAAAABjwMBAAAAAQEvAACdAgAwAS8AAJ0CADAGCgAAkgYAIA0AAKYGACDbAkAAogUAIfICAQChBQAh8wICALQFACGPAwEAoQUAIQIAAAAeACAvAACgAgAgBNsCQACiBQAh8gIBAKEFACHzAgIAtAUAIY8DAQChBQAhAgAAABwAIC8AAKICACACAAAAHAAgLwAAogIAIAMAAAAeACA2AACbAgAgNwAAoAIAIAEAAAAeACABAAAAHAAgBQwAAKEGACA8AACiBgAgPQAApQYAID4AAKQGACA_AACjBgAgB9ICAADJBAAw0wIAAKkCABDUAgAAyQQAMNsCQACYBAAh8gIBAJYEACHzAgIApwQAIY8DAQCWBAAhAwAAABwAIAEAAKgCADA7AACpAgAgAwAAABwAIAEAAB0AMAIAAB4AIAEAAAAkACABAAAAJAAgAwAAACIAIAEAACMAMAIAACQAIAMAAAAiACABAAAjADACAAAkACADAAAAIgAgAQAAIwAwAgAAJAAgCAcAAJ8GACAPAACgBgAg1QIBAAAAAdsCQAAAAAHyAgEAAAAB-wIAAACPAwKMAwIAAAABjQMBAAAAAQEvAACxAgAgBtUCAQAAAAHbAkAAAAAB8gIBAAAAAfsCAAAAjwMCjAMCAAAAAY0DAQAAAAEBLwAAswIAMAEvAACzAgAwCAcAAJ0GACAPAACeBgAg1QIBAKEFACHbAkAAogUAIfICAQChBQAh-wIAAJwGjwMijAMCALQFACGNAwEAoQUAIQIAAAAkACAvAAC2AgAgBtUCAQChBQAh2wJAAKIFACHyAgEAoQUAIfsCAACcBo8DIowDAgC0BQAhjQMBAKEFACECAAAAIgAgLwAAuAIAIAIAAAAiACAvAAC4AgAgAwAAACQAIDYAALECACA3AAC2AgAgAQAAACQAIAEAAAAiACAFDAAAlwYAIDwAAJgGACA9AACbBgAgPgAAmgYAID8AAJkGACAJ0gIAAMUEADDTAgAAvwIAENQCAADFBAAw1QIBAJYEACHbAkAAmAQAIfICAQCWBAAh-wIAAMYEjwMijAMCAKcEACGNAwEAlgQAIQMAAAAiACABAAC-AgAwOwAAvwIAIAMAAAAiACABAAAjADACAAAkACAJCwAAxAQAINICAAC_BAAw0wIAAMUCABDUAgAAvwQAMNUCAQAAAAHbAkAAwwQAIfACAgAAAAGHAwEAAAABiAMBAMIEACEBAAAAwgIAIAEAAADCAgAgCQsAAMQEACDSAgAAvwQAMNMCAADFAgAQ1AIAAL8EADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACGHAwEAwAQAIYgDAQDCBAAhAwsAAJYGACDwAgAAnQUAIIgDAACdBQAgAwAAAMUCACABAADGAgAwAgAAwgIAIAMAAADFAgAgAQAAxgIAMAIAAMICACADAAAAxQIAIAEAAMYCADACAADCAgAgBgsAAJUGACDVAgEAAAAB2wJAAAAAAfACAgAAAAGHAwEAAAABiAMBAAAAAQEvAADKAgAgBdUCAQAAAAHbAkAAAAAB8AICAAAAAYcDAQAAAAGIAwEAAAABAS8AAMwCADABLwAAzAIAMAYLAACGBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAhhwMBAKEFACGIAwEAswUAIQIAAADCAgAgLwAAzwIAIAXVAgEAoQUAIdsCQACiBQAh8AICALIFACGHAwEAoQUAIYgDAQCzBQAhAgAAAMUCACAvAADRAgAgAgAAAMUCACAvAADRAgAgAwAAAMICACA2AADKAgAgNwAAzwIAIAEAAADCAgAgAQAAAMUCACAHDAAAgQYAIDwAAIIGACA9AACFBgAgPgAAhAYAID8AAIMGACDwAgAAnQUAIIgDAACdBQAgCNICAAC-BAAw0wIAANgCABDUAgAAvgQAMNUCAQCWBAAh2wJAAJgEACHwAgIApQQAIYcDAQCWBAAhiAMBAKYEACEDAAAAxQIAIAEAANcCADA7AADYAgAgAwAAAMUCACABAADGAgAwAgAAwgIAIAEAAAATACABAAAAEwAgAwAAABEAIAEAABIAMAIAABMAIAMAAAARACABAAASADACAAATACADAAAAEQAgAQAAEgAwAgAAEwAgBgMAAIAGACAHAAD_BQAg2wJAAAAAAe8CAQAAAAHyAgEAAAABhgMAAACGAwIBLwAA4AIAIATbAkAAAAAB7wIBAAAAAfICAQAAAAGGAwAAAIYDAgEvAADiAgAwAS8AAOICADAGAwAA_gUAIAcAAP0FACDbAkAAogUAIe8CAQChBQAh8gIBAKEFACGGAwAA_AWGAyICAAAAEwAgLwAA5QIAIATbAkAAogUAIe8CAQChBQAh8gIBAKEFACGGAwAA_AWGAyICAAAAEQAgLwAA5wIAIAIAAAARACAvAADnAgAgAwAAABMAIDYAAOACACA3AADlAgAgAQAAABMAIAEAAAARACADDAAA-QUAID4AAPsFACA_AAD6BQAgB9ICAAC6BAAw0wIAAO4CABDUAgAAugQAMNsCQACYBAAh7wIBAJYEACHyAgEAlgQAIYYDAAC7BIYDIgMAAAARACABAADtAgAwOwAA7gIAIAMAAAARACABAAASADACAAATACABAAAAMgAgAQAAADIAIAMAAAAwACABAAAxADACAAAyACADAAAAMAAgAQAAMQAwAgAAMgAgAwAAADAAIAEAADEAMAIAADIAIAcHAAD3BQAgFwAA-AUAINUCAQAAAAHbAkAAAAAB8gIBAAAAAYIDAQAAAAGEAwAAAIQDAgEvAAD2AgAgBdUCAQAAAAHbAkAAAAAB8gIBAAAAAYIDAQAAAAGEAwAAAIQDAgEvAAD4AgAwAS8AAPgCADABAAAADwAgBwcAAPUFACAXAAD2BQAg1QIBAKEFACHbAkAAogUAIfICAQChBQAhggMBALMFACGEAwAA9AWEAyICAAAAMgAgLwAA_AIAIAXVAgEAoQUAIdsCQACiBQAh8gIBAKEFACGCAwEAswUAIYQDAAD0BYQDIgIAAAAwACAvAAD-AgAgAgAAADAAIC8AAP4CACABAAAADwAgAwAAADIAIDYAAPYCACA3AAD8AgAgAQAAADIAIAEAAAAwACAEDAAA8QUAID4AAPMFACA_AADyBQAgggMAAJ0FACAI0gIAALYEADDTAgAAhgMAENQCAAC2BAAw1QIBAJYEACHbAkAAmAQAIfICAQCWBAAhggMBAKYEACGEAwAAtwSEAyIDAAAAMAAgAQAAhQMAMDsAAIYDACADAAAAMAAgAQAAMQAwAgAAMgAgAQAAADgAIAEAAAA4ACADAAAANgAgAQAANwAwAgAAOAAgAwAAADYAIAEAADcAMAIAADgAIAMAAAA2ACABAAA3ADACAAA4ACAFAwAA8AUAIAcAAO8FACDbAkAAAAAB7wIBAAAAAfICAQAAAAEBLwAAjgMAIAPbAkAAAAAB7wIBAAAAAfICAQAAAAEBLwAAkAMAMAEvAACQAwAwBQMAAO4FACAHAADtBQAg2wJAAKIFACHvAgEAoQUAIfICAQChBQAhAgAAADgAIC8AAJMDACAD2wJAAKIFACHvAgEAoQUAIfICAQChBQAhAgAAADYAIC8AAJUDACACAAAANgAgLwAAlQMAIAMAAAA4ACA2AACOAwAgNwAAkwMAIAEAAAA4ACABAAAANgAgAwwAAOoFACA-AADsBQAgPwAA6wUAIAbSAgAAtQQAMNMCAACcAwAQ1AIAALUEADDbAkAAmAQAIe8CAQCWBAAh8gIBAJYEACEDAAAANgAgAQAAmwMAMDsAAJwDACADAAAANgAgAQAANwAwAgAAOAAgAQAAADwAIAEAAAA8ACADAAAAOgAgAQAAOwAwAgAAPAAgAwAAADoAIAEAADsAMAIAADwAIAMAAAA6ACABAAA7ADACAAA8ACAOAwAA6QUAIAcAAOgFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHyAgEAAAAB8wICAAAAAfsCAAAA-wIC_AIBAAAAAf0CAQAAAAH-AgEAAAAB_wIBAAAAAYADgAAAAAGBAwEAAAABAS8AAKQDACAM1QIBAAAAAdsCQAAAAAHvAgEAAAAB8gIBAAAAAfMCAgAAAAH7AgAAAPsCAvwCAQAAAAH9AgEAAAAB_gIBAAAAAf8CAQAAAAGAA4AAAAABgQMBAAAAAQEvAACmAwAwAS8AAKYDADABAAAADwAgDgMAAOcFACAHAADmBQAg1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8gIBAKEFACHzAgIAsgUAIfsCAADlBfsCIvwCAQCzBQAh_QIBALMFACH-AgEAswUAIf8CAQCzBQAhgAOAAAAAAYEDAQCzBQAhAgAAADwAIC8AAKoDACAM1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8gIBAKEFACHzAgIAsgUAIfsCAADlBfsCIvwCAQCzBQAh_QIBALMFACH-AgEAswUAIf8CAQCzBQAhgAOAAAAAAYEDAQCzBQAhAgAAADoAIC8AAKwDACACAAAAOgAgLwAArAMAIAEAAAAPACADAAAAPAAgNgAApAMAIDcAAKoDACABAAAAPAAgAQAAADoAIA0MAADgBQAgPAAA4QUAID0AAOQFACA-AADjBQAgPwAA4gUAIO8CAACdBQAg8wIAAJ0FACD8AgAAnQUAIP0CAACdBQAg_gIAAJ0FACD_AgAAnQUAIIADAACdBQAggQMAAJ0FACAP0gIAAK8EADDTAgAAtAMAENQCAACvBAAw1QIBAJYEACHbAkAAmAQAIe8CAQCmBAAh8gIBAJYEACHzAgIApQQAIfsCAACwBPsCIvwCAQCmBAAh_QIBAKYEACH-AgEApgQAIf8CAQCmBAAhgAMAALEEACCBAwEApgQAIQMAAAA6ACABAACzAwAwOwAAtAMAIAMAAAA6ACABAAA7ADACAAA8ACABAAAAQQAgAQAAAEEAIAMAAAA_ACABAABAADACAABBACADAAAAPwAgAQAAQAAwAgAAQQAgAwAAAD8AIAEAAEAAMAIAAEEAIAkDAADeBQAgBwAA3wUAIC-AAAAAAdUCAQAAAAHbAkAAAAAB7wIBAAAAAfICAQAAAAH2AkAAAAAB-QICAAAAAQEvAAC8AwAgBy-AAAAAAdUCAQAAAAHbAkAAAAAB7wIBAAAAAfICAQAAAAH2AkAAAAAB-QICAAAAAQEvAAC-AwAwAS8AAL4DADABAAAAFwAgCQMAANwFACAHAADdBQAgL4AAAAAB1QIBAKEFACHbAkAAogUAIe8CAQChBQAh8gIBALMFACH2AkAAogUAIfkCAgC0BQAhAgAAAEEAIC8AAMIDACAHL4AAAAAB1QIBAKEFACHbAkAAogUAIe8CAQChBQAh8gIBALMFACH2AkAAogUAIfkCAgC0BQAhAgAAAD8AIC8AAMQDACACAAAAPwAgLwAAxAMAIAEAAAAXACADAAAAQQAgNgAAvAMAIDcAAMIDACABAAAAQQAgAQAAAD8AIAYMAADXBQAgPAAA2AUAID0AANsFACA-AADaBQAgPwAA2QUAIPICAACdBQAgCi8AAJcEACDSAgAArgQAMNMCAADMAwAQ1AIAAK4EADDVAgEAlgQAIdsCQACYBAAh7wIBAJYEACHyAgEApgQAIfYCQACYBAAh-QICAKcEACEDAAAAPwAgAQAAywMAMDsAAMwDACADAAAAPwAgAQAAQAAwAgAAQQAgAQAAAEYAIAEAAABGACADAAAARAAgAQAARQAwAgAARgAgAwAAAEQAIAEAAEUAMAIAAEYAIAMAAABEACABAABFADACAABGACARAwAA0wUAIAcAANIFACAaAADVBQAgHQAA1gUAIB4AANQFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8QIBAAAAAfICAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAEBLwAA1AMAIAzVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8QIBAAAAAfICAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAEBLwAA1gMAMAEvAADWAwAwAQAAAA8AIAEAAABEACARAwAAtgUAIAcAALUFACAaAAC5BQAgHQAAtwUAIB4AALgFACDVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfECAQCzBQAh8gIBAKEFACHzAgIAsgUAIfQCAQCzBQAh9QICALQFACH2AkAAogUAIfcCQACjBQAh-AJAAKMFACECAAAARgAgLwAA2wMAIAzVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfECAQCzBQAh8gIBAKEFACHzAgIAsgUAIfQCAQCzBQAh9QICALQFACH2AkAAogUAIfcCQACjBQAh-AJAAKMFACECAAAARAAgLwAA3QMAIAIAAABEACAvAADdAwAgAQAAAA8AIAEAAABEACADAAAARgAgNgAA1AMAIDcAANsDACABAAAARgAgAQAAAEQAIAwMAACtBQAgPAAArgUAID0AALEFACA-AACwBQAgPwAArwUAIO8CAACdBQAg8AIAAJ0FACDxAgAAnQUAIPMCAACdBQAg9AIAAJ0FACD3AgAAnQUAIPgCAACdBQAgD9ICAACkBAAw0wIAAOYDABDUAgAApAQAMNUCAQCWBAAh2wJAAJgEACHvAgEApgQAIfACAgClBAAh8QIBAKYEACHyAgEAlgQAIfMCAgClBAAh9AIBAKYEACH1AgIApwQAIfYCQACYBAAh9wJAAJkEACH4AkAAmQQAIQMAAABEACABAADlAwAwOwAA5gMAIAMAAABEACABAABFADACAABGACABAAAATQAgAQAAAE0AIAMAAABLACABAABMADACAABNACADAAAASwAgAQAATAAwAgAATQAgAwAAAEsAIAEAAEwAMAIAAE0AIAUDAACsBQAgHwAAqwUAINsCQAAAAAHuAgEAAAAB7wIBAAAAAQEvAADuAwAgA9sCQAAAAAHuAgEAAAAB7wIBAAAAAQEvAADwAwAwAS8AAPADADAFAwAAqgUAIB8AAKkFACDbAkAAogUAIe4CAQChBQAh7wIBAKEFACECAAAATQAgLwAA8wMAIAPbAkAAogUAIe4CAQChBQAh7wIBAKEFACECAAAASwAgLwAA9QMAIAIAAABLACAvAAD1AwAgAwAAAE0AIDYAAO4DACA3AADzAwAgAQAAAE0AIAEAAABLACADDAAApgUAID4AAKgFACA_AACnBQAgBtICAACjBAAw0wIAAPwDABDUAgAAowQAMNsCQACYBAAh7gIBAJYEACHvAgEAlgQAIQMAAABLACABAAD7AwAwOwAA_AMAIAMAAABLACABAABMADACAABNACABAAAAXQAgAQAAAF0AIAMAAABbACABAABcADACAABdACADAAAAWwAgAQAAXAAwAgAAXQAgAwAAAFsAIAEAAFwAMAIAAF0AIAkjAAClBQAg1QIBAAAAAdYCAQAAAAHXAgEAAAAB2AIBAAAAAdkCAQAAAAHaAoAAAAAB2wJAAAAAAdwCQAAAAAEBLwAAhAQAIAjVAgEAAAAB1gIBAAAAAdcCAQAAAAHYAgEAAAAB2QIBAAAAAdoCgAAAAAHbAkAAAAAB3AJAAAAAAQEvAACGBAAwAS8AAIYEADAJIwAApAUAINUCAQChBQAh1gIBAKEFACHXAgEAoQUAIdgCAQChBQAh2QIBAKEFACHaAoAAAAAB2wJAAKIFACHcAkAAowUAIQIAAABdACAvAACJBAAgCNUCAQChBQAh1gIBAKEFACHXAgEAoQUAIdgCAQChBQAh2QIBAKEFACHaAoAAAAAB2wJAAKIFACHcAkAAowUAIQIAAABbACAvAACLBAAgAgAAAFsAIC8AAIsEACADAAAAXQAgNgAAhAQAIDcAAIkEACABAAAAXQAgAQAAAFsAIAQMAACeBQAgPgAAoAUAID8AAJ8FACDcAgAAnQUAIAvSAgAAlQQAMNMCAACSBAAQ1AIAAJUEADDVAgEAlgQAIdYCAQCWBAAh1wIBAJYEACHYAgEAlgQAIdkCAQCWBAAh2gIAAJcEACDbAkAAmAQAIdwCQACZBAAhAwAAAFsAIAEAAJEEADA7AACSBAAgAwAAAFsAIAEAAFwAMAIAAF0AIAvSAgAAlQQAMNMCAACSBAAQ1AIAAJUEADDVAgEAlgQAIdYCAQCWBAAh1wIBAJYEACHYAgEAlgQAIdkCAQCWBAAh2gIAAJcEACDbAkAAmAQAIdwCQACZBAAhDgwAAJ4EACA-AACiBAAgPwAAogQAIN0CAQAAAAHeAgEAAAAE3wIBAAAABOACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAoQQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQ8MAACeBAAgPgAAoAQAID8AAKAEACDdAoAAAAAB4AKAAAAAAeECgAAAAAHiAoAAAAAB4wKAAAAAAeQCgAAAAAHlAgEAAAAB5gIBAAAAAecCAQAAAAHoAoAAAAAB6QKAAAAAAeoCgAAAAAELDAAAngQAID4AAJ8EACA_AACfBAAg3QJAAAAAAd4CQAAAAATfAkAAAAAE4AJAAAAAAeECQAAAAAHiAkAAAAAB4wJAAAAAAeQCQACdBAAhCwwAAJsEACA-AACcBAAgPwAAnAQAIN0CQAAAAAHeAkAAAAAF3wJAAAAABeACQAAAAAHhAkAAAAAB4gJAAAAAAeMCQAAAAAHkAkAAmgQAIQsMAACbBAAgPgAAnAQAID8AAJwEACDdAkAAAAAB3gJAAAAABd8CQAAAAAXgAkAAAAAB4QJAAAAAAeICQAAAAAHjAkAAAAAB5AJAAJoEACEI3QICAAAAAd4CAgAAAAXfAgIAAAAF4AICAAAAAeECAgAAAAHiAgIAAAAB4wICAAAAAeQCAgCbBAAhCN0CQAAAAAHeAkAAAAAF3wJAAAAABeACQAAAAAHhAkAAAAAB4gJAAAAAAeMCQAAAAAHkAkAAnAQAIQsMAACeBAAgPgAAnwQAID8AAJ8EACDdAkAAAAAB3gJAAAAABN8CQAAAAATgAkAAAAAB4QJAAAAAAeICQAAAAAHjAkAAAAAB5AJAAJ0EACEI3QICAAAAAd4CAgAAAATfAgIAAAAE4AICAAAAAeECAgAAAAHiAgIAAAAB4wICAAAAAeQCAgCeBAAhCN0CQAAAAAHeAkAAAAAE3wJAAAAABOACQAAAAAHhAkAAAAAB4gJAAAAAAeMCQAAAAAHkAkAAnwQAIQzdAoAAAAAB4AKAAAAAAeECgAAAAAHiAoAAAAAB4wKAAAAAAeQCgAAAAAHlAgEAAAAB5gIBAAAAAecCAQAAAAHoAoAAAAAB6QKAAAAAAeoCgAAAAAEODAAAngQAID4AAKIEACA_AACiBAAg3QIBAAAAAd4CAQAAAATfAgEAAAAE4AIBAAAAAeECAQAAAAHiAgEAAAAB4wIBAAAAAeQCAQChBAAh6wIBAAAAAewCAQAAAAHtAgEAAAABC90CAQAAAAHeAgEAAAAE3wIBAAAABOACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAogQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQbSAgAAowQAMNMCAAD8AwAQ1AIAAKMEADDbAkAAmAQAIe4CAQCWBAAh7wIBAJYEACEP0gIAAKQEADDTAgAA5gMAENQCAACkBAAw1QIBAJYEACHbAkAAmAQAIe8CAQCmBAAh8AICAKUEACHxAgEApgQAIfICAQCWBAAh8wICAKUEACH0AgEApgQAIfUCAgCnBAAh9gJAAJgEACH3AkAAmQQAIfgCQACZBAAhDQwAAJsEACA8AACtBAAgPQAAmwQAID4AAJsEACA_AACbBAAg3QICAAAAAd4CAgAAAAXfAgIAAAAF4AICAAAAAeECAgAAAAHiAgIAAAAB4wICAAAAAeQCAgCsBAAhDgwAAJsEACA-AACrBAAgPwAAqwQAIN0CAQAAAAHeAgEAAAAF3wIBAAAABeACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAqgQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQ0MAACeBAAgPAAAqQQAID0AAJ4EACA-AACeBAAgPwAAngQAIN0CAgAAAAHeAgIAAAAE3wICAAAABOACAgAAAAHhAgIAAAAB4gICAAAAAeMCAgAAAAHkAgIAqAQAIQ0MAACeBAAgPAAAqQQAID0AAJ4EACA-AACeBAAgPwAAngQAIN0CAgAAAAHeAgIAAAAE3wICAAAABOACAgAAAAHhAgIAAAAB4gICAAAAAeMCAgAAAAHkAgIAqAQAIQjdAggAAAAB3gIIAAAABN8CCAAAAATgAggAAAAB4QIIAAAAAeICCAAAAAHjAggAAAAB5AIIAKkEACEODAAAmwQAID4AAKsEACA_AACrBAAg3QIBAAAAAd4CAQAAAAXfAgEAAAAF4AIBAAAAAeECAQAAAAHiAgEAAAAB4wIBAAAAAeQCAQCqBAAh6wIBAAAAAewCAQAAAAHtAgEAAAABC90CAQAAAAHeAgEAAAAF3wIBAAAABeACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAqwQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQ0MAACbBAAgPAAArQQAID0AAJsEACA-AACbBAAgPwAAmwQAIN0CAgAAAAHeAgIAAAAF3wICAAAABeACAgAAAAHhAgIAAAAB4gICAAAAAeMCAgAAAAHkAgIArAQAIQjdAggAAAAB3gIIAAAABd8CCAAAAAXgAggAAAAB4QIIAAAAAeICCAAAAAHjAggAAAAB5AIIAK0EACEKLwAAlwQAINICAACuBAAw0wIAAMwDABDUAgAArgQAMNUCAQCWBAAh2wJAAJgEACHvAgEAlgQAIfICAQCmBAAh9gJAAJgEACH5AgIApwQAIQ_SAgAArwQAMNMCAAC0AwAQ1AIAAK8EADDVAgEAlgQAIdsCQACYBAAh7wIBAKYEACHyAgEAlgQAIfMCAgClBAAh-wIAALAE-wIi_AIBAKYEACH9AgEApgQAIf4CAQCmBAAh_wIBAKYEACGAAwAAsQQAIIEDAQCmBAAhBwwAAJ4EACA-AAC0BAAgPwAAtAQAIN0CAAAA-wIC3gIAAAD7AgjfAgAAAPsCCOQCAACzBPsCIg8MAACbBAAgPgAAsgQAID8AALIEACDdAoAAAAAB4AKAAAAAAeECgAAAAAHiAoAAAAAB4wKAAAAAAeQCgAAAAAHlAgEAAAAB5gIBAAAAAecCAQAAAAHoAoAAAAAB6QKAAAAAAeoCgAAAAAEM3QKAAAAAAeACgAAAAAHhAoAAAAAB4gKAAAAAAeMCgAAAAAHkAoAAAAAB5QIBAAAAAeYCAQAAAAHnAgEAAAAB6AKAAAAAAekCgAAAAAHqAoAAAAABBwwAAJ4EACA-AAC0BAAgPwAAtAQAIN0CAAAA-wIC3gIAAAD7AgjfAgAAAPsCCOQCAACzBPsCIgTdAgAAAPsCAt4CAAAA-wII3wIAAAD7AgjkAgAAtAT7AiIG0gIAALUEADDTAgAAnAMAENQCAAC1BAAw2wJAAJgEACHvAgEAlgQAIfICAQCWBAAhCNICAAC2BAAw0wIAAIYDABDUAgAAtgQAMNUCAQCWBAAh2wJAAJgEACHyAgEAlgQAIYIDAQCmBAAhhAMAALcEhAMiBwwAAJ4EACA-AAC5BAAgPwAAuQQAIN0CAAAAhAMC3gIAAACEAwjfAgAAAIQDCOQCAAC4BIQDIgcMAACeBAAgPgAAuQQAID8AALkEACDdAgAAAIQDAt4CAAAAhAMI3wIAAACEAwjkAgAAuASEAyIE3QIAAACEAwLeAgAAAIQDCN8CAAAAhAMI5AIAALkEhAMiB9ICAAC6BAAw0wIAAO4CABDUAgAAugQAMNsCQACYBAAh7wIBAJYEACHyAgEAlgQAIYYDAAC7BIYDIgcMAACeBAAgPgAAvQQAID8AAL0EACDdAgAAAIYDAt4CAAAAhgMI3wIAAACGAwjkAgAAvASGAyIHDAAAngQAID4AAL0EACA_AAC9BAAg3QIAAACGAwLeAgAAAIYDCN8CAAAAhgMI5AIAALwEhgMiBN0CAAAAhgMC3gIAAACGAwjfAgAAAIYDCOQCAAC9BIYDIgjSAgAAvgQAMNMCAADYAgAQ1AIAAL4EADDVAgEAlgQAIdsCQACYBAAh8AICAKUEACGHAwEAlgQAIYgDAQCmBAAhCQsAAMQEACDSAgAAvwQAMNMCAADFAgAQ1AIAAL8EADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACGHAwEAwAQAIYgDAQDCBAAhC90CAQAAAAHeAgEAAAAE3wIBAAAABOACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAogQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQjdAgIAAAAB3gICAAAABd8CAgAAAAXgAgIAAAAB4QICAAAAAeICAgAAAAHjAgIAAAAB5AICAJsEACEL3QIBAAAAAd4CAQAAAAXfAgEAAAAF4AIBAAAAAeECAQAAAAHiAgEAAAAB4wIBAAAAAeQCAQCrBAAh6wIBAAAAAewCAQAAAAHtAgEAAAABCN0CQAAAAAHeAkAAAAAE3wJAAAAABOACQAAAAAHhAkAAAAAB4gJAAAAAAeMCQAAAAAHkAkAAnwQAIQOJAwAAHAAgigMAABwAIIsDAAAcACAJ0gIAAMUEADDTAgAAvwIAENQCAADFBAAw1QIBAJYEACHbAkAAmAQAIfICAQCWBAAh-wIAAMYEjwMijAMCAKcEACGNAwEAlgQAIQcMAACeBAAgPgAAyAQAID8AAMgEACDdAgAAAI8DAt4CAAAAjwMI3wIAAACPAwjkAgAAxwSPAyIHDAAAngQAID4AAMgEACA_AADIBAAg3QIAAACPAwLeAgAAAI8DCN8CAAAAjwMI5AIAAMcEjwMiBN0CAAAAjwMC3gIAAACPAwjfAgAAAI8DCOQCAADIBI8DIgfSAgAAyQQAMNMCAACpAgAQ1AIAAMkEADDbAkAAmAQAIfICAQCWBAAh8wICAKcEACGPAwEAlgQAIQ7SAgAAygQAMNMCAACTAgAQ1AIAAMoEADDbAkAAmAQAIfICAQCWBAAh8wICAKcEACGQAwEAlgQAIZEDAQCmBAAhkgMBAKYEACGTAwEApgQAIZQDAQCWBAAhlQMBAKYEACGWAwEApgQAIZcDQACZBAAhEtICAADLBAAw0wIAAP0BABDUAgAAywQAMNUCAQCWBAAh2wJAAJgEACHwAgIApQQAIfYCQACYBAAh-AJAAJkEACGYAwIApQQAIZkDAQCmBAAhmgMCAKUEACGcAwAAzAScAyKdAyAAzQQAIZ4DIADNBAAhnwMCAKcEACGgAwIApwQAIaEDAgCnBAAhogMCAKcEACEHDAAAngQAID4AANEEACA_AADRBAAg3QIAAACcAwLeAgAAAJwDCN8CAAAAnAMI5AIAANAEnAMiBQwAAJ4EACA-AADPBAAgPwAAzwQAIN0CIAAAAAHkAiAAzgQAIQUMAACeBAAgPgAAzwQAID8AAM8EACDdAiAAAAAB5AIgAM4EACEC3QIgAAAAAeQCIADPBAAhBwwAAJ4EACA-AADRBAAgPwAA0QQAIN0CAAAAnAMC3gIAAACcAwjfAgAAAJwDCOQCAADQBJwDIgTdAgAAAJwDAt4CAAAAnAMI3wIAAACcAwjkAgAA0QScAyIO0gIAANIEADDTAgAA4QEAENQCAADSBAAw1QIBAJYEACHbAkAAmQQAIe8CAQCWBAAhhwMBAKYEACGjAwEAlgQAIaQDAQCWBAAhpQMCAKcEACGmAwEAlgQAIacDIADNBAAhqAMBAKYEACGpAwEApgQAIQrSAgAA0wQAMNMCAADLAQAQ1AIAANMEADDVAgEAlgQAIdsCQACZBAAh7wIBAKYEACH2AkAAmQQAIaoDAQCWBAAhqwMBAJYEACGsA0AAmAQAIQzSAgAA1AQAMNMCAACzAQAQ1AIAANQEADDVAgEAlgQAIdsCQACYBAAh7wIBAJYEACH2AkAAmAQAIf4CAQCmBAAhrANAAJgEACGtAwEAlgQAIa4DAQCmBAAhrwMBAKYEACEQ0gIAANUEADDTAgAAnQEAENQCAADVBAAw1QIBAJYEACHbAkAAmAQAIe8CAQCWBAAh9gJAAJgEACGwAwEAlgQAIbEDAQCWBAAhsgMBAKYEACGzAwEApgQAIbQDQACZBAAhtQNAAJkEACG2AwEApgQAIbcDAQCmBAAhuAMBAKYEACEZ0gIAANYEADDTAgAAhwEAENQCAADWBAAw1QIBAJYEACHbAkAAmAQAIfACAgClBAAh9gJAAJgEACH4AkAAmQQAIYYDAQCmBAAhhwMBAKYEACG5AwEApgQAIboDIADNBAAhuwMBAKYEACG9AwAA1wS9AyK_AwAA2AS_AyLAAyAAzQQAIcEDAQCmBAAhwgMBAKYEACHDAwAAsQQAIMQDQACZBAAhxQMBAKYEACHGAyAA2QQAIccDAQCmBAAhyANAAJkEACHJA0AAmQQAIQcMAACeBAAgPgAA3wQAID8AAN8EACDdAgAAAL0DAt4CAAAAvQMI3wIAAAC9AwjkAgAA3gS9AyIHDAAAngQAID4AAN0EACA_AADdBAAg3QIAAAC_AwLeAgAAAL8DCN8CAAAAvwMI5AIAANwEvwMiBQwAAJsEACA-AADbBAAgPwAA2wQAIN0CIAAAAAHkAiAA2gQAIQUMAACbBAAgPgAA2wQAID8AANsEACDdAiAAAAAB5AIgANoEACEC3QIgAAAAAeQCIADbBAAhBwwAAJ4EACA-AADdBAAgPwAA3QQAIN0CAAAAvwMC3gIAAAC_AwjfAgAAAL8DCOQCAADcBL8DIgTdAgAAAL8DAt4CAAAAvwMI3wIAAAC_AwjkAgAA3QS_AyIHDAAAngQAID4AAN8EACA_AADfBAAg3QIAAAC9AwLeAgAAAL0DCN8CAAAAvQMI5AIAAN4EvQMiBN0CAAAAvQMC3gIAAAC9AwjfAgAAAL0DCOQCAADfBL0DIg8DAADkBAAg0gIAAOAEADDTAgAAZAAQ1AIAAOAEADDVAgEAwAQAIdsCQADjBAAh7wIBAMAEACGHAwEAwgQAIaMDAQDABAAhpAMBAMAEACGlAwIA4QQAIaYDAQDABAAhpwMgAOIEACGoAwEAwgQAIakDAQDCBAAhCN0CAgAAAAHeAgIAAAAE3wICAAAABOACAgAAAAHhAgIAAAAB4gICAAAAAeMCAgAAAAHkAgIAngQAIQLdAiAAAAAB5AIgAM8EACEI3QJAAAAAAd4CQAAAAAXfAkAAAAAF4AJAAAAAAeECQAAAAAHiAkAAAAAB4wJAAAAAAeQCQACcBAAhJwQAAJUFACAFAACWBQAgBgAAlwUAICAAAO4EACAhAACJBQAgIgAAigUAICQAAJgFACAlAACLBQAgJgAAjAUAICcAAI0FACAoAADvBAAgKQAAmQUAINICAACRBQAw0wIAAA8AENQCAACRBQAw1QIBAMAEACHbAkAAwwQAIfACAgDBBAAh9gJAAMMEACH4AkAA4wQAIYYDAQDCBAAhhwMBAMIEACG5AwEAwgQAIboDIADiBAAhuwMBAMIEACG9AwAAkgW9AyK_AwAAkwW_AyLAAyAA4gQAIcEDAQDCBAAhwgMBAMIEACHDAwAA9AQAIMQDQADjBAAhxQMBAMIEACHGAyAAlAUAIccDAQDCBAAhyANAAOMEACHJA0AA4wQAIdADAAAPACDRAwAADwAgDCMAAOQEACDSAgAA5QQAMNMCAABbABDUAgAA5QQAMNUCAQDABAAh1gIBAMAEACHXAgEAwAQAIdgCAQDABAAh2QIBAMAEACHaAgAA5gQAINsCQADDBAAh3AJAAOMEACEM3QKAAAAAAeACgAAAAAHhAoAAAAAB4gKAAAAAAeMCgAAAAAHkAoAAAAAB5QIBAAAAAeYCAQAAAAHnAgEAAAAB6AKAAAAAAekCgAAAAAHqAoAAAAABAu4CAQAAAAHvAgEAAAABCAMAAOQEACAfAADpBAAg0gIAAOgEADDTAgAASwAQ1AIAAOgEADDbAkAAwwQAIe4CAQDABAAh7wIBAMAEACEWAwAA7AQAIAcAAOsEACAaAADvBAAgHQAA7QQAIB4AAO4EACDSAgAA6gQAMNMCAABEABDUAgAA6gQAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfACAgDBBAAh8QIBAMIEACHyAgEAwAQAIfMCAgDBBAAh9AIBAMIEACH1AgIA4QQAIfYCQADDBAAh9wJAAOMEACH4AkAA4wQAIdADAABEACDRAwAARAAgFAMAAOwEACAHAADrBAAgGgAA7wQAIB0AAO0EACAeAADuBAAg0gIAAOoEADDTAgAARAAQ1AIAAOoEADDVAgEAwAQAIdsCQADDBAAh7wIBAMIEACHwAgIAwQQAIfECAQDCBAAh8gIBAMAEACHzAgIAwQQAIfQCAQDCBAAh9QICAOEEACH2AkAAwwQAIfcCQADjBAAh-AJAAOMEACEgEQAAhwUAIBIAAPEEACATAAD8BAAgFAAAhwUAIBUAAIgFACAWAACJBQAgGAAAigUAIBkAAP0EACAaAACLBQAgGwAAjAUAIBwAAI0FACAgAADuBAAg0gIAAIUFADDTAgAAFwAQ1AIAAIUFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAh0AMAABcAINEDAAAXACAnBAAAlQUAIAUAAJYFACAGAACXBQAgIAAA7gQAICEAAIkFACAiAACKBQAgJAAAmAUAICUAAIsFACAmAACMBQAgJwAAjQUAICgAAO8EACApAACZBQAg0gIAAJEFADDTAgAADwAQ1AIAAJEFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhhgMBAMIEACGHAwEAwgQAIbkDAQDCBAAhugMgAOIEACG7AwEAwgQAIb0DAACSBb0DIr8DAACTBb8DIsADIADiBAAhwQMBAMIEACHCAwEAwgQAIcMDAAD0BAAgxANAAOMEACHFAwEAwgQAIcYDIACUBQAhxwMBAMIEACHIA0AA4wQAIckDQADjBAAh0AMAAA8AINEDAAAPACAWAwAA7AQAIAcAAOsEACAaAADvBAAgHQAA7QQAIB4AAO4EACDSAgAA6gQAMNMCAABEABDUAgAA6gQAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfACAgDBBAAh8QIBAMIEACHyAgEAwAQAIfMCAgDBBAAh9AIBAMIEACH1AgIA4QQAIfYCQADDBAAh9wJAAOMEACH4AkAA4wQAIdADAABEACDRAwAARAAgA4kDAABEACCKAwAARAAgiwMAAEQAIAOJAwAASwAgigMAAEsAIIsDAABLACAMAwAA5AQAIAcAAPEEACAvAADmBAAg0gIAAPAEADDTAgAAPwAQ1AIAAPAEADDVAgEAwAQAIdsCQADDBAAh7wIBAMAEACHyAgEAwgQAIfYCQADDBAAh-QICAOEEACEgEQAAhwUAIBIAAPEEACATAAD8BAAgFAAAhwUAIBUAAIgFACAWAACJBQAgGAAAigUAIBkAAP0EACAaAACLBQAgGwAAjAUAIBwAAI0FACAgAADuBAAg0gIAAIUFADDTAgAAFwAQ1AIAAIUFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAh0AMAABcAINEDAAAXACARAwAA7AQAIAcAAOsEACDSAgAA8gQAMNMCAAA6ABDUAgAA8gQAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACEE3QIAAAD7AgLeAgAAAPsCCN8CAAAA-wII5AIAALQE-wIiDN0CgAAAAAHgAoAAAAAB4QKAAAAAAeICgAAAAAHjAoAAAAAB5AKAAAAAAeUCAQAAAAHmAgEAAAAB5wIBAAAAAegCgAAAAAHpAoAAAAAB6gKAAAAAAQLvAgEAAAAB8gIBAAAAAQgDAADkBAAgBwAA6wQAINICAAD2BAAw0wIAADYAENQCAAD2BAAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhAvICAQAAAAGCAwEAAAABCgcAAOsEACAXAADsBAAg0gIAAPgEADDTAgAAMAAQ1AIAAPgEADDVAgEAwAQAIdsCQADDBAAh8gIBAMAEACGCAwEAwgQAIYQDAAD5BIQDIgTdAgAAAIQDAt4CAAAAhAMI3wIAAACEAwjkAgAAuQSEAyIC8gIBAAAAAfMCAgAAAAETBwAA6wQAIAgAAPEEACAJAAD8BAAgDgAAxAQAIBAAAP0EACDSAgAA-wQAMNMCAAAVABDUAgAA-wQAMNsCQADDBAAh8gIBAMAEACHzAgIA4QQAIZADAQDABAAhkQMBAMIEACGSAwEAwgQAIZMDAQDCBAAhlAMBAMAEACGVAwEAwgQAIZYDAQDCBAAhlwNAAOMEACEDiQMAABcAIIoDAAAXACCLAwAAFwAgA4kDAAAiACCKAwAAIgAgiwMAACIAIAsHAADrBAAgDwAAgAUAINICAAD-BAAw0wIAACIAENQCAAD-BAAw1QIBAMAEACHbAkAAwwQAIfICAQDABAAh-wIAAP8EjwMijAMCAOEEACGNAwEAwAQAIQTdAgAAAI8DAt4CAAAAjwMI3wIAAACPAwjkAgAAyASPAyIVBwAA6wQAIAgAAPEEACAJAAD8BAAgDgAAxAQAIBAAAP0EACDSAgAA-wQAMNMCAAAVABDUAgAA-wQAMNsCQADDBAAh8gIBAMAEACHzAgIA4QQAIZADAQDABAAhkQMBAMIEACGSAwEAwgQAIZMDAQDCBAAhlAMBAMAEACGVAwEAwgQAIZYDAQDCBAAhlwNAAOMEACHQAwAAFQAg0QMAABUAIAPyAgEAAAAB8wICAAAAAY8DAQAAAAEJCgAAgAUAIA0AAIMFACDSAgAAggUAMNMCAAAcABDUAgAAggUAMNsCQADDBAAh8gIBAMAEACHzAgIA4QQAIY8DAQDABAAhCwsAAMQEACDSAgAAvwQAMNMCAADFAgAQ1AIAAL8EADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACGHAwEAwAQAIYgDAQDCBAAh0AMAAMUCACDRAwAAxQIAIALVAgEAAAABmAMCAAAAAR4RAACHBQAgEgAA8QQAIBMAAPwEACAUAACHBQAgFQAAiAUAIBYAAIkFACAYAACKBQAgGQAA_QQAIBoAAIsFACAbAACMBQAgHAAAjQUAICAAAO4EACDSAgAAhQUAMNMCAAAXABDUAgAAhQUAMNUCAQDABAAh2wJAAMMEACHwAgIAwQQAIfYCQADDBAAh-AJAAOMEACGYAwIAwQQAIZkDAQDCBAAhmgMCAMEEACGcAwAAhgWcAyKdAyAA4gQAIZ4DIADiBAAhnwMCAOEEACGgAwIA4QQAIaEDAgDhBAAhogMCAOEEACEE3QIAAACcAwLeAgAAAJwDCN8CAAAAnAMI5AIAANEEnAMiFQcAAOsEACAIAADxBAAgCQAA_AQAIA4AAMQEACAQAAD9BAAg0gIAAPsEADDTAgAAFQAQ1AIAAPsEADDbAkAAwwQAIfICAQDABAAh8wICAOEEACGQAwEAwAQAIZEDAQDCBAAhkgMBAMIEACGTAwEAwgQAIZQDAQDABAAhlQMBAMIEACGWAwEAwgQAIZcDQADjBAAh0AMAABUAINEDAAAVACADiQMAABUAIIoDAAAVACCLAwAAFQAgA4kDAAARACCKAwAAEQAgiwMAABEAIAOJAwAAMAAgigMAADAAIIsDAAAwACADiQMAADYAIIoDAAA2ACCLAwAANgAgA4kDAAA6ACCKAwAAOgAgiwMAADoAIAOJAwAAPwAgigMAAD8AIIsDAAA_ACAC7wIBAAAAAfICAQAAAAEJAwAA5AQAIAcAAOsEACDSAgAAjwUAMNMCAAARABDUAgAAjwUAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIYYDAACQBYYDIgTdAgAAAIYDAt4CAAAAhgMI3wIAAACGAwjkAgAAvQSGAyIlBAAAlQUAIAUAAJYFACAGAACXBQAgIAAA7gQAICEAAIkFACAiAACKBQAgJAAAmAUAICUAAIsFACAmAACMBQAgJwAAjQUAICgAAO8EACApAACZBQAg0gIAAJEFADDTAgAADwAQ1AIAAJEFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhhgMBAMIEACGHAwEAwgQAIbkDAQDCBAAhugMgAOIEACG7AwEAwgQAIb0DAACSBb0DIr8DAACTBb8DIsADIADiBAAhwQMBAMIEACHCAwEAwgQAIcMDAAD0BAAgxANAAOMEACHFAwEAwgQAIcYDIACUBQAhxwMBAMIEACHIA0AA4wQAIckDQADjBAAhBN0CAAAAvQMC3gIAAAC9AwjfAgAAAL0DCOQCAADfBL0DIgTdAgAAAL8DAt4CAAAAvwMI3wIAAAC_AwjkAgAA3QS_AyIC3QIgAAAAAeQCIADbBAAhA4kDAAADACCKAwAAAwAgiwMAAAMAIAOJAwAABwAgigMAAAcAIIsDAAAHACADiQMAAAsAIIoDAAALACCLAwAACwAgA4kDAABbACCKAwAAWwAgiwMAAFsAIAOJAwAAZAAgigMAAGQAIIsDAABkACALAwAA7AQAINICAACaBQAw0wIAAAsAENQCAACaBQAw1QIBAMAEACHbAkAA4wQAIe8CAQDCBAAh9gJAAOMEACGqAwEAwAQAIasDAQDABAAhrANAAMMEACENAwAA5AQAINICAACbBQAw0wIAAAcAENQCAACbBQAw1QIBAMAEACHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACH-AgEAwgQAIawDQADDBAAhrQMBAMAEACGuAwEAwgQAIa8DAQDCBAAhEQMAAOQEACDSAgAAnAUAMNMCAAADABDUAgAAnAUAMNUCAQDABAAh2wJAAMMEACHvAgEAwAQAIfYCQADDBAAhsAMBAMAEACGxAwEAwAQAIbIDAQDCBAAhswMBAMIEACG0A0AA4wQAIbUDQADjBAAhtgMBAMIEACG3AwEAwgQAIbgDAQDCBAAhAAAAAAHVAwEAAAABAdUDQAAAAAEB1QNAAAAAAQU2AADGCgAgNwAAyQoAINIDAADHCgAg0wMAAMgKACDYAwAAAQAgAzYAAMYKACDSAwAAxwoAINgDAAABACAAAAAFNgAAvgoAIDcAAMQKACDSAwAAvwoAINMDAADDCgAg2AMAAEYAIAU2AAC8CgAgNwAAwQoAINIDAAC9CgAg0wMAAMAKACDYAwAAAQAgAzYAAL4KACDSAwAAvwoAINgDAABGACADNgAAvAoAINIDAAC9CgAg2AMAAAEAIAAAAAAABdUDAgAAAAHbAwIAAAAB3AMCAAAAAd0DAgAAAAHeAwIAAAABAdUDAQAAAAEF1QMCAAAAAdsDAgAAAAHcAwIAAAAB3QMCAAAAAd4DAgAAAAEFNgAArwoAIDcAALoKACDSAwAAsAoAINMDAAC5CgAg2AMAABoAIAc2AACtCgAgNwAAtwoAINIDAACuCgAg0wMAALYKACDWAwAADwAg1wMAAA8AINgDAAABACAHNgAAqwoAIDcAALQKACDSAwAArAoAINMDAACzCgAg1gMAAEQAINcDAABEACDYAwAARgAgCzYAAMYFADA3AADLBQAw0gMAAMcFADDTAwAAyAUAMNQDAADJBQAg1QMAAMoFADDWAwAAygUAMNcDAADKBQAw2AMAAMoFADDZAwAAzAUAMNoDAADNBQAwCzYAALoFADA3AAC_BQAw0gMAALsFADDTAwAAvAUAMNQDAAC9BQAg1QMAAL4FADDWAwAAvgUAMNcDAAC-BQAw2AMAAL4FADDZAwAAwAUAMNoDAADBBQAwAwMAAKwFACDbAkAAAAAB7wIBAAAAAQIAAABNACA2AADFBQAgAwAAAE0AIDYAAMUFACA3AADEBQAgAS8AALIKADAJAwAA5AQAIB8AAOkEACDSAgAA6AQAMNMCAABLABDUAgAA6AQAMNsCQADDBAAh7gIBAMAEACHvAgEAwAQAIcoDAADnBAAgAgAAAE0AIC8AAMQFACACAAAAwgUAIC8AAMMFACAG0gIAAMEFADDTAgAAwgUAENQCAADBBQAw2wJAAMMEACHuAgEAwAQAIe8CAQDABAAhBtICAADBBQAw0wIAAMIFABDUAgAAwQUAMNsCQADDBAAh7gIBAMAEACHvAgEAwAQAIQLbAkAAogUAIe8CAQChBQAhAwMAAKoFACDbAkAAogUAIe8CAQChBQAhAwMAAKwFACDbAkAAAAAB7wIBAAAAAQ8DAADTBQAgBwAA0gUAIBoAANUFACAeAADUBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfICAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAECAAAARgAgNgAA0QUAIAMAAABGACA2AADRBQAgNwAA0AUAIAEvAACxCgAwFAMAAOwEACAHAADrBAAgGgAA7wQAIB0AAO0EACAeAADuBAAg0gIAAOoEADDTAgAARAAQ1AIAAOoEADDVAgEAAAAB2wJAAMMEACHvAgEAwgQAIfACAgAAAAHxAgEAwgQAIfICAQDABAAh8wICAMEEACH0AgEAwgQAIfUCAgDhBAAh9gJAAMMEACH3AkAA4wQAIfgCQADjBAAhAgAAAEYAIC8AANAFACACAAAAzgUAIC8AAM8FACAP0gIAAM0FADDTAgAAzgUAENQCAADNBQAw1QIBAMAEACHbAkAAwwQAIe8CAQDCBAAh8AICAMEEACHxAgEAwgQAIfICAQDABAAh8wICAMEEACH0AgEAwgQAIfUCAgDhBAAh9gJAAMMEACH3AkAA4wQAIfgCQADjBAAhD9ICAADNBQAw0wIAAM4FABDUAgAAzQUAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfACAgDBBAAh8QIBAMIEACHyAgEAwAQAIfMCAgDBBAAh9AIBAMIEACH1AgIA4QQAIfYCQADDBAAh9wJAAOMEACH4AkAA4wQAIQvVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhDwMAALYFACAHAAC1BQAgGgAAuQUAIB4AALgFACDVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhDwMAANMFACAHAADSBQAgGgAA1QUAIB4AANQFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQM2AACvCgAg0gMAALAKACDYAwAAGgAgAzYAAK0KACDSAwAArgoAINgDAAABACAENgAAxgUAMNIDAADHBQAw1AMAAMkFACDYAwAAygUAMAQ2AAC6BQAw0gMAALsFADDUAwAAvQUAINgDAAC-BQAwAzYAAKsKACDSAwAArAoAINgDAABGACAAAAAAAAU2AACjCgAgNwAAqQoAINIDAACkCgAg0wMAAKgKACDYAwAAAQAgBzYAAKEKACA3AACmCgAg0gMAAKIKACDTAwAApQoAINYDAAAXACDXAwAAFwAg2AMAABoAIAM2AACjCgAg0gMAAKQKACDYAwAAAQAgAzYAAKEKACDSAwAAogoAINgDAAAaACAAAAAAAAHVAwAAAPsCAgU2AACZCgAgNwAAnwoAINIDAACaCgAg0wMAAJ4KACDYAwAAGgAgBzYAAJcKACA3AACcCgAg0gMAAJgKACDTAwAAmwoAINYDAAAPACDXAwAADwAg2AMAAAEAIAM2AACZCgAg0gMAAJoKACDYAwAAGgAgAzYAAJcKACDSAwAAmAoAINgDAAABACAAAAAFNgAAjwoAIDcAAJUKACDSAwAAkAoAINMDAACUCgAg2AMAABoAIAU2AACNCgAgNwAAkgoAINIDAACOCgAg0wMAAJEKACDYAwAAAQAgAzYAAI8KACDSAwAAkAoAINgDAAAaACADNgAAjQoAINIDAACOCgAg2AMAAAEAIAAAAAHVAwAAAIQDAgU2AACFCgAgNwAAiwoAINIDAACGCgAg0wMAAIoKACDYAwAAGgAgBzYAAIMKACA3AACICgAg0gMAAIQKACDTAwAAhwoAINYDAAAPACDXAwAADwAg2AMAAAEAIAM2AACFCgAg0gMAAIYKACDYAwAAGgAgAzYAAIMKACDSAwAAhAoAINgDAAABACAAAAAB1QMAAACGAwIFNgAA-wkAIDcAAIEKACDSAwAA_AkAINMDAACACgAg2AMAABoAIAU2AAD5CQAgNwAA_gkAINIDAAD6CQAg0wMAAP0JACDYAwAAAQAgAzYAAPsJACDSAwAA_AkAINgDAAAaACADNgAA-QkAINIDAAD6CQAg2AMAAAEAIAAAAAAACzYAAIcGADA3AACMBgAw0gMAAIgGADDTAwAAiQYAMNQDAACKBgAg1QMAAIsGADDWAwAAiwYAMNcDAACLBgAw2AMAAIsGADDZAwAAjQYAMNoDAACOBgAwBAoAAJQGACDbAkAAAAAB8gIBAAAAAfMCAgAAAAECAAAAHgAgNgAAkwYAIAMAAAAeACA2AACTBgAgNwAAkQYAIAEvAAD4CQAwCgoAAIAFACANAACDBQAg0gIAAIIFADDTAgAAHAAQ1AIAAIIFADDbAkAAwwQAIfICAQDABAAh8wICAOEEACGPAwEAwAQAIc4DAACBBQAgAgAAAB4AIC8AAJEGACACAAAAjwYAIC8AAJAGACAH0gIAAI4GADDTAgAAjwYAENQCAACOBgAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhjwMBAMAEACEH0gIAAI4GADDTAgAAjwYAENQCAACOBgAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhjwMBAMAEACED2wJAAKIFACHyAgEAoQUAIfMCAgC0BQAhBAoAAJIGACDbAkAAogUAIfICAQChBQAh8wICALQFACEFNgAA8wkAIDcAAPYJACDSAwAA9AkAINMDAAD1CQAg2AMAAC0AIAQKAACUBgAg2wJAAAAAAfICAQAAAAHzAgIAAAABAzYAAPMJACDSAwAA9AkAINgDAAAtACAENgAAhwYAMNIDAACIBgAw1AMAAIoGACDYAwAAiwYAMAAAAAAAAAHVAwAAAI8DAgU2AADrCQAgNwAA8QkAINIDAADsCQAg0wMAAPAJACDYAwAAGgAgBTYAAOkJACA3AADuCQAg0gMAAOoJACDTAwAA7QkAINgDAAAtACADNgAA6wkAINIDAADsCQAg2AMAABoAIAM2AADpCQAg0gMAAOoJACDYAwAALQAgAAAAAAAFNgAA5AkAIDcAAOcJACDSAwAA5QkAINMDAADmCQAg2AMAAMICACADNgAA5AkAINIDAADlCQAg2AMAAMICACAAAAAAAAU2AADECQAgNwAA4gkAINIDAADFCQAg0wMAAOEJACDYAwAAGgAgBzYAAL0HACA3AADXBwAg0gMAAL4HACDTAwAA1gcAINYDAAAXACDXAwAAFwAg2AMAABoAIAs2AADHBgAwNwAAzAYAMNIDAADIBgAw0wMAAMkGADDUAwAAygYAINUDAADLBgAw1gMAAMsGADDXAwAAywYAMNgDAADLBgAw2QMAAM0GADDaAwAAzgYAMAs2AAC-BgAwNwAAwgYAMNIDAAC_BgAw0wMAAMAGADDUAwAAwQYAINUDAACLBgAw1gMAAIsGADDXAwAAiwYAMNgDAACLBgAw2QMAAMMGADDaAwAAjgYAMAs2AACyBgAwNwAAtwYAMNIDAACzBgAw0wMAALQGADDUAwAAtQYAINUDAAC2BgAw1gMAALYGADDXAwAAtgYAMNgDAAC2BgAw2QMAALgGADDaAwAAuQYAMAUHAACfBgAg1QIBAAAAAdsCQAAAAAH7AgAAAI8DAo0DAQAAAAECAAAAJAAgNgAAvQYAIAMAAAAkACA2AAC9BgAgNwAAvAYAIAEvAADgCQAwCwcAAOsEACAPAACABQAg0gIAAP4EADDTAgAAIgAQ1AIAAP4EADDVAgEAAAAB2wJAAMMEACHyAgEAwAQAIfsCAAD_BI8DIowDAgDhBAAhjQMBAMAEACECAAAAJAAgLwAAvAYAIAIAAAC6BgAgLwAAuwYAIAnSAgAAuQYAMNMCAAC6BgAQ1AIAALkGADDVAgEAwAQAIdsCQADDBAAh8gIBAMAEACH7AgAA_wSPAyKMAwIA4QQAIY0DAQDABAAhCdICAAC5BgAw0wIAALoGABDUAgAAuQYAMNUCAQDABAAh2wJAAMMEACHyAgEAwAQAIfsCAAD_BI8DIowDAgDhBAAhjQMBAMAEACEE1QIBAKEFACHbAkAAogUAIfsCAACcBo8DIo0DAQChBQAhBQcAAJ0GACDVAgEAoQUAIdsCQACiBQAh-wIAAJwGjwMijQMBAKEFACEFBwAAnwYAINUCAQAAAAHbAkAAAAAB-wIAAACPAwKNAwEAAAABAw0AAKcGACDbAkAAAAABjwMBAAAAAQIAAAAeACA2AADGBgAgAwAAAB4AIDYAAMYGACA3AADFBgAgAS8AAN8JADACAAAAHgAgLwAAxQYAIAIAAACPBgAgLwAAxAYAIALbAkAAogUAIY8DAQChBQAhAw0AAKYGACDbAkAAogUAIY8DAQChBQAhAw0AAKcGACDbAkAAAAABjwMBAAAAARgRAADOBwAgEgAAvwcAIBMAAMAHACAVAADCBwAgFgAAwwcAIBgAAMQHACAZAADFBwAgGgAAxgcAIBsAAMcHACAcAADIBwAgIAAAyQcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAgAAABoAIDYAANUHACADAAAAGgAgNgAA1QcAIDcAANMGACABLwAA3gkAMB8RAACHBQAgEgAA8QQAIBMAAPwEACAUAACHBQAgFQAAiAUAIBYAAIkFACAYAACKBQAgGQAA_QQAIBoAAIsFACAbAACMBQAgHAAAjQUAICAAAO4EACDSAgAAhQUAMNMCAAAXABDUAgAAhQUAMNUCAQAAAAHbAkAAwwQAIfACAgAAAAH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAhzwMAAIQFACACAAAAGgAgLwAA0wYAIAIAAADPBgAgLwAA0AYAIBLSAgAAzgYAMNMCAADPBgAQ1AIAAM4GADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAhEtICAADOBgAw0wIAAM8GABDUAgAAzgYAMNUCAQDABAAh2wJAAMMEACHwAgIAwQQAIfYCQADDBAAh-AJAAOMEACGYAwIAwQQAIZkDAQDCBAAhmgMCAMEEACGcAwAAhgWcAyKdAyAA4gQAIZ4DIADiBAAhnwMCAOEEACGgAwIA4QQAIaEDAgDhBAAhogMCAOEEACEN1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhAdUDAAAAnAMCAdUDIAAAAAEYEQAA1AYAIBIAANUGACATAADWBgAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAbAADcBgAgHAAA3QYAICAAAN4GACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEHNgAAywkAIDcAANwJACDSAwAAzAkAINMDAADbCQAg1gMAABUAINcDAAAVACDYAwAALQAgBzYAAM4JACA3AADZCQAg0gMAAM8JACDTAwAA2AkAINYDAAAXACDXAwAAFwAg2AMAABoAIAs2AADKBwAwNwAA0AcAMNIDAADLBwAw0wMAAM8HADDUAwAAzAcAINUDAADLBgAw1gMAAMsGADDXAwAAywYAMNgDAADLBgAw2QMAANEHADDaAwAAzgYAMAs2AACtBwAwNwAAsgcAMNIDAACuBwAw0wMAAK8HADDUAwAAsAcAINUDAACxBwAw1gMAALEHADDXAwAAsQcAMNgDAACxBwAw2QMAALMHADDaAwAAtAcAMAs2AAChBwAwNwAApgcAMNIDAACiBwAw0wMAAKMHADDUAwAApAcAINUDAAClBwAw1gMAAKUHADDXAwAApQcAMNgDAAClBwAw2QMAAKcHADDaAwAAqAcAMAs2AACVBwAwNwAAmgcAMNIDAACWBwAw0wMAAJcHADDUAwAAmAcAINUDAACZBwAw1gMAAJkHADDXAwAAmQcAMNgDAACZBwAw2QMAAJsHADDaAwAAnAcAMAs2AACMBwAwNwAAkAcAMNIDAACNBwAw0wMAAI4HADDUAwAAjwcAINUDAAC2BgAw1gMAALYGADDXAwAAtgYAMNgDAAC2BgAw2QMAAJEHADDaAwAAuQYAMAs2AACABwAwNwAAhQcAMNIDAACBBwAw0wMAAIIHADDUAwAAgwcAINUDAACEBwAw1gMAAIQHADDXAwAAhAcAMNgDAACEBwAw2QMAAIYHADDaAwAAhwcAMAs2AAD0BgAwNwAA-QYAMNIDAAD1BgAw0wMAAPYGADDUAwAA9wYAINUDAAD4BgAw1gMAAPgGADDXAwAA-AYAMNgDAAD4BgAw2QMAAPoGADDaAwAA-wYAMAs2AADoBgAwNwAA7QYAMNIDAADpBgAw0wMAAOoGADDUAwAA6wYAINUDAADsBgAw1gMAAOwGADDXAwAA7AYAMNgDAADsBgAw2QMAAO4GADDaAwAA7wYAMAs2AADfBgAwNwAA4wYAMNIDAADgBgAw0wMAAOEGADDUAwAA4gYAINUDAADKBQAw1gMAAMoFADDXAwAAygUAMNgDAADKBQAw2QMAAOQGADDaAwAAzQUAMA8DAADTBQAgGgAA1QUAIB0AANYFACAeAADUBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfECAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAECAAAARgAgNgAA5wYAIAMAAABGACA2AADnBgAgNwAA5gYAIAEvAADXCQAwAgAAAEYAIC8AAOYGACACAAAAzgUAIC8AAOUGACAL1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8AICALIFACHxAgEAswUAIfMCAgCyBQAh9AIBALMFACH1AgIAtAUAIfYCQACiBQAh9wJAAKMFACH4AkAAowUAIQ8DAAC2BQAgGgAAuQUAIB0AALcFACAeAAC4BQAg1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8AICALIFACHxAgEAswUAIfMCAgCyBQAh9AIBALMFACH1AgIAtAUAIfYCQACiBQAh9wJAAKMFACH4AkAAowUAIQ8DAADTBQAgGgAA1QUAIB0AANYFACAeAADUBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfECAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAEHAwAA3gUAIC-AAAAAAdUCAQAAAAHbAkAAAAAB7wIBAAAAAfYCQAAAAAH5AgIAAAABAgAAAEEAIDYAAPMGACADAAAAQQAgNgAA8wYAIDcAAPIGACABLwAA1gkAMAwDAADkBAAgBwAA8QQAIC8AAOYEACDSAgAA8AQAMNMCAAA_ABDUAgAA8AQAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh8gIBAMIEACH2AkAAwwQAIfkCAgDhBAAhAgAAAEEAIC8AAPIGACACAAAA8AYAIC8AAPEGACAKLwAA5gQAINICAADvBgAw0wIAAPAGABDUAgAA7wYAMNUCAQDABAAh2wJAAMMEACHvAgEAwAQAIfICAQDCBAAh9gJAAMMEACH5AgIA4QQAIQovAADmBAAg0gIAAO8GADDTAgAA8AYAENQCAADvBgAw1QIBAMAEACHbAkAAwwQAIe8CAQDABAAh8gIBAMIEACH2AkAAwwQAIfkCAgDhBAAhBi-AAAAAAdUCAQChBQAh2wJAAKIFACHvAgEAoQUAIfYCQACiBQAh-QICALQFACEHAwAA3AUAIC-AAAAAAdUCAQChBQAh2wJAAKIFACHvAgEAoQUAIfYCQACiBQAh-QICALQFACEHAwAA3gUAIC-AAAAAAdUCAQAAAAHbAkAAAAAB7wIBAAAAAfYCQAAAAAH5AgIAAAABDAMAAOkFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHzAgIAAAAB-wIAAAD7AgL8AgEAAAAB_QIBAAAAAf4CAQAAAAH_AgEAAAABgAOAAAAAAYEDAQAAAAECAAAAPAAgNgAA_wYAIAMAAAA8ACA2AAD_BgAgNwAA_gYAIAEvAADVCQAwEQMAAOwEACAHAADrBAAg0gIAAPIEADDTAgAAOgAQ1AIAAPIEADDVAgEAAAAB2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACECAAAAPAAgLwAA_gYAIAIAAAD8BgAgLwAA_QYAIA_SAgAA-wYAMNMCAAD8BgAQ1AIAAPsGADDVAgEAwAQAIdsCQADDBAAh7wIBAMIEACHyAgEAwAQAIfMCAgDBBAAh-wIAAPME-wIi_AIBAMIEACH9AgEAwgQAIf4CAQDCBAAh_wIBAMIEACGAAwAA9AQAIIEDAQDCBAAhD9ICAAD7BgAw0wIAAPwGABDUAgAA-wYAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACEL1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8wICALIFACH7AgAA5QX7AiL8AgEAswUAIf0CAQCzBQAh_gIBALMFACH_AgEAswUAIYADgAAAAAGBAwEAswUAIQwDAADnBQAg1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8wICALIFACH7AgAA5QX7AiL8AgEAswUAIf0CAQCzBQAh_gIBALMFACH_AgEAswUAIYADgAAAAAGBAwEAswUAIQwDAADpBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8wICAAAAAfsCAAAA-wIC_AIBAAAAAf0CAQAAAAH-AgEAAAAB_wIBAAAAAYADgAAAAAGBAwEAAAABAwMAAPAFACDbAkAAAAAB7wIBAAAAAQIAAAA4ACA2AACLBwAgAwAAADgAIDYAAIsHACA3AACKBwAgAS8AANQJADAJAwAA5AQAIAcAAOsEACDSAgAA9gQAMNMCAAA2ABDUAgAA9gQAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIcsDAAD1BAAgAgAAADgAIC8AAIoHACACAAAAiAcAIC8AAIkHACAG0gIAAIcHADDTAgAAiAcAENQCAACHBwAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhBtICAACHBwAw0wIAAIgHABDUAgAAhwcAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIQLbAkAAogUAIe8CAQChBQAhAwMAAO4FACDbAkAAogUAIe8CAQChBQAhAwMAAPAFACDbAkAAAAAB7wIBAAAAAQYPAACgBgAg1QIBAAAAAdsCQAAAAAH7AgAAAI8DAowDAgAAAAGNAwEAAAABAgAAACQAIDYAAJQHACADAAAAJAAgNgAAlAcAIDcAAJMHACABLwAA0wkAMAIAAAAkACAvAACTBwAgAgAAALoGACAvAACSBwAgBdUCAQChBQAh2wJAAKIFACH7AgAAnAaPAyKMAwIAtAUAIY0DAQChBQAhBg8AAJ4GACDVAgEAoQUAIdsCQACiBQAh-wIAAJwGjwMijAMCALQFACGNAwEAoQUAIQYPAACgBgAg1QIBAAAAAdsCQAAAAAH7AgAAAI8DAowDAgAAAAGNAwEAAAABBRcAAPgFACDVAgEAAAAB2wJAAAAAAYIDAQAAAAGEAwAAAIQDAgIAAAAyACA2AACgBwAgAwAAADIAIDYAAKAHACA3AACfBwAgAS8AANIJADALBwAA6wQAIBcAAOwEACDSAgAA-AQAMNMCAAAwABDUAgAA-AQAMNUCAQAAAAHbAkAAwwQAIfICAQDABAAhggMBAMIEACGEAwAA-QSEAyLMAwAA9wQAIAIAAAAyACAvAACfBwAgAgAAAJ0HACAvAACeBwAgCNICAACcBwAw0wIAAJ0HABDUAgAAnAcAMNUCAQDABAAh2wJAAMMEACHyAgEAwAQAIYIDAQDCBAAhhAMAAPkEhAMiCNICAACcBwAw0wIAAJ0HABDUAgAAnAcAMNUCAQDABAAh2wJAAMMEACHyAgEAwAQAIYIDAQDCBAAhhAMAAPkEhAMiBNUCAQChBQAh2wJAAKIFACGCAwEAswUAIYQDAAD0BYQDIgUXAAD2BQAg1QIBAKEFACHbAkAAogUAIYIDAQCzBQAhhAMAAPQFhAMiBRcAAPgFACDVAgEAAAAB2wJAAAAAAYIDAQAAAAGEAwAAAIQDAgQDAACABgAg2wJAAAAAAe8CAQAAAAGGAwAAAIYDAgIAAAATACA2AACsBwAgAwAAABMAIDYAAKwHACA3AACrBwAgAS8AANEJADAKAwAA5AQAIAcAAOsEACDSAgAAjwUAMNMCAAARABDUAgAAjwUAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIYYDAACQBYYDIssDAACOBQAgAgAAABMAIC8AAKsHACACAAAAqQcAIC8AAKoHACAH0gIAAKgHADDTAgAAqQcAENQCAACoBwAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhhgMAAJAFhgMiB9ICAACoBwAw0wIAAKkHABDUAgAAqAcAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIYYDAACQBYYDIgPbAkAAogUAIe8CAQChBQAhhgMAAPwFhgMiBAMAAP4FACDbAkAAogUAIe8CAQChBQAhhgMAAPwFhgMiBAMAAIAGACDbAkAAAAAB7wIBAAAAAYYDAAAAhgMCDggAALkHACAJAAC6BwAgDgAAuwcAIBAAALwHACDbAkAAAAAB8wICAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDAQAAAAGXA0AAAAABAgAAAC0AIDYAALgHACADAAAALQAgNgAAuAcAIDcAALcHACABLwAA0AkAMBQHAADrBAAgCAAA8QQAIAkAAPwEACAOAADEBAAgEAAA_QQAINICAAD7BAAw0wIAABUAENQCAAD7BAAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhkAMBAMAEACGRAwEAwgQAIZIDAQDCBAAhkwMBAMIEACGUAwEAwAQAIZUDAQDCBAAhlgMBAMIEACGXA0AA4wQAIc0DAAD6BAAgAgAAAC0AIC8AALcHACACAAAAtQcAIC8AALYHACAO0gIAALQHADDTAgAAtQcAENQCAAC0BwAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhkAMBAMAEACGRAwEAwgQAIZIDAQDCBAAhkwMBAMIEACGUAwEAwAQAIZUDAQDCBAAhlgMBAMIEACGXA0AA4wQAIQ7SAgAAtAcAMNMCAAC1BwAQ1AIAALQHADDbAkAAwwQAIfICAQDABAAh8wICAOEEACGQAwEAwAQAIZEDAQDCBAAhkgMBAMIEACGTAwEAwgQAIZQDAQDABAAhlQMBAMIEACGWAwEAwgQAIZcDQADjBAAhCtsCQACiBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhDggAAK4GACAJAACvBgAgDgAAsAYAIBAAALEGACDbAkAAogUAIfMCAgC0BQAhkAMBAKEFACGRAwEAswUAIZIDAQCzBQAhkwMBALMFACGUAwEAoQUAIZUDAQCzBQAhlgMBALMFACGXA0AAowUAIQ4IAAC5BwAgCQAAugcAIA4AALsHACAQAAC8BwAg2wJAAAAAAfMCAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwEAAAABlwNAAAAAAQM2AAC9BwAg0gMAAL4HACDYAwAAGgAgBDYAAMcGADDSAwAAyAYAMNQDAADKBgAg2AMAAMsGADAENgAAvgYAMNIDAAC_BgAw1AMAAMEGACDYAwAAiwYAMAQ2AACyBgAw0gMAALMGADDUAwAAtQYAINgDAAC2BgAwGBIAAL8HACATAADABwAgFAAAwQcAIBUAAMIHACAWAADDBwAgGAAAxAcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZkDAQAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAAvQcAIAM2AADOCQAg0gMAAM8JACDYAwAAGgAgBDYAAMoHADDSAwAAywcAMNQDAADMBwAg2AMAAMsGADADNgAAxgkAINIDAADHCQAg2AMAAC0AIAQ2AACtBwAw0gMAAK4HADDUAwAAsAcAINgDAACxBwAwBDYAAKEHADDSAwAAogcAMNQDAACkBwAg2AMAAKUHADAENgAAlQcAMNIDAACWBwAw1AMAAJgHACDYAwAAmQcAMAQ2AACMBwAw0gMAAI0HADDUAwAAjwcAINgDAAC2BgAwBDYAAIAHADDSAwAAgQcAMNQDAACDBwAg2AMAAIQHADAENgAA9AYAMNIDAAD1BgAw1AMAAPcGACDYAwAA-AYAMAQ2AADoBgAw0gMAAOkGADDUAwAA6wYAINgDAADsBgAwBDYAAN8GADDSAwAA4AYAMNQDAADiBgAg2AMAAMoFADAZEQAAzgcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgHAAAyAcAICAAAMkHACDVAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZgDAgAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAAzQcAIAEvAADNCQAwGREAAM4HACATAADABwAgFAAAwQcAIBUAAMIHACAWAADDBwAgGAAAxAcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmgMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAzYAAMsJACDSAwAAzAkAINgDAAAtACADAAAAGgAgNgAAzQcAIDcAANMHACACAAAAGgAgLwAA0wcAIAIAAADPBgAgLwAA0gcAIA7VAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRkRAADUBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhBzYAAMYJACA3AADJCQAg0gMAAMcJACDTAwAAyAkAINYDAAAVACDXAwAAFQAg2AMAAC0AIBgRAADOBwAgEgAAvwcAIBMAAMAHACAVAADCBwAgFgAAwwcAIBgAAMQHACAZAADFBwAgGgAAxgcAIBsAAMcHACAcAADIBwAgIAAAyQcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAwAAABcAIDYAAL0HACA3AADYBwAgGgAAABcAIBIAANUGACATAADWBgAgFAAA1AcAIBUAANcGACAWAADYBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAgLwAA2AcAINsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRgSAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAINsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIQM2AADECQAg0gMAAMUJACDYAwAAGgAgAAAAAAAAAAAAAAU2AAC_CQAgNwAAwgkAINIDAADACQAg0wMAAMEJACDYAwAAAQAgAzYAAL8JACDSAwAAwAkAINgDAAABACAAAAAHNgAAugkAIDcAAL0JACDSAwAAuwkAINMDAAC8CQAg1gMAAA8AINcDAAAPACDYAwAAAQAgAzYAALoJACDSAwAAuwkAINgDAAABACAAAAAFNgAAtQkAIDcAALgJACDSAwAAtgkAINMDAAC3CQAg2AMAAAEAIAM2AAC1CQAg0gMAALYJACDYAwAAAQAgAAAABTYAALAJACA3AACzCQAg0gMAALEJACDTAwAAsgkAINgDAAABACADNgAAsAkAINIDAACxCQAg2AMAAAEAIAAAAAAAAdUDAAAAvQMCAdUDAAAAvwMCAdUDIAAAAAELNgAA-AgAMDcAAP0IADDSAwAA-QgAMNMDAAD6CAAw1AMAAPsIACDVAwAA_AgAMNYDAAD8CAAw1wMAAPwIADDYAwAA_AgAMNkDAAD-CAAw2gMAAP8IADALNgAA7AgAMDcAAPEIADDSAwAA7QgAMNMDAADuCAAw1AMAAO8IACDVAwAA8AgAMNYDAADwCAAw1wMAAPAIADDYAwAA8AgAMNkDAADyCAAw2gMAAPMIADALNgAA4AgAMDcAAOUIADDSAwAA4QgAMNMDAADiCAAw1AMAAOMIACDVAwAA5AgAMNYDAADkCAAw1wMAAOQIADDYAwAA5AgAMNkDAADmCAAw2gMAAOcIADALNgAA1wgAMDcAANsIADDSAwAA2AgAMNMDAADZCAAw1AMAANoIACDVAwAApQcAMNYDAAClBwAw1wMAAKUHADDYAwAApQcAMNkDAADcCAAw2gMAAKgHADALNgAAzggAMDcAANIIADDSAwAAzwgAMNMDAADQCAAw1AMAANEIACDVAwAAmQcAMNYDAACZBwAw1wMAAJkHADDYAwAAmQcAMNkDAADTCAAw2gMAAJwHADALNgAAwggAMDcAAMcIADDSAwAAwwgAMNMDAADECAAw1AMAAMUIACDVAwAAxggAMNYDAADGCAAw1wMAAMYIADDYAwAAxggAMNkDAADICAAw2gMAAMkIADALNgAAuQgAMDcAAL0IADDSAwAAuggAMNMDAAC7CAAw1AMAALwIACDVAwAAhAcAMNYDAACEBwAw1wMAAIQHADDYAwAAhAcAMNkDAAC-CAAw2gMAAIcHADALNgAAsAgAMDcAALQIADDSAwAAsQgAMNMDAACyCAAw1AMAALMIACDVAwAA-AYAMNYDAAD4BgAw1wMAAPgGADDYAwAA-AYAMNkDAAC1CAAw2gMAAPsGADALNgAApwgAMDcAAKsIADDSAwAAqAgAMNMDAACpCAAw1AMAAKoIACDVAwAA7AYAMNYDAADsBgAw1wMAAOwGADDYAwAA7AYAMNkDAACsCAAw2gMAAO8GADALNgAAnggAMDcAAKIIADDSAwAAnwgAMNMDAACgCAAw1AMAAKEIACDVAwAAygUAMNYDAADKBQAw1wMAAMoFADDYAwAAygUAMNkDAACjCAAw2gMAAM0FADALNgAAlQgAMDcAAJkIADDSAwAAlggAMNMDAACXCAAw1AMAAJgIACDVAwAAvgUAMNYDAAC-BQAw1wMAAL4FADDYAwAAvgUAMNkDAACaCAAw2gMAAMEFADALNgAAiQgAMDcAAI4IADDSAwAAiggAMNMDAACLCAAw1AMAAIwIACDVAwAAjQgAMNYDAACNCAAw1wMAAI0IADDYAwAAjQgAMNkDAACPCAAw2gMAAJAIADAK1QIBAAAAAdsCQAAAAAGHAwEAAAABowMBAAAAAaQDAQAAAAGlAwIAAAABpgMBAAAAAacDIAAAAAGoAwEAAAABqQMBAAAAAQIAAABmACA2AACUCAAgAwAAAGYAIDYAAJQIACA3AACTCAAgAS8AAK8JADAPAwAA5AQAINICAADgBAAw0wIAAGQAENQCAADgBAAw1QIBAAAAAdsCQADjBAAh7wIBAMAEACGHAwEAwgQAIaMDAQDABAAhpAMBAMAEACGlAwIA4QQAIaYDAQDABAAhpwMgAOIEACGoAwEAwgQAIakDAQDCBAAhAgAAAGYAIC8AAJMIACACAAAAkQgAIC8AAJIIACAO0gIAAJAIADDTAgAAkQgAENQCAACQCAAw1QIBAMAEACHbAkAA4wQAIe8CAQDABAAhhwMBAMIEACGjAwEAwAQAIaQDAQDABAAhpQMCAOEEACGmAwEAwAQAIacDIADiBAAhqAMBAMIEACGpAwEAwgQAIQ7SAgAAkAgAMNMCAACRCAAQ1AIAAJAIADDVAgEAwAQAIdsCQADjBAAh7wIBAMAEACGHAwEAwgQAIaMDAQDABAAhpAMBAMAEACGlAwIA4QQAIaYDAQDABAAhpwMgAOIEACGoAwEAwgQAIakDAQDCBAAhCtUCAQChBQAh2wJAAKMFACGHAwEAswUAIaMDAQChBQAhpAMBAKEFACGlAwIAtAUAIaYDAQChBQAhpwMgANIGACGoAwEAswUAIakDAQCzBQAhCtUCAQChBQAh2wJAAKMFACGHAwEAswUAIaMDAQChBQAhpAMBAKEFACGlAwIAtAUAIaYDAQChBQAhpwMgANIGACGoAwEAswUAIakDAQCzBQAhCtUCAQAAAAHbAkAAAAABhwMBAAAAAaMDAQAAAAGkAwEAAAABpQMCAAAAAaYDAQAAAAGnAyAAAAABqAMBAAAAAakDAQAAAAEDHwAAqwUAINsCQAAAAAHuAgEAAAABAgAAAE0AIDYAAJ0IACADAAAATQAgNgAAnQgAIDcAAJwIACABLwAArgkAMAIAAABNACAvAACcCAAgAgAAAMIFACAvAACbCAAgAtsCQACiBQAh7gIBAKEFACEDHwAAqQUAINsCQACiBQAh7gIBAKEFACEDHwAAqwUAINsCQAAAAAHuAgEAAAABDwcAANIFACAaAADVBQAgHQAA1gUAIB4AANQFACDVAgEAAAAB2wJAAAAAAfACAgAAAAHxAgEAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQIAAABGACA2AACmCAAgAwAAAEYAIDYAAKYIACA3AAClCAAgAS8AAK0JADACAAAARgAgLwAApQgAIAIAAADOBQAgLwAApAgAIAvVAgEAoQUAIdsCQACiBQAh8AICALIFACHxAgEAswUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhDwcAALUFACAaAAC5BQAgHQAAtwUAIB4AALgFACDVAgEAoQUAIdsCQACiBQAh8AICALIFACHxAgEAswUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhDwcAANIFACAaAADVBQAgHQAA1gUAIB4AANQFACDVAgEAAAAB2wJAAAAAAfACAgAAAAHxAgEAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQcHAADfBQAgL4AAAAAB1QIBAAAAAdsCQAAAAAHyAgEAAAAB9gJAAAAAAfkCAgAAAAECAAAAQQAgNgAArwgAIAMAAABBACA2AACvCAAgNwAArggAIAEvAACsCQAwAgAAAEEAIC8AAK4IACACAAAA8AYAIC8AAK0IACAGL4AAAAAB1QIBAKEFACHbAkAAogUAIfICAQCzBQAh9gJAAKIFACH5AgIAtAUAIQcHAADdBQAgL4AAAAAB1QIBAKEFACHbAkAAogUAIfICAQCzBQAh9gJAAKIFACH5AgIAtAUAIQcHAADfBQAgL4AAAAAB1QIBAAAAAdsCQAAAAAHyAgEAAAAB9gJAAAAAAfkCAgAAAAEMBwAA6AUAINUCAQAAAAHbAkAAAAAB8gIBAAAAAfMCAgAAAAH7AgAAAPsCAvwCAQAAAAH9AgEAAAAB_gIBAAAAAf8CAQAAAAGAA4AAAAABgQMBAAAAAQIAAAA8ACA2AAC4CAAgAwAAADwAIDYAALgIACA3AAC3CAAgAS8AAKsJADACAAAAPAAgLwAAtwgAIAIAAAD8BgAgLwAAtggAIAvVAgEAoQUAIdsCQACiBQAh8gIBAKEFACHzAgIAsgUAIfsCAADlBfsCIvwCAQCzBQAh_QIBALMFACH-AgEAswUAIf8CAQCzBQAhgAOAAAAAAYEDAQCzBQAhDAcAAOYFACDVAgEAoQUAIdsCQACiBQAh8gIBAKEFACHzAgIAsgUAIfsCAADlBfsCIvwCAQCzBQAh_QIBALMFACH-AgEAswUAIf8CAQCzBQAhgAOAAAAAAYEDAQCzBQAhDAcAAOgFACDVAgEAAAAB2wJAAAAAAfICAQAAAAHzAgIAAAAB-wIAAAD7AgL8AgEAAAAB_QIBAAAAAf4CAQAAAAH_AgEAAAABgAOAAAAAAYEDAQAAAAEDBwAA7wUAINsCQAAAAAHyAgEAAAABAgAAADgAIDYAAMEIACADAAAAOAAgNgAAwQgAIDcAAMAIACABLwAAqgkAMAIAAAA4ACAvAADACAAgAgAAAIgHACAvAAC_CAAgAtsCQACiBQAh8gIBAKEFACEDBwAA7QUAINsCQACiBQAh8gIBAKEFACEDBwAA7wUAINsCQAAAAAHyAgEAAAABB9UCAQAAAAHWAgEAAAAB2AIBAAAAAdkCAQAAAAHaAoAAAAAB2wJAAAAAAdwCQAAAAAECAAAAXQAgNgAAzQgAIAMAAABdACA2AADNCAAgNwAAzAgAIAEvAACpCQAwDCMAAOQEACDSAgAA5QQAMNMCAABbABDUAgAA5QQAMNUCAQAAAAHWAgEAwAQAIdcCAQDABAAh2AIBAMAEACHZAgEAwAQAIdoCAADmBAAg2wJAAMMEACHcAkAA4wQAIQIAAABdACAvAADMCAAgAgAAAMoIACAvAADLCAAgC9ICAADJCAAw0wIAAMoIABDUAgAAyQgAMNUCAQDABAAh1gIBAMAEACHXAgEAwAQAIdgCAQDABAAh2QIBAMAEACHaAgAA5gQAINsCQADDBAAh3AJAAOMEACEL0gIAAMkIADDTAgAAyggAENQCAADJCAAw1QIBAMAEACHWAgEAwAQAIdcCAQDABAAh2AIBAMAEACHZAgEAwAQAIdoCAADmBAAg2wJAAMMEACHcAkAA4wQAIQfVAgEAoQUAIdYCAQChBQAh2AIBAKEFACHZAgEAoQUAIdoCgAAAAAHbAkAAogUAIdwCQACjBQAhB9UCAQChBQAh1gIBAKEFACHYAgEAoQUAIdkCAQChBQAh2gKAAAAAAdsCQACiBQAh3AJAAKMFACEH1QIBAAAAAdYCAQAAAAHYAgEAAAAB2QIBAAAAAdoCgAAAAAHbAkAAAAAB3AJAAAAAAQUHAAD3BQAg1QIBAAAAAdsCQAAAAAHyAgEAAAABhAMAAACEAwICAAAAMgAgNgAA1ggAIAMAAAAyACA2AADWCAAgNwAA1QgAIAEvAACoCQAwAgAAADIAIC8AANUIACACAAAAnQcAIC8AANQIACAE1QIBAKEFACHbAkAAogUAIfICAQChBQAhhAMAAPQFhAMiBQcAAPUFACDVAgEAoQUAIdsCQACiBQAh8gIBAKEFACGEAwAA9AWEAyIFBwAA9wUAINUCAQAAAAHbAkAAAAAB8gIBAAAAAYQDAAAAhAMCBAcAAP8FACDbAkAAAAAB8gIBAAAAAYYDAAAAhgMCAgAAABMAIDYAAN8IACADAAAAEwAgNgAA3wgAIDcAAN4IACABLwAApwkAMAIAAAATACAvAADeCAAgAgAAAKkHACAvAADdCAAgA9sCQACiBQAh8gIBAKEFACGGAwAA_AWGAyIEBwAA_QUAINsCQACiBQAh8gIBAKEFACGGAwAA_AWGAyIEBwAA_wUAINsCQAAAAAHyAgEAAAABhgMAAACGAwIG1QIBAAAAAdsCQAAAAAH2AkAAAAABqgMBAAAAAasDAQAAAAGsA0AAAAABAgAAAA0AIDYAAOsIACADAAAADQAgNgAA6wgAIDcAAOoIACABLwAApgkAMAsDAADsBAAg0gIAAJoFADDTAgAACwAQ1AIAAJoFADDVAgEAAAAB2wJAAOMEACHvAgEAwgQAIfYCQADjBAAhqgMBAMAEACGrAwEAwAQAIawDQADDBAAhAgAAAA0AIC8AAOoIACACAAAA6AgAIC8AAOkIACAK0gIAAOcIADDTAgAA6AgAENQCAADnCAAw1QIBAMAEACHbAkAA4wQAIe8CAQDCBAAh9gJAAOMEACGqAwEAwAQAIasDAQDABAAhrANAAMMEACEK0gIAAOcIADDTAgAA6AgAENQCAADnCAAw1QIBAMAEACHbAkAA4wQAIe8CAQDCBAAh9gJAAOMEACGqAwEAwAQAIasDAQDABAAhrANAAMMEACEG1QIBAKEFACHbAkAAowUAIfYCQACjBQAhqgMBAKEFACGrAwEAoQUAIawDQACiBQAhBtUCAQChBQAh2wJAAKMFACH2AkAAowUAIaoDAQChBQAhqwMBAKEFACGsA0AAogUAIQbVAgEAAAAB2wJAAAAAAfYCQAAAAAGqAwEAAAABqwMBAAAAAawDQAAAAAEI1QIBAAAAAdsCQAAAAAH2AkAAAAAB_gIBAAAAAawDQAAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAECAAAACQAgNgAA9wgAIAMAAAAJACA2AAD3CAAgNwAA9ggAIAEvAAClCQAwDQMAAOQEACDSAgAAmwUAMNMCAAAHABDUAgAAmwUAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACH-AgEAwgQAIawDQADDBAAhrQMBAAAAAa4DAQDCBAAhrwMBAMIEACECAAAACQAgLwAA9ggAIAIAAAD0CAAgLwAA9QgAIAzSAgAA8wgAMNMCAAD0CAAQ1AIAAPMIADDVAgEAwAQAIdsCQADDBAAh7wIBAMAEACH2AkAAwwQAIf4CAQDCBAAhrANAAMMEACGtAwEAwAQAIa4DAQDCBAAhrwMBAMIEACEM0gIAAPMIADDTAgAA9AgAENQCAADzCAAw1QIBAMAEACHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACH-AgEAwgQAIawDQADDBAAhrQMBAMAEACGuAwEAwgQAIa8DAQDCBAAhCNUCAQChBQAh2wJAAKIFACH2AkAAogUAIf4CAQCzBQAhrANAAKIFACGtAwEAoQUAIa4DAQCzBQAhrwMBALMFACEI1QIBAKEFACHbAkAAogUAIfYCQACiBQAh_gIBALMFACGsA0AAogUAIa0DAQChBQAhrgMBALMFACGvAwEAswUAIQjVAgEAAAAB2wJAAAAAAfYCQAAAAAH-AgEAAAABrANAAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAQzVAgEAAAAB2wJAAAAAAfYCQAAAAAGwAwEAAAABsQMBAAAAAbIDAQAAAAGzAwEAAAABtANAAAAAAbUDQAAAAAG2AwEAAAABtwMBAAAAAbgDAQAAAAECAAAABQAgNgAAgwkAIAMAAAAFACA2AACDCQAgNwAAggkAIAEvAACkCQAwEQMAAOQEACDSAgAAnAUAMNMCAAADABDUAgAAnAUAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACGwAwEAwAQAIbEDAQDABAAhsgMBAMIEACGzAwEAwgQAIbQDQADjBAAhtQNAAOMEACG2AwEAwgQAIbcDAQDCBAAhuAMBAMIEACECAAAABQAgLwAAggkAIAIAAACACQAgLwAAgQkAIBDSAgAA_wgAMNMCAACACQAQ1AIAAP8IADDVAgEAwAQAIdsCQADDBAAh7wIBAMAEACH2AkAAwwQAIbADAQDABAAhsQMBAMAEACGyAwEAwgQAIbMDAQDCBAAhtANAAOMEACG1A0AA4wQAIbYDAQDCBAAhtwMBAMIEACG4AwEAwgQAIRDSAgAA_wgAMNMCAACACQAQ1AIAAP8IADDVAgEAwAQAIdsCQADDBAAh7wIBAMAEACH2AkAAwwQAIbADAQDABAAhsQMBAMAEACGyAwEAwgQAIbMDAQDCBAAhtANAAOMEACG1A0AA4wQAIbYDAQDCBAAhtwMBAMIEACG4AwEAwgQAIQzVAgEAoQUAIdsCQACiBQAh9gJAAKIFACGwAwEAoQUAIbEDAQChBQAhsgMBALMFACGzAwEAswUAIbQDQACjBQAhtQNAAKMFACG2AwEAswUAIbcDAQCzBQAhuAMBALMFACEM1QIBAKEFACHbAkAAogUAIfYCQACiBQAhsAMBAKEFACGxAwEAoQUAIbIDAQCzBQAhswMBALMFACG0A0AAowUAIbUDQACjBQAhtgMBALMFACG3AwEAswUAIbgDAQCzBQAhDNUCAQAAAAHbAkAAAAAB9gJAAAAAAbADAQAAAAGxAwEAAAABsgMBAAAAAbMDAQAAAAG0A0AAAAABtQNAAAAAAbYDAQAAAAG3AwEAAAABuAMBAAAAAQQ2AAD4CAAw0gMAAPkIADDUAwAA-wgAINgDAAD8CAAwBDYAAOwIADDSAwAA7QgAMNQDAADvCAAg2AMAAPAIADAENgAA4AgAMNIDAADhCAAw1AMAAOMIACDYAwAA5AgAMAQ2AADXCAAw0gMAANgIADDUAwAA2ggAINgDAAClBwAwBDYAAM4IADDSAwAAzwgAMNQDAADRCAAg2AMAAJkHADAENgAAwggAMNIDAADDCAAw1AMAAMUIACDYAwAAxggAMAQ2AAC5CAAw0gMAALoIADDUAwAAvAgAINgDAACEBwAwBDYAALAIADDSAwAAsQgAMNQDAACzCAAg2AMAAPgGADAENgAApwgAMNIDAACoCAAw1AMAAKoIACDYAwAA7AYAMAQ2AACeCAAw0gMAAJ8IADDUAwAAoQgAINgDAADKBQAwBDYAAJUIADDSAwAAlggAMNQDAACYCAAg2AMAAL4FADAENgAAiQgAMNIDAACKCAAw1AMAAIwIACDYAwAAjQgAMAAAAAAAAAAAAAAAABsEAACQCQAgBQAAkQkAIAYAAJIJACAgAACZCQAgIQAAkwkAICIAAJQJACAkAACVCQAgJQAAlgkAICYAAJcJACAnAACYCQAgKAAAmgkAICkAAJsJACDwAgAAnQUAIPgCAACdBQAghgMAAJ0FACCHAwAAnQUAILkDAACdBQAguwMAAJ0FACDBAwAAnQUAIMIDAACdBQAgwwMAAJ0FACDEAwAAnQUAIMUDAACdBQAgxgMAAJ0FACDHAwAAnQUAIMgDAACdBQAgyQMAAJ0FACAMAwAAnAkAIAcAAJ4JACAaAACaCQAgHQAAnQkAIB4AAJkJACDvAgAAnQUAIPACAACdBQAg8QIAAJ0FACDzAgAAnQUAIPQCAACdBQAg9wIAAJ0FACD4AgAAnQUAIBERAAChCQAgEgAAngkAIBMAAJ8JACAUAAChCQAgFQAAowkAIBYAAJMJACAYAACUCQAgGQAAoAkAIBoAAJYJACAbAACXCQAgHAAAmAkAICAAAJkJACDwAgAAnQUAIPgCAACdBQAgmAMAAJ0FACCZAwAAnQUAIJoDAACdBQAgAAALBwAAngkAIAgAAJ4JACAJAACfCQAgDgAAlgYAIBAAAKAJACCRAwAAnQUAIJIDAACdBQAgkwMAAJ0FACCVAwAAnQUAIJYDAACdBQAglwMAAJ0FACADCwAAlgYAIPACAACdBQAgiAMAAJ0FACAADNUCAQAAAAHbAkAAAAAB9gJAAAAAAbADAQAAAAGxAwEAAAABsgMBAAAAAbMDAQAAAAG0A0AAAAABtQNAAAAAAbYDAQAAAAG3AwEAAAABuAMBAAAAAQjVAgEAAAAB2wJAAAAAAfYCQAAAAAH-AgEAAAABrANAAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAQbVAgEAAAAB2wJAAAAAAfYCQAAAAAGqAwEAAAABqwMBAAAAAawDQAAAAAED2wJAAAAAAfICAQAAAAGGAwAAAIYDAgTVAgEAAAAB2wJAAAAAAfICAQAAAAGEAwAAAIQDAgfVAgEAAAAB1gIBAAAAAdgCAQAAAAHZAgEAAAAB2gKAAAAAAdsCQAAAAAHcAkAAAAABAtsCQAAAAAHyAgEAAAABC9UCAQAAAAHbAkAAAAAB8gIBAAAAAfMCAgAAAAH7AgAAAPsCAvwCAQAAAAH9AgEAAAAB_gIBAAAAAf8CAQAAAAGAA4AAAAABgQMBAAAAAQYvgAAAAAHVAgEAAAAB2wJAAAAAAfICAQAAAAH2AkAAAAAB-QICAAAAAQvVAgEAAAAB2wJAAAAAAfACAgAAAAHxAgEAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQLbAkAAAAAB7gIBAAAAAQrVAgEAAAAB2wJAAAAAAYcDAQAAAAGjAwEAAAABpAMBAAAAAaUDAgAAAAGmAwEAAAABpwMgAAAAAagDAQAAAAGpAwEAAAABIQUAAIUJACAGAACGCQAgIAAAjQkAICEAAIcJACAiAACICQAgJAAAiQkAICUAAIoJACAmAACLCQAgJwAAjAkAICgAAI4JACApAACPCQAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAgAAAAEAIDYAALAJACADAAAADwAgNgAAsAkAIDcAALQJACAjAAAADwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAnAACFCAAgKAAAhwgAICkAAIgIACAvAAC0CQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQUAAP4HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAIQJACAGAACGCQAgIAAAjQkAICEAAIcJACAiAACICQAgJAAAiQkAICUAAIoJACAmAACLCQAgJwAAjAkAICgAAI4JACApAACPCQAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAgAAAAEAIDYAALUJACADAAAADwAgNgAAtQkAIDcAALkJACAjAAAADwAgBAAA_QcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAnAACFCAAgKAAAhwgAICkAAIgIACAvAAC5CQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAP0HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAIQJACAFAACFCQAgIAAAjQkAICEAAIcJACAiAACICQAgJAAAiQkAICUAAIoJACAmAACLCQAgJwAAjAkAICgAAI4JACApAACPCQAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAgAAAAEAIDYAALoJACADAAAADwAgNgAAugkAIDcAAL4JACAjAAAADwAgBAAA_QcAIAUAAP4HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAnAACFCAAgKAAAhwgAICkAAIgIACAvAAC-CQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAP0HACAFAAD-BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAIQJACAFAACFCQAgBgAAhgkAICAAAI0JACAhAACHCQAgIgAAiAkAICQAAIkJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAgAAAAEAIDYAAL8JACADAAAADwAgNgAAvwkAIDcAAMMJACAjAAAADwAgBAAA_QcAIAUAAP4HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACAvAADDCQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICQAAIIIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAWAADDBwAgGAAAxAcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AADECQAgDwcAANkHACAIAAC5BwAgDgAAuwcAIBAAALwHACDbAkAAAAAB8gIBAAAAAfMCAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwEAAAABlwNAAAAAAQIAAAAtACA2AADGCQAgAwAAABUAIDYAAMYJACA3AADKCQAgEQAAABUAIAcAAK0GACAIAACuBgAgDgAAsAYAIBAAALEGACAvAADKCQAg2wJAAKIFACHyAgEAoQUAIfMCAgC0BQAhkAMBAKEFACGRAwEAswUAIZIDAQCzBQAhkwMBALMFACGUAwEAoQUAIZUDAQCzBQAhlgMBALMFACGXA0AAowUAIQ8HAACtBgAgCAAArgYAIA4AALAGACAQAACxBgAg2wJAAKIFACHyAgEAoQUAIfMCAgC0BQAhkAMBAKEFACGRAwEAswUAIZIDAQCzBQAhkwMBALMFACGUAwEAoQUAIZUDAQCzBQAhlgMBALMFACGXA0AAowUAIQ8HAADZBwAgCQAAugcAIA4AALsHACAQAAC8BwAg2wJAAAAAAfICAQAAAAHzAgIAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGVAwEAAAABlgMBAAAAAZcDQAAAAAECAAAALQAgNgAAywkAIA7VAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZgDAgAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAEaEQAAzgcAIBIAAL8HACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgHAAAyAcAICAAAMkHACDVAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZgDAgAAAAGZAwEAAAABmgMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAgAAABoAIDYAAM4JACAK2wJAAAAAAfMCAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwEAAAABlwNAAAAAAQPbAkAAAAAB7wIBAAAAAYYDAAAAhgMCBNUCAQAAAAHbAkAAAAABggMBAAAAAYQDAAAAhAMCBdUCAQAAAAHbAkAAAAAB-wIAAACPAwKMAwIAAAABjQMBAAAAAQLbAkAAAAAB7wIBAAAAAQvVAgEAAAAB2wJAAAAAAe8CAQAAAAHzAgIAAAAB-wIAAAD7AgL8AgEAAAAB_QIBAAAAAf4CAQAAAAH_AgEAAAABgAOAAAAAAYEDAQAAAAEGL4AAAAAB1QIBAAAAAdsCQAAAAAHvAgEAAAAB9gJAAAAAAfkCAgAAAAEL1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfECAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAEDAAAAFwAgNgAAzgkAIDcAANoJACAcAAAAFwAgEQAA1AYAIBIAANUGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAbAADcBgAgHAAA3QYAICAAAN4GACAvAADaCQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRoRAADUBgAgEgAA1QYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEDAAAAFQAgNgAAywkAIDcAAN0JACARAAAAFQAgBwAArQYAIAkAAK8GACAOAACwBgAgEAAAsQYAIC8AAN0JACDbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhDwcAAK0GACAJAACvBgAgDgAAsAYAIBAAALEGACDbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhDdUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAtsCQAAAAAGPAwEAAAABBNUCAQAAAAHbAkAAAAAB-wIAAACPAwKNAwEAAAABAwAAABcAIDYAAMQJACA3AADjCQAgHAAAABcAIBEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAWAADYBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAgLwAA4wkAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEaEQAA1AYAIBIAANUGACATAADWBgAgFAAA1AcAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAbAADcBgAgHAAA3QYAICAAAN4GACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhBdUCAQAAAAHbAkAAAAAB8AICAAAAAYcDAQAAAAGIAwEAAAABAgAAAMICACA2AADkCQAgAwAAAMUCACA2AADkCQAgNwAA6AkAIAcAAADFAgAgLwAA6AkAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIYcDAQChBQAhiAMBALMFACEF1QIBAKEFACHbAkAAogUAIfACAgCyBQAhhwMBAKEFACGIAwEAswUAIQ8HAADZBwAgCAAAuQcAIAkAALoHACAOAAC7BwAg2wJAAAAAAfICAQAAAAHzAgIAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGVAwEAAAABlgMBAAAAAZcDQAAAAAECAAAALQAgNgAA6QkAIBoRAADOBwAgEgAAvwcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGgAAxgcAIBsAAMcHACAcAADIBwAgIAAAyQcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZkDAQAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAA6wkAIAMAAAAVACA2AADpCQAgNwAA7wkAIBEAAAAVACAHAACtBgAgCAAArgYAIAkAAK8GACAOAACwBgAgLwAA7wkAINsCQACiBQAh8gIBAKEFACHzAgIAtAUAIZADAQChBQAhkQMBALMFACGSAwEAswUAIZMDAQCzBQAhlAMBAKEFACGVAwEAswUAIZYDAQCzBQAhlwNAAKMFACEPBwAArQYAIAgAAK4GACAJAACvBgAgDgAAsAYAINsCQACiBQAh8gIBAKEFACHzAgIAtAUAIZADAQChBQAhkQMBALMFACGSAwEAswUAIZMDAQCzBQAhlAMBAKEFACGVAwEAswUAIZYDAQCzBQAhlwNAAKMFACEDAAAAFwAgNgAA6wkAIDcAAPIJACAcAAAAFwAgEQAA1AYAIBIAANUGACATAADWBgAgFAAA1AcAIBUAANcGACAWAADYBgAgGAAA2QYAIBoAANsGACAbAADcBgAgHAAA3QYAICAAAN4GACAvAADyCQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRoRAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEPBwAA2QcAIAgAALkHACAJAAC6BwAgEAAAvAcAINsCQAAAAAHyAgEAAAAB8wICAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDAQAAAAGXA0AAAAABAgAAAC0AIDYAAPMJACADAAAAFQAgNgAA8wkAIDcAAPcJACARAAAAFQAgBwAArQYAIAgAAK4GACAJAACvBgAgEAAAsQYAIC8AAPcJACDbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhDwcAAK0GACAIAACuBgAgCQAArwYAIBAAALEGACDbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhA9sCQAAAAAHyAgEAAAAB8wICAAAAASEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIgAAiAkAICQAAIkJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AAD5CQAgGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAVAADCBwAgGAAAxAcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AAD7CQAgAwAAAA8AIDYAAPkJACA3AAD_CQAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAA_wkAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIgAAgQgAICQAAIIIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AAD7CQAgNwAAggoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAIC8AAIIKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICQAAIkJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AACDCgAgGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAVAADCBwAgFgAAwwcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AACFCgAgAwAAAA8AIDYAAIMKACA3AACJCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAiQoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICQAAIIIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AACFCgAgNwAAjAoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAIC8AAIwKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AACNCgAgGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAVAADCBwAgFgAAwwcAIBgAAMQHACAZAADFBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AACPCgAgAwAAAA8AIDYAAI0KACA3AACTCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICQAAIIIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAkwoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AACPCgAgNwAAlgoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBsAANwGACAcAADdBgAgIAAA3gYAIC8AAJYKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGwAA3AYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJQAAigkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AACXCgAgGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAVAADCBwAgFgAAwwcAIBgAAMQHACAZAADFBwAgGgAAxgcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AACZCgAgAwAAAA8AIDYAAJcKACA3AACdCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICQAAIIIACAlAACDCAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAnQoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AACZCgAgNwAAoAoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAcAADdBgAgIAAA3gYAIC8AAKAKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRoRAADOBwAgEgAAvwcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgIAAAyQcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZkDAQAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAAoQoAICEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJQAAigkAICYAAIsJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AACjCgAgAwAAABcAIDYAAKEKACA3AACnCgAgHAAAABcAIBEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAgAADeBgAgLwAApwoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEaEQAA1AYAIBIAANUGACATAADWBgAgFAAA1AcAIBUAANcGACAWAADYBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAICAAAN4GACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhAwAAAA8AIDYAAKMKACA3AACqCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICQAAIIIACAlAACDCAAgJgAAhAgAICgAAIcIACApAACICAAgLwAAqgoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIRADAADTBQAgBwAA0gUAIBoAANUFACAdAADWBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfECAQAAAAHyAgEAAAAB8wICAAAAAfQCAQAAAAH1AgIAAAAB9gJAAAAAAfcCQAAAAAH4AkAAAAABAgAAAEYAIDYAAKsKACAhBAAAhAkAIAUAAIUJACAGAACGCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJQAAigkAICYAAIsJACAnAACMCQAgKAAAjgkAICkAAI8JACDVAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAYYDAQAAAAGHAwEAAAABuQMBAAAAAboDIAAAAAG7AwEAAAABvQMAAAC9AwK_AwAAAL8DAsADIAAAAAHBAwEAAAABwgMBAAAAAcMDgAAAAAHEA0AAAAABxQMBAAAAAcYDIAAAAAHHAwEAAAAByANAAAAAAckDQAAAAAECAAAAAQAgNgAArQoAIBoRAADOBwAgEgAAvwcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgHAAAyAcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZkDAQAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAArwoAIAvVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQLbAkAAAAAB7wIBAAAAAQMAAABEACA2AACrCgAgNwAAtQoAIBIAAABEACADAAC2BQAgBwAAtQUAIBoAALkFACAdAAC3BQAgLwAAtQoAINUCAQChBQAh2wJAAKIFACHvAgEAswUAIfACAgCyBQAh8QIBALMFACHyAgEAoQUAIfMCAgCyBQAh9AIBALMFACH1AgIAtAUAIfYCQACiBQAh9wJAAKMFACH4AkAAowUAIRADAAC2BQAgBwAAtQUAIBoAALkFACAdAAC3BQAg1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8AICALIFACHxAgEAswUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhAwAAAA8AIDYAAK0KACA3AAC4CgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAuAoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAhAACACAAgIgAAgQgAICQAAIIIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AACvCgAgNwAAuwoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAbAADcBgAgHAAA3QYAIC8AALsKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJQAAigkAICYAAIsJACAnAACMCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AAC8CgAgEAMAANMFACAHAADSBQAgHQAA1gUAIB4AANQFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8QIBAAAAAfICAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAECAAAARgAgNgAAvgoAIAMAAAAPACA2AAC8CgAgNwAAwgoAICMAAAAPACAEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAnAACFCAAgKQAAiAgAIC8AAMIKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhhgMBALMFACGHAwEAswUAIbkDAQCzBQAhugMgANIGACG7AwEAswUAIb0DAAD6B70DIr8DAAD7B78DIsADIADSBgAhwQMBALMFACHCAwEAswUAIcMDgAAAAAHEA0AAowUAIcUDAQCzBQAhxgMgAPwHACHHAwEAswUAIcgDQACjBQAhyQNAAKMFACEhBAAA_QcAIAUAAP4HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICkAAIgIACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhhgMBALMFACGHAwEAswUAIbkDAQCzBQAhugMgANIGACG7AwEAswUAIb0DAAD6B70DIr8DAAD7B78DIsADIADSBgAhwQMBALMFACHCAwEAswUAIcMDgAAAAAHEA0AAowUAIcUDAQCzBQAhxgMgAPwHACHHAwEAswUAIcgDQACjBQAhyQNAAKMFACEDAAAARAAgNgAAvgoAIDcAAMUKACASAAAARAAgAwAAtgUAIAcAALUFACAdAAC3BQAgHgAAuAUAIC8AAMUKACDVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfECAQCzBQAh8gIBAKEFACHzAgIAsgUAIfQCAQCzBQAh9QICALQFACH2AkAAogUAIfcCQACjBQAh-AJAAKMFACEQAwAAtgUAIAcAALUFACAdAAC3BQAgHgAAuAUAINUCAQChBQAh2wJAAKIFACHvAgEAswUAIfACAgCyBQAh8QIBALMFACHyAgEAoQUAIfMCAgCyBQAh9AIBALMFACH1AgIAtAUAIfYCQACiBQAh9wJAAKMFACH4AkAAowUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AADGCgAgAwAAAA8AIDYAAMYKACA3AADKCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAygoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQ0EBgIFCgMGDgQMABcgYhEhFAUiWg0kXhUlXw4mYA8nYRAoYxIpZxYBAwABAQMAAQEDEAECAwABBwAGDQwAFBEWBxIpBhMqBhQrBxUuBxYvBRgzDRk1Cxo5Dhs9DxxCECBHEQYHAAYIGAYJGwYMAAwOHwgQJQsCCgAHDQAJAgsgCAwACgELIQACBwAGDwAHAwkmAA4nABAoAAIHAAYXNAECAwABBwAGAgM-AQcABgIDAAEHQwYGA0gBBwAGDAATGk4SHUkRHkoRAgMAAR8AEQIaUAAeTwAJE1EAFVIAFlMAGFQAGVUAGlYAG1cAHFgAIFkAASMAAQEDAAEMBGgABWkABmoAIHEAIWsAImwAJG0AJW4AJm8AJ3AAKHIAKXMAAAAABQwAHDwAHT0AHj4AHz8AIAAAAAAABQwAHDwAHT0AHj4AHz8AIAEDAAEBAwABAwwAJT4AJj8AJwAAAAMMACU-ACY_ACcBAwABAQMAAQMMACw-AC0_AC4AAAADDAAsPgAtPwAuAQPAAQEBA8YBAQMMADM-ADQ_ADUAAAADDAAzPgA0PwA1AQMAAQEDAAEFDAA6PAA7PQA8PgA9PwA-AAAAAAAFDAA6PAA7PQA8PgA9PwA-AxHuAQcS7wEGFPABBwMR9gEHEvcBBhT4AQcFDABDPABEPQBFPgBGPwBHAAAAAAAFDABDPABEPQBFPgBGPwBHAQcABgEHAAYFDABMPABNPQBOPgBPPwBQAAAAAAAFDABMPABNPQBOPgBPPwBQAgoABw0ACQIKAAcNAAkFDABVPABWPQBXPgBYPwBZAAAAAAAFDABVPABWPQBXPgBYPwBZAgcABg8ABwIHAAYPAAcFDABePABfPQBgPgBhPwBiAAAAAAAFDABePABfPQBgPgBhPwBiAAAFDABnPABoPQBpPgBqPwBrAAAAAAAFDABnPABoPQBpPgBqPwBrAgMAAQcABgIDAAEHAAYDDABwPgBxPwByAAAAAwwAcD4AcT8AcgIHAAYX-wIBAgcABheBAwEDDAB3PgB4PwB5AAAAAwwAdz4AeD8AeQIDAAEHAAYCAwABBwAGAwwAfj4Afz8AgAEAAAADDAB-PgB_PwCAAQIDqQMBBwAGAgOvAwEHAAYFDACFATwAhgE9AIcBPgCIAT8AiQEAAAAAAAUMAIUBPACGAT0AhwE-AIgBPwCJAQIDAAEHwQMGAgMAAQfHAwYFDACOATwAjwE9AJABPgCRAT8AkgEAAAAAAAUMAI4BPACPAT0AkAE-AJEBPwCSAQMD2QMBBwAGHdoDEQMD4AMBBwAGHeEDEQUMAJcBPACYAT0AmQE-AJoBPwCbAQAAAAAABQwAlwE8AJgBPQCZAT4AmgE_AJsBAgMAAR8AEQIDAAEfABEDDACgAT4AoQE_AKIBAAAAAwwAoAE-AKEBPwCiAQEjAAEBIwABAwwApwE-AKgBPwCpAQAAAAMMAKcBPgCoAT8AqQEqAgErdAEsdgEtdwEueAEwegExfBgyfRkzfwE0gQEYNYIBGjiDAQE5hAEBOoUBGECIARtBiQEhQooBAkOLAQJEjAECRY0BAkaOAQJHkAECSJIBGEmTASJKlQECS5cBGEyYASNNmQECTpoBAk-bARhQngEkUZ8BKFKgAQNToQEDVKIBA1WjAQNWpAEDV6YBA1ioARhZqQEpWqsBA1utARhcrgEqXa8BA16wAQNfsQEYYLQBK2G1AS9itgEEY7cBBGS4AQRluQEEZroBBGe8AQRovgEYab8BMGrCAQRrxAEYbMUBMW3HAQRuyAEEb8kBGHDMATJxzQE2cs4BFnPPARZ00AEWddEBFnbSARZ31AEWeNYBGHnXATd62QEWe9sBGHzcATh93QEWft4BFn_fARiAAeIBOYEB4wE_ggHkAQaDAeUBBoQB5gEGhQHnAQaGAegBBocB6gEGiAHsARiJAe0BQIoB8gEGiwH0ARiMAfUBQY0B-QEGjgH6AQaPAfsBGJAB_gFCkQH_AUiSAYACB5MBgQIHlAGCAgeVAYMCB5YBhAIHlwGGAgeYAYgCGJkBiQJJmgGLAgebAY0CGJwBjgJKnQGPAgeeAZACB58BkQIYoAGUAkuhAZUCUaIBlgIIowGXAgikAZgCCKUBmQIIpgGaAginAZwCCKgBngIYqQGfAlKqAaECCKsBowIYrAGkAlOtAaUCCK4BpgIIrwGnAhiwAaoCVLEBqwJasgGsAguzAa0CC7QBrgILtQGvAgu2AbACC7cBsgILuAG0Ahi5AbUCW7oBtwILuwG5Ahi8AboCXL0BuwILvgG8Agu_Ab0CGMABwAJdwQHBAmPCAcMCCcMBxAIJxAHHAgnFAcgCCcYByQIJxwHLAgnIAc0CGMkBzgJkygHQAgnLAdICGMwB0wJlzQHUAgnOAdUCCc8B1gIY0AHZAmbRAdoCbNIB2wIF0wHcAgXUAd0CBdUB3gIF1gHfAgXXAeECBdgB4wIY2QHkAm3aAeYCBdsB6AIY3AHpAm7dAeoCBd4B6wIF3wHsAhjgAe8Cb-EB8AJz4gHxAg3jAfICDeQB8wIN5QH0Ag3mAfUCDecB9wIN6AH5AhjpAfoCdOoB_QIN6wH_AhjsAYADde0BggMN7gGDAw3vAYQDGPABhwN28QGIA3ryAYkDDvMBigMO9AGLAw71AYwDDvYBjQMO9wGPAw74AZEDGPkBkgN7-gGUAw77AZYDGPwBlwN8_QGYAw7-AZkDDv8BmgMYgAKdA32BAp4DgQGCAp8DD4MCoAMPhAKhAw-FAqIDD4YCowMPhwKlAw-IAqcDGIkCqAOCAYoCqwMPiwKtAxiMAq4DgwGNArADD44CsQMPjwKyAxiQArUDhAGRArYDigGSArcDEJMCuAMQlAK5AxCVAroDEJYCuwMQlwK9AxCYAr8DGJkCwAOLAZoCwwMQmwLFAxicAsYDjAGdAsgDEJ4CyQMQnwLKAxigAs0DjQGhAs4DkwGiAs8DEaMC0AMRpALRAxGlAtIDEaYC0wMRpwLVAxGoAtcDGKkC2AOUAaoC3AMRqwLeAxisAt8DlQGtAuIDEa4C4wMRrwLkAxiwAucDlgGxAugDnAGyAukDErMC6gMStALrAxK1AuwDErYC7QMStwLvAxK4AvEDGLkC8gOdAboC9AMSuwL2Axi8AvcDngG9AvgDEr4C-QMSvwL6AxjAAv0DnwHBAv4DowHCAv8DFcMCgAQVxAKBBBXFAoIEFcYCgwQVxwKFBBXIAocEGMkCiASkAcoCigQVywKMBBjMAo0EpQHNAo4EFc4CjwQVzwKQBBjQApMEpgHRApQEqgE" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"sessions\",\"verifications\",\"model\",\"latestOfModel\",\"parentOfModels\",\"modelVersion\",\"modelVersions\",\"_count\",\"tag\",\"tags\",\"taggedVersion\",\"taggedAdditionalFiles\",\"latestVersion\",\"parentModel\",\"childModels\",\"parentVersion\",\"versions\",\"authors\",\"granteeUser\",\"permissions\",\"additionalFiles\",\"likes\",\"interactions\",\"drafts\",\"parent\",\"replies\",\"modelComment\",\"comments\",\"authoredModels\",\"grantedPermissions\",\"actor\",\"recipient\",\"event\",\"notifications\",\"events\",\"modelLikes\",\"modelInteractions\",\"modelDrafts\",\"commentLikes\",\"notificationPreferences\",\"passkeys\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"Passkey.findUnique\",\"Passkey.findUniqueOrThrow\",\"Passkey.findFirst\",\"Passkey.findFirstOrThrow\",\"Passkey.findMany\",\"Passkey.createOne\",\"Passkey.createMany\",\"Passkey.createManyAndReturn\",\"Passkey.updateOne\",\"Passkey.updateMany\",\"Passkey.updateManyAndReturn\",\"Passkey.upsertOne\",\"Passkey.deleteOne\",\"Passkey.deleteMany\",\"Passkey.groupBy\",\"Passkey.aggregate\",\"Model.findUnique\",\"Model.findUniqueOrThrow\",\"Model.findFirst\",\"Model.findFirstOrThrow\",\"Model.findMany\",\"Model.createOne\",\"Model.createMany\",\"Model.createManyAndReturn\",\"Model.updateOne\",\"Model.updateMany\",\"Model.updateManyAndReturn\",\"Model.upsertOne\",\"Model.deleteOne\",\"Model.deleteMany\",\"Model.groupBy\",\"Model.aggregate\",\"ModelVersion.findUnique\",\"ModelVersion.findUniqueOrThrow\",\"ModelVersion.findFirst\",\"ModelVersion.findFirstOrThrow\",\"ModelVersion.findMany\",\"ModelVersion.createOne\",\"ModelVersion.createMany\",\"ModelVersion.createManyAndReturn\",\"ModelVersion.updateOne\",\"ModelVersion.updateMany\",\"ModelVersion.updateManyAndReturn\",\"ModelVersion.upsertOne\",\"ModelVersion.deleteOne\",\"ModelVersion.deleteMany\",\"ModelVersion.groupBy\",\"ModelVersion.aggregate\",\"ModelVersionTag.findUnique\",\"ModelVersionTag.findUniqueOrThrow\",\"ModelVersionTag.findFirst\",\"ModelVersionTag.findFirstOrThrow\",\"ModelVersionTag.findMany\",\"ModelVersionTag.createOne\",\"ModelVersionTag.createMany\",\"ModelVersionTag.createManyAndReturn\",\"ModelVersionTag.updateOne\",\"ModelVersionTag.updateMany\",\"ModelVersionTag.updateManyAndReturn\",\"ModelVersionTag.upsertOne\",\"ModelVersionTag.deleteOne\",\"ModelVersionTag.deleteMany\",\"ModelVersionTag.groupBy\",\"ModelVersionTag.aggregate\",\"ModelAdditionalFile.findUnique\",\"ModelAdditionalFile.findUniqueOrThrow\",\"ModelAdditionalFile.findFirst\",\"ModelAdditionalFile.findFirstOrThrow\",\"ModelAdditionalFile.findMany\",\"ModelAdditionalFile.createOne\",\"ModelAdditionalFile.createMany\",\"ModelAdditionalFile.createManyAndReturn\",\"ModelAdditionalFile.updateOne\",\"ModelAdditionalFile.updateMany\",\"ModelAdditionalFile.updateManyAndReturn\",\"ModelAdditionalFile.upsertOne\",\"ModelAdditionalFile.deleteOne\",\"ModelAdditionalFile.deleteMany\",\"ModelAdditionalFile.groupBy\",\"ModelAdditionalFile.aggregate\",\"Tag.findUnique\",\"Tag.findUniqueOrThrow\",\"Tag.findFirst\",\"Tag.findFirstOrThrow\",\"Tag.findMany\",\"Tag.createOne\",\"Tag.createMany\",\"Tag.createManyAndReturn\",\"Tag.updateOne\",\"Tag.updateMany\",\"Tag.updateManyAndReturn\",\"Tag.upsertOne\",\"Tag.deleteOne\",\"Tag.deleteMany\",\"Tag.groupBy\",\"Tag.aggregate\",\"ModelAuthor.findUnique\",\"ModelAuthor.findUniqueOrThrow\",\"ModelAuthor.findFirst\",\"ModelAuthor.findFirstOrThrow\",\"ModelAuthor.findMany\",\"ModelAuthor.createOne\",\"ModelAuthor.createMany\",\"ModelAuthor.createManyAndReturn\",\"ModelAuthor.updateOne\",\"ModelAuthor.updateMany\",\"ModelAuthor.updateManyAndReturn\",\"ModelAuthor.upsertOne\",\"ModelAuthor.deleteOne\",\"ModelAuthor.deleteMany\",\"ModelAuthor.groupBy\",\"ModelAuthor.aggregate\",\"ModelPermission.findUnique\",\"ModelPermission.findUniqueOrThrow\",\"ModelPermission.findFirst\",\"ModelPermission.findFirstOrThrow\",\"ModelPermission.findMany\",\"ModelPermission.createOne\",\"ModelPermission.createMany\",\"ModelPermission.createManyAndReturn\",\"ModelPermission.updateOne\",\"ModelPermission.updateMany\",\"ModelPermission.updateManyAndReturn\",\"ModelPermission.upsertOne\",\"ModelPermission.deleteOne\",\"ModelPermission.deleteMany\",\"ModelPermission.groupBy\",\"ModelPermission.aggregate\",\"ModelLike.findUnique\",\"ModelLike.findUniqueOrThrow\",\"ModelLike.findFirst\",\"ModelLike.findFirstOrThrow\",\"ModelLike.findMany\",\"ModelLike.createOne\",\"ModelLike.createMany\",\"ModelLike.createManyAndReturn\",\"ModelLike.updateOne\",\"ModelLike.updateMany\",\"ModelLike.updateManyAndReturn\",\"ModelLike.upsertOne\",\"ModelLike.deleteOne\",\"ModelLike.deleteMany\",\"ModelLike.groupBy\",\"ModelLike.aggregate\",\"ModelInteraction.findUnique\",\"ModelInteraction.findUniqueOrThrow\",\"ModelInteraction.findFirst\",\"ModelInteraction.findFirstOrThrow\",\"ModelInteraction.findMany\",\"ModelInteraction.createOne\",\"ModelInteraction.createMany\",\"ModelInteraction.createManyAndReturn\",\"ModelInteraction.updateOne\",\"ModelInteraction.updateMany\",\"ModelInteraction.updateManyAndReturn\",\"ModelInteraction.upsertOne\",\"ModelInteraction.deleteOne\",\"ModelInteraction.deleteMany\",\"ModelInteraction.groupBy\",\"ModelInteraction.aggregate\",\"ModelDraft.findUnique\",\"ModelDraft.findUniqueOrThrow\",\"ModelDraft.findFirst\",\"ModelDraft.findFirstOrThrow\",\"ModelDraft.findMany\",\"ModelDraft.createOne\",\"ModelDraft.createMany\",\"ModelDraft.createManyAndReturn\",\"ModelDraft.updateOne\",\"ModelDraft.updateMany\",\"ModelDraft.updateManyAndReturn\",\"ModelDraft.upsertOne\",\"ModelDraft.deleteOne\",\"ModelDraft.deleteMany\",\"ModelDraft.groupBy\",\"ModelDraft.aggregate\",\"ModelComment.findUnique\",\"ModelComment.findUniqueOrThrow\",\"ModelComment.findFirst\",\"ModelComment.findFirstOrThrow\",\"ModelComment.findMany\",\"ModelComment.createOne\",\"ModelComment.createMany\",\"ModelComment.createManyAndReturn\",\"ModelComment.updateOne\",\"ModelComment.updateMany\",\"ModelComment.updateManyAndReturn\",\"ModelComment.upsertOne\",\"ModelComment.deleteOne\",\"ModelComment.deleteMany\",\"ModelComment.groupBy\",\"ModelComment.aggregate\",\"ModelCommentLike.findUnique\",\"ModelCommentLike.findUniqueOrThrow\",\"ModelCommentLike.findFirst\",\"ModelCommentLike.findFirstOrThrow\",\"ModelCommentLike.findMany\",\"ModelCommentLike.createOne\",\"ModelCommentLike.createMany\",\"ModelCommentLike.createManyAndReturn\",\"ModelCommentLike.updateOne\",\"ModelCommentLike.updateMany\",\"ModelCommentLike.updateManyAndReturn\",\"ModelCommentLike.upsertOne\",\"ModelCommentLike.deleteOne\",\"ModelCommentLike.deleteMany\",\"ModelCommentLike.groupBy\",\"ModelCommentLike.aggregate\",\"Event.findUnique\",\"Event.findUniqueOrThrow\",\"Event.findFirst\",\"Event.findFirstOrThrow\",\"Event.findMany\",\"Event.createOne\",\"Event.createMany\",\"Event.createManyAndReturn\",\"Event.updateOne\",\"Event.updateMany\",\"Event.updateManyAndReturn\",\"Event.upsertOne\",\"Event.deleteOne\",\"Event.deleteMany\",\"Event.groupBy\",\"Event.aggregate\",\"UserNotification.findUnique\",\"UserNotification.findUniqueOrThrow\",\"UserNotification.findFirst\",\"UserNotification.findFirstOrThrow\",\"UserNotification.findMany\",\"UserNotification.createOne\",\"UserNotification.createMany\",\"UserNotification.createManyAndReturn\",\"UserNotification.updateOne\",\"UserNotification.updateMany\",\"UserNotification.updateManyAndReturn\",\"UserNotification.upsertOne\",\"UserNotification.deleteOne\",\"UserNotification.deleteMany\",\"UserNotification.groupBy\",\"UserNotification.aggregate\",\"UserNotificationPreference.findUnique\",\"UserNotificationPreference.findUniqueOrThrow\",\"UserNotificationPreference.findFirst\",\"UserNotificationPreference.findFirstOrThrow\",\"UserNotificationPreference.findMany\",\"UserNotificationPreference.createOne\",\"UserNotificationPreference.createMany\",\"UserNotificationPreference.createManyAndReturn\",\"UserNotificationPreference.updateOne\",\"UserNotificationPreference.updateMany\",\"UserNotificationPreference.updateManyAndReturn\",\"UserNotificationPreference.upsertOne\",\"UserNotificationPreference.deleteOne\",\"UserNotificationPreference.deleteMany\",\"UserNotificationPreference.groupBy\",\"UserNotificationPreference.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"userId\",\"category\",\"email\",\"inApp\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"recipientId\",\"eventId\",\"title\",\"body\",\"url\",\"emailSentAt\",\"readAt\",\"createdAt\",\"type\",\"actorId\",\"resourceType\",\"resourceId\",\"payload\",\"processedAt\",\"attempts\",\"lastError\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"modelCommentId\",\"legacyId\",\"parentId\",\"modelId\",\"versionNumber\",\"content\",\"likesCount\",\"editedAt\",\"deletedAt\",\"schemaVersion\",\"ModelInteractionKind\",\"kind\",\"sessionId\",\"ipHash\",\"userAgent\",\"referer\",\"geo\",\"cookie\",\"granteeUserId\",\"PermissionLevel\",\"permissionLevel\",\"AuthorRole\",\"role\",\"name\",\"displayName\",\"every\",\"some\",\"none\",\"taggedVersionNumber\",\"fileKey\",\"ModelFileKind\",\"tagId\",\"description\",\"changeSummary\",\"previewImageFileKey\",\"netlogoFileKey\",\"netlogoVersion\",\"infoTab\",\"finalizedAt\",\"latestVersionNumber\",\"parentModelId\",\"parentVersionNumber\",\"ModelVisibility\",\"visibility\",\"isEndorsed\",\"isLibraryModel\",\"viewCount\",\"runCount\",\"downloadCount\",\"shareCount\",\"publicKey\",\"credentialID\",\"counter\",\"deviceType\",\"backedUp\",\"transports\",\"aaguid\",\"identifier\",\"value\",\"expiresAt\",\"token\",\"ipAddress\",\"impersonatedBy\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"idToken\",\"password\",\"emailVerified\",\"image\",\"SystemRole\",\"systemRole\",\"UserKind\",\"userKind\",\"isProfilePublic\",\"bio\",\"country\",\"socialLinks\",\"dob\",\"affiliation\",\"banned\",\"banReason\",\"banExpires\",\"onboardedAt\",\"userId_category\",\"eventId_recipientId_category\",\"modelCommentId_userId\",\"modelId_userId\",\"modelId_granteeUserId\",\"modelId_versionNumber\",\"modelId_versionNumber_tagId\",\"id_latestVersionNumber\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "1Qu9AcACJwQAANUFACAFAADWBQAgBgAA1wUAICAAAK4FACAhAADJBQAgIgAAygUAICYAAKYFACAnAADYBQAgKAAAywUAICkAAMwFACAqAADNBQAgKwAArwUAICwAANkFACAtAADaBQAg9gIAANEFADD3AgAADwAQ-AIAANEFADD5AgEAAAAB_AIBAAAAAf4CQACABQAhkQNAAIAFACGhAwIAAAABqANAAJ0FACG2AwEA_wQAIbcDAQD_BAAh6AMgAJwFACHpAwEA_wQAIesDAADSBesDIu0DAADTBe0DIu4DIACcBQAh7wMBAP8EACHwAwEA_wQAIfEDAAC0BQAg8gNAAJ0FACHzAwEA_wQAIfQDIADUBQAh9QMBAP8EACH2A0AAnQUAIfcDQACdBQAhAQAAAAEAIBEDAACeBQAg9gIAAN0FADD3AgAAAwAQ-AIAAN0FADD5AgEA_QQAIfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAId8DAQD9BAAh4AMBAP0EACHhAwEA_wQAIeIDAQD_BAAh4wNAAJ0FACHkA0AAnQUAIeUDAQD_BAAh5gMBAP8EACHnAwEA_wQAIQgDAACUCgAg4QMAAOYFACDiAwAA5gUAIOMDAADmBQAg5AMAAOYFACDlAwAA5gUAIOYDAADmBQAg5wMAAOYFACARAwAAngUAIPYCAADdBQAw9wIAAAMAEPgCAADdBQAw-QIBAAAAAfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAId8DAQD9BAAh4AMBAP0EACHhAwEA_wQAIeIDAQD_BAAh4wNAAJ0FACHkA0AAnQUAIeUDAQD_BAAh5gMBAP8EACHnAwEA_wQAIQMAAAADACABAAAEADACAAAFACANAwAAngUAIPYCAADcBQAw9wIAAAcAEPgCAADcBQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGuAwEA_wQAIdsDQACABQAh3AMBAP0EACHdAwEA_wQAId4DAQD_BAAhBAMAAJQKACCuAwAA5gUAIN0DAADmBQAg3gMAAOYFACANAwAAngUAIPYCAADcBQAw9wIAAAcAEPgCAADcBQAw-QIBAAAAAfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAIa4DAQD_BAAh2wNAAIAFACHcAwEAAAAB3QMBAP8EACHeAwEA_wQAIQMAAAAHACABAAAIADACAAAJACALAwAArAUAIPYCAADbBQAw9wIAAAsAEPgCAADbBQAw-QIBAP0EACH6AgEA_wQAIf4CQACdBQAhkQNAAJ0FACHZAwEA_QQAIdoDAQD9BAAh2wNAAIAFACEEAwAAlAoAIPoCAADmBQAg_gIAAOYFACCRAwAA5gUAIAsDAACsBQAg9gIAANsFADD3AgAACwAQ-AIAANsFADD5AgEAAAAB-gIBAP8EACH-AkAAnQUAIZEDQACdBQAh2QMBAP0EACHaAwEA_QQAIdsDQACABQAhAwAAAAsAIAEAAAwAMAIAAA0AICcEAADVBQAgBQAA1gUAIAYAANcFACAgAACuBQAgIQAAyQUAICIAAMoFACAmAACmBQAgJwAA2AUAICgAAMsFACApAADMBQAgKgAAzQUAICsAAK8FACAsAADZBQAgLQAA2gUAIPYCAADRBQAw9wIAAA8AEPgCAADRBQAw-QIBAP0EACH8AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIagDQACdBQAhtgMBAP8EACG3AwEA_wQAIegDIACcBQAh6QMBAP8EACHrAwAA0gXrAyLtAwAA0wXtAyLuAyAAnAUAIe8DAQD_BAAh8AMBAP8EACHxAwAAtAUAIPIDQACdBQAh8wMBAP8EACH0AyAA1AUAIfUDAQD_BAAh9gNAAJ0FACH3A0AAnQUAIQEAAAAPACAJAwAAngUAIAcAAKsFACD2AgAAzwUAMPcCAAARABD4AgAAzwUAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbYDAADQBbYDIgIDAACUCgAgBwAAlwoAIAoDAACeBQAgBwAAqwUAIPYCAADPBQAw9wIAABEAEPgCAADPBQAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAhtgMAANAFtgMi-wMAAM4FACADAAAAEQAgAQAAEgAwAgAAEwAgEwcAAKsFACAIAACxBQAgCQAAvAUAIA4AAIEFACAQAAC9BQAg9gIAALsFADD3AgAAFQAQ-AIAALsFADCMAwEA_QQAIZEDQACABQAhowMBAP0EACGkAwIAmwUAIcADAQD_BAAhwQMBAP8EACHCAwEA_wQAIcMDAQD9BAAhxAMBAP8EACHFAwEA_wQAIcYDQACdBQAhAQAAABUAIB4RAADHBQAgEgAAsQUAIBMAALwFACAUAADHBQAgFQAAyAUAIBYAAMkFACAYAADKBQAgGQAAvQUAIBoAAMsFACAbAADMBQAgHAAAzQUAICAAAK4FACD2AgAAxQUAMPcCAAAXABD4AgAAxQUAMPkCAQD9BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhqANAAJ0FACHHAwIA_gQAIcgDAQD_BAAhyQMCAP4EACHLAwAAxgXLAyLMAyAAnAUAIc0DIACcBQAhzgMCAJsFACHPAwIAmwUAIdADAgCbBQAh0QMCAJsFACEBAAAAFwAgEREAAJoKACASAACXCgAgEwAAmAoAIBQAAJoKACAVAACcCgAgFgAAiQoAIBgAAIoKACAZAACZCgAgGgAAjAoAIBsAAI0KACAcAACOCgAgIAAAjwoAIKEDAADmBQAgqAMAAOYFACDHAwAA5gUAIMgDAADmBQAgyQMAAOYFACAfEQAAxwUAIBIAALEFACATAAC8BQAgFAAAxwUAIBUAAMgFACAWAADJBQAgGAAAygUAIBkAAL0FACAaAADLBQAgGwAAzAUAIBwAAM0FACAgAACuBQAg9gIAAMUFADD3AgAAFwAQ-AIAAMUFADD5AgEAAAAB_gJAAIAFACGRA0AAgAUAIaEDAgAAAAGoA0AAnQUAIccDAgD-BAAhyAMBAP8EACHJAwIA_gQAIcsDAADGBcsDIswDIACcBQAhzQMgAJwFACHOAwIAmwUAIc8DAgCbBQAh0AMCAJsFACHRAwIAmwUAIf8DAADEBQAgAwAAABcAIAEAABkAMAIAABoAIAkKAADABQAgDQAAwwUAIPYCAADCBQAw9wIAABwAEPgCAADCBQAwkQNAAIAFACGjAwEA_QQAIaQDAgCbBQAhvwMBAP0EACECCgAAmgoAIA0AAJsKACAKCgAAwAUAIA0AAMMFACD2AgAAwgUAMPcCAAAcABD4AgAAwgUAMJEDQACABQAhowMBAP0EACGkAwIAmwUAIb8DAQD9BAAh_gMAAMEFACADAAAAHAAgAQAAHQAwAgAAHgAgAwAAABwAIAEAAB0AMAIAAB4AIAEAAAAcACALBwAAqwUAIA8AAMAFACD2AgAAvgUAMPcCAAAiABD4AgAAvgUAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIasDAAC_Bb8DIrwDAgCbBQAhvQMBAP0EACECBwAAlwoAIA8AAJoKACALBwAAqwUAIA8AAMAFACD2AgAAvgUAMPcCAAAiABD4AgAAvgUAMPkCAQAAAAGRA0AAgAUAIaMDAQD9BAAhqwMAAL8FvwMivAMCAJsFACG9AwEA_QQAIQMAAAAiACABAAAjADACAAAkACABAAAAFwAgAQAAABwAIAEAAAAiACABAAAAFwAgAwAAABcAIAEAABkAMAIAABoAIAEAAAAVACALBwAAlwoAIAgAAJcKACAJAACYCgAgDgAA9AYAIBAAAJkKACDAAwAA5gUAIMEDAADmBQAgwgMAAOYFACDEAwAA5gUAIMUDAADmBQAgxgMAAOYFACAUBwAAqwUAIAgAALEFACAJAAC8BQAgDgAAgQUAIBAAAL0FACD2AgAAuwUAMPcCAAAVABD4AgAAuwUAMIwDAQD9BAAhkQNAAIAFACGjAwEA_QQAIaQDAgCbBQAhwAMBAP8EACHBAwEA_wQAIcIDAQD_BAAhwwMBAP0EACHEAwEA_wQAIcUDAQD_BAAhxgNAAJ0FACH9AwAAugUAIAMAAAAVACABAAAsADACAAAtACADAAAAEQAgAQAAEgAwAgAAEwAgCgcAAKsFACAXAACsBQAg9gIAALgFADD3AgAAMAAQ-AIAALgFADD5AgEA_QQAIZEDQACABQAhowMBAP0EACGyAwEA_wQAIbQDAAC5BbQDIgMHAACXCgAgFwAAlAoAILIDAADmBQAgCwcAAKsFACAXAACsBQAg9gIAALgFADD3AgAAMAAQ-AIAALgFADD5AgEAAAABkQNAAIAFACGjAwEA_QQAIbIDAQD_BAAhtAMAALkFtAMi_AMAALcFACADAAAAMAAgAQAAMQAwAgAAMgAgAQAAAA8AIAMAAAAiACABAAAjADACAAAkACAIAwAAngUAIAcAAKsFACD2AgAAtgUAMPcCAAA2ABD4AgAAtgUAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIQIDAACUCgAgBwAAlwoAIAkDAACeBQAgBwAAqwUAIPYCAAC2BQAw9wIAADYAEPgCAAC2BQAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAh-wMAALUFACADAAAANgAgAQAANwAwAgAAOAAgEQMAAKwFACAHAACrBQAg9gIAALIFADD3AgAAOgAQ-AIAALIFADD5AgEA_QQAIfoCAQD_BAAhkQNAAIAFACGjAwEA_QQAIaQDAgD-BAAhqwMAALMFqwMirAMBAP8EACGtAwEA_wQAIa4DAQD_BAAhrwMBAP8EACGwAwAAtAUAILEDAQD_BAAhCgMAAJQKACAHAACXCgAg-gIAAOYFACCkAwAA5gUAIKwDAADmBQAgrQMAAOYFACCuAwAA5gUAIK8DAADmBQAgsAMAAOYFACCxAwAA5gUAIBEDAACsBQAgBwAAqwUAIPYCAACyBQAw9wIAADoAEPgCAACyBQAw-QIBAAAAAfoCAQD_BAAhkQNAAIAFACGjAwEA_QQAIaQDAgD-BAAhqwMAALMFqwMirAMBAP8EACGtAwEA_wQAIa4DAQD_BAAhrwMBAP8EACGwAwAAtAUAILEDAQD_BAAhAwAAADoAIAEAADsAMAIAADwAIAEAAAAPACAMAwAAngUAIAcAALEFACAzAAClBQAg9gIAALAFADD3AgAAPwAQ-AIAALAFADD5AgEA_QQAIfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAIaMDAQD_BAAhqQMCAJsFACEDAwAAlAoAIAcAAJcKACCjAwAA5gUAIAwDAACeBQAgBwAAsQUAIDMAAKUFACD2AgAAsAUAMPcCAAA_ABD4AgAAsAUAMPkCAQAAAAH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGjAwEA_wQAIakDAgCbBQAhAwAAAD8AIAEAAEAAMAIAAEEAIAEAAAAXACAUAwAArAUAIAcAAKsFACAaAACvBQAgHQAArQUAIB4AAK4FACD2AgAAqgUAMPcCAABEABD4AgAAqgUAMPkCAQD9BAAh-gIBAP8EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGiAwEA_wQAIaMDAQD9BAAhpAMCAP4EACGlAwEA_wQAIaYDAgCbBQAhpwNAAJ0FACGoA0AAnQUAIQwDAACUCgAgBwAAlwoAIBoAAJAKACAdAACWCgAgHgAAjwoAIPoCAADmBQAgoQMAAOYFACCiAwAA5gUAIKQDAADmBQAgpQMAAOYFACCnAwAA5gUAIKgDAADmBQAgFAMAAKwFACAHAACrBQAgGgAArwUAIB0AAK0FACAeAACuBQAg9gIAAKoFADD3AgAARAAQ-AIAAKoFADD5AgEAAAAB-gIBAP8EACH-AkAAgAUAIZEDQACABQAhoQMCAAAAAaIDAQD_BAAhowMBAP0EACGkAwIA_gQAIaUDAQD_BAAhpgMCAJsFACGnA0AAnQUAIagDQACdBQAhAwAAAEQAIAEAAEUAMAIAAEYAIAEAAAAPACABAAAARAAgAwAAAEQAIAEAAEUAMAIAAEYAIAgDAACeBQAgHwAAqQUAIPYCAACoBQAw9wIAAEsAEPgCAACoBQAw-gIBAP0EACGRA0AAgAUAIaADAQD9BAAhAgMAAJQKACAfAACWCgAgCQMAAJ4FACAfAACpBQAg9gIAAKgFADD3AgAASwAQ-AIAAKgFADD6AgEA_QQAIZEDQACABQAhoAMBAP0EACH6AwAApwUAIAMAAABLACABAABMADACAABNACABAAAARAAgAQAAAEsAIAEAAAAXACABAAAAFQAgAQAAABEAIAEAAAAwACABAAAAIgAgAQAAADYAIAEAAAA6ACABAAAAPwAgAQAAAEQAIAMAAAAwACABAAAxADACAAAyACAPIwAAngUAICYAAKYFACD2AgAApAUAMPcCAABbABD4AgAApAUAMPkCAQD9BAAhkQNAAIAFACGSAwEA_QQAIZMDAQD9BAAhlAMBAP0EACGVAwEA_QQAIZYDAAClBQAglwNAAJ0FACGYAwIAmwUAIZkDAQD_BAAhBCMAAJQKACAmAACRCgAglwMAAOYFACCZAwAA5gUAIA8jAACeBQAgJgAApgUAIPYCAACkBQAw9wIAAFsAEPgCAACkBQAw-QIBAAAAAZEDQACABQAhkgMBAP0EACGTAwEA_QQAIZQDAQD9BAAhlQMBAP0EACGWAwAApQUAIJcDQACdBQAhmAMCAJsFACGZAwEA_wQAIQMAAABbACABAABcADACAABdACAPJAAAngUAICUAAKMFACD2AgAAogUAMPcCAABfABD4AgAAogUAMPkCAQD9BAAh-wIBAP0EACGKAwEA_QQAIYsDAQD9BAAhjAMBAP0EACGNAwEA_QQAIY4DAQD9BAAhjwNAAJ0FACGQA0AAnQUAIZEDQACABQAhBCQAAJQKACAlAACVCgAgjwMAAOYFACCQAwAA5gUAIBAkAACeBQAgJQAAowUAIPYCAACiBQAw9wIAAF8AEPgCAACiBQAw-QIBAAAAAfsCAQD9BAAhigMBAP0EACGLAwEA_QQAIYwDAQD9BAAhjQMBAP0EACGOAwEA_QQAIY8DQACdBQAhkANAAJ0FACGRA0AAgAUAIfkDAAChBQAgAwAAAF8AIAEAAGAAMAIAAGEAIAEAAABfACADAAAANgAgAQAANwAwAgAAOAAgAwAAADoAIAEAADsAMAIAADwAIAMAAAA_ACABAABAADACAABBACADAAAARAAgAQAARQAwAgAARgAgAwAAAEsAIAEAAEwAMAIAAE0AIAMAAABfACABAABgADACAABhACAKAwAAngUAIPYCAACgBQAw9wIAAGoAEPgCAACgBQAw-QIBAP0EACH6AgEA_QQAIfsCAQD9BAAh_AIgAJwFACH9AiAAnAUAIf4CQACABQAhAQMAAJQKACALAwAAngUAIPYCAACgBQAw9wIAAGoAEPgCAACgBQAw-QIBAAAAAfoCAQD9BAAh-wIBAP0EACH8AiAAnAUAIf0CIACcBQAh_gJAAIAFACH4AwAAnwUAIAMAAABqACABAABrADACAABsACAPAwAAngUAIPYCAACaBQAw9wIAAG4AEPgCAACaBQAw-QIBAP0EACH6AgEA_QQAIZEDQACdBQAhtwMBAP8EACHSAwEA_QQAIdMDAQD9BAAh1AMCAJsFACHVAwEA_QQAIdYDIACcBQAh1wMBAP8EACHYAwEA_wQAIQUDAACUCgAgkQMAAOYFACC3AwAA5gUAINcDAADmBQAg2AMAAOYFACAPAwAAngUAIPYCAACaBQAw9wIAAG4AEPgCAACaBQAw-QIBAAAAAfoCAQD9BAAhkQNAAJ0FACG3AwEA_wQAIdIDAQD9BAAh0wMBAP0EACHUAwIAmwUAIdUDAQD9BAAh1gMgAJwFACHXAwEA_wQAIdgDAQD_BAAhAwAAAG4AIAEAAG8AMAIAAHAAIAEAAAADACABAAAABwAgAQAAAAsAIAEAAAARACABAAAAMAAgAQAAAFsAIAEAAAA2ACABAAAAOgAgAQAAAD8AIAEAAABEACABAAAASwAgAQAAAF8AIAEAAABqACABAAAAbgAgAQAAAAEAIB0EAACGCgAgBQAAhwoAIAYAAIgKACAgAACPCgAgIQAAiQoAICIAAIoKACAmAACRCgAgJwAAiwoAICgAAIwKACApAACNCgAgKgAAjgoAICsAAJAKACAsAACSCgAgLQAAkwoAIPwCAADmBQAgoQMAAOYFACCoAwAA5gUAILYDAADmBQAgtwMAAOYFACDpAwAA5gUAIO8DAADmBQAg8AMAAOYFACDxAwAA5gUAIPIDAADmBQAg8wMAAOYFACD0AwAA5gUAIPUDAADmBQAg9gMAAOYFACD3AwAA5gUAIAMAAAAPACABAACBAQAwAgAAAQAgAwAAAA8AIAEAAIEBADACAAABACADAAAADwAgAQAAgQEAMAIAAAEAICQEAAD4CQAgBQAA-QkAIAYAAPoJACAgAACBCgAgIQAA-wkAICIAAPwJACAmAACDCgAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQEzAACFAQAgFvkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQEzAACHAQAwATMAAIcBADAkBAAA2ggAIAUAANsIACAGAADcCAAgIAAA4wgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACECAAAAAQAgMwAAigEAIBb5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACECAAAADwAgMwAAjAEAIAIAAAAPACAzAACMAQAgAwAAAAEAIDoAAIUBACA7AACKAQAgAQAAAAEAIAEAAAAPACAUDAAA0ggAIEAAANMIACBBAADWCAAgQgAA1QgAIEMAANQIACD8AgAA5gUAIKEDAADmBQAgqAMAAOYFACC2AwAA5gUAILcDAADmBQAg6QMAAOYFACDvAwAA5gUAIPADAADmBQAg8QMAAOYFACDyAwAA5gUAIPMDAADmBQAg9AMAAOYFACD1AwAA5gUAIPYDAADmBQAg9wMAAOYFACAZ9gIAAJAFADD3AgAAkwEAEPgCAACQBQAw-QIBAM4EACH8AgEA4AQAIf4CQADQBAAhkQNAANAEACGhAwIA6AQAIagDQADZBAAhtgMBAOAEACG3AwEA4AQAIegDIADPBAAh6QMBAOAEACHrAwAAkQXrAyLtAwAAkgXtAyLuAyAAzwQAIe8DAQDgBAAh8AMBAOAEACHxAwAA7gQAIPIDQADZBAAh8wMBAOAEACH0AyAAkwUAIfUDAQDgBAAh9gNAANkEACH3A0AA2QQAIQMAAAAPACABAACSAQAwPwAAkwEAIAMAAAAPACABAACBAQAwAgAAAQAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACAOAwAA0QgAIPkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAHfAwEAAAAB4AMBAAAAAeEDAQAAAAHiAwEAAAAB4wNAAAAAAeQDQAAAAAHlAwEAAAAB5gMBAAAAAecDAQAAAAEBMwAAmwEAIA35AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAAB3wMBAAAAAeADAQAAAAHhAwEAAAAB4gMBAAAAAeMDQAAAAAHkA0AAAAAB5QMBAAAAAeYDAQAAAAHnAwEAAAABATMAAJ0BADABMwAAnQEAMA4DAADQCAAg-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACHfAwEA4QUAIeADAQDhBQAh4QMBAPUFACHiAwEA9QUAIeMDQADqBQAh5ANAAOoFACHlAwEA9QUAIeYDAQD1BQAh5wMBAPUFACECAAAABQAgMwAAoAEAIA35AgEA4QUAIfoCAQDhBQAh_gJAAOMFACGRA0AA4wUAId8DAQDhBQAh4AMBAOEFACHhAwEA9QUAIeIDAQD1BQAh4wNAAOoFACHkA0AA6gUAIeUDAQD1BQAh5gMBAPUFACHnAwEA9QUAIQIAAAADACAzAACiAQAgAgAAAAMAIDMAAKIBACADAAAABQAgOgAAmwEAIDsAAKABACABAAAABQAgAQAAAAMAIAoMAADNCAAgQgAAzwgAIEMAAM4IACDhAwAA5gUAIOIDAADmBQAg4wMAAOYFACDkAwAA5gUAIOUDAADmBQAg5gMAAOYFACDnAwAA5gUAIBD2AgAAjwUAMPcCAACpAQAQ-AIAAI8FADD5AgEAzgQAIfoCAQDOBAAh_gJAANAEACGRA0AA0AQAId8DAQDOBAAh4AMBAM4EACHhAwEA4AQAIeIDAQDgBAAh4wNAANkEACHkA0AA2QQAIeUDAQDgBAAh5gMBAOAEACHnAwEA4AQAIQMAAAADACABAACoAQAwPwAAqQEAIAMAAAADACABAAAEADACAAAFACABAAAACQAgAQAAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAoDAADMCAAg-QIBAAAAAfoCAQAAAAH-AkAAAAABkQNAAAAAAa4DAQAAAAHbA0AAAAAB3AMBAAAAAd0DAQAAAAHeAwEAAAABATMAALEBACAJ-QIBAAAAAfoCAQAAAAH-AkAAAAABkQNAAAAAAa4DAQAAAAHbA0AAAAAB3AMBAAAAAd0DAQAAAAHeAwEAAAABATMAALMBADABMwAAswEAMAoDAADLCAAg-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACGuAwEA9QUAIdsDQADjBQAh3AMBAOEFACHdAwEA9QUAId4DAQD1BQAhAgAAAAkAIDMAALYBACAJ-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACGuAwEA9QUAIdsDQADjBQAh3AMBAOEFACHdAwEA9QUAId4DAQD1BQAhAgAAAAcAIDMAALgBACACAAAABwAgMwAAuAEAIAMAAAAJACA6AACxAQAgOwAAtgEAIAEAAAAJACABAAAABwAgBgwAAMgIACBCAADKCAAgQwAAyQgAIK4DAADmBQAg3QMAAOYFACDeAwAA5gUAIAz2AgAAjgUAMPcCAAC_AQAQ-AIAAI4FADD5AgEAzgQAIfoCAQDOBAAh_gJAANAEACGRA0AA0AQAIa4DAQDgBAAh2wNAANAEACHcAwEAzgQAId0DAQDgBAAh3gMBAOAEACEDAAAABwAgAQAAvgEAMD8AAL8BACADAAAABwAgAQAACAAwAgAACQAgAQAAAA0AIAEAAAANACADAAAACwAgAQAADAAwAgAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACAIAwAAxwgAIPkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAHZAwEAAAAB2gMBAAAAAdsDQAAAAAEBMwAAxwEAIAf5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAAB2QMBAAAAAdoDAQAAAAHbA0AAAAABATMAAMkBADABMwAAyQEAMAEAAAAPACAIAwAAxggAIPkCAQDhBQAh-gIBAPUFACH-AkAA6gUAIZEDQADqBQAh2QMBAOEFACHaAwEA4QUAIdsDQADjBQAhAgAAAA0AIDMAAM0BACAH-QIBAOEFACH6AgEA9QUAIf4CQADqBQAhkQNAAOoFACHZAwEA4QUAIdoDAQDhBQAh2wNAAOMFACECAAAACwAgMwAAzwEAIAIAAAALACAzAADPAQAgAQAAAA8AIAMAAAANACA6AADHAQAgOwAAzQEAIAEAAAANACABAAAACwAgBgwAAMMIACBCAADFCAAgQwAAxAgAIPoCAADmBQAg_gIAAOYFACCRAwAA5gUAIAr2AgAAjQUAMPcCAADXAQAQ-AIAAI0FADD5AgEAzgQAIfoCAQDgBAAh_gJAANkEACGRA0AA2QQAIdkDAQDOBAAh2gMBAM4EACHbA0AA0AQAIQMAAAALACABAADWAQAwPwAA1wEAIAMAAAALACABAAAMADACAAANACABAAAAcAAgAQAAAHAAIAMAAABuACABAABvADACAABwACADAAAAbgAgAQAAbwAwAgAAcAAgAwAAAG4AIAEAAG8AMAIAAHAAIAwDAADCCAAg-QIBAAAAAfoCAQAAAAGRA0AAAAABtwMBAAAAAdIDAQAAAAHTAwEAAAAB1AMCAAAAAdUDAQAAAAHWAyAAAAAB1wMBAAAAAdgDAQAAAAEBMwAA3wEAIAv5AgEAAAAB-gIBAAAAAZEDQAAAAAG3AwEAAAAB0gMBAAAAAdMDAQAAAAHUAwIAAAAB1QMBAAAAAdYDIAAAAAHXAwEAAAAB2AMBAAAAAQEzAADhAQAwATMAAOEBADAMAwAAwQgAIPkCAQDhBQAh-gIBAOEFACGRA0AA6gUAIbcDAQD1BQAh0gMBAOEFACHTAwEA4QUAIdQDAgD0BQAh1QMBAOEFACHWAyAA4gUAIdcDAQD1BQAh2AMBAPUFACECAAAAcAAgMwAA5AEAIAv5AgEA4QUAIfoCAQDhBQAhkQNAAOoFACG3AwEA9QUAIdIDAQDhBQAh0wMBAOEFACHUAwIA9AUAIdUDAQDhBQAh1gMgAOIFACHXAwEA9QUAIdgDAQD1BQAhAgAAAG4AIDMAAOYBACACAAAAbgAgMwAA5gEAIAMAAABwACA6AADfAQAgOwAA5AEAIAEAAABwACABAAAAbgAgCQwAALwIACBAAAC9CAAgQQAAwAgAIEIAAL8IACBDAAC-CAAgkQMAAOYFACC3AwAA5gUAINcDAADmBQAg2AMAAOYFACAO9gIAAIwFADD3AgAA7QEAEPgCAACMBQAw-QIBAM4EACH6AgEAzgQAIZEDQADZBAAhtwMBAOAEACHSAwEAzgQAIdMDAQDOBAAh1AMCAN8EACHVAwEAzgQAIdYDIADPBAAh1wMBAOAEACHYAwEA4AQAIQMAAABuACABAADsAQAwPwAA7QEAIAMAAABuACABAABvADACAABwACABAAAAGgAgAQAAABoAIAMAAAAXACABAAAZADACAAAaACADAAAAFwAgAQAAGQAwAgAAGgAgAwAAABcAIAEAABkAMAIAABoAIBsRAACrCAAgEgAAnAgAIBMAAJ0IACAUAACeCAAgFQAAnwgAIBYAAKAIACAYAAChCAAgGQAAoggAIBoAAKMIACAbAACkCAAgHAAApQgAICAAAKYIACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHIAwEAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABATMAAPUBACAP-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQEzAAD3AQAwATMAAPcBADABAAAAFQAgAQAAABcAIAEAAAAVACAbEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIQIAAAAaACAzAAD9AQAgD_kCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACECAAAAFwAgMwAA_wEAIAIAAAAXACAzAAD_AQAgAQAAABUAIAEAAAAXACABAAAAFQAgAwAAABoAIDoAAPUBACA7AAD9AQAgAQAAABoAIAEAAAAXACAKDAAAtwgAIEAAALgIACBBAAC7CAAgQgAAuggAIEMAALkIACChAwAA5gUAIKgDAADmBQAgxwMAAOYFACDIAwAA5gUAIMkDAADmBQAgEvYCAACIBQAw9wIAAIkCABD4AgAAiAUAMPkCAQDOBAAh_gJAANAEACGRA0AA0AQAIaEDAgDoBAAhqANAANkEACHHAwIA6AQAIcgDAQDgBAAhyQMCAOgEACHLAwAAiQXLAyLMAyAAzwQAIc0DIADPBAAhzgMCAN8EACHPAwIA3wQAIdADAgDfBAAh0QMCAN8EACEDAAAAFwAgAQAAiAIAMD8AAIkCACADAAAAFwAgAQAAGQAwAgAAGgAgAQAAAC0AIAEAAAAtACADAAAAFQAgAQAALAAwAgAALQAgAwAAABUAIAEAACwAMAIAAC0AIAMAAAAVACABAAAsADACAAAtACAQBwAAtggAIAgAAJYIACAJAACXCAAgDgAAmAgAIBAAAJkIACCMAwEAAAABkQNAAAAAAaMDAQAAAAGkAwIAAAABwAMBAAAAAcEDAQAAAAHCAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgNAAAAAAQEzAACRAgAgC4wDAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAHAAwEAAAABwQMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGA0AAAAABATMAAJMCADABMwAAkwIAMBAHAACLBwAgCAAAjAcAIAkAAI0HACAOAACOBwAgEAAAjwcAIIwDAQDhBQAhkQNAAOMFACGjAwEA4QUAIaQDAgD0BQAhwAMBAPUFACHBAwEA9QUAIcIDAQD1BQAhwwMBAOEFACHEAwEA9QUAIcUDAQD1BQAhxgNAAOoFACECAAAALQAgMwAAlgIAIAuMAwEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIA9AUAIcADAQD1BQAhwQMBAPUFACHCAwEA9QUAIcMDAQDhBQAhxAMBAPUFACHFAwEA9QUAIcYDQADqBQAhAgAAABUAIDMAAJgCACACAAAAFQAgMwAAmAIAIAMAAAAtACA6AACRAgAgOwAAlgIAIAEAAAAtACABAAAAFQAgCwwAAIYHACBAAACHBwAgQQAAigcAIEIAAIkHACBDAACIBwAgwAMAAOYFACDBAwAA5gUAIMIDAADmBQAgxAMAAOYFACDFAwAA5gUAIMYDAADmBQAgDvYCAACHBQAw9wIAAJ8CABD4AgAAhwUAMIwDAQDOBAAhkQNAANAEACGjAwEAzgQAIaQDAgDfBAAhwAMBAOAEACHBAwEA4AQAIcIDAQDgBAAhwwMBAM4EACHEAwEA4AQAIcUDAQDgBAAhxgNAANkEACEDAAAAFQAgAQAAngIAMD8AAJ8CACADAAAAFQAgAQAALAAwAgAALQAgAQAAAB4AIAEAAAAeACADAAAAHAAgAQAAHQAwAgAAHgAgAwAAABwAIAEAAB0AMAIAAB4AIAMAAAAcACABAAAdADACAAAeACAGCgAA8gYAIA0AAIUHACCRA0AAAAABowMBAAAAAaQDAgAAAAG_AwEAAAABATMAAKcCACAEkQNAAAAAAaMDAQAAAAGkAwIAAAABvwMBAAAAAQEzAACpAgAwATMAAKkCADAGCgAA8AYAIA0AAIQHACCRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACG_AwEA4QUAIQIAAAAeACAzAACsAgAgBJEDQADjBQAhowMBAOEFACGkAwIA9AUAIb8DAQDhBQAhAgAAABwAIDMAAK4CACACAAAAHAAgMwAArgIAIAMAAAAeACA6AACnAgAgOwAArAIAIAEAAAAeACABAAAAHAAgBQwAAP8GACBAAACABwAgQQAAgwcAIEIAAIIHACBDAACBBwAgB_YCAACGBQAw9wIAALUCABD4AgAAhgUAMJEDQADQBAAhowMBAM4EACGkAwIA3wQAIb8DAQDOBAAhAwAAABwAIAEAALQCADA_AAC1AgAgAwAAABwAIAEAAB0AMAIAAB4AIAEAAAAkACABAAAAJAAgAwAAACIAIAEAACMAMAIAACQAIAMAAAAiACABAAAjADACAAAkACADAAAAIgAgAQAAIwAwAgAAJAAgCAcAAP0GACAPAAD-BgAg-QIBAAAAAZEDQAAAAAGjAwEAAAABqwMAAAC_AwK8AwIAAAABvQMBAAAAAQEzAAC9AgAgBvkCAQAAAAGRA0AAAAABowMBAAAAAasDAAAAvwMCvAMCAAAAAb0DAQAAAAEBMwAAvwIAMAEzAAC_AgAwCAcAAPsGACAPAAD8BgAg-QIBAOEFACGRA0AA4wUAIaMDAQDhBQAhqwMAAPoGvwMivAMCAPQFACG9AwEA4QUAIQIAAAAkACAzAADCAgAgBvkCAQDhBQAhkQNAAOMFACGjAwEA4QUAIasDAAD6Br8DIrwDAgD0BQAhvQMBAOEFACECAAAAIgAgMwAAxAIAIAIAAAAiACAzAADEAgAgAwAAACQAIDoAAL0CACA7AADCAgAgAQAAACQAIAEAAAAiACAFDAAA9QYAIEAAAPYGACBBAAD5BgAgQgAA-AYAIEMAAPcGACAJ9gIAAIIFADD3AgAAywIAEPgCAACCBQAw-QIBAM4EACGRA0AA0AQAIaMDAQDOBAAhqwMAAIMFvwMivAMCAN8EACG9AwEAzgQAIQMAAAAiACABAADKAgAwPwAAywIAIAMAAAAiACABAAAjADACAAAkACAJCwAAgQUAIPYCAAD8BAAw9wIAANECABD4AgAA_AQAMPkCAQAAAAGRA0AAgAUAIaEDAgAAAAG3AwEAAAABuAMBAP8EACEBAAAAzgIAIAEAAADOAgAgCQsAAIEFACD2AgAA_AQAMPcCAADRAgAQ-AIAAPwEADD5AgEA_QQAIZEDQACABQAhoQMCAP4EACG3AwEA_QQAIbgDAQD_BAAhAwsAAPQGACChAwAA5gUAILgDAADmBQAgAwAAANECACABAADSAgAwAgAAzgIAIAMAAADRAgAgAQAA0gIAMAIAAM4CACADAAAA0QIAIAEAANICADACAADOAgAgBgsAAPMGACD5AgEAAAABkQNAAAAAAaEDAgAAAAG3AwEAAAABuAMBAAAAAQEzAADWAgAgBfkCAQAAAAGRA0AAAAABoQMCAAAAAbcDAQAAAAG4AwEAAAABATMAANgCADABMwAA2AIAMAYLAADkBgAg-QIBAOEFACGRA0AA4wUAIaEDAgCSBgAhtwMBAOEFACG4AwEA9QUAIQIAAADOAgAgMwAA2wIAIAX5AgEA4QUAIZEDQADjBQAhoQMCAJIGACG3AwEA4QUAIbgDAQD1BQAhAgAAANECACAzAADdAgAgAgAAANECACAzAADdAgAgAwAAAM4CACA6AADWAgAgOwAA2wIAIAEAAADOAgAgAQAAANECACAHDAAA3wYAIEAAAOAGACBBAADjBgAgQgAA4gYAIEMAAOEGACChAwAA5gUAILgDAADmBQAgCPYCAAD7BAAw9wIAAOQCABD4AgAA-wQAMPkCAQDOBAAhkQNAANAEACGhAwIA6AQAIbcDAQDOBAAhuAMBAOAEACEDAAAA0QIAIAEAAOMCADA_AADkAgAgAwAAANECACABAADSAgAwAgAAzgIAIAEAAAATACABAAAAEwAgAwAAABEAIAEAABIAMAIAABMAIAMAAAARACABAAASADACAAATACADAAAAEQAgAQAAEgAwAgAAEwAgBgMAAN4GACAHAADdBgAg-gIBAAAAAZEDQAAAAAGjAwEAAAABtgMAAAC2AwIBMwAA7AIAIAT6AgEAAAABkQNAAAAAAaMDAQAAAAG2AwAAALYDAgEzAADuAgAwATMAAO4CADAGAwAA3AYAIAcAANsGACD6AgEA4QUAIZEDQADjBQAhowMBAOEFACG2AwAA2ga2AyICAAAAEwAgMwAA8QIAIAT6AgEA4QUAIZEDQADjBQAhowMBAOEFACG2AwAA2ga2AyICAAAAEQAgMwAA8wIAIAIAAAARACAzAADzAgAgAwAAABMAIDoAAOwCACA7AADxAgAgAQAAABMAIAEAAAARACADDAAA1wYAIEIAANkGACBDAADYBgAgB_YCAAD3BAAw9wIAAPoCABD4AgAA9wQAMPoCAQDOBAAhkQNAANAEACGjAwEAzgQAIbYDAAD4BLYDIgMAAAARACABAAD5AgAwPwAA-gIAIAMAAAARACABAAASADACAAATACABAAAAMgAgAQAAADIAIAMAAAAwACABAAAxADACAAAyACADAAAAMAAgAQAAMQAwAgAAMgAgAwAAADAAIAEAADEAMAIAADIAIAcHAADVBgAgFwAA1gYAIPkCAQAAAAGRA0AAAAABowMBAAAAAbIDAQAAAAG0AwAAALQDAgEzAACCAwAgBfkCAQAAAAGRA0AAAAABowMBAAAAAbIDAQAAAAG0AwAAALQDAgEzAACEAwAwATMAAIQDADABAAAADwAgBwcAANMGACAXAADUBgAg-QIBAOEFACGRA0AA4wUAIaMDAQDhBQAhsgMBAPUFACG0AwAA0ga0AyICAAAAMgAgMwAAiAMAIAX5AgEA4QUAIZEDQADjBQAhowMBAOEFACGyAwEA9QUAIbQDAADSBrQDIgIAAAAwACAzAACKAwAgAgAAADAAIDMAAIoDACABAAAADwAgAwAAADIAIDoAAIIDACA7AACIAwAgAQAAADIAIAEAAAAwACAEDAAAzwYAIEIAANEGACBDAADQBgAgsgMAAOYFACAI9gIAAPMEADD3AgAAkgMAEPgCAADzBAAw-QIBAM4EACGRA0AA0AQAIaMDAQDOBAAhsgMBAOAEACG0AwAA9AS0AyIDAAAAMAAgAQAAkQMAMD8AAJIDACADAAAAMAAgAQAAMQAwAgAAMgAgAQAAADgAIAEAAAA4ACADAAAANgAgAQAANwAwAgAAOAAgAwAAADYAIAEAADcAMAIAADgAIAMAAAA2ACABAAA3ADACAAA4ACAFAwAAzgYAIAcAAM0GACD6AgEAAAABkQNAAAAAAaMDAQAAAAEBMwAAmgMAIAP6AgEAAAABkQNAAAAAAaMDAQAAAAEBMwAAnAMAMAEzAACcAwAwBQMAAMwGACAHAADLBgAg-gIBAOEFACGRA0AA4wUAIaMDAQDhBQAhAgAAADgAIDMAAJ8DACAD-gIBAOEFACGRA0AA4wUAIaMDAQDhBQAhAgAAADYAIDMAAKEDACACAAAANgAgMwAAoQMAIAMAAAA4ACA6AACaAwAgOwAAnwMAIAEAAAA4ACABAAAANgAgAwwAAMgGACBCAADKBgAgQwAAyQYAIAb2AgAA8gQAMPcCAACoAwAQ-AIAAPIEADD6AgEAzgQAIZEDQADQBAAhowMBAM4EACEDAAAANgAgAQAApwMAMD8AAKgDACADAAAANgAgAQAANwAwAgAAOAAgAQAAADwAIAEAAAA8ACADAAAAOgAgAQAAOwAwAgAAPAAgAwAAADoAIAEAADsAMAIAADwAIAMAAAA6ACABAAA7ADACAAA8ACAOAwAAxwYAIAcAAMYGACD5AgEAAAAB-gIBAAAAAZEDQAAAAAGjAwEAAAABpAMCAAAAAasDAAAAqwMCrAMBAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAbADgAAAAAGxAwEAAAABATMAALADACAM-QIBAAAAAfoCAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAGrAwAAAKsDAqwDAQAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAGwA4AAAAABsQMBAAAAAQEzAACyAwAwATMAALIDADABAAAADwAgDgMAAMUGACAHAADEBgAg-QIBAOEFACH6AgEA9QUAIZEDQADjBQAhowMBAOEFACGkAwIAkgYAIasDAADDBqsDIqwDAQD1BQAhrQMBAPUFACGuAwEA9QUAIa8DAQD1BQAhsAOAAAAAAbEDAQD1BQAhAgAAADwAIDMAALYDACAM-QIBAOEFACH6AgEA9QUAIZEDQADjBQAhowMBAOEFACGkAwIAkgYAIasDAADDBqsDIqwDAQD1BQAhrQMBAPUFACGuAwEA9QUAIa8DAQD1BQAhsAOAAAAAAbEDAQD1BQAhAgAAADoAIDMAALgDACACAAAAOgAgMwAAuAMAIAEAAAAPACADAAAAPAAgOgAAsAMAIDsAALYDACABAAAAPAAgAQAAADoAIA0MAAC-BgAgQAAAvwYAIEEAAMIGACBCAADBBgAgQwAAwAYAIPoCAADmBQAgpAMAAOYFACCsAwAA5gUAIK0DAADmBQAgrgMAAOYFACCvAwAA5gUAILADAADmBQAgsQMAAOYFACAP9gIAAOwEADD3AgAAwAMAEPgCAADsBAAw-QIBAM4EACH6AgEA4AQAIZEDQADQBAAhowMBAM4EACGkAwIA6AQAIasDAADtBKsDIqwDAQDgBAAhrQMBAOAEACGuAwEA4AQAIa8DAQDgBAAhsAMAAO4EACCxAwEA4AQAIQMAAAA6ACABAAC_AwAwPwAAwAMAIAMAAAA6ACABAAA7ADACAAA8ACABAAAAQQAgAQAAAEEAIAMAAAA_ACABAABAADACAABBACADAAAAPwAgAQAAQAAwAgAAQQAgAwAAAD8AIAEAAEAAMAIAAEEAIAkDAAC8BgAgBwAAvQYAIDOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGjAwEAAAABqQMCAAAAAQEzAADIAwAgBzOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGjAwEAAAABqQMCAAAAAQEzAADKAwAwATMAAMoDADABAAAAFwAgCQMAALoGACAHAAC7BgAgM4AAAAAB-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACGjAwEA9QUAIakDAgD0BQAhAgAAAEEAIDMAAM4DACAHM4AAAAAB-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACGjAwEA9QUAIakDAgD0BQAhAgAAAD8AIDMAANADACACAAAAPwAgMwAA0AMAIAEAAAAXACADAAAAQQAgOgAAyAMAIDsAAM4DACABAAAAQQAgAQAAAD8AIAYMAAC1BgAgQAAAtgYAIEEAALkGACBCAAC4BgAgQwAAtwYAIKMDAADmBQAgCjMAAN4EACD2AgAA6wQAMPcCAADYAwAQ-AIAAOsEADD5AgEAzgQAIfoCAQDOBAAh_gJAANAEACGRA0AA0AQAIaMDAQDgBAAhqQMCAN8EACEDAAAAPwAgAQAA1wMAMD8AANgDACADAAAAPwAgAQAAQAAwAgAAQQAgAQAAAEYAIAEAAABGACADAAAARAAgAQAARQAwAgAARgAgAwAAAEQAIAEAAEUAMAIAAEYAIAMAAABEACABAABFADACAABGACARAwAAsQYAIAcAALAGACAaAACzBgAgHQAAtAYAIB4AALIGACD5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaIDAQAAAAGjAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAEBMwAA4AMAIAz5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaIDAQAAAAGjAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAEBMwAA4gMAMAEzAADiAwAwAQAAAA8AIAEAAABEACARAwAAlAYAIAcAAJMGACAaAACXBgAgHQAAlQYAIB4AAJYGACD5AgEA4QUAIfoCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhogMBAPUFACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACECAAAARgAgMwAA5wMAIAz5AgEA4QUAIfoCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhogMBAPUFACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACECAAAARAAgMwAA6QMAIAIAAABEACAzAADpAwAgAQAAAA8AIAEAAABEACADAAAARgAgOgAA4AMAIDsAAOcDACABAAAARgAgAQAAAEQAIAwMAACNBgAgQAAAjgYAIEEAAJEGACBCAACQBgAgQwAAjwYAIPoCAADmBQAgoQMAAOYFACCiAwAA5gUAIKQDAADmBQAgpQMAAOYFACCnAwAA5gUAIKgDAADmBQAgD_YCAADnBAAw9wIAAPIDABD4AgAA5wQAMPkCAQDOBAAh-gIBAOAEACH-AkAA0AQAIZEDQADQBAAhoQMCAOgEACGiAwEA4AQAIaMDAQDOBAAhpAMCAOgEACGlAwEA4AQAIaYDAgDfBAAhpwNAANkEACGoA0AA2QQAIQMAAABEACABAADxAwAwPwAA8gMAIAMAAABEACABAABFADACAABGACABAAAATQAgAQAAAE0AIAMAAABLACABAABMADACAABNACADAAAASwAgAQAATAAwAgAATQAgAwAAAEsAIAEAAEwAMAIAAE0AIAUDAACMBgAgHwAAiwYAIPoCAQAAAAGRA0AAAAABoAMBAAAAAQEzAAD6AwAgA_oCAQAAAAGRA0AAAAABoAMBAAAAAQEzAAD8AwAwATMAAPwDADAFAwAAigYAIB8AAIkGACD6AgEA4QUAIZEDQADjBQAhoAMBAOEFACECAAAATQAgMwAA_wMAIAP6AgEA4QUAIZEDQADjBQAhoAMBAOEFACECAAAASwAgMwAAgQQAIAIAAABLACAzAACBBAAgAwAAAE0AIDoAAPoDACA7AAD_AwAgAQAAAE0AIAEAAABLACADDAAAhgYAIEIAAIgGACBDAACHBgAgBvYCAADmBAAw9wIAAIgEABD4AgAA5gQAMPoCAQDOBAAhkQNAANAEACGgAwEAzgQAIQMAAABLACABAACHBAAwPwAAiAQAIAMAAABLACABAABMADACAABNACABAAAAXQAgAQAAAF0AIAMAAABbACABAABcADACAABdACADAAAAWwAgAQAAXAAwAgAAXQAgAwAAAFsAIAEAAFwAMAIAAF0AIAwjAACEBgAgJgAAhQYAIPkCAQAAAAGRA0AAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDgAAAAAGXA0AAAAABmAMCAAAAAZkDAQAAAAEBMwAAkAQAIAr5AgEAAAABkQNAAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWA4AAAAABlwNAAAAAAZgDAgAAAAGZAwEAAAABATMAAJIEADABMwAAkgQAMAwjAAD2BQAgJgAA9wUAIPkCAQDhBQAhkQNAAOMFACGSAwEA4QUAIZMDAQDhBQAhlAMBAOEFACGVAwEA4QUAIZYDgAAAAAGXA0AA6gUAIZgDAgD0BQAhmQMBAPUFACECAAAAXQAgMwAAlQQAIAr5AgEA4QUAIZEDQADjBQAhkgMBAOEFACGTAwEA4QUAIZQDAQDhBQAhlQMBAOEFACGWA4AAAAABlwNAAOoFACGYAwIA9AUAIZkDAQD1BQAhAgAAAFsAIDMAAJcEACACAAAAWwAgMwAAlwQAIAMAAABdACA6AACQBAAgOwAAlQQAIAEAAABdACABAAAAWwAgBwwAAO8FACBAAADwBQAgQQAA8wUAIEIAAPIFACBDAADxBQAglwMAAOYFACCZAwAA5gUAIA32AgAA3QQAMPcCAACeBAAQ-AIAAN0EADD5AgEAzgQAIZEDQADQBAAhkgMBAM4EACGTAwEAzgQAIZQDAQDOBAAhlQMBAM4EACGWAwAA3gQAIJcDQADZBAAhmAMCAN8EACGZAwEA4AQAIQMAAABbACABAACdBAAwPwAAngQAIAMAAABbACABAABcADACAABdACABAAAAYQAgAQAAAGEAIAMAAABfACABAABgADACAABhACADAAAAXwAgAQAAYAAwAgAAYQAgAwAAAF8AIAEAAGAAMAIAAGEAIAwkAADtBQAgJQAA7gUAIPkCAQAAAAH7AgEAAAABigMBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAGPA0AAAAABkANAAAAAAZEDQAAAAAEBMwAApgQAIAr5AgEAAAAB-wIBAAAAAYoDAQAAAAGLAwEAAAABjAMBAAAAAY0DAQAAAAGOAwEAAAABjwNAAAAAAZADQAAAAAGRA0AAAAABATMAAKgEADABMwAAqAQAMAwkAADrBQAgJQAA7AUAIPkCAQDhBQAh-wIBAOEFACGKAwEA4QUAIYsDAQDhBQAhjAMBAOEFACGNAwEA4QUAIY4DAQDhBQAhjwNAAOoFACGQA0AA6gUAIZEDQADjBQAhAgAAAGEAIDMAAKsEACAK-QIBAOEFACH7AgEA4QUAIYoDAQDhBQAhiwMBAOEFACGMAwEA4QUAIY0DAQDhBQAhjgMBAOEFACGPA0AA6gUAIZADQADqBQAhkQNAAOMFACECAAAAXwAgMwAArQQAIAIAAABfACAzAACtBAAgAwAAAGEAIDoAAKYEACA7AACrBAAgAQAAAGEAIAEAAABfACAFDAAA5wUAIEIAAOkFACBDAADoBQAgjwMAAOYFACCQAwAA5gUAIA32AgAA2AQAMPcCAAC0BAAQ-AIAANgEADD5AgEAzgQAIfsCAQDOBAAhigMBAM4EACGLAwEAzgQAIYwDAQDOBAAhjQMBAM4EACGOAwEAzgQAIY8DQADZBAAhkANAANkEACGRA0AA0AQAIQMAAABfACABAACzBAAwPwAAtAQAIAMAAABfACABAABgADACAABhACABAAAAbAAgAQAAAGwAIAMAAABqACABAABrADACAABsACADAAAAagAgAQAAawAwAgAAbAAgAwAAAGoAIAEAAGsAMAIAAGwAIAcDAADlBQAg-QIBAAAAAfoCAQAAAAH7AgEAAAAB_AIgAAAAAf0CIAAAAAH-AkAAAAABATMAALwEACAG-QIBAAAAAfoCAQAAAAH7AgEAAAAB_AIgAAAAAf0CIAAAAAH-AkAAAAABATMAAL4EADABMwAAvgQAMAcDAADkBQAg-QIBAOEFACH6AgEA4QUAIfsCAQDhBQAh_AIgAOIFACH9AiAA4gUAIf4CQADjBQAhAgAAAGwAIDMAAMEEACAG-QIBAOEFACH6AgEA4QUAIfsCAQDhBQAh_AIgAOIFACH9AiAA4gUAIf4CQADjBQAhAgAAAGoAIDMAAMMEACACAAAAagAgMwAAwwQAIAMAAABsACA6AAC8BAAgOwAAwQQAIAEAAABsACABAAAAagAgAwwAAN4FACBCAADgBQAgQwAA3wUAIAn2AgAAzQQAMPcCAADKBAAQ-AIAAM0EADD5AgEAzgQAIfoCAQDOBAAh-wIBAM4EACH8AiAAzwQAIf0CIADPBAAh_gJAANAEACEDAAAAagAgAQAAyQQAMD8AAMoEACADAAAAagAgAQAAawAwAgAAbAAgCfYCAADNBAAw9wIAAMoEABD4AgAAzQQAMPkCAQDOBAAh-gIBAM4EACH7AgEAzgQAIfwCIADPBAAh_QIgAM8EACH-AkAA0AQAIQ4MAADSBAAgQgAA1wQAIEMAANcEACD_AgEAAAABgAMBAAAABIEDAQAAAASCAwEAAAABgwMBAAAAAYQDAQAAAAGFAwEAAAABhgMBANYEACGHAwEAAAABiAMBAAAAAYkDAQAAAAEFDAAA0gQAIEIAANUEACBDAADVBAAg_wIgAAAAAYYDIADUBAAhCwwAANIEACBCAADTBAAgQwAA0wQAIP8CQAAAAAGAA0AAAAAEgQNAAAAABIIDQAAAAAGDA0AAAAABhANAAAAAAYUDQAAAAAGGA0AA0QQAIQsMAADSBAAgQgAA0wQAIEMAANMEACD_AkAAAAABgANAAAAABIEDQAAAAASCA0AAAAABgwNAAAAAAYQDQAAAAAGFA0AAAAABhgNAANEEACEI_wICAAAAAYADAgAAAASBAwIAAAAEggMCAAAAAYMDAgAAAAGEAwIAAAABhQMCAAAAAYYDAgDSBAAhCP8CQAAAAAGAA0AAAAAEgQNAAAAABIIDQAAAAAGDA0AAAAABhANAAAAAAYUDQAAAAAGGA0AA0wQAIQUMAADSBAAgQgAA1QQAIEMAANUEACD_AiAAAAABhgMgANQEACEC_wIgAAAAAYYDIADVBAAhDgwAANIEACBCAADXBAAgQwAA1wQAIP8CAQAAAAGAAwEAAAAEgQMBAAAABIIDAQAAAAGDAwEAAAABhAMBAAAAAYUDAQAAAAGGAwEA1gQAIYcDAQAAAAGIAwEAAAABiQMBAAAAAQv_AgEAAAABgAMBAAAABIEDAQAAAASCAwEAAAABgwMBAAAAAYQDAQAAAAGFAwEAAAABhgMBANcEACGHAwEAAAABiAMBAAAAAYkDAQAAAAEN9gIAANgEADD3AgAAtAQAEPgCAADYBAAw-QIBAM4EACH7AgEAzgQAIYoDAQDOBAAhiwMBAM4EACGMAwEAzgQAIY0DAQDOBAAhjgMBAM4EACGPA0AA2QQAIZADQADZBAAhkQNAANAEACELDAAA2wQAIEIAANwEACBDAADcBAAg_wJAAAAAAYADQAAAAAWBA0AAAAAFggNAAAAAAYMDQAAAAAGEA0AAAAABhQNAAAAAAYYDQADaBAAhCwwAANsEACBCAADcBAAgQwAA3AQAIP8CQAAAAAGAA0AAAAAFgQNAAAAABYIDQAAAAAGDA0AAAAABhANAAAAAAYUDQAAAAAGGA0AA2gQAIQj_AgIAAAABgAMCAAAABYEDAgAAAAWCAwIAAAABgwMCAAAAAYQDAgAAAAGFAwIAAAABhgMCANsEACEI_wJAAAAAAYADQAAAAAWBA0AAAAAFggNAAAAAAYMDQAAAAAGEA0AAAAABhQNAAAAAAYYDQADcBAAhDfYCAADdBAAw9wIAAJ4EABD4AgAA3QQAMPkCAQDOBAAhkQNAANAEACGSAwEAzgQAIZMDAQDOBAAhlAMBAM4EACGVAwEAzgQAIZYDAADeBAAglwNAANkEACGYAwIA3wQAIZkDAQDgBAAhDwwAANIEACBCAADlBAAgQwAA5QQAIP8CgAAAAAGCA4AAAAABgwOAAAAAAYQDgAAAAAGFA4AAAAABhgOAAAAAAZoDAQAAAAGbAwEAAAABnAMBAAAAAZ0DgAAAAAGeA4AAAAABnwOAAAAAAQ0MAADSBAAgQAAA5AQAIEEAANIEACBCAADSBAAgQwAA0gQAIP8CAgAAAAGAAwIAAAAEgQMCAAAABIIDAgAAAAGDAwIAAAABhAMCAAAAAYUDAgAAAAGGAwIA4wQAIQ4MAADbBAAgQgAA4gQAIEMAAOIEACD_AgEAAAABgAMBAAAABYEDAQAAAAWCAwEAAAABgwMBAAAAAYQDAQAAAAGFAwEAAAABhgMBAOEEACGHAwEAAAABiAMBAAAAAYkDAQAAAAEODAAA2wQAIEIAAOIEACBDAADiBAAg_wIBAAAAAYADAQAAAAWBAwEAAAAFggMBAAAAAYMDAQAAAAGEAwEAAAABhQMBAAAAAYYDAQDhBAAhhwMBAAAAAYgDAQAAAAGJAwEAAAABC_8CAQAAAAGAAwEAAAAFgQMBAAAABYIDAQAAAAGDAwEAAAABhAMBAAAAAYUDAQAAAAGGAwEA4gQAIYcDAQAAAAGIAwEAAAABiQMBAAAAAQ0MAADSBAAgQAAA5AQAIEEAANIEACBCAADSBAAgQwAA0gQAIP8CAgAAAAGAAwIAAAAEgQMCAAAABIIDAgAAAAGDAwIAAAABhAMCAAAAAYUDAgAAAAGGAwIA4wQAIQj_AggAAAABgAMIAAAABIEDCAAAAASCAwgAAAABgwMIAAAAAYQDCAAAAAGFAwgAAAABhgMIAOQEACEM_wKAAAAAAYIDgAAAAAGDA4AAAAABhAOAAAAAAYUDgAAAAAGGA4AAAAABmgMBAAAAAZsDAQAAAAGcAwEAAAABnQOAAAAAAZ4DgAAAAAGfA4AAAAABBvYCAADmBAAw9wIAAIgEABD4AgAA5gQAMPoCAQDOBAAhkQNAANAEACGgAwEAzgQAIQ_2AgAA5wQAMPcCAADyAwAQ-AIAAOcEADD5AgEAzgQAIfoCAQDgBAAh_gJAANAEACGRA0AA0AQAIaEDAgDoBAAhogMBAOAEACGjAwEAzgQAIaQDAgDoBAAhpQMBAOAEACGmAwIA3wQAIacDQADZBAAhqANAANkEACENDAAA2wQAIEAAAOoEACBBAADbBAAgQgAA2wQAIEMAANsEACD_AgIAAAABgAMCAAAABYEDAgAAAAWCAwIAAAABgwMCAAAAAYQDAgAAAAGFAwIAAAABhgMCAOkEACENDAAA2wQAIEAAAOoEACBBAADbBAAgQgAA2wQAIEMAANsEACD_AgIAAAABgAMCAAAABYEDAgAAAAWCAwIAAAABgwMCAAAAAYQDAgAAAAGFAwIAAAABhgMCAOkEACEI_wIIAAAAAYADCAAAAAWBAwgAAAAFggMIAAAAAYMDCAAAAAGEAwgAAAABhQMIAAAAAYYDCADqBAAhCjMAAN4EACD2AgAA6wQAMPcCAADYAwAQ-AIAAOsEADD5AgEAzgQAIfoCAQDOBAAh_gJAANAEACGRA0AA0AQAIaMDAQDgBAAhqQMCAN8EACEP9gIAAOwEADD3AgAAwAMAEPgCAADsBAAw-QIBAM4EACH6AgEA4AQAIZEDQADQBAAhowMBAM4EACGkAwIA6AQAIasDAADtBKsDIqwDAQDgBAAhrQMBAOAEACGuAwEA4AQAIa8DAQDgBAAhsAMAAO4EACCxAwEA4AQAIQcMAADSBAAgQgAA8QQAIEMAAPEEACD_AgAAAKsDAoADAAAAqwMIgQMAAACrAwiGAwAA8ASrAyIPDAAA2wQAIEIAAO8EACBDAADvBAAg_wKAAAAAAYIDgAAAAAGDA4AAAAABhAOAAAAAAYUDgAAAAAGGA4AAAAABmgMBAAAAAZsDAQAAAAGcAwEAAAABnQOAAAAAAZ4DgAAAAAGfA4AAAAABDP8CgAAAAAGCA4AAAAABgwOAAAAAAYQDgAAAAAGFA4AAAAABhgOAAAAAAZoDAQAAAAGbAwEAAAABnAMBAAAAAZ0DgAAAAAGeA4AAAAABnwOAAAAAAQcMAADSBAAgQgAA8QQAIEMAAPEEACD_AgAAAKsDAoADAAAAqwMIgQMAAACrAwiGAwAA8ASrAyIE_wIAAACrAwKAAwAAAKsDCIEDAAAAqwMIhgMAAPEEqwMiBvYCAADyBAAw9wIAAKgDABD4AgAA8gQAMPoCAQDOBAAhkQNAANAEACGjAwEAzgQAIQj2AgAA8wQAMPcCAACSAwAQ-AIAAPMEADD5AgEAzgQAIZEDQADQBAAhowMBAM4EACGyAwEA4AQAIbQDAAD0BLQDIgcMAADSBAAgQgAA9gQAIEMAAPYEACD_AgAAALQDAoADAAAAtAMIgQMAAAC0AwiGAwAA9QS0AyIHDAAA0gQAIEIAAPYEACBDAAD2BAAg_wIAAAC0AwKAAwAAALQDCIEDAAAAtAMIhgMAAPUEtAMiBP8CAAAAtAMCgAMAAAC0AwiBAwAAALQDCIYDAAD2BLQDIgf2AgAA9wQAMPcCAAD6AgAQ-AIAAPcEADD6AgEAzgQAIZEDQADQBAAhowMBAM4EACG2AwAA-AS2AyIHDAAA0gQAIEIAAPoEACBDAAD6BAAg_wIAAAC2AwKAAwAAALYDCIEDAAAAtgMIhgMAAPkEtgMiBwwAANIEACBCAAD6BAAgQwAA-gQAIP8CAAAAtgMCgAMAAAC2AwiBAwAAALYDCIYDAAD5BLYDIgT_AgAAALYDAoADAAAAtgMIgQMAAAC2AwiGAwAA-gS2AyII9gIAAPsEADD3AgAA5AIAEPgCAAD7BAAw-QIBAM4EACGRA0AA0AQAIaEDAgDoBAAhtwMBAM4EACG4AwEA4AQAIQkLAACBBQAg9gIAAPwEADD3AgAA0QIAEPgCAAD8BAAw-QIBAP0EACGRA0AAgAUAIaEDAgD-BAAhtwMBAP0EACG4AwEA_wQAIQv_AgEAAAABgAMBAAAABIEDAQAAAASCAwEAAAABgwMBAAAAAYQDAQAAAAGFAwEAAAABhgMBANcEACGHAwEAAAABiAMBAAAAAYkDAQAAAAEI_wICAAAAAYADAgAAAAWBAwIAAAAFggMCAAAAAYMDAgAAAAGEAwIAAAABhQMCAAAAAYYDAgDbBAAhC_8CAQAAAAGAAwEAAAAFgQMBAAAABYIDAQAAAAGDAwEAAAABhAMBAAAAAYUDAQAAAAGGAwEA4gQAIYcDAQAAAAGIAwEAAAABiQMBAAAAAQj_AkAAAAABgANAAAAABIEDQAAAAASCA0AAAAABgwNAAAAAAYQDQAAAAAGFA0AAAAABhgNAANMEACEDuQMAABwAILoDAAAcACC7AwAAHAAgCfYCAACCBQAw9wIAAMsCABD4AgAAggUAMPkCAQDOBAAhkQNAANAEACGjAwEAzgQAIasDAACDBb8DIrwDAgDfBAAhvQMBAM4EACEHDAAA0gQAIEIAAIUFACBDAACFBQAg_wIAAAC_AwKAAwAAAL8DCIEDAAAAvwMIhgMAAIQFvwMiBwwAANIEACBCAACFBQAgQwAAhQUAIP8CAAAAvwMCgAMAAAC_AwiBAwAAAL8DCIYDAACEBb8DIgT_AgAAAL8DAoADAAAAvwMIgQMAAAC_AwiGAwAAhQW_AyIH9gIAAIYFADD3AgAAtQIAEPgCAACGBQAwkQNAANAEACGjAwEAzgQAIaQDAgDfBAAhvwMBAM4EACEO9gIAAIcFADD3AgAAnwIAEPgCAACHBQAwjAMBAM4EACGRA0AA0AQAIaMDAQDOBAAhpAMCAN8EACHAAwEA4AQAIcEDAQDgBAAhwgMBAOAEACHDAwEAzgQAIcQDAQDgBAAhxQMBAOAEACHGA0AA2QQAIRL2AgAAiAUAMPcCAACJAgAQ-AIAAIgFADD5AgEAzgQAIf4CQADQBAAhkQNAANAEACGhAwIA6AQAIagDQADZBAAhxwMCAOgEACHIAwEA4AQAIckDAgDoBAAhywMAAIkFywMizAMgAM8EACHNAyAAzwQAIc4DAgDfBAAhzwMCAN8EACHQAwIA3wQAIdEDAgDfBAAhBwwAANIEACBCAACLBQAgQwAAiwUAIP8CAAAAywMCgAMAAADLAwiBAwAAAMsDCIYDAACKBcsDIgcMAADSBAAgQgAAiwUAIEMAAIsFACD_AgAAAMsDAoADAAAAywMIgQMAAADLAwiGAwAAigXLAyIE_wIAAADLAwKAAwAAAMsDCIEDAAAAywMIhgMAAIsFywMiDvYCAACMBQAw9wIAAO0BABD4AgAAjAUAMPkCAQDOBAAh-gIBAM4EACGRA0AA2QQAIbcDAQDgBAAh0gMBAM4EACHTAwEAzgQAIdQDAgDfBAAh1QMBAM4EACHWAyAAzwQAIdcDAQDgBAAh2AMBAOAEACEK9gIAAI0FADD3AgAA1wEAEPgCAACNBQAw-QIBAM4EACH6AgEA4AQAIf4CQADZBAAhkQNAANkEACHZAwEAzgQAIdoDAQDOBAAh2wNAANAEACEM9gIAAI4FADD3AgAAvwEAEPgCAACOBQAw-QIBAM4EACH6AgEAzgQAIf4CQADQBAAhkQNAANAEACGuAwEA4AQAIdsDQADQBAAh3AMBAM4EACHdAwEA4AQAId4DAQDgBAAhEPYCAACPBQAw9wIAAKkBABD4AgAAjwUAMPkCAQDOBAAh-gIBAM4EACH-AkAA0AQAIZEDQADQBAAh3wMBAM4EACHgAwEAzgQAIeEDAQDgBAAh4gMBAOAEACHjA0AA2QQAIeQDQADZBAAh5QMBAOAEACHmAwEA4AQAIecDAQDgBAAhGfYCAACQBQAw9wIAAJMBABD4AgAAkAUAMPkCAQDOBAAh_AIBAOAEACH-AkAA0AQAIZEDQADQBAAhoQMCAOgEACGoA0AA2QQAIbYDAQDgBAAhtwMBAOAEACHoAyAAzwQAIekDAQDgBAAh6wMAAJEF6wMi7QMAAJIF7QMi7gMgAM8EACHvAwEA4AQAIfADAQDgBAAh8QMAAO4EACDyA0AA2QQAIfMDAQDgBAAh9AMgAJMFACH1AwEA4AQAIfYDQADZBAAh9wNAANkEACEHDAAA0gQAIEIAAJkFACBDAACZBQAg_wIAAADrAwKAAwAAAOsDCIEDAAAA6wMIhgMAAJgF6wMiBwwAANIEACBCAACXBQAgQwAAlwUAIP8CAAAA7QMCgAMAAADtAwiBAwAAAO0DCIYDAACWBe0DIgUMAADbBAAgQgAAlQUAIEMAAJUFACD_AiAAAAABhgMgAJQFACEFDAAA2wQAIEIAAJUFACBDAACVBQAg_wIgAAAAAYYDIACUBQAhAv8CIAAAAAGGAyAAlQUAIQcMAADSBAAgQgAAlwUAIEMAAJcFACD_AgAAAO0DAoADAAAA7QMIgQMAAADtAwiGAwAAlgXtAyIE_wIAAADtAwKAAwAAAO0DCIEDAAAA7QMIhgMAAJcF7QMiBwwAANIEACBCAACZBQAgQwAAmQUAIP8CAAAA6wMCgAMAAADrAwiBAwAAAOsDCIYDAACYBesDIgT_AgAAAOsDAoADAAAA6wMIgQMAAADrAwiGAwAAmQXrAyIPAwAAngUAIPYCAACaBQAw9wIAAG4AEPgCAACaBQAw-QIBAP0EACH6AgEA_QQAIZEDQACdBQAhtwMBAP8EACHSAwEA_QQAIdMDAQD9BAAh1AMCAJsFACHVAwEA_QQAIdYDIACcBQAh1wMBAP8EACHYAwEA_wQAIQj_AgIAAAABgAMCAAAABIEDAgAAAASCAwIAAAABgwMCAAAAAYQDAgAAAAGFAwIAAAABhgMCANIEACEC_wIgAAAAAYYDIADVBAAhCP8CQAAAAAGAA0AAAAAFgQNAAAAABYIDQAAAAAGDA0AAAAABhANAAAAAAYUDQAAAAAGGA0AA3AQAISkEAADVBQAgBQAA1gUAIAYAANcFACAgAACuBQAgIQAAyQUAICIAAMoFACAmAACmBQAgJwAA2AUAICgAAMsFACApAADMBQAgKgAAzQUAICsAAK8FACAsAADZBQAgLQAA2gUAIPYCAADRBQAw9wIAAA8AEPgCAADRBQAw-QIBAP0EACH8AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIagDQACdBQAhtgMBAP8EACG3AwEA_wQAIegDIACcBQAh6QMBAP8EACHrAwAA0gXrAyLtAwAA0wXtAyLuAyAAnAUAIe8DAQD_BAAh8AMBAP8EACHxAwAAtAUAIPIDQACdBQAh8wMBAP8EACH0AyAA1AUAIfUDAQD_BAAh9gNAAJ0FACH3A0AAnQUAIYAEAAAPACCBBAAADwAgAvoCAQAAAAH7AgEAAAABCgMAAJ4FACD2AgAAoAUAMPcCAABqABD4AgAAoAUAMPkCAQD9BAAh-gIBAP0EACH7AgEA_QQAIfwCIACcBQAh_QIgAJwFACH-AkAAgAUAIQP7AgEAAAABigMBAAAAAYsDAQAAAAEPJAAAngUAICUAAKMFACD2AgAAogUAMPcCAABfABD4AgAAogUAMPkCAQD9BAAh-wIBAP0EACGKAwEA_QQAIYsDAQD9BAAhjAMBAP0EACGNAwEA_QQAIY4DAQD9BAAhjwNAAJ0FACGQA0AAnQUAIZEDQACABQAhESMAAJ4FACAmAACmBQAg9gIAAKQFADD3AgAAWwAQ-AIAAKQFADD5AgEA_QQAIZEDQACABQAhkgMBAP0EACGTAwEA_QQAIZQDAQD9BAAhlQMBAP0EACGWAwAApQUAIJcDQACdBQAhmAMCAJsFACGZAwEA_wQAIYAEAABbACCBBAAAWwAgDyMAAJ4FACAmAACmBQAg9gIAAKQFADD3AgAAWwAQ-AIAAKQFADD5AgEA_QQAIZEDQACABQAhkgMBAP0EACGTAwEA_QQAIZQDAQD9BAAhlQMBAP0EACGWAwAApQUAIJcDQACdBQAhmAMCAJsFACGZAwEA_wQAIQz_AoAAAAABggOAAAAAAYMDgAAAAAGEA4AAAAABhQOAAAAAAYYDgAAAAAGaAwEAAAABmwMBAAAAAZwDAQAAAAGdA4AAAAABngOAAAAAAZ8DgAAAAAEDuQMAAF8AILoDAABfACC7AwAAXwAgAvoCAQAAAAGgAwEAAAABCAMAAJ4FACAfAACpBQAg9gIAAKgFADD3AgAASwAQ-AIAAKgFADD6AgEA_QQAIZEDQACABQAhoAMBAP0EACEWAwAArAUAIAcAAKsFACAaAACvBQAgHQAArQUAIB4AAK4FACD2AgAAqgUAMPcCAABEABD4AgAAqgUAMPkCAQD9BAAh-gIBAP8EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGiAwEA_wQAIaMDAQD9BAAhpAMCAP4EACGlAwEA_wQAIaYDAgCbBQAhpwNAAJ0FACGoA0AAnQUAIYAEAABEACCBBAAARAAgFAMAAKwFACAHAACrBQAgGgAArwUAIB0AAK0FACAeAACuBQAg9gIAAKoFADD3AgAARAAQ-AIAAKoFADD5AgEA_QQAIfoCAQD_BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhogMBAP8EACGjAwEA_QQAIaQDAgD-BAAhpQMBAP8EACGmAwIAmwUAIacDQACdBQAhqANAAJ0FACEgEQAAxwUAIBIAALEFACATAAC8BQAgFAAAxwUAIBUAAMgFACAWAADJBQAgGAAAygUAIBkAAL0FACAaAADLBQAgGwAAzAUAIBwAAM0FACAgAACuBQAg9gIAAMUFADD3AgAAFwAQ-AIAAMUFADD5AgEA_QQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIagDQACdBQAhxwMCAP4EACHIAwEA_wQAIckDAgD-BAAhywMAAMYFywMizAMgAJwFACHNAyAAnAUAIc4DAgCbBQAhzwMCAJsFACHQAwIAmwUAIdEDAgCbBQAhgAQAABcAIIEEAAAXACApBAAA1QUAIAUAANYFACAGAADXBQAgIAAArgUAICEAAMkFACAiAADKBQAgJgAApgUAICcAANgFACAoAADLBQAgKQAAzAUAICoAAM0FACArAACvBQAgLAAA2QUAIC0AANoFACD2AgAA0QUAMPcCAAAPABD4AgAA0QUAMPkCAQD9BAAh_AIBAP8EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGoA0AAnQUAIbYDAQD_BAAhtwMBAP8EACHoAyAAnAUAIekDAQD_BAAh6wMAANIF6wMi7QMAANMF7QMi7gMgAJwFACHvAwEA_wQAIfADAQD_BAAh8QMAALQFACDyA0AAnQUAIfMDAQD_BAAh9AMgANQFACH1AwEA_wQAIfYDQACdBQAh9wNAAJ0FACGABAAADwAggQQAAA8AIBYDAACsBQAgBwAAqwUAIBoAAK8FACAdAACtBQAgHgAArgUAIPYCAACqBQAw9wIAAEQAEPgCAACqBQAw-QIBAP0EACH6AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIaIDAQD_BAAhowMBAP0EACGkAwIA_gQAIaUDAQD_BAAhpgMCAJsFACGnA0AAnQUAIagDQACdBQAhgAQAAEQAIIEEAABEACADuQMAAEQAILoDAABEACC7AwAARAAgA7kDAABLACC6AwAASwAguwMAAEsAIAwDAACeBQAgBwAAsQUAIDMAAKUFACD2AgAAsAUAMPcCAAA_ABD4AgAAsAUAMPkCAQD9BAAh-gIBAP0EACH-AkAAgAUAIZEDQACABQAhowMBAP8EACGpAwIAmwUAISARAADHBQAgEgAAsQUAIBMAALwFACAUAADHBQAgFQAAyAUAIBYAAMkFACAYAADKBQAgGQAAvQUAIBoAAMsFACAbAADMBQAgHAAAzQUAICAAAK4FACD2AgAAxQUAMPcCAAAXABD4AgAAxQUAMPkCAQD9BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhqANAAJ0FACHHAwIA_gQAIcgDAQD_BAAhyQMCAP4EACHLAwAAxgXLAyLMAyAAnAUAIc0DIACcBQAhzgMCAJsFACHPAwIAmwUAIdADAgCbBQAh0QMCAJsFACGABAAAFwAggQQAABcAIBEDAACsBQAgBwAAqwUAIPYCAACyBQAw9wIAADoAEPgCAACyBQAw-QIBAP0EACH6AgEA_wQAIZEDQACABQAhowMBAP0EACGkAwIA_gQAIasDAACzBasDIqwDAQD_BAAhrQMBAP8EACGuAwEA_wQAIa8DAQD_BAAhsAMAALQFACCxAwEA_wQAIQT_AgAAAKsDAoADAAAAqwMIgQMAAACrAwiGAwAA8QSrAyIM_wKAAAAAAYIDgAAAAAGDA4AAAAABhAOAAAAAAYUDgAAAAAGGA4AAAAABmgMBAAAAAZsDAQAAAAGcAwEAAAABnQOAAAAAAZ4DgAAAAAGfA4AAAAABAvoCAQAAAAGjAwEAAAABCAMAAJ4FACAHAACrBQAg9gIAALYFADD3AgAANgAQ-AIAALYFADD6AgEA_QQAIZEDQACABQAhowMBAP0EACECowMBAAAAAbIDAQAAAAEKBwAAqwUAIBcAAKwFACD2AgAAuAUAMPcCAAAwABD4AgAAuAUAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbIDAQD_BAAhtAMAALkFtAMiBP8CAAAAtAMCgAMAAAC0AwiBAwAAALQDCIYDAAD2BLQDIgKjAwEAAAABpAMCAAAAARMHAACrBQAgCAAAsQUAIAkAALwFACAOAACBBQAgEAAAvQUAIPYCAAC7BQAw9wIAABUAEPgCAAC7BQAwjAMBAP0EACGRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACHAAwEA_wQAIcEDAQD_BAAhwgMBAP8EACHDAwEA_QQAIcQDAQD_BAAhxQMBAP8EACHGA0AAnQUAIQO5AwAAFwAgugMAABcAILsDAAAXACADuQMAACIAILoDAAAiACC7AwAAIgAgCwcAAKsFACAPAADABQAg9gIAAL4FADD3AgAAIgAQ-AIAAL4FADD5AgEA_QQAIZEDQACABQAhowMBAP0EACGrAwAAvwW_AyK8AwIAmwUAIb0DAQD9BAAhBP8CAAAAvwMCgAMAAAC_AwiBAwAAAL8DCIYDAACFBb8DIhUHAACrBQAgCAAAsQUAIAkAALwFACAOAACBBQAgEAAAvQUAIPYCAAC7BQAw9wIAABUAEPgCAAC7BQAwjAMBAP0EACGRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACHAAwEA_wQAIcEDAQD_BAAhwgMBAP8EACHDAwEA_QQAIcQDAQD_BAAhxQMBAP8EACHGA0AAnQUAIYAEAAAVACCBBAAAFQAgA6MDAQAAAAGkAwIAAAABvwMBAAAAAQkKAADABQAgDQAAwwUAIPYCAADCBQAw9wIAABwAEPgCAADCBQAwkQNAAIAFACGjAwEA_QQAIaQDAgCbBQAhvwMBAP0EACELCwAAgQUAIPYCAAD8BAAw9wIAANECABD4AgAA_AQAMPkCAQD9BAAhkQNAAIAFACGhAwIA_gQAIbcDAQD9BAAhuAMBAP8EACGABAAA0QIAIIEEAADRAgAgAvkCAQAAAAHHAwIAAAABHhEAAMcFACASAACxBQAgEwAAvAUAIBQAAMcFACAVAADIBQAgFgAAyQUAIBgAAMoFACAZAAC9BQAgGgAAywUAIBsAAMwFACAcAADNBQAgIAAArgUAIPYCAADFBQAw9wIAABcAEPgCAADFBQAw-QIBAP0EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGoA0AAnQUAIccDAgD-BAAhyAMBAP8EACHJAwIA_gQAIcsDAADGBcsDIswDIACcBQAhzQMgAJwFACHOAwIAmwUAIc8DAgCbBQAh0AMCAJsFACHRAwIAmwUAIQT_AgAAAMsDAoADAAAAywMIgQMAAADLAwiGAwAAiwXLAyIVBwAAqwUAIAgAALEFACAJAAC8BQAgDgAAgQUAIBAAAL0FACD2AgAAuwUAMPcCAAAVABD4AgAAuwUAMIwDAQD9BAAhkQNAAIAFACGjAwEA_QQAIaQDAgCbBQAhwAMBAP8EACHBAwEA_wQAIcIDAQD_BAAhwwMBAP0EACHEAwEA_wQAIcUDAQD_BAAhxgNAAJ0FACGABAAAFQAggQQAABUAIAO5AwAAFQAgugMAABUAILsDAAAVACADuQMAABEAILoDAAARACC7AwAAEQAgA7kDAAAwACC6AwAAMAAguwMAADAAIAO5AwAANgAgugMAADYAILsDAAA2ACADuQMAADoAILoDAAA6ACC7AwAAOgAgA7kDAAA_ACC6AwAAPwAguwMAAD8AIAL6AgEAAAABowMBAAAAAQkDAACeBQAgBwAAqwUAIPYCAADPBQAw9wIAABEAEPgCAADPBQAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAhtgMAANAFtgMiBP8CAAAAtgMCgAMAAAC2AwiBAwAAALYDCIYDAAD6BLYDIicEAADVBQAgBQAA1gUAIAYAANcFACAgAACuBQAgIQAAyQUAICIAAMoFACAmAACmBQAgJwAA2AUAICgAAMsFACApAADMBQAgKgAAzQUAICsAAK8FACAsAADZBQAgLQAA2gUAIPYCAADRBQAw9wIAAA8AEPgCAADRBQAw-QIBAP0EACH8AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIagDQACdBQAhtgMBAP8EACG3AwEA_wQAIegDIACcBQAh6QMBAP8EACHrAwAA0gXrAyLtAwAA0wXtAyLuAyAAnAUAIe8DAQD_BAAh8AMBAP8EACHxAwAAtAUAIPIDQACdBQAh8wMBAP8EACH0AyAA1AUAIfUDAQD_BAAh9gNAAJ0FACH3A0AAnQUAIQT_AgAAAOsDAoADAAAA6wMIgQMAAADrAwiGAwAAmQXrAyIE_wIAAADtAwKAAwAAAO0DCIEDAAAA7QMIhgMAAJcF7QMiAv8CIAAAAAGGAyAAlQUAIQO5AwAAAwAgugMAAAMAILsDAAADACADuQMAAAcAILoDAAAHACC7AwAABwAgA7kDAAALACC6AwAACwAguwMAAAsAIAO5AwAAWwAgugMAAFsAILsDAABbACADuQMAAGoAILoDAABqACC7AwAAagAgA7kDAABuACC6AwAAbgAguwMAAG4AIAsDAACsBQAg9gIAANsFADD3AgAACwAQ-AIAANsFADD5AgEA_QQAIfoCAQD_BAAh_gJAAJ0FACGRA0AAnQUAIdkDAQD9BAAh2gMBAP0EACHbA0AAgAUAIQ0DAACeBQAg9gIAANwFADD3AgAABwAQ-AIAANwFADD5AgEA_QQAIfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAIa4DAQD_BAAh2wNAAIAFACHcAwEA_QQAId0DAQD_BAAh3gMBAP8EACERAwAAngUAIPYCAADdBQAw9wIAAAMAEPgCAADdBQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACHfAwEA_QQAIeADAQD9BAAh4QMBAP8EACHiAwEA_wQAIeMDQACdBQAh5ANAAJ0FACHlAwEA_wQAIeYDAQD_BAAh5wMBAP8EACEAAAABhQQBAAAAAQGFBCAAAAABAYUEQAAAAAEFOgAA0QsAIDsAANQLACCCBAAA0gsAIIMEAADTCwAgiAQAAAEAIAM6AADRCwAgggQAANILACCIBAAAAQAgAAAAAAGFBEAAAAABBToAAMkLACA7AADPCwAgggQAAMoLACCDBAAAzgsAIIgEAAABACAFOgAAxwsAIDsAAMwLACCCBAAAyAsAIIMEAADLCwAgiAQAAF0AIAM6AADJCwAgggQAAMoLACCIBAAAAQAgAzoAAMcLACCCBAAAyAsAIIgEAABdACAAAAAAAAWFBAIAAAABiwQCAAAAAYwEAgAAAAGNBAIAAAABjgQCAAAAAQGFBAEAAAABBToAAMELACA7AADFCwAgggQAAMILACCDBAAAxAsAIIgEAAABACALOgAA-AUAMDsAAP0FADCCBAAA-QUAMIMEAAD6BQAwhAQAAPsFACCFBAAA_AUAMIYEAAD8BQAwhwQAAPwFADCIBAAA_AUAMIkEAAD-BQAwigQAAP8FADAKJAAA7QUAIPkCAQAAAAH7AgEAAAABigMBAAAAAYwDAQAAAAGNAwEAAAABjgMBAAAAAY8DQAAAAAGQA0AAAAABkQNAAAAAAQIAAABhACA6AACDBgAgAwAAAGEAIDoAAIMGACA7AACCBgAgATMAAMMLADAQJAAAngUAICUAAKMFACD2AgAAogUAMPcCAABfABD4AgAAogUAMPkCAQAAAAH7AgEA_QQAIYoDAQD9BAAhiwMBAP0EACGMAwEA_QQAIY0DAQD9BAAhjgMBAP0EACGPA0AAnQUAIZADQACdBQAhkQNAAIAFACH5AwAAoQUAIAIAAABhACAzAACCBgAgAgAAAIAGACAzAACBBgAgDfYCAAD_BQAw9wIAAIAGABD4AgAA_wUAMPkCAQD9BAAh-wIBAP0EACGKAwEA_QQAIYsDAQD9BAAhjAMBAP0EACGNAwEA_QQAIY4DAQD9BAAhjwNAAJ0FACGQA0AAnQUAIZEDQACABQAhDfYCAAD_BQAw9wIAAIAGABD4AgAA_wUAMPkCAQD9BAAh-wIBAP0EACGKAwEA_QQAIYsDAQD9BAAhjAMBAP0EACGNAwEA_QQAIY4DAQD9BAAhjwNAAJ0FACGQA0AAnQUAIZEDQACABQAhCfkCAQDhBQAh-wIBAOEFACGKAwEA4QUAIYwDAQDhBQAhjQMBAOEFACGOAwEA4QUAIY8DQADqBQAhkANAAOoFACGRA0AA4wUAIQokAADrBQAg-QIBAOEFACH7AgEA4QUAIYoDAQDhBQAhjAMBAOEFACGNAwEA4QUAIY4DAQDhBQAhjwNAAOoFACGQA0AA6gUAIZEDQADjBQAhCiQAAO0FACD5AgEAAAAB-wIBAAAAAYoDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAGPA0AAAAABkANAAAAAAZEDQAAAAAEDOgAAwQsAIIIEAADCCwAgiAQAAAEAIAQ6AAD4BQAwggQAAPkFADCEBAAA-wUAIIgEAAD8BQAwAAAABToAALkLACA7AAC_CwAgggQAALoLACCDBAAAvgsAIIgEAABGACAFOgAAtwsAIDsAALwLACCCBAAAuAsAIIMEAAC7CwAgiAQAAAEAIAM6AAC5CwAgggQAALoLACCIBAAARgAgAzoAALcLACCCBAAAuAsAIIgEAAABACAAAAAAAAWFBAIAAAABiwQCAAAAAYwEAgAAAAGNBAIAAAABjgQCAAAAAQU6AACqCwAgOwAAtQsAIIIEAACrCwAggwQAALQLACCIBAAAGgAgBzoAAKgLACA7AACyCwAgggQAAKkLACCDBAAAsQsAIIYEAAAPACCHBAAADwAgiAQAAAEAIAc6AACmCwAgOwAArwsAIIIEAACnCwAggwQAAK4LACCGBAAARAAghwQAAEQAIIgEAABGACALOgAApAYAMDsAAKkGADCCBAAApQYAMIMEAACmBgAwhAQAAKcGACCFBAAAqAYAMIYEAACoBgAwhwQAAKgGADCIBAAAqAYAMIkEAACqBgAwigQAAKsGADALOgAAmAYAMDsAAJ0GADCCBAAAmQYAMIMEAACaBgAwhAQAAJsGACCFBAAAnAYAMIYEAACcBgAwhwQAAJwGADCIBAAAnAYAMIkEAACeBgAwigQAAJ8GADADAwAAjAYAIPoCAQAAAAGRA0AAAAABAgAAAE0AIDoAAKMGACADAAAATQAgOgAAowYAIDsAAKIGACABMwAArQsAMAkDAACeBQAgHwAAqQUAIPYCAACoBQAw9wIAAEsAEPgCAACoBQAw-gIBAP0EACGRA0AAgAUAIaADAQD9BAAh-gMAAKcFACACAAAATQAgMwAAogYAIAIAAACgBgAgMwAAoQYAIAb2AgAAnwYAMPcCAACgBgAQ-AIAAJ8GADD6AgEA_QQAIZEDQACABQAhoAMBAP0EACEG9gIAAJ8GADD3AgAAoAYAEPgCAACfBgAw-gIBAP0EACGRA0AAgAUAIaADAQD9BAAhAvoCAQDhBQAhkQNAAOMFACEDAwAAigYAIPoCAQDhBQAhkQNAAOMFACEDAwAAjAYAIPoCAQAAAAGRA0AAAAABDwMAALEGACAHAACwBgAgGgAAswYAIB4AALIGACD5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQIAAABGACA6AACvBgAgAwAAAEYAIDoAAK8GACA7AACuBgAgATMAAKwLADAUAwAArAUAIAcAAKsFACAaAACvBQAgHQAArQUAIB4AAK4FACD2AgAAqgUAMPcCAABEABD4AgAAqgUAMPkCAQAAAAH6AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIAAAABogMBAP8EACGjAwEA_QQAIaQDAgD-BAAhpQMBAP8EACGmAwIAmwUAIacDQACdBQAhqANAAJ0FACECAAAARgAgMwAArgYAIAIAAACsBgAgMwAArQYAIA_2AgAAqwYAMPcCAACsBgAQ-AIAAKsGADD5AgEA_QQAIfoCAQD_BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhogMBAP8EACGjAwEA_QQAIaQDAgD-BAAhpQMBAP8EACGmAwIAmwUAIacDQACdBQAhqANAAJ0FACEP9gIAAKsGADD3AgAArAYAEPgCAACrBgAw-QIBAP0EACH6AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIaIDAQD_BAAhowMBAP0EACGkAwIA_gQAIaUDAQD_BAAhpgMCAJsFACGnA0AAnQUAIagDQACdBQAhC_kCAQDhBQAh-gIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACEPAwAAlAYAIAcAAJMGACAaAACXBgAgHgAAlgYAIPkCAQDhBQAh-gIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACEPAwAAsQYAIAcAALAGACAaAACzBgAgHgAAsgYAIPkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABowMBAAAAAaQDAgAAAAGlAwEAAAABpgMCAAAAAacDQAAAAAGoA0AAAAABAzoAAKoLACCCBAAAqwsAIIgEAAAaACADOgAAqAsAIIIEAACpCwAgiAQAAAEAIAQ6AACkBgAwggQAAKUGADCEBAAApwYAIIgEAACoBgAwBDoAAJgGADCCBAAAmQYAMIQEAACbBgAgiAQAAJwGADADOgAApgsAIIIEAACnCwAgiAQAAEYAIAAAAAAABToAAJ4LACA7AACkCwAgggQAAJ8LACCDBAAAowsAIIgEAAABACAHOgAAnAsAIDsAAKELACCCBAAAnQsAIIMEAACgCwAghgQAABcAIIcEAAAXACCIBAAAGgAgAzoAAJ4LACCCBAAAnwsAIIgEAAABACADOgAAnAsAIIIEAACdCwAgiAQAABoAIAAAAAAAAYUEAAAAqwMCBToAAJQLACA7AACaCwAgggQAAJULACCDBAAAmQsAIIgEAAAaACAHOgAAkgsAIDsAAJcLACCCBAAAkwsAIIMEAACWCwAghgQAAA8AIIcEAAAPACCIBAAAAQAgAzoAAJQLACCCBAAAlQsAIIgEAAAaACADOgAAkgsAIIIEAACTCwAgiAQAAAEAIAAAAAU6AACKCwAgOwAAkAsAIIIEAACLCwAggwQAAI8LACCIBAAAGgAgBToAAIgLACA7AACNCwAgggQAAIkLACCDBAAAjAsAIIgEAAABACADOgAAigsAIIIEAACLCwAgiAQAABoAIAM6AACICwAgggQAAIkLACCIBAAAAQAgAAAAAYUEAAAAtAMCBToAAIALACA7AACGCwAgggQAAIELACCDBAAAhQsAIIgEAAAaACAHOgAA_goAIDsAAIMLACCCBAAA_woAIIMEAACCCwAghgQAAA8AIIcEAAAPACCIBAAAAQAgAzoAAIALACCCBAAAgQsAIIgEAAAaACADOgAA_goAIIIEAAD_CgAgiAQAAAEAIAAAAAGFBAAAALYDAgU6AAD2CgAgOwAA_AoAIIIEAAD3CgAggwQAAPsKACCIBAAAGgAgBToAAPQKACA7AAD5CgAgggQAAPUKACCDBAAA-AoAIIgEAAABACADOgAA9goAIIIEAAD3CgAgiAQAABoAIAM6AAD0CgAgggQAAPUKACCIBAAAAQAgAAAAAAALOgAA5QYAMDsAAOoGADCCBAAA5gYAMIMEAADnBgAwhAQAAOgGACCFBAAA6QYAMIYEAADpBgAwhwQAAOkGADCIBAAA6QYAMIkEAADrBgAwigQAAOwGADAECgAA8gYAIJEDQAAAAAGjAwEAAAABpAMCAAAAAQIAAAAeACA6AADxBgAgAwAAAB4AIDoAAPEGACA7AADvBgAgATMAAPMKADAKCgAAwAUAIA0AAMMFACD2AgAAwgUAMPcCAAAcABD4AgAAwgUAMJEDQACABQAhowMBAP0EACGkAwIAmwUAIb8DAQD9BAAh_gMAAMEFACACAAAAHgAgMwAA7wYAIAIAAADtBgAgMwAA7gYAIAf2AgAA7AYAMPcCAADtBgAQ-AIAAOwGADCRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACG_AwEA_QQAIQf2AgAA7AYAMPcCAADtBgAQ-AIAAOwGADCRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACG_AwEA_QQAIQORA0AA4wUAIaMDAQDhBQAhpAMCAPQFACEECgAA8AYAIJEDQADjBQAhowMBAOEFACGkAwIA9AUAIQU6AADuCgAgOwAA8QoAIIIEAADvCgAggwQAAPAKACCIBAAALQAgBAoAAPIGACCRA0AAAAABowMBAAAAAaQDAgAAAAEDOgAA7goAIIIEAADvCgAgiAQAAC0AIAQ6AADlBgAwggQAAOYGADCEBAAA6AYAIIgEAADpBgAwAAAAAAAAAYUEAAAAvwMCBToAAOYKACA7AADsCgAgggQAAOcKACCDBAAA6woAIIgEAAAaACAFOgAA5AoAIDsAAOkKACCCBAAA5QoAIIMEAADoCgAgiAQAAC0AIAM6AADmCgAgggQAAOcKACCIBAAAGgAgAzoAAOQKACCCBAAA5QoAIIgEAAAtACAAAAAAAAU6AADfCgAgOwAA4goAIIIEAADgCgAggwQAAOEKACCIBAAAzgIAIAM6AADfCgAgggQAAOAKACCIBAAAzgIAIAAAAAAABToAAL8KACA7AADdCgAgggQAAMAKACCDBAAA3AoAIIgEAAAaACAHOgAAmggAIDsAALQIACCCBAAAmwgAIIMEAACzCAAghgQAABcAIIcEAAAXACCIBAAAGgAgCzoAAKUHADA7AACqBwAwggQAAKYHADCDBAAApwcAMIQEAACoBwAghQQAAKkHADCGBAAAqQcAMIcEAACpBwAwiAQAAKkHADCJBAAAqwcAMIoEAACsBwAwCzoAAJwHADA7AACgBwAwggQAAJ0HADCDBAAAngcAMIQEAACfBwAghQQAAOkGADCGBAAA6QYAMIcEAADpBgAwiAQAAOkGADCJBAAAoQcAMIoEAADsBgAwCzoAAJAHADA7AACVBwAwggQAAJEHADCDBAAAkgcAMIQEAACTBwAghQQAAJQHADCGBAAAlAcAMIcEAACUBwAwiAQAAJQHADCJBAAAlgcAMIoEAACXBwAwBQcAAP0GACD5AgEAAAABkQNAAAAAAasDAAAAvwMCvQMBAAAAAQIAAAAkACA6AACbBwAgAwAAACQAIDoAAJsHACA7AACaBwAgATMAANsKADALBwAAqwUAIA8AAMAFACD2AgAAvgUAMPcCAAAiABD4AgAAvgUAMPkCAQAAAAGRA0AAgAUAIaMDAQD9BAAhqwMAAL8FvwMivAMCAJsFACG9AwEA_QQAIQIAAAAkACAzAACaBwAgAgAAAJgHACAzAACZBwAgCfYCAACXBwAw9wIAAJgHABD4AgAAlwcAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIasDAAC_Bb8DIrwDAgCbBQAhvQMBAP0EACEJ9gIAAJcHADD3AgAAmAcAEPgCAACXBwAw-QIBAP0EACGRA0AAgAUAIaMDAQD9BAAhqwMAAL8FvwMivAMCAJsFACG9AwEA_QQAIQT5AgEA4QUAIZEDQADjBQAhqwMAAPoGvwMivQMBAOEFACEFBwAA-wYAIPkCAQDhBQAhkQNAAOMFACGrAwAA-ga_AyK9AwEA4QUAIQUHAAD9BgAg-QIBAAAAAZEDQAAAAAGrAwAAAL8DAr0DAQAAAAEDDQAAhQcAIJEDQAAAAAG_AwEAAAABAgAAAB4AIDoAAKQHACADAAAAHgAgOgAApAcAIDsAAKMHACABMwAA2goAMAIAAAAeACAzAACjBwAgAgAAAO0GACAzAACiBwAgApEDQADjBQAhvwMBAOEFACEDDQAAhAcAIJEDQADjBQAhvwMBAOEFACEDDQAAhQcAIJEDQAAAAAG_AwEAAAABGBEAAKsIACASAACcCAAgEwAAnQgAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAsggAIAMAAAAaACA6AACyCAAgOwAAsAcAIAEzAADZCgAwHxEAAMcFACASAACxBQAgEwAAvAUAIBQAAMcFACAVAADIBQAgFgAAyQUAIBgAAMoFACAZAAC9BQAgGgAAywUAIBsAAMwFACAcAADNBQAgIAAArgUAIPYCAADFBQAw9wIAABcAEPgCAADFBQAw-QIBAAAAAf4CQACABQAhkQNAAIAFACGhAwIAAAABqANAAJ0FACHHAwIA_gQAIcgDAQD_BAAhyQMCAP4EACHLAwAAxgXLAyLMAyAAnAUAIc0DIACcBQAhzgMCAJsFACHPAwIAmwUAIdADAgCbBQAh0QMCAJsFACH_AwAAxAUAIAIAAAAaACAzAACwBwAgAgAAAK0HACAzAACuBwAgEvYCAACsBwAw9wIAAK0HABD4AgAArAcAMPkCAQD9BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhqANAAJ0FACHHAwIA_gQAIcgDAQD_BAAhyQMCAP4EACHLAwAAxgXLAyLMAyAAnAUAIc0DIACcBQAhzgMCAJsFACHPAwIAmwUAIdADAgCbBQAh0QMCAJsFACES9gIAAKwHADD3AgAArQcAEPgCAACsBwAw-QIBAP0EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGoA0AAnQUAIccDAgD-BAAhyAMBAP8EACHJAwIA_gQAIcsDAADGBcsDIswDIACcBQAhzQMgAJwFACHOAwIAmwUAIc8DAgCbBQAh0AMCAJsFACHRAwIAmwUAIQ35AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEBhQQAAADLAwIYEQAAsQcAIBIAALIHACATAACzBwAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEHOgAAxgoAIDsAANcKACCCBAAAxwoAIIMEAADWCgAghgQAABUAIIcEAAAVACCIBAAALQAgBzoAAMkKACA7AADUCgAgggQAAMoKACCDBAAA0woAIIYEAAAXACCHBAAAFwAgiAQAABoAIAs6AACnCAAwOwAArQgAMIIEAACoCAAwgwQAAKwIADCEBAAAqQgAIIUEAACpBwAwhgQAAKkHADCHBAAAqQcAMIgEAACpBwAwiQQAAK4IADCKBAAArAcAMAs6AACKCAAwOwAAjwgAMIIEAACLCAAwgwQAAIwIADCEBAAAjQgAIIUEAACOCAAwhgQAAI4IADCHBAAAjggAMIgEAACOCAAwiQQAAJAIADCKBAAAkQgAMAs6AAD-BwAwOwAAgwgAMIIEAAD_BwAwgwQAAIAIADCEBAAAgQgAIIUEAACCCAAwhgQAAIIIADCHBAAAgggAMIgEAACCCAAwiQQAAIQIADCKBAAAhQgAMAs6AADyBwAwOwAA9wcAMIIEAADzBwAwgwQAAPQHADCEBAAA9QcAIIUEAAD2BwAwhgQAAPYHADCHBAAA9gcAMIgEAAD2BwAwiQQAAPgHADCKBAAA-QcAMAs6AADpBwAwOwAA7QcAMIIEAADqBwAwgwQAAOsHADCEBAAA7AcAIIUEAACUBwAwhgQAAJQHADCHBAAAlAcAMIgEAACUBwAwiQQAAO4HADCKBAAAlwcAMAs6AADdBwAwOwAA4gcAMIIEAADeBwAwgwQAAN8HADCEBAAA4AcAIIUEAADhBwAwhgQAAOEHADCHBAAA4QcAMIgEAADhBwAwiQQAAOMHADCKBAAA5AcAMAs6AADRBwAwOwAA1gcAMIIEAADSBwAwgwQAANMHADCEBAAA1AcAIIUEAADVBwAwhgQAANUHADCHBAAA1QcAMIgEAADVBwAwiQQAANcHADCKBAAA2AcAMAs6AADFBwAwOwAAygcAMIIEAADGBwAwgwQAAMcHADCEBAAAyAcAIIUEAADJBwAwhgQAAMkHADCHBAAAyQcAMIgEAADJBwAwiQQAAMsHADCKBAAAzAcAMAs6AAC8BwAwOwAAwAcAMIIEAAC9BwAwgwQAAL4HADCEBAAAvwcAIIUEAACoBgAwhgQAAKgGADCHBAAAqAYAMIgEAACoBgAwiQQAAMEHADCKBAAAqwYAMA8DAACxBgAgGgAAswYAIB0AALQGACAeAACyBgAg-QIBAAAAAfoCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGiAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAECAAAARgAgOgAAxAcAIAMAAABGACA6AADEBwAgOwAAwwcAIAEzAADSCgAwAgAAAEYAIDMAAMMHACACAAAArAYAIDMAAMIHACAL-QIBAOEFACH6AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhpAMCAJIGACGlAwEA9QUAIaYDAgD0BQAhpwNAAOoFACGoA0AA6gUAIQ8DAACUBgAgGgAAlwYAIB0AAJUGACAeAACWBgAg-QIBAOEFACH6AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhpAMCAJIGACGlAwEA9QUAIaYDAgD0BQAhpwNAAOoFACGoA0AA6gUAIQ8DAACxBgAgGgAAswYAIB0AALQGACAeAACyBgAg-QIBAAAAAfoCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGiAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAEHAwAAvAYAIDOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGpAwIAAAABAgAAAEEAIDoAANAHACADAAAAQQAgOgAA0AcAIDsAAM8HACABMwAA0QoAMAwDAACeBQAgBwAAsQUAIDMAAKUFACD2AgAAsAUAMPcCAAA_ABD4AgAAsAUAMPkCAQAAAAH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGjAwEA_wQAIakDAgCbBQAhAgAAAEEAIDMAAM8HACACAAAAzQcAIDMAAM4HACAKMwAApQUAIPYCAADMBwAw9wIAAM0HABD4AgAAzAcAMPkCAQD9BAAh-gIBAP0EACH-AkAAgAUAIZEDQACABQAhowMBAP8EACGpAwIAmwUAIQozAAClBQAg9gIAAMwHADD3AgAAzQcAEPgCAADMBwAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGjAwEA_wQAIakDAgCbBQAhBjOAAAAAAfkCAQDhBQAh-gIBAOEFACH-AkAA4wUAIZEDQADjBQAhqQMCAPQFACEHAwAAugYAIDOAAAAAAfkCAQDhBQAh-gIBAOEFACH-AkAA4wUAIZEDQADjBQAhqQMCAPQFACEHAwAAvAYAIDOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGpAwIAAAABDAMAAMcGACD5AgEAAAAB-gIBAAAAAZEDQAAAAAGkAwIAAAABqwMAAACrAwKsAwEAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABsAOAAAAAAbEDAQAAAAECAAAAPAAgOgAA3AcAIAMAAAA8ACA6AADcBwAgOwAA2wcAIAEzAADQCgAwEQMAAKwFACAHAACrBQAg9gIAALIFADD3AgAAOgAQ-AIAALIFADD5AgEAAAAB-gIBAP8EACGRA0AAgAUAIaMDAQD9BAAhpAMCAP4EACGrAwAAswWrAyKsAwEA_wQAIa0DAQD_BAAhrgMBAP8EACGvAwEA_wQAIbADAAC0BQAgsQMBAP8EACECAAAAPAAgMwAA2wcAIAIAAADZBwAgMwAA2gcAIA_2AgAA2AcAMPcCAADZBwAQ-AIAANgHADD5AgEA_QQAIfoCAQD_BAAhkQNAAIAFACGjAwEA_QQAIaQDAgD-BAAhqwMAALMFqwMirAMBAP8EACGtAwEA_wQAIa4DAQD_BAAhrwMBAP8EACGwAwAAtAUAILEDAQD_BAAhD_YCAADYBwAw9wIAANkHABD4AgAA2AcAMPkCAQD9BAAh-gIBAP8EACGRA0AAgAUAIaMDAQD9BAAhpAMCAP4EACGrAwAAswWrAyKsAwEA_wQAIa0DAQD_BAAhrgMBAP8EACGvAwEA_wQAIbADAAC0BQAgsQMBAP8EACEL-QIBAOEFACH6AgEA9QUAIZEDQADjBQAhpAMCAJIGACGrAwAAwwarAyKsAwEA9QUAIa0DAQD1BQAhrgMBAPUFACGvAwEA9QUAIbADgAAAAAGxAwEA9QUAIQwDAADFBgAg-QIBAOEFACH6AgEA9QUAIZEDQADjBQAhpAMCAJIGACGrAwAAwwarAyKsAwEA9QUAIa0DAQD1BQAhrgMBAPUFACGvAwEA9QUAIbADgAAAAAGxAwEA9QUAIQwDAADHBgAg-QIBAAAAAfoCAQAAAAGRA0AAAAABpAMCAAAAAasDAAAAqwMCrAMBAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAbADgAAAAAGxAwEAAAABAwMAAM4GACD6AgEAAAABkQNAAAAAAQIAAAA4ACA6AADoBwAgAwAAADgAIDoAAOgHACA7AADnBwAgATMAAM8KADAJAwAAngUAIAcAAKsFACD2AgAAtgUAMPcCAAA2ABD4AgAAtgUAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIfsDAAC1BQAgAgAAADgAIDMAAOcHACACAAAA5QcAIDMAAOYHACAG9gIAAOQHADD3AgAA5QcAEPgCAADkBwAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAhBvYCAADkBwAw9wIAAOUHABD4AgAA5AcAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIQL6AgEA4QUAIZEDQADjBQAhAwMAAMwGACD6AgEA4QUAIZEDQADjBQAhAwMAAM4GACD6AgEAAAABkQNAAAAAAQYPAAD-BgAg-QIBAAAAAZEDQAAAAAGrAwAAAL8DArwDAgAAAAG9AwEAAAABAgAAACQAIDoAAPEHACADAAAAJAAgOgAA8QcAIDsAAPAHACABMwAAzgoAMAIAAAAkACAzAADwBwAgAgAAAJgHACAzAADvBwAgBfkCAQDhBQAhkQNAAOMFACGrAwAA-ga_AyK8AwIA9AUAIb0DAQDhBQAhBg8AAPwGACD5AgEA4QUAIZEDQADjBQAhqwMAAPoGvwMivAMCAPQFACG9AwEA4QUAIQYPAAD-BgAg-QIBAAAAAZEDQAAAAAGrAwAAAL8DArwDAgAAAAG9AwEAAAABBRcAANYGACD5AgEAAAABkQNAAAAAAbIDAQAAAAG0AwAAALQDAgIAAAAyACA6AAD9BwAgAwAAADIAIDoAAP0HACA7AAD8BwAgATMAAM0KADALBwAAqwUAIBcAAKwFACD2AgAAuAUAMPcCAAAwABD4AgAAuAUAMPkCAQAAAAGRA0AAgAUAIaMDAQD9BAAhsgMBAP8EACG0AwAAuQW0AyL8AwAAtwUAIAIAAAAyACAzAAD8BwAgAgAAAPoHACAzAAD7BwAgCPYCAAD5BwAw9wIAAPoHABD4AgAA-QcAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbIDAQD_BAAhtAMAALkFtAMiCPYCAAD5BwAw9wIAAPoHABD4AgAA-QcAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbIDAQD_BAAhtAMAALkFtAMiBPkCAQDhBQAhkQNAAOMFACGyAwEA9QUAIbQDAADSBrQDIgUXAADUBgAg-QIBAOEFACGRA0AA4wUAIbIDAQD1BQAhtAMAANIGtAMiBRcAANYGACD5AgEAAAABkQNAAAAAAbIDAQAAAAG0AwAAALQDAgQDAADeBgAg-gIBAAAAAZEDQAAAAAG2AwAAALYDAgIAAAATACA6AACJCAAgAwAAABMAIDoAAIkIACA7AACICAAgATMAAMwKADAKAwAAngUAIAcAAKsFACD2AgAAzwUAMPcCAAARABD4AgAAzwUAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbYDAADQBbYDIvsDAADOBQAgAgAAABMAIDMAAIgIACACAAAAhggAIDMAAIcIACAH9gIAAIUIADD3AgAAhggAEPgCAACFCAAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAhtgMAANAFtgMiB_YCAACFCAAw9wIAAIYIABD4AgAAhQgAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbYDAADQBbYDIgP6AgEA4QUAIZEDQADjBQAhtgMAANoGtgMiBAMAANwGACD6AgEA4QUAIZEDQADjBQAhtgMAANoGtgMiBAMAAN4GACD6AgEAAAABkQNAAAAAAbYDAAAAtgMCDggAAJYIACAJAACXCAAgDgAAmAgAIBAAAJkIACCMAwEAAAABkQNAAAAAAaQDAgAAAAHAAwEAAAABwQMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGA0AAAAABAgAAAC0AIDoAAJUIACADAAAALQAgOgAAlQgAIDsAAJQIACABMwAAywoAMBQHAACrBQAgCAAAsQUAIAkAALwFACAOAACBBQAgEAAAvQUAIPYCAAC7BQAw9wIAABUAEPgCAAC7BQAwjAMBAP0EACGRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACHAAwEA_wQAIcEDAQD_BAAhwgMBAP8EACHDAwEA_QQAIcQDAQD_BAAhxQMBAP8EACHGA0AAnQUAIf0DAAC6BQAgAgAAAC0AIDMAAJQIACACAAAAkggAIDMAAJMIACAO9gIAAJEIADD3AgAAkggAEPgCAACRCAAwjAMBAP0EACGRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACHAAwEA_wQAIcEDAQD_BAAhwgMBAP8EACHDAwEA_QQAIcQDAQD_BAAhxQMBAP8EACHGA0AAnQUAIQ72AgAAkQgAMPcCAACSCAAQ-AIAAJEIADCMAwEA_QQAIZEDQACABQAhowMBAP0EACGkAwIAmwUAIcADAQD_BAAhwQMBAP8EACHCAwEA_wQAIcMDAQD9BAAhxAMBAP8EACHFAwEA_wQAIcYDQACdBQAhCowDAQDhBQAhkQNAAOMFACGkAwIA9AUAIcADAQD1BQAhwQMBAPUFACHCAwEA9QUAIcMDAQDhBQAhxAMBAPUFACHFAwEA9QUAIcYDQADqBQAhDggAAIwHACAJAACNBwAgDgAAjgcAIBAAAI8HACCMAwEA4QUAIZEDQADjBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQ4IAACWCAAgCQAAlwgAIA4AAJgIACAQAACZCAAgjAMBAAAAAZEDQAAAAAGkAwIAAAABwAMBAAAAAcEDAQAAAAHCAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgNAAAAAAQM6AACaCAAgggQAAJsIACCIBAAAGgAgBDoAAKUHADCCBAAApgcAMIQEAACoBwAgiAQAAKkHADAEOgAAnAcAMIIEAACdBwAwhAQAAJ8HACCIBAAA6QYAMAQ6AACQBwAwggQAAJEHADCEBAAAkwcAIIgEAACUBwAwGBIAAJwIACATAACdCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAcgDAQAAAAHJAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAmggAIAM6AADJCgAgggQAAMoKACCIBAAAGgAgBDoAAKcIADCCBAAAqAgAMIQEAACpCAAgiAQAAKkHADADOgAAwQoAIIIEAADCCgAgiAQAAC0AIAQ6AACKCAAwggQAAIsIADCEBAAAjQgAIIgEAACOCAAwBDoAAP4HADCCBAAA_wcAMIQEAACBCAAgiAQAAIIIADAEOgAA8gcAMIIEAADzBwAwhAQAAPUHACCIBAAA9gcAMAQ6AADpBwAwggQAAOoHADCEBAAA7AcAIIgEAACUBwAwBDoAAN0HADCCBAAA3gcAMIQEAADgBwAgiAQAAOEHADAEOgAA0QcAMIIEAADSBwAwhAQAANQHACCIBAAA1QcAMAQ6AADFBwAwggQAAMYHADCEBAAAyAcAIIgEAADJBwAwBDoAALwHADCCBAAAvQcAMIQEAAC_BwAgiAQAAKgGADAZEQAAqwgAIBMAAJ0IACAUAACeCAAgFQAAnwgAIBYAAKAIACAYAAChCAAgGQAAoggAIBoAAKMIACAbAACkCAAgHAAApQgAICAAAKYIACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHJAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAqggAIAEzAADICgAwGREAAKsIACATAACdCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABAzoAAMYKACCCBAAAxwoAIIgEAAAtACADAAAAGgAgOgAAqggAIDsAALAIACACAAAAGgAgMwAAsAgAIAIAAACtBwAgMwAArwgAIA75AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRkRAACxBwAgEwAAswcAIBQAALEIACAVAAC0BwAgFgAAtQcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhBzoAAMEKACA7AADECgAgggQAAMIKACCDBAAAwwoAIIYEAAAVACCHBAAAFQAgiAQAAC0AIBgRAACrCAAgEgAAnAgAIBMAAJ0IACAVAACfCAAgFgAAoAgAIBgAAKEIACAZAACiCAAgGgAAowgAIBsAAKQIACAcAAClCAAgIAAApggAIPkCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABxwMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABAwAAABcAIDoAAJoIACA7AAC1CAAgGgAAABcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAgMwAAtQgAIP4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRgSAACyBwAgEwAAswcAIBQAALEIACAVAAC0BwAgFgAAtQcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIP4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIQM6AAC_CgAgggQAAMAKACCIBAAAGgAgAAAAAAAAAAAAAAU6AAC6CgAgOwAAvQoAIIIEAAC7CgAggwQAALwKACCIBAAAAQAgAzoAALoKACCCBAAAuwoAIIgEAAABACAAAAAHOgAAtQoAIDsAALgKACCCBAAAtgoAIIMEAAC3CgAghgQAAA8AIIcEAAAPACCIBAAAAQAgAzoAALUKACCCBAAAtgoAIIgEAAABACAAAAAFOgAAsAoAIDsAALMKACCCBAAAsQoAIIMEAACyCgAgiAQAAAEAIAM6AACwCgAgggQAALEKACCIBAAAAQAgAAAABToAAKsKACA7AACuCgAgggQAAKwKACCDBAAArQoAIIgEAAABACADOgAAqwoAIIIEAACsCgAgiAQAAAEAIAAAAAAAAYUEAAAA6wMCAYUEAAAA7QMCAYUEIAAAAAELOgAA7AkAMDsAAPEJADCCBAAA7QkAMIMEAADuCQAwhAQAAO8JACCFBAAA8AkAMIYEAADwCQAwhwQAAPAJADCIBAAA8AkAMIkEAADyCQAwigQAAPMJADALOgAA4AkAMDsAAOUJADCCBAAA4QkAMIMEAADiCQAwhAQAAOMJACCFBAAA5AkAMIYEAADkCQAwhwQAAOQJADCIBAAA5AkAMIkEAADmCQAwigQAAOcJADALOgAA1AkAMDsAANkJADCCBAAA1QkAMIMEAADWCQAwhAQAANcJACCFBAAA2AkAMIYEAADYCQAwhwQAANgJADCIBAAA2AkAMIkEAADaCQAwigQAANsJADALOgAAywkAMDsAAM8JADCCBAAAzAkAMIMEAADNCQAwhAQAAM4JACCFBAAAgggAMIYEAACCCAAwhwQAAIIIADCIBAAAgggAMIkEAADQCQAwigQAAIUIADALOgAAwgkAMDsAAMYJADCCBAAAwwkAMIMEAADECQAwhAQAAMUJACCFBAAA9gcAMIYEAAD2BwAwhwQAAPYHADCIBAAA9gcAMIkEAADHCQAwigQAAPkHADALOgAAtgkAMDsAALsJADCCBAAAtwkAMIMEAAC4CQAwhAQAALkJACCFBAAAugkAMIYEAAC6CQAwhwQAALoJADCIBAAAugkAMIkEAAC8CQAwigQAAL0JADALOgAArQkAMDsAALEJADCCBAAArgkAMIMEAACvCQAwhAQAALAJACCFBAAA4QcAMIYEAADhBwAwhwQAAOEHADCIBAAA4QcAMIkEAACyCQAwigQAAOQHADALOgAApAkAMDsAAKgJADCCBAAApQkAMIMEAACmCQAwhAQAAKcJACCFBAAA1QcAMIYEAADVBwAwhwQAANUHADCIBAAA1QcAMIkEAACpCQAwigQAANgHADALOgAAmwkAMDsAAJ8JADCCBAAAnAkAMIMEAACdCQAwhAQAAJ4JACCFBAAAyQcAMIYEAADJBwAwhwQAAMkHADCIBAAAyQcAMIkEAACgCQAwigQAAMwHADALOgAAkgkAMDsAAJYJADCCBAAAkwkAMIMEAACUCQAwhAQAAJUJACCFBAAAqAYAMIYEAACoBgAwhwQAAKgGADCIBAAAqAYAMIkEAACXCQAwigQAAKsGADALOgAAiQkAMDsAAI0JADCCBAAAigkAMIMEAACLCQAwhAQAAIwJACCFBAAAnAYAMIYEAACcBgAwhwQAAJwGADCIBAAAnAYAMIkEAACOCQAwigQAAJ8GADALOgAAgAkAMDsAAIQJADCCBAAAgQkAMIMEAACCCQAwhAQAAIMJACCFBAAA_AUAMIYEAAD8BQAwhwQAAPwFADCIBAAA_AUAMIkEAACFCQAwigQAAP8FADALOgAA9AgAMDsAAPkIADCCBAAA9QgAMIMEAAD2CAAwhAQAAPcIACCFBAAA-AgAMIYEAAD4CAAwhwQAAPgIADCIBAAA-AgAMIkEAAD6CAAwigQAAPsIADALOgAA6AgAMDsAAO0IADCCBAAA6QgAMIMEAADqCAAwhAQAAOsIACCFBAAA7AgAMIYEAADsCAAwhwQAAOwIADCIBAAA7AgAMIkEAADuCAAwigQAAO8IADAK-QIBAAAAAZEDQAAAAAG3AwEAAAAB0gMBAAAAAdMDAQAAAAHUAwIAAAAB1QMBAAAAAdYDIAAAAAHXAwEAAAAB2AMBAAAAAQIAAABwACA6AADzCAAgAwAAAHAAIDoAAPMIACA7AADyCAAgATMAAKoKADAPAwAAngUAIPYCAACaBQAw9wIAAG4AEPgCAACaBQAw-QIBAAAAAfoCAQD9BAAhkQNAAJ0FACG3AwEA_wQAIdIDAQD9BAAh0wMBAP0EACHUAwIAmwUAIdUDAQD9BAAh1gMgAJwFACHXAwEA_wQAIdgDAQD_BAAhAgAAAHAAIDMAAPIIACACAAAA8AgAIDMAAPEIACAO9gIAAO8IADD3AgAA8AgAEPgCAADvCAAw-QIBAP0EACH6AgEA_QQAIZEDQACdBQAhtwMBAP8EACHSAwEA_QQAIdMDAQD9BAAh1AMCAJsFACHVAwEA_QQAIdYDIACcBQAh1wMBAP8EACHYAwEA_wQAIQ72AgAA7wgAMPcCAADwCAAQ-AIAAO8IADD5AgEA_QQAIfoCAQD9BAAhkQNAAJ0FACG3AwEA_wQAIdIDAQD9BAAh0wMBAP0EACHUAwIAmwUAIdUDAQD9BAAh1gMgAJwFACHXAwEA_wQAIdgDAQD_BAAhCvkCAQDhBQAhkQNAAOoFACG3AwEA9QUAIdIDAQDhBQAh0wMBAOEFACHUAwIA9AUAIdUDAQDhBQAh1gMgAOIFACHXAwEA9QUAIdgDAQD1BQAhCvkCAQDhBQAhkQNAAOoFACG3AwEA9QUAIdIDAQDhBQAh0wMBAOEFACHUAwIA9AUAIdUDAQDhBQAh1gMgAOIFACHXAwEA9QUAIdgDAQD1BQAhCvkCAQAAAAGRA0AAAAABtwMBAAAAAdIDAQAAAAHTAwEAAAAB1AMCAAAAAdUDAQAAAAHWAyAAAAAB1wMBAAAAAdgDAQAAAAEF-QIBAAAAAfsCAQAAAAH8AiAAAAAB_QIgAAAAAf4CQAAAAAECAAAAbAAgOgAA_wgAIAMAAABsACA6AAD_CAAgOwAA_ggAIAEzAACpCgAwCwMAAJ4FACD2AgAAoAUAMPcCAABqABD4AgAAoAUAMPkCAQAAAAH6AgEA_QQAIfsCAQD9BAAh_AIgAJwFACH9AiAAnAUAIf4CQACABQAh-AMAAJ8FACACAAAAbAAgMwAA_ggAIAIAAAD8CAAgMwAA_QgAIAn2AgAA-wgAMPcCAAD8CAAQ-AIAAPsIADD5AgEA_QQAIfoCAQD9BAAh-wIBAP0EACH8AiAAnAUAIf0CIACcBQAh_gJAAIAFACEJ9gIAAPsIADD3AgAA_AgAEPgCAAD7CAAw-QIBAP0EACH6AgEA_QQAIfsCAQD9BAAh_AIgAJwFACH9AiAAnAUAIf4CQACABQAhBfkCAQDhBQAh-wIBAOEFACH8AiAA4gUAIf0CIADiBQAh_gJAAOMFACEF-QIBAOEFACH7AgEA4QUAIfwCIADiBQAh_QIgAOIFACH-AkAA4wUAIQX5AgEAAAAB-wIBAAAAAfwCIAAAAAH9AiAAAAAB_gJAAAAAAQolAADuBQAg-QIBAAAAAfsCAQAAAAGLAwEAAAABjAMBAAAAAY0DAQAAAAGOAwEAAAABjwNAAAAAAZADQAAAAAGRA0AAAAABAgAAAGEAIDoAAIgJACADAAAAYQAgOgAAiAkAIDsAAIcJACABMwAAqAoAMAIAAABhACAzAACHCQAgAgAAAIAGACAzAACGCQAgCfkCAQDhBQAh-wIBAOEFACGLAwEA4QUAIYwDAQDhBQAhjQMBAOEFACGOAwEA4QUAIY8DQADqBQAhkANAAOoFACGRA0AA4wUAIQolAADsBQAg-QIBAOEFACH7AgEA4QUAIYsDAQDhBQAhjAMBAOEFACGNAwEA4QUAIY4DAQDhBQAhjwNAAOoFACGQA0AA6gUAIZEDQADjBQAhCiUAAO4FACD5AgEAAAAB-wIBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAGPA0AAAAABkANAAAAAAZEDQAAAAAEDHwAAiwYAIJEDQAAAAAGgAwEAAAABAgAAAE0AIDoAAJEJACADAAAATQAgOgAAkQkAIDsAAJAJACABMwAApwoAMAIAAABNACAzAACQCQAgAgAAAKAGACAzAACPCQAgApEDQADjBQAhoAMBAOEFACEDHwAAiQYAIJEDQADjBQAhoAMBAOEFACEDHwAAiwYAIJEDQAAAAAGgAwEAAAABDwcAALAGACAaAACzBgAgHQAAtAYAIB4AALIGACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQIAAABGACA6AACaCQAgAwAAAEYAIDoAAJoJACA7AACZCQAgATMAAKYKADACAAAARgAgMwAAmQkAIAIAAACsBgAgMwAAmAkAIAv5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhowMBAOEFACGkAwIAkgYAIaUDAQD1BQAhpgMCAPQFACGnA0AA6gUAIagDQADqBQAhDwcAAJMGACAaAACXBgAgHQAAlQYAIB4AAJYGACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhowMBAOEFACGkAwIAkgYAIaUDAQD1BQAhpgMCAPQFACGnA0AA6gUAIagDQADqBQAhDwcAALAGACAaAACzBgAgHQAAtAYAIB4AALIGACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQcHAAC9BgAgM4AAAAAB-QIBAAAAAf4CQAAAAAGRA0AAAAABowMBAAAAAakDAgAAAAECAAAAQQAgOgAAowkAIAMAAABBACA6AACjCQAgOwAAogkAIAEzAAClCgAwAgAAAEEAIDMAAKIJACACAAAAzQcAIDMAAKEJACAGM4AAAAAB-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhowMBAPUFACGpAwIA9AUAIQcHAAC7BgAgM4AAAAAB-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhowMBAPUFACGpAwIA9AUAIQcHAAC9BgAgM4AAAAAB-QIBAAAAAf4CQAAAAAGRA0AAAAABowMBAAAAAakDAgAAAAEMBwAAxgYAIPkCAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAGrAwAAAKsDAqwDAQAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAGwA4AAAAABsQMBAAAAAQIAAAA8ACA6AACsCQAgAwAAADwAIDoAAKwJACA7AACrCQAgATMAAKQKADACAAAAPAAgMwAAqwkAIAIAAADZBwAgMwAAqgkAIAv5AgEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIAkgYAIasDAADDBqsDIqwDAQD1BQAhrQMBAPUFACGuAwEA9QUAIa8DAQD1BQAhsAOAAAAAAbEDAQD1BQAhDAcAAMQGACD5AgEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIAkgYAIasDAADDBqsDIqwDAQD1BQAhrQMBAPUFACGuAwEA9QUAIa8DAQD1BQAhsAOAAAAAAbEDAQD1BQAhDAcAAMYGACD5AgEAAAABkQNAAAAAAaMDAQAAAAGkAwIAAAABqwMAAACrAwKsAwEAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABsAOAAAAAAbEDAQAAAAEDBwAAzQYAIJEDQAAAAAGjAwEAAAABAgAAADgAIDoAALUJACADAAAAOAAgOgAAtQkAIDsAALQJACABMwAAowoAMAIAAAA4ACAzAAC0CQAgAgAAAOUHACAzAACzCQAgApEDQADjBQAhowMBAOEFACEDBwAAywYAIJEDQADjBQAhowMBAOEFACEDBwAAzQYAIJEDQAAAAAGjAwEAAAABCiYAAIUGACD5AgEAAAABkQNAAAAAAZIDAQAAAAGUAwEAAAABlQMBAAAAAZYDgAAAAAGXA0AAAAABmAMCAAAAAZkDAQAAAAECAAAAXQAgOgAAwQkAIAMAAABdACA6AADBCQAgOwAAwAkAIAEzAACiCgAwDyMAAJ4FACAmAACmBQAg9gIAAKQFADD3AgAAWwAQ-AIAAKQFADD5AgEAAAABkQNAAIAFACGSAwEA_QQAIZMDAQD9BAAhlAMBAP0EACGVAwEA_QQAIZYDAAClBQAglwNAAJ0FACGYAwIAmwUAIZkDAQD_BAAhAgAAAF0AIDMAAMAJACACAAAAvgkAIDMAAL8JACAN9gIAAL0JADD3AgAAvgkAEPgCAAC9CQAw-QIBAP0EACGRA0AAgAUAIZIDAQD9BAAhkwMBAP0EACGUAwEA_QQAIZUDAQD9BAAhlgMAAKUFACCXA0AAnQUAIZgDAgCbBQAhmQMBAP8EACEN9gIAAL0JADD3AgAAvgkAEPgCAAC9CQAw-QIBAP0EACGRA0AAgAUAIZIDAQD9BAAhkwMBAP0EACGUAwEA_QQAIZUDAQD9BAAhlgMAAKUFACCXA0AAnQUAIZgDAgCbBQAhmQMBAP8EACEJ-QIBAOEFACGRA0AA4wUAIZIDAQDhBQAhlAMBAOEFACGVAwEA4QUAIZYDgAAAAAGXA0AA6gUAIZgDAgD0BQAhmQMBAPUFACEKJgAA9wUAIPkCAQDhBQAhkQNAAOMFACGSAwEA4QUAIZQDAQDhBQAhlQMBAOEFACGWA4AAAAABlwNAAOoFACGYAwIA9AUAIZkDAQD1BQAhCiYAAIUGACD5AgEAAAABkQNAAAAAAZIDAQAAAAGUAwEAAAABlQMBAAAAAZYDgAAAAAGXA0AAAAABmAMCAAAAAZkDAQAAAAEFBwAA1QYAIPkCAQAAAAGRA0AAAAABowMBAAAAAbQDAAAAtAMCAgAAADIAIDoAAMoJACADAAAAMgAgOgAAygkAIDsAAMkJACABMwAAoQoAMAIAAAAyACAzAADJCQAgAgAAAPoHACAzAADICQAgBPkCAQDhBQAhkQNAAOMFACGjAwEA4QUAIbQDAADSBrQDIgUHAADTBgAg-QIBAOEFACGRA0AA4wUAIaMDAQDhBQAhtAMAANIGtAMiBQcAANUGACD5AgEAAAABkQNAAAAAAaMDAQAAAAG0AwAAALQDAgQHAADdBgAgkQNAAAAAAaMDAQAAAAG2AwAAALYDAgIAAAATACA6AADTCQAgAwAAABMAIDoAANMJACA7AADSCQAgATMAAKAKADACAAAAEwAgMwAA0gkAIAIAAACGCAAgMwAA0QkAIAORA0AA4wUAIaMDAQDhBQAhtgMAANoGtgMiBAcAANsGACCRA0AA4wUAIaMDAQDhBQAhtgMAANoGtgMiBAcAAN0GACCRA0AAAAABowMBAAAAAbYDAAAAtgMCBvkCAQAAAAH-AkAAAAABkQNAAAAAAdkDAQAAAAHaAwEAAAAB2wNAAAAAAQIAAAANACA6AADfCQAgAwAAAA0AIDoAAN8JACA7AADeCQAgATMAAJ8KADALAwAArAUAIPYCAADbBQAw9wIAAAsAEPgCAADbBQAw-QIBAAAAAfoCAQD_BAAh_gJAAJ0FACGRA0AAnQUAIdkDAQD9BAAh2gMBAP0EACHbA0AAgAUAIQIAAAANACAzAADeCQAgAgAAANwJACAzAADdCQAgCvYCAADbCQAw9wIAANwJABD4AgAA2wkAMPkCAQD9BAAh-gIBAP8EACH-AkAAnQUAIZEDQACdBQAh2QMBAP0EACHaAwEA_QQAIdsDQACABQAhCvYCAADbCQAw9wIAANwJABD4AgAA2wkAMPkCAQD9BAAh-gIBAP8EACH-AkAAnQUAIZEDQACdBQAh2QMBAP0EACHaAwEA_QQAIdsDQACABQAhBvkCAQDhBQAh_gJAAOoFACGRA0AA6gUAIdkDAQDhBQAh2gMBAOEFACHbA0AA4wUAIQb5AgEA4QUAIf4CQADqBQAhkQNAAOoFACHZAwEA4QUAIdoDAQDhBQAh2wNAAOMFACEG-QIBAAAAAf4CQAAAAAGRA0AAAAAB2QMBAAAAAdoDAQAAAAHbA0AAAAABCPkCAQAAAAH-AkAAAAABkQNAAAAAAa4DAQAAAAHbA0AAAAAB3AMBAAAAAd0DAQAAAAHeAwEAAAABAgAAAAkAIDoAAOsJACADAAAACQAgOgAA6wkAIDsAAOoJACABMwAAngoAMA0DAACeBQAg9gIAANwFADD3AgAABwAQ-AIAANwFADD5AgEAAAAB-gIBAP0EACH-AkAAgAUAIZEDQACABQAhrgMBAP8EACHbA0AAgAUAIdwDAQAAAAHdAwEA_wQAId4DAQD_BAAhAgAAAAkAIDMAAOoJACACAAAA6AkAIDMAAOkJACAM9gIAAOcJADD3AgAA6AkAEPgCAADnCQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGuAwEA_wQAIdsDQACABQAh3AMBAP0EACHdAwEA_wQAId4DAQD_BAAhDPYCAADnCQAw9wIAAOgJABD4AgAA5wkAMPkCAQD9BAAh-gIBAP0EACH-AkAAgAUAIZEDQACABQAhrgMBAP8EACHbA0AAgAUAIdwDAQD9BAAh3QMBAP8EACHeAwEA_wQAIQj5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGuAwEA9QUAIdsDQADjBQAh3AMBAOEFACHdAwEA9QUAId4DAQD1BQAhCPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIa4DAQD1BQAh2wNAAOMFACHcAwEA4QUAId0DAQD1BQAh3gMBAPUFACEI-QIBAAAAAf4CQAAAAAGRA0AAAAABrgMBAAAAAdsDQAAAAAHcAwEAAAAB3QMBAAAAAd4DAQAAAAEM-QIBAAAAAf4CQAAAAAGRA0AAAAAB3wMBAAAAAeADAQAAAAHhAwEAAAAB4gMBAAAAAeMDQAAAAAHkA0AAAAAB5QMBAAAAAeYDAQAAAAHnAwEAAAABAgAAAAUAIDoAAPcJACADAAAABQAgOgAA9wkAIDsAAPYJACABMwAAnQoAMBEDAACeBQAg9gIAAN0FADD3AgAAAwAQ-AIAAN0FADD5AgEAAAAB-gIBAP0EACH-AkAAgAUAIZEDQACABQAh3wMBAP0EACHgAwEA_QQAIeEDAQD_BAAh4gMBAP8EACHjA0AAnQUAIeQDQACdBQAh5QMBAP8EACHmAwEA_wQAIecDAQD_BAAhAgAAAAUAIDMAAPYJACACAAAA9AkAIDMAAPUJACAQ9gIAAPMJADD3AgAA9AkAEPgCAADzCQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACHfAwEA_QQAIeADAQD9BAAh4QMBAP8EACHiAwEA_wQAIeMDQACdBQAh5ANAAJ0FACHlAwEA_wQAIeYDAQD_BAAh5wMBAP8EACEQ9gIAAPMJADD3AgAA9AkAEPgCAADzCQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACHfAwEA_QQAIeADAQD9BAAh4QMBAP8EACHiAwEA_wQAIeMDQACdBQAh5ANAAJ0FACHlAwEA_wQAIeYDAQD_BAAh5wMBAP8EACEM-QIBAOEFACH-AkAA4wUAIZEDQADjBQAh3wMBAOEFACHgAwEA4QUAIeEDAQD1BQAh4gMBAPUFACHjA0AA6gUAIeQDQADqBQAh5QMBAPUFACHmAwEA9QUAIecDAQD1BQAhDPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAId8DAQDhBQAh4AMBAOEFACHhAwEA9QUAIeIDAQD1BQAh4wNAAOoFACHkA0AA6gUAIeUDAQD1BQAh5gMBAPUFACHnAwEA9QUAIQz5AgEAAAAB_gJAAAAAAZEDQAAAAAHfAwEAAAAB4AMBAAAAAeEDAQAAAAHiAwEAAAAB4wNAAAAAAeQDQAAAAAHlAwEAAAAB5gMBAAAAAecDAQAAAAEEOgAA7AkAMIIEAADtCQAwhAQAAO8JACCIBAAA8AkAMAQ6AADgCQAwggQAAOEJADCEBAAA4wkAIIgEAADkCQAwBDoAANQJADCCBAAA1QkAMIQEAADXCQAgiAQAANgJADAEOgAAywkAMIIEAADMCQAwhAQAAM4JACCIBAAAgggAMAQ6AADCCQAwggQAAMMJADCEBAAAxQkAIIgEAAD2BwAwBDoAALYJADCCBAAAtwkAMIQEAAC5CQAgiAQAALoJADAEOgAArQkAMIIEAACuCQAwhAQAALAJACCIBAAA4QcAMAQ6AACkCQAwggQAAKUJADCEBAAApwkAIIgEAADVBwAwBDoAAJsJADCCBAAAnAkAMIQEAACeCQAgiAQAAMkHADAEOgAAkgkAMIIEAACTCQAwhAQAAJUJACCIBAAAqAYAMAQ6AACJCQAwggQAAIoJADCEBAAAjAkAIIgEAACcBgAwBDoAAIAJADCCBAAAgQkAMIQEAACDCQAgiAQAAPwFADAEOgAA9AgAMIIEAAD1CAAwhAQAAPcIACCIBAAA-AgAMAQ6AADoCAAwggQAAOkIADCEBAAA6wgAIIgEAADsCAAwAAAAAAAAAAAAAAAAAAAdBAAAhgoAIAUAAIcKACAGAACICgAgIAAAjwoAICEAAIkKACAiAACKCgAgJgAAkQoAICcAAIsKACAoAACMCgAgKQAAjQoAICoAAI4KACArAACQCgAgLAAAkgoAIC0AAJMKACD8AgAA5gUAIKEDAADmBQAgqAMAAOYFACC2AwAA5gUAILcDAADmBQAg6QMAAOYFACDvAwAA5gUAIPADAADmBQAg8QMAAOYFACDyAwAA5gUAIPMDAADmBQAg9AMAAOYFACD1AwAA5gUAIPYDAADmBQAg9wMAAOYFACAEIwAAlAoAICYAAJEKACCXAwAA5gUAIJkDAADmBQAgDAMAAJQKACAHAACXCgAgGgAAkAoAIB0AAJYKACAeAACPCgAg-gIAAOYFACChAwAA5gUAIKIDAADmBQAgpAMAAOYFACClAwAA5gUAIKcDAADmBQAgqAMAAOYFACAREQAAmgoAIBIAAJcKACATAACYCgAgFAAAmgoAIBUAAJwKACAWAACJCgAgGAAAigoAIBkAAJkKACAaAACMCgAgGwAAjQoAIBwAAI4KACAgAACPCgAgoQMAAOYFACCoAwAA5gUAIMcDAADmBQAgyAMAAOYFACDJAwAA5gUAIAAACwcAAJcKACAIAACXCgAgCQAAmAoAIA4AAPQGACAQAACZCgAgwAMAAOYFACDBAwAA5gUAIMIDAADmBQAgxAMAAOYFACDFAwAA5gUAIMYDAADmBQAgAwsAAPQGACChAwAA5gUAILgDAADmBQAgAAz5AgEAAAAB_gJAAAAAAZEDQAAAAAHfAwEAAAAB4AMBAAAAAeEDAQAAAAHiAwEAAAAB4wNAAAAAAeQDQAAAAAHlAwEAAAAB5gMBAAAAAecDAQAAAAEI-QIBAAAAAf4CQAAAAAGRA0AAAAABrgMBAAAAAdsDQAAAAAHcAwEAAAAB3QMBAAAAAd4DAQAAAAEG-QIBAAAAAf4CQAAAAAGRA0AAAAAB2QMBAAAAAdoDAQAAAAHbA0AAAAABA5EDQAAAAAGjAwEAAAABtgMAAAC2AwIE-QIBAAAAAZEDQAAAAAGjAwEAAAABtAMAAAC0AwIJ-QIBAAAAAZEDQAAAAAGSAwEAAAABlAMBAAAAAZUDAQAAAAGWA4AAAAABlwNAAAAAAZgDAgAAAAGZAwEAAAABApEDQAAAAAGjAwEAAAABC_kCAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAGrAwAAAKsDAqwDAQAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAGwA4AAAAABsQMBAAAAAQYzgAAAAAH5AgEAAAAB_gJAAAAAAZEDQAAAAAGjAwEAAAABqQMCAAAAAQv5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQKRA0AAAAABoAMBAAAAAQn5AgEAAAAB-wIBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAGPA0AAAAABkANAAAAAAZEDQAAAAAEF-QIBAAAAAfsCAQAAAAH8AiAAAAAB_QIgAAAAAf4CQAAAAAEK-QIBAAAAAZEDQAAAAAG3AwEAAAAB0gMBAAAAAdMDAQAAAAHUAwIAAAAB1QMBAAAAAdYDIAAAAAHXAwEAAAAB2AMBAAAAASMFAAD5CQAgBgAA-gkAICAAAIEKACAhAAD7CQAgIgAA_AkAICYAAIMKACAnAAD9CQAgKAAA_gkAICkAAP8JACAqAACACgAgKwAAggoAICwAAIQKACAtAACFCgAg-QIBAAAAAfwCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABtgMBAAAAAbcDAQAAAAHoAyAAAAAB6QMBAAAAAesDAAAA6wMC7QMAAADtAwLuAyAAAAAB7wMBAAAAAfADAQAAAAHxA4AAAAAB8gNAAAAAAfMDAQAAAAH0AyAAAAAB9QMBAAAAAfYDQAAAAAH3A0AAAAABAgAAAAEAIDoAAKsKACADAAAADwAgOgAAqwoAIDsAAK8KACAlAAAADwAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIDMAAK8KACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEjBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAAD4CQAgBgAA-gkAICAAAIEKACAhAAD7CQAgIgAA_AkAICYAAIMKACAnAAD9CQAgKAAA_gkAICkAAP8JACAqAACACgAgKwAAggoAICwAAIQKACAtAACFCgAg-QIBAAAAAfwCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABtgMBAAAAAbcDAQAAAAHoAyAAAAAB6QMBAAAAAesDAAAA6wMC7QMAAADtAwLuAyAAAAAB7wMBAAAAAfADAQAAAAHxA4AAAAAB8gNAAAAAAfMDAQAAAAH0AyAAAAAB9QMBAAAAAfYDQAAAAAH3A0AAAAABAgAAAAEAIDoAALAKACADAAAADwAgOgAAsAoAIDsAALQKACAlAAAADwAgBAAA2ggAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIDMAALQKACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEjBAAA2ggAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAAD4CQAgBQAA-QkAICAAAIEKACAhAAD7CQAgIgAA_AkAICYAAIMKACAnAAD9CQAgKAAA_gkAICkAAP8JACAqAACACgAgKwAAggoAICwAAIQKACAtAACFCgAg-QIBAAAAAfwCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABtgMBAAAAAbcDAQAAAAHoAyAAAAAB6QMBAAAAAesDAAAA6wMC7QMAAADtAwLuAyAAAAAB7wMBAAAAAfADAQAAAAHxA4AAAAAB8gNAAAAAAfMDAQAAAAH0AyAAAAAB9QMBAAAAAfYDQAAAAAH3A0AAAAABAgAAAAEAIDoAALUKACADAAAADwAgOgAAtQoAIDsAALkKACAlAAAADwAgBAAA2ggAIAUAANsIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIDMAALkKACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEjBAAA2ggAIAUAANsIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAAD4CQAgBQAA-QkAIAYAAPoJACAgAACBCgAgIQAA-wkAICIAAPwJACAmAACDCgAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAg-QIBAAAAAfwCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABtgMBAAAAAbcDAQAAAAHoAyAAAAAB6QMBAAAAAesDAAAA6wMC7QMAAADtAwLuAyAAAAAB7wMBAAAAAfADAQAAAAHxA4AAAAAB8gNAAAAAAfMDAQAAAAH0AyAAAAAB9QMBAAAAAfYDQAAAAAH3A0AAAAABAgAAAAEAIDoAALoKACADAAAADwAgOgAAugoAIDsAAL4KACAlAAAADwAgBAAA2ggAIAUAANsIACAGAADcCAAgIAAA4wgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIDMAAL4KACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEjBAAA2ggAIAUAANsIACAGAADcCAAgIAAA4wgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAIRoRAACrCAAgEgAAnAgAIBMAAJ0IACAUAACeCAAgFgAAoAgAIBgAAKEIACAZAACiCAAgGgAAowgAIBsAAKQIACAcAAClCAAgIAAApggAIPkCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABxwMCAAAAAcgDAQAAAAHJAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAvwoAIA8HAAC2CAAgCAAAlggAIA4AAJgIACAQAACZCAAgjAMBAAAAAZEDQAAAAAGjAwEAAAABpAMCAAAAAcADAQAAAAHBAwEAAAABwgMBAAAAAcMDAQAAAAHEAwEAAAABxQMBAAAAAcYDQAAAAAECAAAALQAgOgAAwQoAIAMAAAAVACA6AADBCgAgOwAAxQoAIBEAAAAVACAHAACLBwAgCAAAjAcAIA4AAI4HACAQAACPBwAgMwAAxQoAIIwDAQDhBQAhkQNAAOMFACGjAwEA4QUAIaQDAgD0BQAhwAMBAPUFACHBAwEA9QUAIcIDAQD1BQAhwwMBAOEFACHEAwEA9QUAIcUDAQD1BQAhxgNAAOoFACEPBwAAiwcAIAgAAIwHACAOAACOBwAgEAAAjwcAIIwDAQDhBQAhkQNAAOMFACGjAwEA4QUAIaQDAgD0BQAhwAMBAPUFACHBAwEA9QUAIcIDAQD1BQAhwwMBAOEFACHEAwEA9QUAIcUDAQD1BQAhxgNAAOoFACEPBwAAtggAIAkAAJcIACAOAACYCAAgEAAAmQgAIIwDAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAHAAwEAAAABwQMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGA0AAAAABAgAAAC0AIDoAAMYKACAO-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABGhEAAKsIACASAACcCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AADJCgAgCowDAQAAAAGRA0AAAAABpAMCAAAAAcADAQAAAAHBAwEAAAABwgMBAAAAAcMDAQAAAAHEAwEAAAABxQMBAAAAAcYDQAAAAAED-gIBAAAAAZEDQAAAAAG2AwAAALYDAgT5AgEAAAABkQNAAAAAAbIDAQAAAAG0AwAAALQDAgX5AgEAAAABkQNAAAAAAasDAAAAvwMCvAMCAAAAAb0DAQAAAAEC-gIBAAAAAZEDQAAAAAEL-QIBAAAAAfoCAQAAAAGRA0AAAAABpAMCAAAAAasDAAAAqwMCrAMBAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAbADgAAAAAGxAwEAAAABBjOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGpAwIAAAABC_kCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaQDAgAAAAGlAwEAAAABpgMCAAAAAacDQAAAAAGoA0AAAAABAwAAABcAIDoAAMkKACA7AADVCgAgHAAAABcAIBEAALEHACASAACyBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAgMwAA1QoAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEaEQAAsQcAIBIAALIHACAUAACxCAAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHIAwEA9QUAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhAwAAABUAIDoAAMYKACA7AADYCgAgEQAAABUAIAcAAIsHACAJAACNBwAgDgAAjgcAIBAAAI8HACAzAADYCgAgjAMBAOEFACGRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQ8HAACLBwAgCQAAjQcAIA4AAI4HACAQAACPBwAgjAMBAOEFACGRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQ35AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQKRA0AAAAABvwMBAAAAAQT5AgEAAAABkQNAAAAAAasDAAAAvwMCvQMBAAAAAQMAAAAXACA6AAC_CgAgOwAA3goAIBwAAAAXACARAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFgAAtQcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIDMAAN4KACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHIAwEA9QUAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhGhEAALEHACASAACyBwAgEwAAswcAIBQAALEIACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIQX5AgEAAAABkQNAAAAAAaEDAgAAAAG3AwEAAAABuAMBAAAAAQIAAADOAgAgOgAA3woAIAMAAADRAgAgOgAA3woAIDsAAOMKACAHAAAA0QIAIDMAAOMKACD5AgEA4QUAIZEDQADjBQAhoQMCAJIGACG3AwEA4QUAIbgDAQD1BQAhBfkCAQDhBQAhkQNAAOMFACGhAwIAkgYAIbcDAQDhBQAhuAMBAPUFACEPBwAAtggAIAgAAJYIACAJAACXCAAgDgAAmAgAIIwDAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAHAAwEAAAABwQMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGA0AAAAABAgAAAC0AIDoAAOQKACAaEQAAqwgAIBIAAJwIACATAACdCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBoAAKMIACAbAACkCAAgHAAApQgAICAAAKYIACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHIAwEAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABAgAAABoAIDoAAOYKACADAAAAFQAgOgAA5AoAIDsAAOoKACARAAAAFQAgBwAAiwcAIAgAAIwHACAJAACNBwAgDgAAjgcAIDMAAOoKACCMAwEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIA9AUAIcADAQD1BQAhwQMBAPUFACHCAwEA9QUAIcMDAQDhBQAhxAMBAPUFACHFAwEA9QUAIcYDQADqBQAhDwcAAIsHACAIAACMBwAgCQAAjQcAIA4AAI4HACCMAwEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIA9AUAIcADAQD1BQAhwQMBAPUFACHCAwEA9QUAIcMDAQDhBQAhxAMBAPUFACHFAwEA9QUAIcYDQADqBQAhAwAAABcAIDoAAOYKACA7AADtCgAgHAAAABcAIBEAALEHACASAACyBwAgEwAAswcAIBQAALEIACAVAAC0BwAgFgAAtQcAIBgAALYHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAgMwAA7QoAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEaEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHIAwEA9QUAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhDwcAALYIACAIAACWCAAgCQAAlwgAIBAAAJkIACCMAwEAAAABkQNAAAAAAaMDAQAAAAGkAwIAAAABwAMBAAAAAcEDAQAAAAHCAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgNAAAAAAQIAAAAtACA6AADuCgAgAwAAABUAIDoAAO4KACA7AADyCgAgEQAAABUAIAcAAIsHACAIAACMBwAgCQAAjQcAIBAAAI8HACAzAADyCgAgjAMBAOEFACGRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQ8HAACLBwAgCAAAjAcAIAkAAI0HACAQAACPBwAgjAMBAOEFACGRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQORA0AAAAABowMBAAAAAaQDAgAAAAEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICIAAPwJACAmAACDCgAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AAD0CgAgGhEAAKsIACASAACcCAAgEwAAnQgAIBQAAJ4IACAVAACfCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AAD2CgAgAwAAAA8AIDoAAPQKACA7AAD6CgAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAAD6CgAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAA9goAIDsAAP0KACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAYAAC2BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACAzAAD9CgAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAmAACDCgAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AAD-CgAgGhEAAKsIACASAACcCAAgEwAAnQgAIBQAAJ4IACAVAACfCAAgFgAAoAgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AACACwAgAwAAAA8AIDoAAP4KACA7AACECwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAACECwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAAgAsAIDsAAIcLACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACAzAACHCwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBYAALUHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AACICwAgGhEAAKsIACASAACcCAAgEwAAnQgAIBQAAJ4IACAVAACfCAAgFgAAoAgAIBgAAKEIACAZAACiCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AACKCwAgAwAAAA8AIDoAAIgLACA7AACOCwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAACOCwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAAigsAIDsAAJELACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAbAAC5BwAgHAAAugcAICAAALsHACAzAACRCwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBsAALkHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACAoAAD-CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AACSCwAgGhEAAKsIACASAACcCAAgEwAAnQgAIBQAAJ4IACAVAACfCAAgFgAAoAgAIBgAAKEIACAZAACiCAAgGgAAowgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AACUCwAgAwAAAA8AIDoAAJILACA7AACYCwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKAAA4AgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAACYCwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKAAA4AgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAAlAsAIDsAAJsLACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgHAAAugcAICAAALsHACAzAACbCwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBoAALgHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEaEQAAqwgAIBIAAJwIACATAACdCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAICAAAKYIACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHIAwEAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABAgAAABoAIDoAAJwLACAjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACAoAAD-CQAgKQAA_wkAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AACeCwAgAwAAABcAIDoAAJwLACA7AACiCwAgHAAAABcAIBEAALEHACASAACyBwAgEwAAswcAIBQAALEIACAVAAC0BwAgFgAAtQcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAgAAC7BwAgMwAAogsAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEaEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAICAAALsHACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHIAwEA9QUAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhAwAAAA8AIDoAAJ4LACA7AAClCwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKAAA4AgAICkAAOEIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAAClCwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKAAA4AgAICkAAOEIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEQAwAAsQYAIAcAALAGACAaAACzBgAgHQAAtAYAIPkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQIAAABGACA6AACmCwAgIwQAAPgJACAFAAD5CQAgBgAA-gkAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACAoAAD-CQAgKQAA_wkAICoAAIAKACArAACCCgAgLAAAhAoAIC0AAIUKACD5AgEAAAAB_AIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAG2AwEAAAABtwMBAAAAAegDIAAAAAHpAwEAAAAB6wMAAADrAwLtAwAAAO0DAu4DIAAAAAHvAwEAAAAB8AMBAAAAAfEDgAAAAAHyA0AAAAAB8wMBAAAAAfQDIAAAAAH1AwEAAAAB9gNAAAAAAfcDQAAAAAECAAAAAQAgOgAAqAsAIBoRAACrCAAgEgAAnAgAIBMAAJ0IACAUAACeCAAgFQAAnwgAIBYAAKAIACAYAAChCAAgGQAAoggAIBoAAKMIACAbAACkCAAgHAAApQgAIPkCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABxwMCAAAAAcgDAQAAAAHJAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAqgsAIAv5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQL6AgEAAAABkQNAAAAAAQMAAABEACA6AACmCwAgOwAAsAsAIBIAAABEACADAACUBgAgBwAAkwYAIBoAAJcGACAdAACVBgAgMwAAsAsAIPkCAQDhBQAh-gIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGiAwEA9QUAIaMDAQDhBQAhpAMCAJIGACGlAwEA9QUAIaYDAgD0BQAhpwNAAOoFACGoA0AA6gUAIRADAACUBgAgBwAAkwYAIBoAAJcGACAdAACVBgAg-QIBAOEFACH6AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhowMBAOEFACGkAwIAkgYAIaUDAQD1BQAhpgMCAPQFACGnA0AA6gUAIagDQADqBQAhAwAAAA8AIDoAAKgLACA7AACzCwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAACzCwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAAqgsAIDsAALYLACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAzAAC2CwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACAoAAD-CQAgKQAA_wkAICoAAIAKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AAC3CwAgEAMAALEGACAHAACwBgAgHQAAtAYAIB4AALIGACD5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaIDAQAAAAGjAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAECAAAARgAgOgAAuQsAIAMAAAAPACA6AAC3CwAgOwAAvQsAICUAAAAPACAEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICwAAOYIACAtAADnCAAgMwAAvQsAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICwAAOYIACAtAADnCAAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhAwAAAEQAIDoAALkLACA7AADACwAgEgAAAEQAIAMAAJQGACAHAACTBgAgHQAAlQYAIB4AAJYGACAzAADACwAg-QIBAOEFACH6AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhowMBAOEFACGkAwIAkgYAIaUDAQD1BQAhpgMCAPQFACGnA0AA6gUAIagDQADqBQAhEAMAAJQGACAHAACTBgAgHQAAlQYAIB4AAJYGACD5AgEA4QUAIfoCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhogMBAPUFACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AADBCwAgCfkCAQAAAAH7AgEAAAABigMBAAAAAYwDAQAAAAGNAwEAAAABjgMBAAAAAY8DQAAAAAGQA0AAAAABkQNAAAAAAQMAAAAPACA6AADBCwAgOwAAxgsAICUAAAAPACAEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgKAAA4AgAICkAAOEIACAqAADiCAAgKwAA5AgAICwAAOYIACAtAADnCAAgMwAAxgsAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgKAAA4AgAICkAAOEIACAqAADiCAAgKwAA5AgAICwAAOYIACAtAADnCAAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhCyMAAIQGACD5AgEAAAABkQNAAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWA4AAAAABlwNAAAAAAZgDAgAAAAGZAwEAAAABAgAAAF0AIDoAAMcLACAjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AADJCwAgAwAAAFsAIDoAAMcLACA7AADNCwAgDQAAAFsAICMAAPYFACAzAADNCwAg-QIBAOEFACGRA0AA4wUAIZIDAQDhBQAhkwMBAOEFACGUAwEA4QUAIZUDAQDhBQAhlgOAAAAAAZcDQADqBQAhmAMCAPQFACGZAwEA9QUAIQsjAAD2BQAg-QIBAOEFACGRA0AA4wUAIZIDAQDhBQAhkwMBAOEFACGUAwEA4QUAIZUDAQDhBQAhlgOAAAAAAZcDQADqBQAhmAMCAPQFACGZAwEA9QUAIQMAAAAPACA6AADJCwAgOwAA0AsAICUAAAAPACAEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAnAADfCAAgKAAA4AgAICkAAOEIACAqAADiCAAgKwAA5AgAICwAAOYIACAtAADnCAAgMwAA0AsAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAnAADfCAAgKAAA4AgAICkAAOEIACAqAADiCAAgKwAA5AgAICwAAOYIACAtAADnCAAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAAPgJACAFAAD5CQAgBgAA-gkAICAAAIEKACAhAAD7CQAgIgAA_AkAICYAAIMKACAnAAD9CQAgKAAA_gkAICkAAP8JACAqAACACgAgKwAAggoAIC0AAIUKACD5AgEAAAAB_AIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAG2AwEAAAABtwMBAAAAAegDIAAAAAHpAwEAAAAB6wMAAADrAwLtAwAAAO0DAu4DIAAAAAHvAwEAAAAB8AMBAAAAAfEDgAAAAAHyA0AAAAAB8wMBAAAAAfQDIAAAAAH1AwEAAAAB9gNAAAAAAfcDQAAAAAECAAAAAQAgOgAA0QsAIAMAAAAPACA6AADRCwAgOwAA1QsAICUAAAAPACAEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAtAADnCAAgMwAA1QsAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAtAADnCAAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhDwQGAgUKAwYOBAwAGiBnESEUBSJaDSZpFideFShkDillDypmECtoEixtGC1xGQEDAAEBAwABAQMQAQIDAAEHAAYNDAAUERYHEikGEyoGFCsHFS4HFi8FGDMNGTULGjkOGz0PHEIQIEcRBgcABggYBgkbBgwADA4fCBAlCwIKAAcNAAkCCyAIDAAKAQshAAIHAAYPAAcDCSYADicAECgAAgcABhc0AQIDAAEHAAYCAz4BBwAGAgMAAQdDBgYDSAEHAAYMABMaThIdSREeShECAwABHwARAhpQAB5PAAkTUQAVUgAWUwAYVAAZVQAaVgAbVwAcWAAgWQADDAAXIwABJmIWAiQAASUAFQEmYwABAwABAQMAAQ4EcgAFcwAGdAAgewAhdQAidgAmfQAndwAoeAApeQAqegArfAAsfgAtfwAAAAAFDAAfQAAgQQAhQgAiQwAjAAAAAAAFDAAfQAAgQQAhQgAiQwAjAQMAAQEDAAEDDAAoQgApQwAqAAAAAwwAKEIAKUMAKgEDAAEBAwABAwwAL0IAMEMAMQAAAAMMAC9CADBDADEBA8wBAQED0gEBAwwANkIAN0MAOAAAAAMMADZCADdDADgBAwABAQMAAQUMAD1AAD5BAD9CAEBDAEEAAAAAAAUMAD1AAD5BAD9CAEBDAEEDEfoBBxL7AQYU_AEHAxGCAgcSgwIGFIQCBwUMAEZAAEdBAEhCAElDAEoAAAAAAAUMAEZAAEdBAEhCAElDAEoBBwAGAQcABgUMAE9AAFBBAFFCAFJDAFMAAAAAAAUMAE9AAFBBAFFCAFJDAFMCCgAHDQAJAgoABw0ACQUMAFhAAFlBAFpCAFtDAFwAAAAAAAUMAFhAAFlBAFpCAFtDAFwCBwAGDwAHAgcABg8ABwUMAGFAAGJBAGNCAGRDAGUAAAAAAAUMAGFAAGJBAGNCAGRDAGUAAAUMAGpAAGtBAGxCAG1DAG4AAAAAAAUMAGpAAGtBAGxCAG1DAG4CAwABBwAGAgMAAQcABgMMAHNCAHRDAHUAAAADDABzQgB0QwB1AgcABheHAwECBwAGF40DAQMMAHpCAHtDAHwAAAADDAB6QgB7QwB8AgMAAQcABgIDAAEHAAYDDACBAUIAggFDAIMBAAAAAwwAgQFCAIIBQwCDAQIDtQMBBwAGAgO7AwEHAAYFDACIAUAAiQFBAIoBQgCLAUMAjAEAAAAAAAUMAIgBQACJAUEAigFCAIsBQwCMAQIDAAEHzQMGAgMAAQfTAwYFDACRAUAAkgFBAJMBQgCUAUMAlQEAAAAAAAUMAJEBQACSAUEAkwFCAJQBQwCVAQMD5QMBBwAGHeYDEQMD7AMBBwAGHe0DEQUMAJoBQACbAUEAnAFCAJ0BQwCeAQAAAAAABQwAmgFAAJsBQQCcAUIAnQFDAJ4BAgMAAR8AEQIDAAEfABEDDACjAUIApAFDAKUBAAAAAwwAowFCAKQBQwClAQEjAAEBIwABBQwAqgFAAKsBQQCsAUIArQFDAK4BAAAAAAAFDACqAUAAqwFBAKwBQgCtAUMArgECJAABJQAVAiQAASUAFQMMALMBQgC0AUMAtQEAAAADDACzAUIAtAFDALUBAQMAAQEDAAEDDAC6AUIAuwFDALwBAAAAAwwAugFCALsBQwC8AS4CAS-AAQEwggEBMYMBATKEAQE0hgEBNYgBGzaJARw3iwEBOI0BGzmOAR08jwEBPZABAT6RARtElAEeRZUBJEaWAQJHlwECSJgBAkmZAQJKmgECS5wBAkyeARtNnwElTqEBAk-jARtQpAEmUaUBAlKmAQJTpwEbVKoBJ1WrAStWrAEDV60BA1iuAQNZrwEDWrABA1uyAQNctAEbXbUBLF63AQNfuQEbYLoBLWG7AQNivAEDY70BG2TAAS5lwQEyZsIBBGfDAQRoxAEEacUBBGrGAQRryAEEbMoBG23LATNuzgEEb9ABG3DRATRx0wEEctQBBHPVARt02AE1ddkBOXbaARl32wEZeNwBGXndARl63gEZe-ABGXziARt94wE6fuUBGX_nARuAAegBO4EB6QEZggHqARmDAesBG4QB7gE8hQHvAUKGAfABBocB8QEGiAHyAQaJAfMBBooB9AEGiwH2AQaMAfgBG40B-QFDjgH-AQaPAYACG5ABgQJEkQGFAgaSAYYCBpMBhwIblAGKAkWVAYsCS5YBjAIHlwGNAgeYAY4CB5kBjwIHmgGQAgebAZICB5wBlAIbnQGVAkyeAZcCB58BmQIboAGaAk2hAZsCB6IBnAIHowGdAhukAaACTqUBoQJUpgGiAginAaMCCKgBpAIIqQGlAgiqAaYCCKsBqAIIrAGqAhutAasCVa4BrQIIrwGvAhuwAbACVrEBsQIIsgGyAgizAbMCG7QBtgJXtQG3Al22AbgCC7cBuQILuAG6Agu5AbsCC7oBvAILuwG-Agu8AcACG70BwQJevgHDAgu_AcUCG8ABxgJfwQHHAgvCAcgCC8MByQIbxAHMAmDFAc0CZsYBzwIJxwHQAgnIAdMCCckB1AIJygHVAgnLAdcCCcwB2QIbzQHaAmfOAdwCCc8B3gIb0AHfAmjRAeACCdIB4QIJ0wHiAhvUAeUCadUB5gJv1gHnAgXXAegCBdgB6QIF2QHqAgXaAesCBdsB7QIF3AHvAhvdAfACcN4B8gIF3wH0AhvgAfUCceEB9gIF4gH3AgXjAfgCG-QB-wJy5QH8AnbmAf0CDecB_gIN6AH_Ag3pAYADDeoBgQMN6wGDAw3sAYUDG-0BhgN37gGJAw3vAYsDG_ABjAN48QGOAw3yAY8DDfMBkAMb9AGTA3n1AZQDffYBlQMO9wGWAw74AZcDDvkBmAMO-gGZAw77AZsDDvwBnQMb_QGeA37-AaADDv8BogMbgAKjA3-BAqQDDoICpQMOgwKmAxuEAqkDgAGFAqoDhAGGAqsDD4cCrAMPiAKtAw-JAq4DD4oCrwMPiwKxAw-MArMDG40CtAOFAY4CtwMPjwK5AxuQAroDhgGRArwDD5ICvQMPkwK-AxuUAsEDhwGVAsIDjQGWAsMDEJcCxAMQmALFAxCZAsYDEJoCxwMQmwLJAxCcAssDG50CzAOOAZ4CzwMQnwLRAxugAtIDjwGhAtQDEKIC1QMQowLWAxukAtkDkAGlAtoDlgGmAtsDEacC3AMRqALdAxGpAt4DEaoC3wMRqwLhAxGsAuMDG60C5AOXAa4C6AMRrwLqAxuwAusDmAGxAu4DEbIC7wMRswLwAxu0AvMDmQG1AvQDnwG2AvUDErcC9gMSuAL3AxK5AvgDEroC-QMSuwL7AxK8Av0DG70C_gOgAb4CgAQSvwKCBBvAAoMEoQHBAoQEEsIChQQSwwKGBBvEAokEogHFAooEpgHGAosEFccCjAQVyAKNBBXJAo4EFcoCjwQVywKRBBXMApMEG80ClASnAc4ClgQVzwKYBBvQApkEqAHRApoEFdICmwQV0wKcBBvUAp8EqQHVAqAErwHWAqEEFtcCogQW2AKjBBbZAqQEFtoCpQQW2wKnBBbcAqkEG90CqgSwAd4CrAQW3wKuBBvgAq8EsQHhArAEFuICsQQW4wKyBBvkArUEsgHlArYEtgHmArcEGOcCuAQY6AK5BBjpAroEGOoCuwQY6wK9BBjsAr8EG-0CwAS3Ae4CwgQY7wLEBBvwAsUEuAHxAsYEGPICxwQY8wLIBBv0AssEuQH1AswEvQE" } config.compilerWasm = { getRuntime: async () => require('./query_compiler_fast_bg.js'), diff --git a/apps/modeling-commons-backend/generated/prisma/index-browser.js b/apps/modeling-commons-backend/generated/prisma/index-browser.js index 47e49635..317d1290 100644 --- a/apps/modeling-commons-backend/generated/prisma/index-browser.js +++ b/apps/modeling-commons-backend/generated/prisma/index-browser.js @@ -328,7 +328,31 @@ exports.Prisma.EventScalarFieldEnum = { resourceId: 'resourceId', payload: 'payload', createdAt: 'createdAt', - processedAt: 'processedAt' + processedAt: 'processedAt', + attempts: 'attempts', + lastError: 'lastError' +}; + +exports.Prisma.UserNotificationScalarFieldEnum = { + id: 'id', + recipientId: 'recipientId', + eventId: 'eventId', + category: 'category', + title: 'title', + body: 'body', + url: 'url', + emailSentAt: 'emailSentAt', + readAt: 'readAt', + createdAt: 'createdAt' +}; + +exports.Prisma.UserNotificationPreferenceScalarFieldEnum = { + id: 'id', + userId: 'userId', + category: 'category', + email: 'email', + inApp: 'inApp', + updatedAt: 'updatedAt' }; exports.Prisma.SortOrder = { @@ -420,7 +444,9 @@ exports.Prisma.ModelName = { ModelDraft: 'ModelDraft', ModelComment: 'ModelComment', ModelCommentLike: 'ModelCommentLike', - Event: 'Event' + Event: 'Event', + UserNotification: 'UserNotification', + UserNotificationPreference: 'UserNotificationPreference' }; /** diff --git a/apps/modeling-commons-backend/generated/prisma/index.d.ts b/apps/modeling-commons-backend/generated/prisma/index.d.ts index 9b83f918..e9bbb41b 100644 --- a/apps/modeling-commons-backend/generated/prisma/index.d.ts +++ b/apps/modeling-commons-backend/generated/prisma/index.d.ts @@ -103,6 +103,16 @@ export type ModelCommentLike = $Result.DefaultSelection +/** + * Model UserNotification + * + */ +export type UserNotification = $Result.DefaultSelection +/** + * Model UserNotificationPreference + * + */ +export type UserNotificationPreference = $Result.DefaultSelection /** * Enums @@ -500,6 +510,26 @@ export class PrismaClient< * ``` */ get event(): Prisma.EventDelegate; + + /** + * `prisma.userNotification`: Exposes CRUD operations for the **UserNotification** model. + * Example usage: + * ```ts + * // Fetch zero or more UserNotifications + * const userNotifications = await prisma.userNotification.findMany() + * ``` + */ + get userNotification(): Prisma.UserNotificationDelegate; + + /** + * `prisma.userNotificationPreference`: Exposes CRUD operations for the **UserNotificationPreference** model. + * Example usage: + * ```ts + * // Fetch zero or more UserNotificationPreferences + * const userNotificationPreferences = await prisma.userNotificationPreference.findMany() + * ``` + */ + get userNotificationPreference(): Prisma.UserNotificationPreferenceDelegate; } export namespace Prisma { @@ -951,7 +981,9 @@ export namespace Prisma { ModelDraft: 'ModelDraft', ModelComment: 'ModelComment', ModelCommentLike: 'ModelCommentLike', - Event: 'Event' + Event: 'Event', + UserNotification: 'UserNotification', + UserNotificationPreference: 'UserNotificationPreference' }; export type ModelName = (typeof ModelName)[keyof typeof ModelName] @@ -967,7 +999,7 @@ export namespace Prisma { omit: GlobalOmitOptions } meta: { - modelProps: "user" | "account" | "session" | "verification" | "passkey" | "model" | "modelVersion" | "modelVersionTag" | "modelAdditionalFile" | "tag" | "modelAuthor" | "modelPermission" | "modelLike" | "modelInteraction" | "modelDraft" | "modelComment" | "modelCommentLike" | "event" + modelProps: "user" | "account" | "session" | "verification" | "passkey" | "model" | "modelVersion" | "modelVersionTag" | "modelAdditionalFile" | "tag" | "modelAuthor" | "modelPermission" | "modelLike" | "modelInteraction" | "modelDraft" | "modelComment" | "modelCommentLike" | "event" | "userNotification" | "userNotificationPreference" txIsolationLevel: Prisma.TransactionIsolationLevel } model: { @@ -2303,6 +2335,154 @@ export namespace Prisma { } } } + UserNotification: { + payload: Prisma.$UserNotificationPayload + fields: Prisma.UserNotificationFieldRefs + operations: { + findUnique: { + args: Prisma.UserNotificationFindUniqueArgs + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.UserNotificationFindUniqueOrThrowArgs + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.UserNotificationFindFirstArgs + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.UserNotificationFindFirstOrThrowArgs + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.UserNotificationFindManyArgs + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.UserNotificationCreateArgs + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.UserNotificationCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.UserNotificationCreateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + delete: { + args: Prisma.UserNotificationDeleteArgs + result: $Utils.PayloadToResult + } + update: { + args: Prisma.UserNotificationUpdateArgs + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.UserNotificationDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.UserNotificationUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.UserNotificationUpdateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + upsert: { + args: Prisma.UserNotificationUpsertArgs + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.UserNotificationAggregateArgs + result: $Utils.Optional + } + groupBy: { + args: Prisma.UserNotificationGroupByArgs + result: $Utils.Optional[] + } + count: { + args: Prisma.UserNotificationCountArgs + result: $Utils.Optional | number + } + } + } + UserNotificationPreference: { + payload: Prisma.$UserNotificationPreferencePayload + fields: Prisma.UserNotificationPreferenceFieldRefs + operations: { + findUnique: { + args: Prisma.UserNotificationPreferenceFindUniqueArgs + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.UserNotificationPreferenceFindUniqueOrThrowArgs + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.UserNotificationPreferenceFindFirstArgs + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.UserNotificationPreferenceFindFirstOrThrowArgs + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.UserNotificationPreferenceFindManyArgs + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.UserNotificationPreferenceCreateArgs + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.UserNotificationPreferenceCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.UserNotificationPreferenceCreateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + delete: { + args: Prisma.UserNotificationPreferenceDeleteArgs + result: $Utils.PayloadToResult + } + update: { + args: Prisma.UserNotificationPreferenceUpdateArgs + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.UserNotificationPreferenceDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.UserNotificationPreferenceUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.UserNotificationPreferenceUpdateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + upsert: { + args: Prisma.UserNotificationPreferenceUpsertArgs + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.UserNotificationPreferenceAggregateArgs + result: $Utils.Optional + } + groupBy: { + args: Prisma.UserNotificationPreferenceGroupByArgs + result: $Utils.Optional[] + } + count: { + args: Prisma.UserNotificationPreferenceCountArgs + result: $Utils.Optional | number + } + } + } } } & { other: { @@ -2429,6 +2609,8 @@ export namespace Prisma { modelComment?: ModelCommentOmit modelCommentLike?: ModelCommentLikeOmit event?: EventOmit + userNotification?: UserNotificationOmit + userNotificationPreference?: UserNotificationPreferenceOmit } /* Types for Logging */ @@ -2520,6 +2702,8 @@ export namespace Prisma { modelDrafts: number comments: number commentLikes: number + notifications: number + notificationPreferences: number passkeys: number } @@ -2535,6 +2719,8 @@ export namespace Prisma { modelDrafts?: boolean | UserCountOutputTypeCountModelDraftsArgs comments?: boolean | UserCountOutputTypeCountCommentsArgs commentLikes?: boolean | UserCountOutputTypeCountCommentLikesArgs + notifications?: boolean | UserCountOutputTypeCountNotificationsArgs + notificationPreferences?: boolean | UserCountOutputTypeCountNotificationPreferencesArgs passkeys?: boolean | UserCountOutputTypeCountPasskeysArgs } @@ -2626,6 +2812,20 @@ export namespace Prisma { where?: ModelCommentLikeWhereInput } + /** + * UserCountOutputType without action + */ + export type UserCountOutputTypeCountNotificationsArgs = { + where?: UserNotificationWhereInput + } + + /** + * UserCountOutputType without action + */ + export type UserCountOutputTypeCountNotificationPreferencesArgs = { + where?: UserNotificationPreferenceWhereInput + } + /** * UserCountOutputType without action */ @@ -2857,6 +3057,37 @@ export namespace Prisma { } + /** + * Count Type EventCountOutputType + */ + + export type EventCountOutputType = { + notifications: number + } + + export type EventCountOutputTypeSelect = { + notifications?: boolean | EventCountOutputTypeCountNotificationsArgs + } + + // Custom InputTypes + /** + * EventCountOutputType without action + */ + export type EventCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the EventCountOutputType + */ + select?: EventCountOutputTypeSelect | null + } + + /** + * EventCountOutputType without action + */ + export type EventCountOutputTypeCountNotificationsArgs = { + where?: UserNotificationWhereInput + } + + /** * Models */ @@ -3202,6 +3433,8 @@ export namespace Prisma { modelDrafts?: boolean | User$modelDraftsArgs comments?: boolean | User$commentsArgs commentLikes?: boolean | User$commentLikesArgs + notifications?: boolean | User$notificationsArgs + notificationPreferences?: boolean | User$notificationPreferencesArgs passkeys?: boolean | User$passkeysArgs _count?: boolean | UserCountOutputTypeDefaultArgs }, ExtArgs["result"]["user"]> @@ -3294,6 +3527,8 @@ export namespace Prisma { modelDrafts?: boolean | User$modelDraftsArgs comments?: boolean | User$commentsArgs commentLikes?: boolean | User$commentLikesArgs + notifications?: boolean | User$notificationsArgs + notificationPreferences?: boolean | User$notificationPreferencesArgs passkeys?: boolean | User$passkeysArgs _count?: boolean | UserCountOutputTypeDefaultArgs } @@ -3314,6 +3549,8 @@ export namespace Prisma { modelDrafts: Prisma.$ModelDraftPayload[] comments: Prisma.$ModelCommentPayload[] commentLikes: Prisma.$ModelCommentLikePayload[] + notifications: Prisma.$UserNotificationPayload[] + notificationPreferences: Prisma.$UserNotificationPreferencePayload[] passkeys: Prisma.$PasskeyPayload[] } scalars: $Extensions.GetPayloadResult<{ @@ -3744,6 +3981,8 @@ export namespace Prisma { modelDrafts = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions> | Null> comments = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions> | Null> commentLikes = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions> | Null> + notifications = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions> | Null> + notificationPreferences = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions> | Null> passkeys = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions> | Null> /** * Attaches callbacks for the resolution and/or rejection of the Promise. @@ -4452,6 +4691,54 @@ export namespace Prisma { distinct?: ModelCommentLikeScalarFieldEnum | ModelCommentLikeScalarFieldEnum[] } + /** + * User.notifications + */ + export type User$notificationsArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + where?: UserNotificationWhereInput + orderBy?: UserNotificationOrderByWithRelationInput | UserNotificationOrderByWithRelationInput[] + cursor?: UserNotificationWhereUniqueInput + take?: number + skip?: number + distinct?: UserNotificationScalarFieldEnum | UserNotificationScalarFieldEnum[] + } + + /** + * User.notificationPreferences + */ + export type User$notificationPreferencesArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + where?: UserNotificationPreferenceWhereInput + orderBy?: UserNotificationPreferenceOrderByWithRelationInput | UserNotificationPreferenceOrderByWithRelationInput[] + cursor?: UserNotificationPreferenceWhereUniqueInput + take?: number + skip?: number + distinct?: UserNotificationPreferenceScalarFieldEnum | UserNotificationPreferenceScalarFieldEnum[] + } + /** * User.passkeys */ @@ -23150,10 +23437,20 @@ export namespace Prisma { export type AggregateEvent = { _count: EventCountAggregateOutputType | null + _avg: EventAvgAggregateOutputType | null + _sum: EventSumAggregateOutputType | null _min: EventMinAggregateOutputType | null _max: EventMaxAggregateOutputType | null } + export type EventAvgAggregateOutputType = { + attempts: number | null + } + + export type EventSumAggregateOutputType = { + attempts: number | null + } + export type EventMinAggregateOutputType = { id: string | null type: string | null @@ -23162,6 +23459,8 @@ export namespace Prisma { resourceId: string | null createdAt: Date | null processedAt: Date | null + attempts: number | null + lastError: string | null } export type EventMaxAggregateOutputType = { @@ -23172,6 +23471,8 @@ export namespace Prisma { resourceId: string | null createdAt: Date | null processedAt: Date | null + attempts: number | null + lastError: string | null } export type EventCountAggregateOutputType = { @@ -23183,10 +23484,20 @@ export namespace Prisma { payload: number createdAt: number processedAt: number + attempts: number + lastError: number _all: number } + export type EventAvgAggregateInputType = { + attempts?: true + } + + export type EventSumAggregateInputType = { + attempts?: true + } + export type EventMinAggregateInputType = { id?: true type?: true @@ -23195,6 +23506,8 @@ export namespace Prisma { resourceId?: true createdAt?: true processedAt?: true + attempts?: true + lastError?: true } export type EventMaxAggregateInputType = { @@ -23205,6 +23518,8 @@ export namespace Prisma { resourceId?: true createdAt?: true processedAt?: true + attempts?: true + lastError?: true } export type EventCountAggregateInputType = { @@ -23216,6 +23531,8 @@ export namespace Prisma { payload?: true createdAt?: true processedAt?: true + attempts?: true + lastError?: true _all?: true } @@ -23254,6 +23571,18 @@ export namespace Prisma { * Count returned Events **/ _count?: true | EventCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: EventAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: EventSumAggregateInputType /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} * @@ -23287,6 +23616,8 @@ export namespace Prisma { take?: number skip?: number _count?: EventCountAggregateInputType | true + _avg?: EventAvgAggregateInputType + _sum?: EventSumAggregateInputType _min?: EventMinAggregateInputType _max?: EventMaxAggregateInputType } @@ -23300,7 +23631,11 @@ export namespace Prisma { payload: JsonValue createdAt: Date processedAt: Date | null + attempts: number + lastError: string | null _count: EventCountAggregateOutputType | null + _avg: EventAvgAggregateOutputType | null + _sum: EventSumAggregateOutputType | null _min: EventMinAggregateOutputType | null _max: EventMaxAggregateOutputType | null } @@ -23328,7 +23663,11 @@ export namespace Prisma { payload?: boolean createdAt?: boolean processedAt?: boolean + attempts?: boolean + lastError?: boolean actor?: boolean | UserDefaultArgs + notifications?: boolean | Event$notificationsArgs + _count?: boolean | EventCountOutputTypeDefaultArgs }, ExtArgs["result"]["event"]> export type EventSelectCreateManyAndReturn = $Extensions.GetSelect<{ @@ -23340,6 +23679,8 @@ export namespace Prisma { payload?: boolean createdAt?: boolean processedAt?: boolean + attempts?: boolean + lastError?: boolean actor?: boolean | UserDefaultArgs }, ExtArgs["result"]["event"]> @@ -23352,6 +23693,8 @@ export namespace Prisma { payload?: boolean createdAt?: boolean processedAt?: boolean + attempts?: boolean + lastError?: boolean actor?: boolean | UserDefaultArgs }, ExtArgs["result"]["event"]> @@ -23364,11 +23707,15 @@ export namespace Prisma { payload?: boolean createdAt?: boolean processedAt?: boolean + attempts?: boolean + lastError?: boolean } - export type EventOmit = $Extensions.GetOmit<"id" | "type" | "actorId" | "resourceType" | "resourceId" | "payload" | "createdAt" | "processedAt", ExtArgs["result"]["event"]> + export type EventOmit = $Extensions.GetOmit<"id" | "type" | "actorId" | "resourceType" | "resourceId" | "payload" | "createdAt" | "processedAt" | "attempts" | "lastError", ExtArgs["result"]["event"]> export type EventInclude = { actor?: boolean | UserDefaultArgs + notifications?: boolean | Event$notificationsArgs + _count?: boolean | EventCountOutputTypeDefaultArgs } export type EventIncludeCreateManyAndReturn = { actor?: boolean | UserDefaultArgs @@ -23381,6 +23728,7 @@ export namespace Prisma { name: "Event" objects: { actor: Prisma.$UserPayload + notifications: Prisma.$UserNotificationPayload[] } scalars: $Extensions.GetPayloadResult<{ id: string @@ -23391,6 +23739,8 @@ export namespace Prisma { payload: Prisma.JsonValue createdAt: Date processedAt: Date | null + attempts: number + lastError: string | null }, ExtArgs["result"]["event"]> composites: {} } @@ -23786,6 +24136,7 @@ export namespace Prisma { export interface Prisma__EventClient extends Prisma.PrismaPromise { readonly [Symbol.toStringTag]: "PrismaPromise" actor = {}>(args?: Subset>): Prisma__UserClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + notifications = {}>(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. @@ -23823,6 +24174,8 @@ export namespace Prisma { readonly payload: FieldRef<"Event", 'Json'> readonly createdAt: FieldRef<"Event", 'DateTime'> readonly processedAt: FieldRef<"Event", 'DateTime'> + readonly attempts: FieldRef<"Event", 'Int'> + readonly lastError: FieldRef<"Event", 'String'> } @@ -24223,6 +24576,30 @@ export namespace Prisma { limit?: number } + /** + * Event.notifications + */ + export type Event$notificationsArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + where?: UserNotificationWhereInput + orderBy?: UserNotificationOrderByWithRelationInput | UserNotificationOrderByWithRelationInput[] + cursor?: UserNotificationWhereUniqueInput + take?: number + skip?: number + distinct?: UserNotificationScalarFieldEnum | UserNotificationScalarFieldEnum[] + } + /** * Event without action */ @@ -24243,775 +24620,3023 @@ export namespace Prisma { /** - * Enums + * Model UserNotification */ - export const TransactionIsolationLevel: { - ReadUncommitted: 'ReadUncommitted', - ReadCommitted: 'ReadCommitted', - RepeatableRead: 'RepeatableRead', - Serializable: 'Serializable' - }; - - export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + export type AggregateUserNotification = { + _count: UserNotificationCountAggregateOutputType | null + _min: UserNotificationMinAggregateOutputType | null + _max: UserNotificationMaxAggregateOutputType | null + } + export type UserNotificationMinAggregateOutputType = { + id: string | null + recipientId: string | null + eventId: string | null + category: string | null + title: string | null + body: string | null + url: string | null + emailSentAt: Date | null + readAt: Date | null + createdAt: Date | null + } - export const UserScalarFieldEnum: { - id: 'id', - name: 'name', - email: 'email', - emailVerified: 'emailVerified', - image: 'image', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - systemRole: 'systemRole', - userKind: 'userKind', - isProfilePublic: 'isProfilePublic', - deletedAt: 'deletedAt', - bio: 'bio', - country: 'country', - socialLinks: 'socialLinks', - dob: 'dob', - affiliation: 'affiliation', - role: 'role', - banned: 'banned', - banReason: 'banReason', - banExpires: 'banExpires', - onboardedAt: 'onboardedAt', - legacyId: 'legacyId' - }; + export type UserNotificationMaxAggregateOutputType = { + id: string | null + recipientId: string | null + eventId: string | null + category: string | null + title: string | null + body: string | null + url: string | null + emailSentAt: Date | null + readAt: Date | null + createdAt: Date | null + } - export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] + export type UserNotificationCountAggregateOutputType = { + id: number + recipientId: number + eventId: number + category: number + title: number + body: number + url: number + emailSentAt: number + readAt: number + createdAt: number + _all: number + } - export const AccountScalarFieldEnum: { - id: 'id', - userId: 'userId', - accountId: 'accountId', - providerId: 'providerId', - accessToken: 'accessToken', - refreshToken: 'refreshToken', - accessTokenExpiresAt: 'accessTokenExpiresAt', - refreshTokenExpiresAt: 'refreshTokenExpiresAt', - scope: 'scope', - idToken: 'idToken', - password: 'password', - createdAt: 'createdAt', - updatedAt: 'updatedAt' - }; + export type UserNotificationMinAggregateInputType = { + id?: true + recipientId?: true + eventId?: true + category?: true + title?: true + body?: true + url?: true + emailSentAt?: true + readAt?: true + createdAt?: true + } - export type AccountScalarFieldEnum = (typeof AccountScalarFieldEnum)[keyof typeof AccountScalarFieldEnum] + export type UserNotificationMaxAggregateInputType = { + id?: true + recipientId?: true + eventId?: true + category?: true + title?: true + body?: true + url?: true + emailSentAt?: true + readAt?: true + createdAt?: true + } + export type UserNotificationCountAggregateInputType = { + id?: true + recipientId?: true + eventId?: true + category?: true + title?: true + body?: true + url?: true + emailSentAt?: true + readAt?: true + createdAt?: true + _all?: true + } - export const SessionScalarFieldEnum: { - id: 'id', - userId: 'userId', - expiresAt: 'expiresAt', - token: 'token', - ipAddress: 'ipAddress', - userAgent: 'userAgent', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - impersonatedBy: 'impersonatedBy' - }; + export type UserNotificationAggregateArgs = { + /** + * Filter which UserNotification to aggregate. + */ + where?: UserNotificationWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserNotifications to fetch. + */ + orderBy?: UserNotificationOrderByWithRelationInput | UserNotificationOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: UserNotificationWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserNotifications 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` UserNotifications. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned UserNotifications + **/ + _count?: true | UserNotificationCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: UserNotificationMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: UserNotificationMaxAggregateInputType + } - export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum] + export type GetUserNotificationAggregateType = { + [P in keyof T & keyof AggregateUserNotification]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } - export const VerificationScalarFieldEnum: { - id: 'id', - identifier: 'identifier', - value: 'value', - expiresAt: 'expiresAt', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - userId: 'userId' - }; - export type VerificationScalarFieldEnum = (typeof VerificationScalarFieldEnum)[keyof typeof VerificationScalarFieldEnum] + export type UserNotificationGroupByArgs = { + where?: UserNotificationWhereInput + orderBy?: UserNotificationOrderByWithAggregationInput | UserNotificationOrderByWithAggregationInput[] + by: UserNotificationScalarFieldEnum[] | UserNotificationScalarFieldEnum + having?: UserNotificationScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: UserNotificationCountAggregateInputType | true + _min?: UserNotificationMinAggregateInputType + _max?: UserNotificationMaxAggregateInputType + } - export const PasskeyScalarFieldEnum: { - id: 'id', - name: 'name', - publicKey: 'publicKey', - userId: 'userId', - credentialID: 'credentialID', - counter: 'counter', - deviceType: 'deviceType', - backedUp: 'backedUp', - transports: 'transports', - createdAt: 'createdAt', - aaguid: 'aaguid' - }; + export type UserNotificationGroupByOutputType = { + id: string + recipientId: string + eventId: string + category: string + title: string + body: string + url: string + emailSentAt: Date | null + readAt: Date | null + createdAt: Date + _count: UserNotificationCountAggregateOutputType | null + _min: UserNotificationMinAggregateOutputType | null + _max: UserNotificationMaxAggregateOutputType | null + } - export type PasskeyScalarFieldEnum = (typeof PasskeyScalarFieldEnum)[keyof typeof PasskeyScalarFieldEnum] + type GetUserNotificationGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof UserNotificationGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > - export const ModelScalarFieldEnum: { - id: 'id', - legacyId: 'legacyId', - latestVersionNumber: 'latestVersionNumber', - parentModelId: 'parentModelId', - parentVersionNumber: 'parentVersionNumber', - visibility: 'visibility', - isEndorsed: 'isEndorsed', - isLibraryModel: 'isLibraryModel', - viewCount: 'viewCount', - runCount: 'runCount', - downloadCount: 'downloadCount', - shareCount: 'shareCount', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - deletedAt: 'deletedAt' - }; + export type UserNotificationSelect = $Extensions.GetSelect<{ + id?: boolean + recipientId?: boolean + eventId?: boolean + category?: boolean + title?: boolean + body?: boolean + url?: boolean + emailSentAt?: boolean + readAt?: boolean + createdAt?: boolean + recipient?: boolean | UserDefaultArgs + event?: boolean | EventDefaultArgs + }, ExtArgs["result"]["userNotification"]> - export type ModelScalarFieldEnum = (typeof ModelScalarFieldEnum)[keyof typeof ModelScalarFieldEnum] + export type UserNotificationSelectCreateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + recipientId?: boolean + eventId?: boolean + category?: boolean + title?: boolean + body?: boolean + url?: boolean + emailSentAt?: boolean + readAt?: boolean + createdAt?: boolean + recipient?: boolean | UserDefaultArgs + event?: boolean | EventDefaultArgs + }, ExtArgs["result"]["userNotification"]> + export type UserNotificationSelectUpdateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + recipientId?: boolean + eventId?: boolean + category?: boolean + title?: boolean + body?: boolean + url?: boolean + emailSentAt?: boolean + readAt?: boolean + createdAt?: boolean + recipient?: boolean | UserDefaultArgs + event?: boolean | EventDefaultArgs + }, ExtArgs["result"]["userNotification"]> - export const ModelVersionScalarFieldEnum: { - modelId: 'modelId', - versionNumber: 'versionNumber', - title: 'title', - description: 'description', - changeSummary: 'changeSummary', - previewImageFileKey: 'previewImageFileKey', - netlogoFileKey: 'netlogoFileKey', - netlogoVersion: 'netlogoVersion', - infoTab: 'infoTab', - createdAt: 'createdAt', - finalizedAt: 'finalizedAt' - }; + export type UserNotificationSelectScalar = { + id?: boolean + recipientId?: boolean + eventId?: boolean + category?: boolean + title?: boolean + body?: boolean + url?: boolean + emailSentAt?: boolean + readAt?: boolean + createdAt?: boolean + } - export type ModelVersionScalarFieldEnum = (typeof ModelVersionScalarFieldEnum)[keyof typeof ModelVersionScalarFieldEnum] + export type UserNotificationOmit = $Extensions.GetOmit<"id" | "recipientId" | "eventId" | "category" | "title" | "body" | "url" | "emailSentAt" | "readAt" | "createdAt", ExtArgs["result"]["userNotification"]> + export type UserNotificationInclude = { + recipient?: boolean | UserDefaultArgs + event?: boolean | EventDefaultArgs + } + export type UserNotificationIncludeCreateManyAndReturn = { + recipient?: boolean | UserDefaultArgs + event?: boolean | EventDefaultArgs + } + export type UserNotificationIncludeUpdateManyAndReturn = { + recipient?: boolean | UserDefaultArgs + event?: boolean | EventDefaultArgs + } + export type $UserNotificationPayload = { + name: "UserNotification" + objects: { + recipient: Prisma.$UserPayload + event: Prisma.$EventPayload + } + scalars: $Extensions.GetPayloadResult<{ + id: string + recipientId: string + eventId: string + category: string + title: string + body: string + url: string + emailSentAt: Date | null + readAt: Date | null + createdAt: Date + }, ExtArgs["result"]["userNotification"]> + composites: {} + } - export const ModelVersionTagScalarFieldEnum: { - modelId: 'modelId', - versionNumber: 'versionNumber', - tagId: 'tagId', - createdAt: 'createdAt' - }; + type UserNotificationGetPayload = $Result.GetResult - export type ModelVersionTagScalarFieldEnum = (typeof ModelVersionTagScalarFieldEnum)[keyof typeof ModelVersionTagScalarFieldEnum] + type UserNotificationCountArgs = + Omit & { + select?: UserNotificationCountAggregateInputType | true + } + export interface UserNotificationDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['UserNotification'], meta: { name: 'UserNotification' } } + /** + * Find zero or one UserNotification that matches the filter. + * @param {UserNotificationFindUniqueArgs} args - Arguments to find a UserNotification + * @example + * // Get one UserNotification + * const userNotification = await prisma.userNotification.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: SelectSubset>): Prisma__UserNotificationClient<$Result.GetResult, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - export const ModelAdditionalFileScalarFieldEnum: { - id: 'id', - modelId: 'modelId', - taggedVersionNumber: 'taggedVersionNumber', - fileKey: 'fileKey', - kind: 'kind', - createdAt: 'createdAt' - }; + /** + * Find one UserNotification that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {UserNotificationFindUniqueOrThrowArgs} args - Arguments to find a UserNotification + * @example + * // Get one UserNotification + * const userNotification = await prisma.userNotification.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: SelectSubset>): Prisma__UserNotificationClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - export type ModelAdditionalFileScalarFieldEnum = (typeof ModelAdditionalFileScalarFieldEnum)[keyof typeof ModelAdditionalFileScalarFieldEnum] + /** + * Find the first UserNotification 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 {UserNotificationFindFirstArgs} args - Arguments to find a UserNotification + * @example + * // Get one UserNotification + * const userNotification = await prisma.userNotification.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: SelectSubset>): Prisma__UserNotificationClient<$Result.GetResult, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + /** + * Find the first UserNotification 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 {UserNotificationFindFirstOrThrowArgs} args - Arguments to find a UserNotification + * @example + * // Get one UserNotification + * const userNotification = await prisma.userNotification.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: SelectSubset>): Prisma__UserNotificationClient<$Result.GetResult, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - export const TagScalarFieldEnum: { - id: 'id', - legacyId: 'legacyId', - name: 'name', - displayName: 'displayName', - createdAt: 'createdAt' - }; + /** + * Find zero or more UserNotifications 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 {UserNotificationFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all UserNotifications + * const userNotifications = await prisma.userNotification.findMany() + * + * // Get first 10 UserNotifications + * const userNotifications = await prisma.userNotification.findMany({ take: 10 }) + * + * // Only select the `id` + * const userNotificationWithIdOnly = await prisma.userNotification.findMany({ select: { id: true } }) + * + */ + findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions>> - export type TagScalarFieldEnum = (typeof TagScalarFieldEnum)[keyof typeof TagScalarFieldEnum] + /** + * Create a UserNotification. + * @param {UserNotificationCreateArgs} args - Arguments to create a UserNotification. + * @example + * // Create one UserNotification + * const UserNotification = await prisma.userNotification.create({ + * data: { + * // ... data to create a UserNotification + * } + * }) + * + */ + create(args: SelectSubset>): Prisma__UserNotificationClient<$Result.GetResult, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + /** + * Create many UserNotifications. + * @param {UserNotificationCreateManyArgs} args - Arguments to create many UserNotifications. + * @example + * // Create many UserNotifications + * const userNotification = await prisma.userNotification.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: SelectSubset>): Prisma.PrismaPromise - export const ModelAuthorScalarFieldEnum: { - modelId: 'modelId', - userId: 'userId', - role: 'role', - createdAt: 'createdAt' - }; + /** + * Create many UserNotifications and returns the data saved in the database. + * @param {UserNotificationCreateManyAndReturnArgs} args - Arguments to create many UserNotifications. + * @example + * // Create many UserNotifications + * const userNotification = await prisma.userNotification.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many UserNotifications and only return the `id` + * const userNotificationWithIdOnly = await prisma.userNotification.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>> - export type ModelAuthorScalarFieldEnum = (typeof ModelAuthorScalarFieldEnum)[keyof typeof ModelAuthorScalarFieldEnum] - - - export const ModelPermissionScalarFieldEnum: { - id: 'id', - modelId: 'modelId', - granteeUserId: 'granteeUserId', - permissionLevel: 'permissionLevel', - createdAt: 'createdAt' - }; - - export type ModelPermissionScalarFieldEnum = (typeof ModelPermissionScalarFieldEnum)[keyof typeof ModelPermissionScalarFieldEnum] - - - export const ModelLikeScalarFieldEnum: { - modelId: 'modelId', - userId: 'userId', - createdAt: 'createdAt' - }; - - export type ModelLikeScalarFieldEnum = (typeof ModelLikeScalarFieldEnum)[keyof typeof ModelLikeScalarFieldEnum] - - - export const ModelInteractionScalarFieldEnum: { - id: 'id', - modelId: 'modelId', - versionNumber: 'versionNumber', - kind: 'kind', - userId: 'userId', - sessionId: 'sessionId', - ipHash: 'ipHash', - userAgent: 'userAgent', - referer: 'referer', - geo: 'geo', - cookie: 'cookie', - createdAt: 'createdAt' - }; - - export type ModelInteractionScalarFieldEnum = (typeof ModelInteractionScalarFieldEnum)[keyof typeof ModelInteractionScalarFieldEnum] - - - export const ModelDraftScalarFieldEnum: { - id: 'id', - userId: 'userId', - modelId: 'modelId', - schemaVersion: 'schemaVersion', - data: 'data', - createdAt: 'createdAt', - updatedAt: 'updatedAt' - }; - - export type ModelDraftScalarFieldEnum = (typeof ModelDraftScalarFieldEnum)[keyof typeof ModelDraftScalarFieldEnum] - - - export const ModelCommentScalarFieldEnum: { - id: 'id', - legacyId: 'legacyId', - parentId: 'parentId', - userId: 'userId', - modelId: 'modelId', - versionNumber: 'versionNumber', - content: 'content', - likesCount: 'likesCount', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - editedAt: 'editedAt', - deletedAt: 'deletedAt' - }; - - export type ModelCommentScalarFieldEnum = (typeof ModelCommentScalarFieldEnum)[keyof typeof ModelCommentScalarFieldEnum] - - - export const ModelCommentLikeScalarFieldEnum: { - modelCommentId: 'modelCommentId', - userId: 'userId', - createdAt: 'createdAt' - }; - - export type ModelCommentLikeScalarFieldEnum = (typeof ModelCommentLikeScalarFieldEnum)[keyof typeof ModelCommentLikeScalarFieldEnum] - - - export const EventScalarFieldEnum: { - id: 'id', - type: 'type', - actorId: 'actorId', - resourceType: 'resourceType', - resourceId: 'resourceId', - payload: 'payload', - createdAt: 'createdAt', - processedAt: 'processedAt' - }; - - export type EventScalarFieldEnum = (typeof EventScalarFieldEnum)[keyof typeof EventScalarFieldEnum] - - - export const SortOrder: { - asc: 'asc', - desc: 'desc' - }; - - export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] - - - export const NullableJsonNullValueInput: { - DbNull: typeof DbNull, - JsonNull: typeof JsonNull - }; - - export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] - - - export const JsonNullValueInput: { - JsonNull: typeof JsonNull - }; - - export type JsonNullValueInput = (typeof JsonNullValueInput)[keyof typeof JsonNullValueInput] - - - export const QueryMode: { - default: 'default', - insensitive: 'insensitive' - }; + /** + * Delete a UserNotification. + * @param {UserNotificationDeleteArgs} args - Arguments to delete one UserNotification. + * @example + * // Delete one UserNotification + * const UserNotification = await prisma.userNotification.delete({ + * where: { + * // ... filter to delete one UserNotification + * } + * }) + * + */ + delete(args: SelectSubset>): Prisma__UserNotificationClient<$Result.GetResult, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] + /** + * Update one UserNotification. + * @param {UserNotificationUpdateArgs} args - Arguments to update one UserNotification. + * @example + * // Update one UserNotification + * const userNotification = await prisma.userNotification.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: SelectSubset>): Prisma__UserNotificationClient<$Result.GetResult, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + /** + * Delete zero or more UserNotifications. + * @param {UserNotificationDeleteManyArgs} args - Arguments to filter UserNotifications to delete. + * @example + * // Delete a few UserNotifications + * const { count } = await prisma.userNotification.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: SelectSubset>): Prisma.PrismaPromise - export const JsonNullValueFilter: { - DbNull: typeof DbNull, - JsonNull: typeof JsonNull, - AnyNull: typeof AnyNull - }; + /** + * Update zero or more UserNotifications. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserNotificationUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many UserNotifications + * const userNotification = await prisma.userNotification.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: SelectSubset>): Prisma.PrismaPromise - export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] + /** + * Update zero or more UserNotifications and returns the data updated in the database. + * @param {UserNotificationUpdateManyAndReturnArgs} args - Arguments to update many UserNotifications. + * @example + * // Update many UserNotifications + * const userNotification = await prisma.userNotification.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more UserNotifications and only return the `id` + * const userNotificationWithIdOnly = await prisma.userNotification.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 UserNotification. + * @param {UserNotificationUpsertArgs} args - Arguments to update or create a UserNotification. + * @example + * // Update or create a UserNotification + * const userNotification = await prisma.userNotification.upsert({ + * create: { + * // ... data to create a UserNotification + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the UserNotification we want to update + * } + * }) + */ + upsert(args: SelectSubset>): Prisma__UserNotificationClient<$Result.GetResult, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - export const NullsOrder: { - first: 'first', - last: 'last' - }; - export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + /** + * Count the number of UserNotifications. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserNotificationCountArgs} args - Arguments to filter UserNotifications to count. + * @example + * // Count the number of UserNotifications + * const count = await prisma.userNotification.count({ + * where: { + * // ... the filter for the UserNotifications 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 UserNotification. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserNotificationAggregateArgs} 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 UserNotification. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserNotificationGroupByArgs} 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 UserNotificationGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: UserNotificationGroupByArgs['orderBy'] } + : { orderBy?: UserNotificationGroupByArgs['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 ? GetUserNotificationGroupByPayload : Prisma.PrismaPromise /** - * Field references + * Fields of the UserNotification model */ - + readonly fields: UserNotificationFieldRefs; + } /** - * Reference to a field of type 'String' + * The delegate class that acts as a "Promise-like" for UserNotification. + * 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 type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'> - + export interface Prisma__UserNotificationClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + recipient = {}>(args?: Subset>): Prisma__UserClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + event = {}>(args?: Subset>): Prisma__EventClient<$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 + } - /** - * Reference to a field of type 'String[]' - */ - export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'> - /** - * Reference to a field of type 'Boolean' + * Fields of the UserNotification model */ - export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'> + interface UserNotificationFieldRefs { + readonly id: FieldRef<"UserNotification", 'String'> + readonly recipientId: FieldRef<"UserNotification", 'String'> + readonly eventId: FieldRef<"UserNotification", 'String'> + readonly category: FieldRef<"UserNotification", 'String'> + readonly title: FieldRef<"UserNotification", 'String'> + readonly body: FieldRef<"UserNotification", 'String'> + readonly url: FieldRef<"UserNotification", 'String'> + readonly emailSentAt: FieldRef<"UserNotification", 'DateTime'> + readonly readAt: FieldRef<"UserNotification", 'DateTime'> + readonly createdAt: FieldRef<"UserNotification", 'DateTime'> + } - + // Custom InputTypes /** - * Reference to a field of type 'DateTime' + * UserNotification findUnique */ - export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'> - - + export type UserNotificationFindUniqueArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + /** + * Filter, which UserNotification to fetch. + */ + where: UserNotificationWhereUniqueInput + } /** - * Reference to a field of type 'DateTime[]' + * UserNotification findUniqueOrThrow */ - export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'> - - + export type UserNotificationFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + /** + * Filter, which UserNotification to fetch. + */ + where: UserNotificationWhereUniqueInput + } /** - * Reference to a field of type 'SystemRole' + * UserNotification findFirst */ - export type EnumSystemRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'SystemRole'> - - + export type UserNotificationFindFirstArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + /** + * Filter, which UserNotification to fetch. + */ + where?: UserNotificationWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserNotifications to fetch. + */ + orderBy?: UserNotificationOrderByWithRelationInput | UserNotificationOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for UserNotifications. + */ + cursor?: UserNotificationWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserNotifications 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` UserNotifications. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserNotifications. + */ + distinct?: UserNotificationScalarFieldEnum | UserNotificationScalarFieldEnum[] + } /** - * Reference to a field of type 'SystemRole[]' + * UserNotification findFirstOrThrow */ - export type ListEnumSystemRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'SystemRole[]'> - - + export type UserNotificationFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + /** + * Filter, which UserNotification to fetch. + */ + where?: UserNotificationWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserNotifications to fetch. + */ + orderBy?: UserNotificationOrderByWithRelationInput | UserNotificationOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for UserNotifications. + */ + cursor?: UserNotificationWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserNotifications 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` UserNotifications. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserNotifications. + */ + distinct?: UserNotificationScalarFieldEnum | UserNotificationScalarFieldEnum[] + } /** - * Reference to a field of type 'UserKind' + * UserNotification findMany */ - export type EnumUserKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'UserKind'> - - + export type UserNotificationFindManyArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + /** + * Filter, which UserNotifications to fetch. + */ + where?: UserNotificationWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserNotifications to fetch. + */ + orderBy?: UserNotificationOrderByWithRelationInput | UserNotificationOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing UserNotifications. + */ + cursor?: UserNotificationWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserNotifications 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` UserNotifications. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserNotifications. + */ + distinct?: UserNotificationScalarFieldEnum | UserNotificationScalarFieldEnum[] + } /** - * Reference to a field of type 'UserKind[]' + * UserNotification create */ - export type ListEnumUserKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'UserKind[]'> - - + export type UserNotificationCreateArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + /** + * The data needed to create a UserNotification. + */ + data: XOR + } /** - * Reference to a field of type 'Json' + * UserNotification createMany */ - export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'> - - + export type UserNotificationCreateManyArgs = { + /** + * The data used to create many UserNotifications. + */ + data: UserNotificationCreateManyInput | UserNotificationCreateManyInput[] + skipDuplicates?: boolean + } /** - * Reference to a field of type 'QueryMode' + * UserNotification createManyAndReturn */ - export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'> - - + export type UserNotificationCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelectCreateManyAndReturn | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * The data used to create many UserNotifications. + */ + data: UserNotificationCreateManyInput | UserNotificationCreateManyInput[] + skipDuplicates?: boolean + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationIncludeCreateManyAndReturn | null + } /** - * Reference to a field of type 'Int' + * UserNotification update */ - export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'> - - + export type UserNotificationUpdateArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + /** + * The data needed to update a UserNotification. + */ + data: XOR + /** + * Choose, which UserNotification to update. + */ + where: UserNotificationWhereUniqueInput + } /** - * Reference to a field of type 'Int[]' + * UserNotification updateMany */ - export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'> - - + export type UserNotificationUpdateManyArgs = { + /** + * The data used to update UserNotifications. + */ + data: XOR + /** + * Filter which UserNotifications to update + */ + where?: UserNotificationWhereInput + /** + * Limit how many UserNotifications to update. + */ + limit?: number + } /** - * Reference to a field of type 'ModelVisibility' + * UserNotification updateManyAndReturn */ - export type EnumModelVisibilityFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelVisibility'> - - + export type UserNotificationUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * The data used to update UserNotifications. + */ + data: XOR + /** + * Filter which UserNotifications to update + */ + where?: UserNotificationWhereInput + /** + * Limit how many UserNotifications to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationIncludeUpdateManyAndReturn | null + } /** - * Reference to a field of type 'ModelVisibility[]' + * UserNotification upsert */ - export type ListEnumModelVisibilityFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelVisibility[]'> - - + export type UserNotificationUpsertArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + /** + * The filter to search for the UserNotification to update in case it exists. + */ + where: UserNotificationWhereUniqueInput + /** + * In case the UserNotification found by the `where` argument doesn't exist, create a new UserNotification with this data. + */ + create: XOR + /** + * In case the UserNotification was found with the provided `where` argument, update it with this data. + */ + update: XOR + } /** - * Reference to a field of type 'ModelFileKind' + * UserNotification delete */ - export type EnumModelFileKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelFileKind'> - - + export type UserNotificationDeleteArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + /** + * Filter which UserNotification to delete. + */ + where: UserNotificationWhereUniqueInput + } /** - * Reference to a field of type 'ModelFileKind[]' + * UserNotification deleteMany */ - export type ListEnumModelFileKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelFileKind[]'> - - + export type UserNotificationDeleteManyArgs = { + /** + * Filter which UserNotifications to delete + */ + where?: UserNotificationWhereInput + /** + * Limit how many UserNotifications to delete. + */ + limit?: number + } /** - * Reference to a field of type 'AuthorRole' + * UserNotification without action */ - export type EnumAuthorRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'AuthorRole'> - + export type UserNotificationDefaultArgs = { + /** + * Select specific fields to fetch from the UserNotification + */ + select?: UserNotificationSelect | null + /** + * Omit specific fields from the UserNotification + */ + omit?: UserNotificationOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationInclude | null + } /** - * Reference to a field of type 'AuthorRole[]' + * Model UserNotificationPreference */ - export type ListEnumAuthorRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'AuthorRole[]'> - + export type AggregateUserNotificationPreference = { + _count: UserNotificationPreferenceCountAggregateOutputType | null + _min: UserNotificationPreferenceMinAggregateOutputType | null + _max: UserNotificationPreferenceMaxAggregateOutputType | null + } - /** - * Reference to a field of type 'PermissionLevel' - */ - export type EnumPermissionLevelFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'PermissionLevel'> - + export type UserNotificationPreferenceMinAggregateOutputType = { + id: string | null + userId: string | null + category: string | null + email: boolean | null + inApp: boolean | null + updatedAt: Date | null + } + export type UserNotificationPreferenceMaxAggregateOutputType = { + id: string | null + userId: string | null + category: string | null + email: boolean | null + inApp: boolean | null + updatedAt: Date | null + } - /** - * Reference to a field of type 'PermissionLevel[]' - */ - export type ListEnumPermissionLevelFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'PermissionLevel[]'> - + export type UserNotificationPreferenceCountAggregateOutputType = { + id: number + userId: number + category: number + email: number + inApp: number + updatedAt: number + _all: number + } - /** - * Reference to a field of type 'ModelInteractionKind' - */ - export type EnumModelInteractionKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelInteractionKind'> - + export type UserNotificationPreferenceMinAggregateInputType = { + id?: true + userId?: true + category?: true + email?: true + inApp?: true + updatedAt?: true + } + export type UserNotificationPreferenceMaxAggregateInputType = { + id?: true + userId?: true + category?: true + email?: true + inApp?: true + updatedAt?: true + } - /** - * Reference to a field of type 'ModelInteractionKind[]' - */ - export type ListEnumModelInteractionKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelInteractionKind[]'> - + export type UserNotificationPreferenceCountAggregateInputType = { + id?: true + userId?: true + category?: true + email?: true + inApp?: true + updatedAt?: true + _all?: true + } + export type UserNotificationPreferenceAggregateArgs = { + /** + * Filter which UserNotificationPreference to aggregate. + */ + where?: UserNotificationPreferenceWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserNotificationPreferences to fetch. + */ + orderBy?: UserNotificationPreferenceOrderByWithRelationInput | UserNotificationPreferenceOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: UserNotificationPreferenceWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserNotificationPreferences 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` UserNotificationPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned UserNotificationPreferences + **/ + _count?: true | UserNotificationPreferenceCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: UserNotificationPreferenceMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: UserNotificationPreferenceMaxAggregateInputType + } - /** - * Reference to a field of type 'Float' - */ - export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'> - + export type GetUserNotificationPreferenceAggregateType = { + [P in keyof T & keyof AggregateUserNotificationPreference]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } - /** - * Reference to a field of type 'Float[]' - */ - export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'> - - /** - * Deep Input Types - */ - export type UserWhereInput = { - AND?: UserWhereInput | UserWhereInput[] - OR?: UserWhereInput[] - NOT?: UserWhereInput | UserWhereInput[] - id?: StringFilter<"User"> | string - name?: StringNullableFilter<"User"> | string | null - email?: StringNullableFilter<"User"> | string | null - emailVerified?: BoolFilter<"User"> | boolean - image?: StringNullableFilter<"User"> | string | null - createdAt?: DateTimeFilter<"User"> | Date | string - updatedAt?: DateTimeFilter<"User"> | Date | string - systemRole?: EnumSystemRoleFilter<"User"> | $Enums.SystemRole - userKind?: EnumUserKindFilter<"User"> | $Enums.UserKind - isProfilePublic?: BoolFilter<"User"> | boolean - deletedAt?: DateTimeNullableFilter<"User"> | Date | string | null - bio?: StringNullableFilter<"User"> | string | null - country?: StringNullableFilter<"User"> | string | null - socialLinks?: JsonNullableFilter<"User"> - dob?: DateTimeNullableFilter<"User"> | Date | string | null - affiliation?: StringNullableFilter<"User"> | string | null - role?: StringNullableFilter<"User"> | string | null - banned?: BoolNullableFilter<"User"> | boolean | null - banReason?: StringNullableFilter<"User"> | string | null - banExpires?: DateTimeNullableFilter<"User"> | Date | string | null - onboardedAt?: DateTimeNullableFilter<"User"> | Date | string | null - legacyId?: IntNullableFilter<"User"> | number | null - accounts?: AccountListRelationFilter - sessions?: SessionListRelationFilter - verifications?: VerificationListRelationFilter - authoredModels?: ModelAuthorListRelationFilter - grantedPermissions?: ModelPermissionListRelationFilter - events?: EventListRelationFilter - modelLikes?: ModelLikeListRelationFilter - modelInteractions?: ModelInteractionListRelationFilter - modelDrafts?: ModelDraftListRelationFilter - comments?: ModelCommentListRelationFilter - commentLikes?: ModelCommentLikeListRelationFilter - passkeys?: PasskeyListRelationFilter + export type UserNotificationPreferenceGroupByArgs = { + where?: UserNotificationPreferenceWhereInput + orderBy?: UserNotificationPreferenceOrderByWithAggregationInput | UserNotificationPreferenceOrderByWithAggregationInput[] + by: UserNotificationPreferenceScalarFieldEnum[] | UserNotificationPreferenceScalarFieldEnum + having?: UserNotificationPreferenceScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: UserNotificationPreferenceCountAggregateInputType | true + _min?: UserNotificationPreferenceMinAggregateInputType + _max?: UserNotificationPreferenceMaxAggregateInputType } - export type UserOrderByWithRelationInput = { - id?: SortOrder - name?: SortOrderInput | SortOrder - email?: SortOrderInput | SortOrder - emailVerified?: SortOrder - image?: SortOrderInput | SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - systemRole?: SortOrder - userKind?: SortOrder - isProfilePublic?: SortOrder - deletedAt?: SortOrderInput | SortOrder - bio?: SortOrderInput | SortOrder - country?: SortOrderInput | SortOrder - socialLinks?: SortOrderInput | SortOrder - dob?: SortOrderInput | SortOrder - affiliation?: SortOrderInput | SortOrder - role?: SortOrderInput | SortOrder - banned?: SortOrderInput | SortOrder - banReason?: SortOrderInput | SortOrder - banExpires?: SortOrderInput | SortOrder - onboardedAt?: SortOrderInput | SortOrder - legacyId?: SortOrderInput | SortOrder - accounts?: AccountOrderByRelationAggregateInput - sessions?: SessionOrderByRelationAggregateInput - verifications?: VerificationOrderByRelationAggregateInput - authoredModels?: ModelAuthorOrderByRelationAggregateInput - grantedPermissions?: ModelPermissionOrderByRelationAggregateInput - events?: EventOrderByRelationAggregateInput - modelLikes?: ModelLikeOrderByRelationAggregateInput - modelInteractions?: ModelInteractionOrderByRelationAggregateInput - modelDrafts?: ModelDraftOrderByRelationAggregateInput - comments?: ModelCommentOrderByRelationAggregateInput - commentLikes?: ModelCommentLikeOrderByRelationAggregateInput - passkeys?: PasskeyOrderByRelationAggregateInput + export type UserNotificationPreferenceGroupByOutputType = { + id: string + userId: string + category: string + email: boolean + inApp: boolean + updatedAt: Date + _count: UserNotificationPreferenceCountAggregateOutputType | null + _min: UserNotificationPreferenceMinAggregateOutputType | null + _max: UserNotificationPreferenceMaxAggregateOutputType | null } - export type UserWhereUniqueInput = Prisma.AtLeast<{ - id?: string - email?: string - legacyId?: number - AND?: UserWhereInput | UserWhereInput[] - OR?: UserWhereInput[] - NOT?: UserWhereInput | UserWhereInput[] - name?: StringNullableFilter<"User"> | string | null - emailVerified?: BoolFilter<"User"> | boolean - image?: StringNullableFilter<"User"> | string | null - createdAt?: DateTimeFilter<"User"> | Date | string - updatedAt?: DateTimeFilter<"User"> | Date | string - systemRole?: EnumSystemRoleFilter<"User"> | $Enums.SystemRole - userKind?: EnumUserKindFilter<"User"> | $Enums.UserKind - isProfilePublic?: BoolFilter<"User"> | boolean - deletedAt?: DateTimeNullableFilter<"User"> | Date | string | null - bio?: StringNullableFilter<"User"> | string | null - country?: StringNullableFilter<"User"> | string | null - socialLinks?: JsonNullableFilter<"User"> - dob?: DateTimeNullableFilter<"User"> | Date | string | null - affiliation?: StringNullableFilter<"User"> | string | null - role?: StringNullableFilter<"User"> | string | null - banned?: BoolNullableFilter<"User"> | boolean | null - banReason?: StringNullableFilter<"User"> | string | null - banExpires?: DateTimeNullableFilter<"User"> | Date | string | null - onboardedAt?: DateTimeNullableFilter<"User"> | Date | string | null - accounts?: AccountListRelationFilter - sessions?: SessionListRelationFilter - verifications?: VerificationListRelationFilter - authoredModels?: ModelAuthorListRelationFilter - grantedPermissions?: ModelPermissionListRelationFilter - events?: EventListRelationFilter - modelLikes?: ModelLikeListRelationFilter - modelInteractions?: ModelInteractionListRelationFilter - modelDrafts?: ModelDraftListRelationFilter - comments?: ModelCommentListRelationFilter - commentLikes?: ModelCommentLikeListRelationFilter - passkeys?: PasskeyListRelationFilter - }, "id" | "email" | "legacyId"> + type GetUserNotificationPreferenceGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof UserNotificationPreferenceGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > - export type UserOrderByWithAggregationInput = { - id?: SortOrder - name?: SortOrderInput | SortOrder - email?: SortOrderInput | SortOrder - emailVerified?: SortOrder - image?: SortOrderInput | SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - systemRole?: SortOrder - userKind?: SortOrder - isProfilePublic?: SortOrder - deletedAt?: SortOrderInput | SortOrder - bio?: SortOrderInput | SortOrder - country?: SortOrderInput | SortOrder - socialLinks?: SortOrderInput | SortOrder - dob?: SortOrderInput | SortOrder - affiliation?: SortOrderInput | SortOrder - role?: SortOrderInput | SortOrder - banned?: SortOrderInput | SortOrder - banReason?: SortOrderInput | SortOrder - banExpires?: SortOrderInput | SortOrder - onboardedAt?: SortOrderInput | SortOrder - legacyId?: SortOrderInput | SortOrder - _count?: UserCountOrderByAggregateInput - _avg?: UserAvgOrderByAggregateInput - _max?: UserMaxOrderByAggregateInput - _min?: UserMinOrderByAggregateInput - _sum?: UserSumOrderByAggregateInput - } - export type UserScalarWhereWithAggregatesInput = { - AND?: UserScalarWhereWithAggregatesInput | UserScalarWhereWithAggregatesInput[] - OR?: UserScalarWhereWithAggregatesInput[] - NOT?: UserScalarWhereWithAggregatesInput | UserScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"User"> | string - name?: StringNullableWithAggregatesFilter<"User"> | string | null - email?: StringNullableWithAggregatesFilter<"User"> | string | null - emailVerified?: BoolWithAggregatesFilter<"User"> | boolean - image?: StringNullableWithAggregatesFilter<"User"> | string | null - createdAt?: DateTimeWithAggregatesFilter<"User"> | Date | string - updatedAt?: DateTimeWithAggregatesFilter<"User"> | Date | string - systemRole?: EnumSystemRoleWithAggregatesFilter<"User"> | $Enums.SystemRole - userKind?: EnumUserKindWithAggregatesFilter<"User"> | $Enums.UserKind - isProfilePublic?: BoolWithAggregatesFilter<"User"> | boolean - deletedAt?: DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null - bio?: StringNullableWithAggregatesFilter<"User"> | string | null - country?: StringNullableWithAggregatesFilter<"User"> | string | null - socialLinks?: JsonNullableWithAggregatesFilter<"User"> - dob?: DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null - affiliation?: StringNullableWithAggregatesFilter<"User"> | string | null - role?: StringNullableWithAggregatesFilter<"User"> | string | null - banned?: BoolNullableWithAggregatesFilter<"User"> | boolean | null - banReason?: StringNullableWithAggregatesFilter<"User"> | string | null - banExpires?: DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null - onboardedAt?: DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null - legacyId?: IntNullableWithAggregatesFilter<"User"> | number | null + export type UserNotificationPreferenceSelect = $Extensions.GetSelect<{ + id?: boolean + userId?: boolean + category?: boolean + email?: boolean + inApp?: boolean + updatedAt?: boolean + user?: boolean | UserDefaultArgs + }, ExtArgs["result"]["userNotificationPreference"]> + + export type UserNotificationPreferenceSelectCreateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + userId?: boolean + category?: boolean + email?: boolean + inApp?: boolean + updatedAt?: boolean + user?: boolean | UserDefaultArgs + }, ExtArgs["result"]["userNotificationPreference"]> + + export type UserNotificationPreferenceSelectUpdateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + userId?: boolean + category?: boolean + email?: boolean + inApp?: boolean + updatedAt?: boolean + user?: boolean | UserDefaultArgs + }, ExtArgs["result"]["userNotificationPreference"]> + + export type UserNotificationPreferenceSelectScalar = { + id?: boolean + userId?: boolean + category?: boolean + email?: boolean + inApp?: boolean + updatedAt?: boolean } - export type AccountWhereInput = { - AND?: AccountWhereInput | AccountWhereInput[] - OR?: AccountWhereInput[] - NOT?: AccountWhereInput | AccountWhereInput[] - id?: StringFilter<"Account"> | string - userId?: StringFilter<"Account"> | string - accountId?: StringFilter<"Account"> | string - providerId?: StringFilter<"Account"> | string - accessToken?: StringNullableFilter<"Account"> | string | null - refreshToken?: StringNullableFilter<"Account"> | string | null - accessTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null - refreshTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null - scope?: StringNullableFilter<"Account"> | string | null - idToken?: StringNullableFilter<"Account"> | string | null - password?: StringNullableFilter<"Account"> | string | null - createdAt?: DateTimeFilter<"Account"> | Date | string - updatedAt?: DateTimeFilter<"Account"> | Date | string - user?: XOR + export type UserNotificationPreferenceOmit = $Extensions.GetOmit<"id" | "userId" | "category" | "email" | "inApp" | "updatedAt", ExtArgs["result"]["userNotificationPreference"]> + export type UserNotificationPreferenceInclude = { + user?: boolean | UserDefaultArgs + } + export type UserNotificationPreferenceIncludeCreateManyAndReturn = { + user?: boolean | UserDefaultArgs + } + export type UserNotificationPreferenceIncludeUpdateManyAndReturn = { + user?: boolean | UserDefaultArgs } - export type AccountOrderByWithRelationInput = { - id?: SortOrder - userId?: SortOrder - accountId?: SortOrder - providerId?: SortOrder - accessToken?: SortOrderInput | SortOrder - refreshToken?: SortOrderInput | SortOrder - accessTokenExpiresAt?: SortOrderInput | SortOrder - refreshTokenExpiresAt?: SortOrderInput | SortOrder - scope?: SortOrderInput | SortOrder - idToken?: SortOrderInput | SortOrder - password?: SortOrderInput | SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - user?: UserOrderByWithRelationInput + export type $UserNotificationPreferencePayload = { + name: "UserNotificationPreference" + objects: { + user: Prisma.$UserPayload + } + scalars: $Extensions.GetPayloadResult<{ + id: string + userId: string + category: string + email: boolean + inApp: boolean + updatedAt: Date + }, ExtArgs["result"]["userNotificationPreference"]> + composites: {} } - export type AccountWhereUniqueInput = Prisma.AtLeast<{ - id?: string - AND?: AccountWhereInput | AccountWhereInput[] - OR?: AccountWhereInput[] - NOT?: AccountWhereInput | AccountWhereInput[] - userId?: StringFilter<"Account"> | string - accountId?: StringFilter<"Account"> | string - providerId?: StringFilter<"Account"> | string - accessToken?: StringNullableFilter<"Account"> | string | null - refreshToken?: StringNullableFilter<"Account"> | string | null - accessTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null - refreshTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null - scope?: StringNullableFilter<"Account"> | string | null - idToken?: StringNullableFilter<"Account"> | string | null - password?: StringNullableFilter<"Account"> | string | null - createdAt?: DateTimeFilter<"Account"> | Date | string - updatedAt?: DateTimeFilter<"Account"> | Date | string - user?: XOR - }, "id"> + type UserNotificationPreferenceGetPayload = $Result.GetResult - export type AccountOrderByWithAggregationInput = { - id?: SortOrder - userId?: SortOrder - accountId?: SortOrder - providerId?: SortOrder - accessToken?: SortOrderInput | SortOrder - refreshToken?: SortOrderInput | SortOrder - accessTokenExpiresAt?: SortOrderInput | SortOrder - refreshTokenExpiresAt?: SortOrderInput | SortOrder - scope?: SortOrderInput | SortOrder - idToken?: SortOrderInput | SortOrder - password?: SortOrderInput | SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - _count?: AccountCountOrderByAggregateInput - _max?: AccountMaxOrderByAggregateInput - _min?: AccountMinOrderByAggregateInput - } + type UserNotificationPreferenceCountArgs = + Omit & { + select?: UserNotificationPreferenceCountAggregateInputType | true + } - export type AccountScalarWhereWithAggregatesInput = { - AND?: AccountScalarWhereWithAggregatesInput | AccountScalarWhereWithAggregatesInput[] - OR?: AccountScalarWhereWithAggregatesInput[] - NOT?: AccountScalarWhereWithAggregatesInput | AccountScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"Account"> | string - userId?: StringWithAggregatesFilter<"Account"> | string - accountId?: StringWithAggregatesFilter<"Account"> | string - providerId?: StringWithAggregatesFilter<"Account"> | string - accessToken?: StringNullableWithAggregatesFilter<"Account"> | string | null + export interface UserNotificationPreferenceDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['UserNotificationPreference'], meta: { name: 'UserNotificationPreference' } } + /** + * Find zero or one UserNotificationPreference that matches the filter. + * @param {UserNotificationPreferenceFindUniqueArgs} args - Arguments to find a UserNotificationPreference + * @example + * // Get one UserNotificationPreference + * const userNotificationPreference = await prisma.userNotificationPreference.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: SelectSubset>): Prisma__UserNotificationPreferenceClient<$Result.GetResult, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one UserNotificationPreference that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {UserNotificationPreferenceFindUniqueOrThrowArgs} args - Arguments to find a UserNotificationPreference + * @example + * // Get one UserNotificationPreference + * const userNotificationPreference = await prisma.userNotificationPreference.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: SelectSubset>): Prisma__UserNotificationPreferenceClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first UserNotificationPreference 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 {UserNotificationPreferenceFindFirstArgs} args - Arguments to find a UserNotificationPreference + * @example + * // Get one UserNotificationPreference + * const userNotificationPreference = await prisma.userNotificationPreference.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: SelectSubset>): Prisma__UserNotificationPreferenceClient<$Result.GetResult, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first UserNotificationPreference 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 {UserNotificationPreferenceFindFirstOrThrowArgs} args - Arguments to find a UserNotificationPreference + * @example + * // Get one UserNotificationPreference + * const userNotificationPreference = await prisma.userNotificationPreference.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: SelectSubset>): Prisma__UserNotificationPreferenceClient<$Result.GetResult, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more UserNotificationPreferences 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 {UserNotificationPreferenceFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all UserNotificationPreferences + * const userNotificationPreferences = await prisma.userNotificationPreference.findMany() + * + * // Get first 10 UserNotificationPreferences + * const userNotificationPreferences = await prisma.userNotificationPreference.findMany({ take: 10 }) + * + * // Only select the `id` + * const userNotificationPreferenceWithIdOnly = await prisma.userNotificationPreference.findMany({ select: { id: true } }) + * + */ + findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions>> + + /** + * Create a UserNotificationPreference. + * @param {UserNotificationPreferenceCreateArgs} args - Arguments to create a UserNotificationPreference. + * @example + * // Create one UserNotificationPreference + * const UserNotificationPreference = await prisma.userNotificationPreference.create({ + * data: { + * // ... data to create a UserNotificationPreference + * } + * }) + * + */ + create(args: SelectSubset>): Prisma__UserNotificationPreferenceClient<$Result.GetResult, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many UserNotificationPreferences. + * @param {UserNotificationPreferenceCreateManyArgs} args - Arguments to create many UserNotificationPreferences. + * @example + * // Create many UserNotificationPreferences + * const userNotificationPreference = await prisma.userNotificationPreference.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Create many UserNotificationPreferences and returns the data saved in the database. + * @param {UserNotificationPreferenceCreateManyAndReturnArgs} args - Arguments to create many UserNotificationPreferences. + * @example + * // Create many UserNotificationPreferences + * const userNotificationPreference = await prisma.userNotificationPreference.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many UserNotificationPreferences and only return the `id` + * const userNotificationPreferenceWithIdOnly = await prisma.userNotificationPreference.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 UserNotificationPreference. + * @param {UserNotificationPreferenceDeleteArgs} args - Arguments to delete one UserNotificationPreference. + * @example + * // Delete one UserNotificationPreference + * const UserNotificationPreference = await prisma.userNotificationPreference.delete({ + * where: { + * // ... filter to delete one UserNotificationPreference + * } + * }) + * + */ + delete(args: SelectSubset>): Prisma__UserNotificationPreferenceClient<$Result.GetResult, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one UserNotificationPreference. + * @param {UserNotificationPreferenceUpdateArgs} args - Arguments to update one UserNotificationPreference. + * @example + * // Update one UserNotificationPreference + * const userNotificationPreference = await prisma.userNotificationPreference.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: SelectSubset>): Prisma__UserNotificationPreferenceClient<$Result.GetResult, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more UserNotificationPreferences. + * @param {UserNotificationPreferenceDeleteManyArgs} args - Arguments to filter UserNotificationPreferences to delete. + * @example + * // Delete a few UserNotificationPreferences + * const { count } = await prisma.userNotificationPreference.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more UserNotificationPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserNotificationPreferenceUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many UserNotificationPreferences + * const userNotificationPreference = await prisma.userNotificationPreference.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more UserNotificationPreferences and returns the data updated in the database. + * @param {UserNotificationPreferenceUpdateManyAndReturnArgs} args - Arguments to update many UserNotificationPreferences. + * @example + * // Update many UserNotificationPreferences + * const userNotificationPreference = await prisma.userNotificationPreference.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more UserNotificationPreferences and only return the `id` + * const userNotificationPreferenceWithIdOnly = await prisma.userNotificationPreference.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 UserNotificationPreference. + * @param {UserNotificationPreferenceUpsertArgs} args - Arguments to update or create a UserNotificationPreference. + * @example + * // Update or create a UserNotificationPreference + * const userNotificationPreference = await prisma.userNotificationPreference.upsert({ + * create: { + * // ... data to create a UserNotificationPreference + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the UserNotificationPreference we want to update + * } + * }) + */ + upsert(args: SelectSubset>): Prisma__UserNotificationPreferenceClient<$Result.GetResult, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of UserNotificationPreferences. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserNotificationPreferenceCountArgs} args - Arguments to filter UserNotificationPreferences to count. + * @example + * // Count the number of UserNotificationPreferences + * const count = await prisma.userNotificationPreference.count({ + * where: { + * // ... the filter for the UserNotificationPreferences 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 UserNotificationPreference. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserNotificationPreferenceAggregateArgs} 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 UserNotificationPreference. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserNotificationPreferenceGroupByArgs} 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 UserNotificationPreferenceGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: UserNotificationPreferenceGroupByArgs['orderBy'] } + : { orderBy?: UserNotificationPreferenceGroupByArgs['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 ? GetUserNotificationPreferenceGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the UserNotificationPreference model + */ + readonly fields: UserNotificationPreferenceFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for UserNotificationPreference. + * 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__UserNotificationPreferenceClient 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 UserNotificationPreference model + */ + interface UserNotificationPreferenceFieldRefs { + readonly id: FieldRef<"UserNotificationPreference", 'String'> + readonly userId: FieldRef<"UserNotificationPreference", 'String'> + readonly category: FieldRef<"UserNotificationPreference", 'String'> + readonly email: FieldRef<"UserNotificationPreference", 'Boolean'> + readonly inApp: FieldRef<"UserNotificationPreference", 'Boolean'> + readonly updatedAt: FieldRef<"UserNotificationPreference", 'DateTime'> + } + + + // Custom InputTypes + /** + * UserNotificationPreference findUnique + */ + export type UserNotificationPreferenceFindUniqueArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + /** + * Filter, which UserNotificationPreference to fetch. + */ + where: UserNotificationPreferenceWhereUniqueInput + } + + /** + * UserNotificationPreference findUniqueOrThrow + */ + export type UserNotificationPreferenceFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + /** + * Filter, which UserNotificationPreference to fetch. + */ + where: UserNotificationPreferenceWhereUniqueInput + } + + /** + * UserNotificationPreference findFirst + */ + export type UserNotificationPreferenceFindFirstArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + /** + * Filter, which UserNotificationPreference to fetch. + */ + where?: UserNotificationPreferenceWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserNotificationPreferences to fetch. + */ + orderBy?: UserNotificationPreferenceOrderByWithRelationInput | UserNotificationPreferenceOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for UserNotificationPreferences. + */ + cursor?: UserNotificationPreferenceWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserNotificationPreferences 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` UserNotificationPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserNotificationPreferences. + */ + distinct?: UserNotificationPreferenceScalarFieldEnum | UserNotificationPreferenceScalarFieldEnum[] + } + + /** + * UserNotificationPreference findFirstOrThrow + */ + export type UserNotificationPreferenceFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + /** + * Filter, which UserNotificationPreference to fetch. + */ + where?: UserNotificationPreferenceWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserNotificationPreferences to fetch. + */ + orderBy?: UserNotificationPreferenceOrderByWithRelationInput | UserNotificationPreferenceOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for UserNotificationPreferences. + */ + cursor?: UserNotificationPreferenceWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserNotificationPreferences 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` UserNotificationPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserNotificationPreferences. + */ + distinct?: UserNotificationPreferenceScalarFieldEnum | UserNotificationPreferenceScalarFieldEnum[] + } + + /** + * UserNotificationPreference findMany + */ + export type UserNotificationPreferenceFindManyArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + /** + * Filter, which UserNotificationPreferences to fetch. + */ + where?: UserNotificationPreferenceWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of UserNotificationPreferences to fetch. + */ + orderBy?: UserNotificationPreferenceOrderByWithRelationInput | UserNotificationPreferenceOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing UserNotificationPreferences. + */ + cursor?: UserNotificationPreferenceWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` UserNotificationPreferences 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` UserNotificationPreferences. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of UserNotificationPreferences. + */ + distinct?: UserNotificationPreferenceScalarFieldEnum | UserNotificationPreferenceScalarFieldEnum[] + } + + /** + * UserNotificationPreference create + */ + export type UserNotificationPreferenceCreateArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + /** + * The data needed to create a UserNotificationPreference. + */ + data: XOR + } + + /** + * UserNotificationPreference createMany + */ + export type UserNotificationPreferenceCreateManyArgs = { + /** + * The data used to create many UserNotificationPreferences. + */ + data: UserNotificationPreferenceCreateManyInput | UserNotificationPreferenceCreateManyInput[] + skipDuplicates?: boolean + } + + /** + * UserNotificationPreference createManyAndReturn + */ + export type UserNotificationPreferenceCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelectCreateManyAndReturn | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * The data used to create many UserNotificationPreferences. + */ + data: UserNotificationPreferenceCreateManyInput | UserNotificationPreferenceCreateManyInput[] + skipDuplicates?: boolean + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceIncludeCreateManyAndReturn | null + } + + /** + * UserNotificationPreference update + */ + export type UserNotificationPreferenceUpdateArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + /** + * The data needed to update a UserNotificationPreference. + */ + data: XOR + /** + * Choose, which UserNotificationPreference to update. + */ + where: UserNotificationPreferenceWhereUniqueInput + } + + /** + * UserNotificationPreference updateMany + */ + export type UserNotificationPreferenceUpdateManyArgs = { + /** + * The data used to update UserNotificationPreferences. + */ + data: XOR + /** + * Filter which UserNotificationPreferences to update + */ + where?: UserNotificationPreferenceWhereInput + /** + * Limit how many UserNotificationPreferences to update. + */ + limit?: number + } + + /** + * UserNotificationPreference updateManyAndReturn + */ + export type UserNotificationPreferenceUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * The data used to update UserNotificationPreferences. + */ + data: XOR + /** + * Filter which UserNotificationPreferences to update + */ + where?: UserNotificationPreferenceWhereInput + /** + * Limit how many UserNotificationPreferences to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceIncludeUpdateManyAndReturn | null + } + + /** + * UserNotificationPreference upsert + */ + export type UserNotificationPreferenceUpsertArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + /** + * The filter to search for the UserNotificationPreference to update in case it exists. + */ + where: UserNotificationPreferenceWhereUniqueInput + /** + * In case the UserNotificationPreference found by the `where` argument doesn't exist, create a new UserNotificationPreference with this data. + */ + create: XOR + /** + * In case the UserNotificationPreference was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + /** + * UserNotificationPreference delete + */ + export type UserNotificationPreferenceDeleteArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + /** + * Filter which UserNotificationPreference to delete. + */ + where: UserNotificationPreferenceWhereUniqueInput + } + + /** + * UserNotificationPreference deleteMany + */ + export type UserNotificationPreferenceDeleteManyArgs = { + /** + * Filter which UserNotificationPreferences to delete + */ + where?: UserNotificationPreferenceWhereInput + /** + * Limit how many UserNotificationPreferences to delete. + */ + limit?: number + } + + /** + * UserNotificationPreference without action + */ + export type UserNotificationPreferenceDefaultArgs = { + /** + * Select specific fields to fetch from the UserNotificationPreference + */ + select?: UserNotificationPreferenceSelect | null + /** + * Omit specific fields from the UserNotificationPreference + */ + omit?: UserNotificationPreferenceOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: UserNotificationPreferenceInclude | null + } + + + /** + * Enums + */ + + export const TransactionIsolationLevel: { + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' + }; + + export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + + + export const UserScalarFieldEnum: { + id: 'id', + name: 'name', + email: 'email', + emailVerified: 'emailVerified', + image: 'image', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + systemRole: 'systemRole', + userKind: 'userKind', + isProfilePublic: 'isProfilePublic', + deletedAt: 'deletedAt', + bio: 'bio', + country: 'country', + socialLinks: 'socialLinks', + dob: 'dob', + affiliation: 'affiliation', + role: 'role', + banned: 'banned', + banReason: 'banReason', + banExpires: 'banExpires', + onboardedAt: 'onboardedAt', + legacyId: 'legacyId' + }; + + export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] + + + export const AccountScalarFieldEnum: { + id: 'id', + userId: 'userId', + accountId: 'accountId', + providerId: 'providerId', + accessToken: 'accessToken', + refreshToken: 'refreshToken', + accessTokenExpiresAt: 'accessTokenExpiresAt', + refreshTokenExpiresAt: 'refreshTokenExpiresAt', + scope: 'scope', + idToken: 'idToken', + password: 'password', + createdAt: 'createdAt', + updatedAt: 'updatedAt' + }; + + export type AccountScalarFieldEnum = (typeof AccountScalarFieldEnum)[keyof typeof AccountScalarFieldEnum] + + + export const SessionScalarFieldEnum: { + id: 'id', + userId: 'userId', + expiresAt: 'expiresAt', + token: 'token', + ipAddress: 'ipAddress', + userAgent: 'userAgent', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + impersonatedBy: 'impersonatedBy' + }; + + export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum] + + + export const VerificationScalarFieldEnum: { + id: 'id', + identifier: 'identifier', + value: 'value', + expiresAt: 'expiresAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + userId: 'userId' + }; + + export type VerificationScalarFieldEnum = (typeof VerificationScalarFieldEnum)[keyof typeof VerificationScalarFieldEnum] + + + export const PasskeyScalarFieldEnum: { + id: 'id', + name: 'name', + publicKey: 'publicKey', + userId: 'userId', + credentialID: 'credentialID', + counter: 'counter', + deviceType: 'deviceType', + backedUp: 'backedUp', + transports: 'transports', + createdAt: 'createdAt', + aaguid: 'aaguid' + }; + + export type PasskeyScalarFieldEnum = (typeof PasskeyScalarFieldEnum)[keyof typeof PasskeyScalarFieldEnum] + + + export const ModelScalarFieldEnum: { + id: 'id', + legacyId: 'legacyId', + latestVersionNumber: 'latestVersionNumber', + parentModelId: 'parentModelId', + parentVersionNumber: 'parentVersionNumber', + visibility: 'visibility', + isEndorsed: 'isEndorsed', + isLibraryModel: 'isLibraryModel', + viewCount: 'viewCount', + runCount: 'runCount', + downloadCount: 'downloadCount', + shareCount: 'shareCount', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + deletedAt: 'deletedAt' + }; + + export type ModelScalarFieldEnum = (typeof ModelScalarFieldEnum)[keyof typeof ModelScalarFieldEnum] + + + export const ModelVersionScalarFieldEnum: { + modelId: 'modelId', + versionNumber: 'versionNumber', + title: 'title', + description: 'description', + changeSummary: 'changeSummary', + previewImageFileKey: 'previewImageFileKey', + netlogoFileKey: 'netlogoFileKey', + netlogoVersion: 'netlogoVersion', + infoTab: 'infoTab', + createdAt: 'createdAt', + finalizedAt: 'finalizedAt' + }; + + export type ModelVersionScalarFieldEnum = (typeof ModelVersionScalarFieldEnum)[keyof typeof ModelVersionScalarFieldEnum] + + + export const ModelVersionTagScalarFieldEnum: { + modelId: 'modelId', + versionNumber: 'versionNumber', + tagId: 'tagId', + createdAt: 'createdAt' + }; + + export type ModelVersionTagScalarFieldEnum = (typeof ModelVersionTagScalarFieldEnum)[keyof typeof ModelVersionTagScalarFieldEnum] + + + export const ModelAdditionalFileScalarFieldEnum: { + id: 'id', + modelId: 'modelId', + taggedVersionNumber: 'taggedVersionNumber', + fileKey: 'fileKey', + kind: 'kind', + createdAt: 'createdAt' + }; + + export type ModelAdditionalFileScalarFieldEnum = (typeof ModelAdditionalFileScalarFieldEnum)[keyof typeof ModelAdditionalFileScalarFieldEnum] + + + export const TagScalarFieldEnum: { + id: 'id', + legacyId: 'legacyId', + name: 'name', + displayName: 'displayName', + createdAt: 'createdAt' + }; + + export type TagScalarFieldEnum = (typeof TagScalarFieldEnum)[keyof typeof TagScalarFieldEnum] + + + export const ModelAuthorScalarFieldEnum: { + modelId: 'modelId', + userId: 'userId', + role: 'role', + createdAt: 'createdAt' + }; + + export type ModelAuthorScalarFieldEnum = (typeof ModelAuthorScalarFieldEnum)[keyof typeof ModelAuthorScalarFieldEnum] + + + export const ModelPermissionScalarFieldEnum: { + id: 'id', + modelId: 'modelId', + granteeUserId: 'granteeUserId', + permissionLevel: 'permissionLevel', + createdAt: 'createdAt' + }; + + export type ModelPermissionScalarFieldEnum = (typeof ModelPermissionScalarFieldEnum)[keyof typeof ModelPermissionScalarFieldEnum] + + + export const ModelLikeScalarFieldEnum: { + modelId: 'modelId', + userId: 'userId', + createdAt: 'createdAt' + }; + + export type ModelLikeScalarFieldEnum = (typeof ModelLikeScalarFieldEnum)[keyof typeof ModelLikeScalarFieldEnum] + + + export const ModelInteractionScalarFieldEnum: { + id: 'id', + modelId: 'modelId', + versionNumber: 'versionNumber', + kind: 'kind', + userId: 'userId', + sessionId: 'sessionId', + ipHash: 'ipHash', + userAgent: 'userAgent', + referer: 'referer', + geo: 'geo', + cookie: 'cookie', + createdAt: 'createdAt' + }; + + export type ModelInteractionScalarFieldEnum = (typeof ModelInteractionScalarFieldEnum)[keyof typeof ModelInteractionScalarFieldEnum] + + + export const ModelDraftScalarFieldEnum: { + id: 'id', + userId: 'userId', + modelId: 'modelId', + schemaVersion: 'schemaVersion', + data: 'data', + createdAt: 'createdAt', + updatedAt: 'updatedAt' + }; + + export type ModelDraftScalarFieldEnum = (typeof ModelDraftScalarFieldEnum)[keyof typeof ModelDraftScalarFieldEnum] + + + export const ModelCommentScalarFieldEnum: { + id: 'id', + legacyId: 'legacyId', + parentId: 'parentId', + userId: 'userId', + modelId: 'modelId', + versionNumber: 'versionNumber', + content: 'content', + likesCount: 'likesCount', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + editedAt: 'editedAt', + deletedAt: 'deletedAt' + }; + + export type ModelCommentScalarFieldEnum = (typeof ModelCommentScalarFieldEnum)[keyof typeof ModelCommentScalarFieldEnum] + + + export const ModelCommentLikeScalarFieldEnum: { + modelCommentId: 'modelCommentId', + userId: 'userId', + createdAt: 'createdAt' + }; + + export type ModelCommentLikeScalarFieldEnum = (typeof ModelCommentLikeScalarFieldEnum)[keyof typeof ModelCommentLikeScalarFieldEnum] + + + export const EventScalarFieldEnum: { + id: 'id', + type: 'type', + actorId: 'actorId', + resourceType: 'resourceType', + resourceId: 'resourceId', + payload: 'payload', + createdAt: 'createdAt', + processedAt: 'processedAt', + attempts: 'attempts', + lastError: 'lastError' + }; + + export type EventScalarFieldEnum = (typeof EventScalarFieldEnum)[keyof typeof EventScalarFieldEnum] + + + export const UserNotificationScalarFieldEnum: { + id: 'id', + recipientId: 'recipientId', + eventId: 'eventId', + category: 'category', + title: 'title', + body: 'body', + url: 'url', + emailSentAt: 'emailSentAt', + readAt: 'readAt', + createdAt: 'createdAt' + }; + + export type UserNotificationScalarFieldEnum = (typeof UserNotificationScalarFieldEnum)[keyof typeof UserNotificationScalarFieldEnum] + + + export const UserNotificationPreferenceScalarFieldEnum: { + id: 'id', + userId: 'userId', + category: 'category', + email: 'email', + inApp: 'inApp', + updatedAt: 'updatedAt' + }; + + export type UserNotificationPreferenceScalarFieldEnum = (typeof UserNotificationPreferenceScalarFieldEnum)[keyof typeof UserNotificationPreferenceScalarFieldEnum] + + + export const SortOrder: { + asc: 'asc', + desc: 'desc' + }; + + export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] + + + export const NullableJsonNullValueInput: { + DbNull: typeof DbNull, + JsonNull: typeof JsonNull + }; + + export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] + + + export const JsonNullValueInput: { + JsonNull: typeof JsonNull + }; + + export type JsonNullValueInput = (typeof JsonNullValueInput)[keyof typeof JsonNullValueInput] + + + export const QueryMode: { + default: 'default', + insensitive: 'insensitive' + }; + + export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] + + + export const JsonNullValueFilter: { + DbNull: typeof DbNull, + JsonNull: typeof JsonNull, + AnyNull: typeof AnyNull + }; + + export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] + + + 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 'String[]' + */ + export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'> + + + + /** + * Reference to a field of type 'Boolean' + */ + export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'> + + + + /** + * Reference to a field of type 'DateTime' + */ + export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'> + + + + /** + * Reference to a field of type 'DateTime[]' + */ + export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'> + + + + /** + * Reference to a field of type 'SystemRole' + */ + export type EnumSystemRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'SystemRole'> + + + + /** + * Reference to a field of type 'SystemRole[]' + */ + export type ListEnumSystemRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'SystemRole[]'> + + + + /** + * Reference to a field of type 'UserKind' + */ + export type EnumUserKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'UserKind'> + + + + /** + * Reference to a field of type 'UserKind[]' + */ + export type ListEnumUserKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'UserKind[]'> + + + + /** + * Reference to a field of type 'Json' + */ + export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'> + + + + /** + * Reference to a field of type 'QueryMode' + */ + export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'> + + + + /** + * Reference to a field of type 'Int' + */ + export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'> + + + + /** + * Reference to a field of type 'Int[]' + */ + export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'> + + + + /** + * Reference to a field of type 'ModelVisibility' + */ + export type EnumModelVisibilityFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelVisibility'> + + + + /** + * Reference to a field of type 'ModelVisibility[]' + */ + export type ListEnumModelVisibilityFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelVisibility[]'> + + + + /** + * Reference to a field of type 'ModelFileKind' + */ + export type EnumModelFileKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelFileKind'> + + + + /** + * Reference to a field of type 'ModelFileKind[]' + */ + export type ListEnumModelFileKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelFileKind[]'> + + + + /** + * Reference to a field of type 'AuthorRole' + */ + export type EnumAuthorRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'AuthorRole'> + + + + /** + * Reference to a field of type 'AuthorRole[]' + */ + export type ListEnumAuthorRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'AuthorRole[]'> + + + + /** + * Reference to a field of type 'PermissionLevel' + */ + export type EnumPermissionLevelFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'PermissionLevel'> + + + + /** + * Reference to a field of type 'PermissionLevel[]' + */ + export type ListEnumPermissionLevelFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'PermissionLevel[]'> + + + + /** + * Reference to a field of type 'ModelInteractionKind' + */ + export type EnumModelInteractionKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelInteractionKind'> + + + + /** + * Reference to a field of type 'ModelInteractionKind[]' + */ + export type ListEnumModelInteractionKindFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ModelInteractionKind[]'> + + + + /** + * Reference to a field of type 'Float' + */ + export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'> + + + + /** + * Reference to a field of type 'Float[]' + */ + export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'> + + /** + * Deep Input Types + */ + + + export type UserWhereInput = { + AND?: UserWhereInput | UserWhereInput[] + OR?: UserWhereInput[] + NOT?: UserWhereInput | UserWhereInput[] + id?: StringFilter<"User"> | string + name?: StringNullableFilter<"User"> | string | null + email?: StringNullableFilter<"User"> | string | null + emailVerified?: BoolFilter<"User"> | boolean + image?: StringNullableFilter<"User"> | string | null + createdAt?: DateTimeFilter<"User"> | Date | string + updatedAt?: DateTimeFilter<"User"> | Date | string + systemRole?: EnumSystemRoleFilter<"User"> | $Enums.SystemRole + userKind?: EnumUserKindFilter<"User"> | $Enums.UserKind + isProfilePublic?: BoolFilter<"User"> | boolean + deletedAt?: DateTimeNullableFilter<"User"> | Date | string | null + bio?: StringNullableFilter<"User"> | string | null + country?: StringNullableFilter<"User"> | string | null + socialLinks?: JsonNullableFilter<"User"> + dob?: DateTimeNullableFilter<"User"> | Date | string | null + affiliation?: StringNullableFilter<"User"> | string | null + role?: StringNullableFilter<"User"> | string | null + banned?: BoolNullableFilter<"User"> | boolean | null + banReason?: StringNullableFilter<"User"> | string | null + banExpires?: DateTimeNullableFilter<"User"> | Date | string | null + onboardedAt?: DateTimeNullableFilter<"User"> | Date | string | null + legacyId?: IntNullableFilter<"User"> | number | null + accounts?: AccountListRelationFilter + sessions?: SessionListRelationFilter + verifications?: VerificationListRelationFilter + authoredModels?: ModelAuthorListRelationFilter + grantedPermissions?: ModelPermissionListRelationFilter + events?: EventListRelationFilter + modelLikes?: ModelLikeListRelationFilter + modelInteractions?: ModelInteractionListRelationFilter + modelDrafts?: ModelDraftListRelationFilter + comments?: ModelCommentListRelationFilter + commentLikes?: ModelCommentLikeListRelationFilter + notifications?: UserNotificationListRelationFilter + notificationPreferences?: UserNotificationPreferenceListRelationFilter + passkeys?: PasskeyListRelationFilter + } + + export type UserOrderByWithRelationInput = { + id?: SortOrder + name?: SortOrderInput | SortOrder + email?: SortOrderInput | SortOrder + emailVerified?: SortOrder + image?: SortOrderInput | SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + systemRole?: SortOrder + userKind?: SortOrder + isProfilePublic?: SortOrder + deletedAt?: SortOrderInput | SortOrder + bio?: SortOrderInput | SortOrder + country?: SortOrderInput | SortOrder + socialLinks?: SortOrderInput | SortOrder + dob?: SortOrderInput | SortOrder + affiliation?: SortOrderInput | SortOrder + role?: SortOrderInput | SortOrder + banned?: SortOrderInput | SortOrder + banReason?: SortOrderInput | SortOrder + banExpires?: SortOrderInput | SortOrder + onboardedAt?: SortOrderInput | SortOrder + legacyId?: SortOrderInput | SortOrder + accounts?: AccountOrderByRelationAggregateInput + sessions?: SessionOrderByRelationAggregateInput + verifications?: VerificationOrderByRelationAggregateInput + authoredModels?: ModelAuthorOrderByRelationAggregateInput + grantedPermissions?: ModelPermissionOrderByRelationAggregateInput + events?: EventOrderByRelationAggregateInput + modelLikes?: ModelLikeOrderByRelationAggregateInput + modelInteractions?: ModelInteractionOrderByRelationAggregateInput + modelDrafts?: ModelDraftOrderByRelationAggregateInput + comments?: ModelCommentOrderByRelationAggregateInput + commentLikes?: ModelCommentLikeOrderByRelationAggregateInput + notifications?: UserNotificationOrderByRelationAggregateInput + notificationPreferences?: UserNotificationPreferenceOrderByRelationAggregateInput + passkeys?: PasskeyOrderByRelationAggregateInput + } + + export type UserWhereUniqueInput = Prisma.AtLeast<{ + id?: string + email?: string + legacyId?: number + AND?: UserWhereInput | UserWhereInput[] + OR?: UserWhereInput[] + NOT?: UserWhereInput | UserWhereInput[] + name?: StringNullableFilter<"User"> | string | null + emailVerified?: BoolFilter<"User"> | boolean + image?: StringNullableFilter<"User"> | string | null + createdAt?: DateTimeFilter<"User"> | Date | string + updatedAt?: DateTimeFilter<"User"> | Date | string + systemRole?: EnumSystemRoleFilter<"User"> | $Enums.SystemRole + userKind?: EnumUserKindFilter<"User"> | $Enums.UserKind + isProfilePublic?: BoolFilter<"User"> | boolean + deletedAt?: DateTimeNullableFilter<"User"> | Date | string | null + bio?: StringNullableFilter<"User"> | string | null + country?: StringNullableFilter<"User"> | string | null + socialLinks?: JsonNullableFilter<"User"> + dob?: DateTimeNullableFilter<"User"> | Date | string | null + affiliation?: StringNullableFilter<"User"> | string | null + role?: StringNullableFilter<"User"> | string | null + banned?: BoolNullableFilter<"User"> | boolean | null + banReason?: StringNullableFilter<"User"> | string | null + banExpires?: DateTimeNullableFilter<"User"> | Date | string | null + onboardedAt?: DateTimeNullableFilter<"User"> | Date | string | null + accounts?: AccountListRelationFilter + sessions?: SessionListRelationFilter + verifications?: VerificationListRelationFilter + authoredModels?: ModelAuthorListRelationFilter + grantedPermissions?: ModelPermissionListRelationFilter + events?: EventListRelationFilter + modelLikes?: ModelLikeListRelationFilter + modelInteractions?: ModelInteractionListRelationFilter + modelDrafts?: ModelDraftListRelationFilter + comments?: ModelCommentListRelationFilter + commentLikes?: ModelCommentLikeListRelationFilter + notifications?: UserNotificationListRelationFilter + notificationPreferences?: UserNotificationPreferenceListRelationFilter + passkeys?: PasskeyListRelationFilter + }, "id" | "email" | "legacyId"> + + export type UserOrderByWithAggregationInput = { + id?: SortOrder + name?: SortOrderInput | SortOrder + email?: SortOrderInput | SortOrder + emailVerified?: SortOrder + image?: SortOrderInput | SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + systemRole?: SortOrder + userKind?: SortOrder + isProfilePublic?: SortOrder + deletedAt?: SortOrderInput | SortOrder + bio?: SortOrderInput | SortOrder + country?: SortOrderInput | SortOrder + socialLinks?: SortOrderInput | SortOrder + dob?: SortOrderInput | SortOrder + affiliation?: SortOrderInput | SortOrder + role?: SortOrderInput | SortOrder + banned?: SortOrderInput | SortOrder + banReason?: SortOrderInput | SortOrder + banExpires?: SortOrderInput | SortOrder + onboardedAt?: SortOrderInput | SortOrder + legacyId?: SortOrderInput | SortOrder + _count?: UserCountOrderByAggregateInput + _avg?: UserAvgOrderByAggregateInput + _max?: UserMaxOrderByAggregateInput + _min?: UserMinOrderByAggregateInput + _sum?: UserSumOrderByAggregateInput + } + + export type UserScalarWhereWithAggregatesInput = { + AND?: UserScalarWhereWithAggregatesInput | UserScalarWhereWithAggregatesInput[] + OR?: UserScalarWhereWithAggregatesInput[] + NOT?: UserScalarWhereWithAggregatesInput | UserScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"User"> | string + name?: StringNullableWithAggregatesFilter<"User"> | string | null + email?: StringNullableWithAggregatesFilter<"User"> | string | null + emailVerified?: BoolWithAggregatesFilter<"User"> | boolean + image?: StringNullableWithAggregatesFilter<"User"> | string | null + createdAt?: DateTimeWithAggregatesFilter<"User"> | Date | string + updatedAt?: DateTimeWithAggregatesFilter<"User"> | Date | string + systemRole?: EnumSystemRoleWithAggregatesFilter<"User"> | $Enums.SystemRole + userKind?: EnumUserKindWithAggregatesFilter<"User"> | $Enums.UserKind + isProfilePublic?: BoolWithAggregatesFilter<"User"> | boolean + deletedAt?: DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null + bio?: StringNullableWithAggregatesFilter<"User"> | string | null + country?: StringNullableWithAggregatesFilter<"User"> | string | null + socialLinks?: JsonNullableWithAggregatesFilter<"User"> + dob?: DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null + affiliation?: StringNullableWithAggregatesFilter<"User"> | string | null + role?: StringNullableWithAggregatesFilter<"User"> | string | null + banned?: BoolNullableWithAggregatesFilter<"User"> | boolean | null + banReason?: StringNullableWithAggregatesFilter<"User"> | string | null + banExpires?: DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null + onboardedAt?: DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null + legacyId?: IntNullableWithAggregatesFilter<"User"> | number | null + } + + export type AccountWhereInput = { + AND?: AccountWhereInput | AccountWhereInput[] + OR?: AccountWhereInput[] + NOT?: AccountWhereInput | AccountWhereInput[] + id?: StringFilter<"Account"> | string + userId?: StringFilter<"Account"> | string + accountId?: StringFilter<"Account"> | string + providerId?: StringFilter<"Account"> | string + accessToken?: StringNullableFilter<"Account"> | string | null + refreshToken?: StringNullableFilter<"Account"> | string | null + accessTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null + refreshTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null + scope?: StringNullableFilter<"Account"> | string | null + idToken?: StringNullableFilter<"Account"> | string | null + password?: StringNullableFilter<"Account"> | string | null + createdAt?: DateTimeFilter<"Account"> | Date | string + updatedAt?: DateTimeFilter<"Account"> | Date | string + user?: XOR + } + + export type AccountOrderByWithRelationInput = { + id?: SortOrder + userId?: SortOrder + accountId?: SortOrder + providerId?: SortOrder + accessToken?: SortOrderInput | SortOrder + refreshToken?: SortOrderInput | SortOrder + accessTokenExpiresAt?: SortOrderInput | SortOrder + refreshTokenExpiresAt?: SortOrderInput | SortOrder + scope?: SortOrderInput | SortOrder + idToken?: SortOrderInput | SortOrder + password?: SortOrderInput | SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + user?: UserOrderByWithRelationInput + } + + export type AccountWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: AccountWhereInput | AccountWhereInput[] + OR?: AccountWhereInput[] + NOT?: AccountWhereInput | AccountWhereInput[] + userId?: StringFilter<"Account"> | string + accountId?: StringFilter<"Account"> | string + providerId?: StringFilter<"Account"> | string + accessToken?: StringNullableFilter<"Account"> | string | null + refreshToken?: StringNullableFilter<"Account"> | string | null + accessTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null + refreshTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null + scope?: StringNullableFilter<"Account"> | string | null + idToken?: StringNullableFilter<"Account"> | string | null + password?: StringNullableFilter<"Account"> | string | null + createdAt?: DateTimeFilter<"Account"> | Date | string + updatedAt?: DateTimeFilter<"Account"> | Date | string + user?: XOR + }, "id"> + + export type AccountOrderByWithAggregationInput = { + id?: SortOrder + userId?: SortOrder + accountId?: SortOrder + providerId?: SortOrder + accessToken?: SortOrderInput | SortOrder + refreshToken?: SortOrderInput | SortOrder + accessTokenExpiresAt?: SortOrderInput | SortOrder + refreshTokenExpiresAt?: SortOrderInput | SortOrder + scope?: SortOrderInput | SortOrder + idToken?: SortOrderInput | SortOrder + password?: SortOrderInput | SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + _count?: AccountCountOrderByAggregateInput + _max?: AccountMaxOrderByAggregateInput + _min?: AccountMinOrderByAggregateInput + } + + export type AccountScalarWhereWithAggregatesInput = { + AND?: AccountScalarWhereWithAggregatesInput | AccountScalarWhereWithAggregatesInput[] + OR?: AccountScalarWhereWithAggregatesInput[] + NOT?: AccountScalarWhereWithAggregatesInput | AccountScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"Account"> | string + userId?: StringWithAggregatesFilter<"Account"> | string + accountId?: StringWithAggregatesFilter<"Account"> | string + providerId?: StringWithAggregatesFilter<"Account"> | string + accessToken?: StringNullableWithAggregatesFilter<"Account"> | string | null refreshToken?: StringNullableWithAggregatesFilter<"Account"> | string | null accessTokenExpiresAt?: DateTimeNullableWithAggregatesFilter<"Account"> | Date | string | null refreshTokenExpiresAt?: DateTimeNullableWithAggregatesFilter<"Account"> | Date | string | null @@ -25022,2835 +27647,4354 @@ export namespace Prisma { updatedAt?: DateTimeWithAggregatesFilter<"Account"> | 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 - token?: StringFilter<"Session"> | string - ipAddress?: StringNullableFilter<"Session"> | string | null - userAgent?: StringNullableFilter<"Session"> | string | null - createdAt?: DateTimeFilter<"Session"> | Date | string - updatedAt?: DateTimeFilter<"Session"> | Date | string - impersonatedBy?: StringNullableFilter<"Session"> | string | null - user?: XOR + export type SessionWhereInput = { + AND?: SessionWhereInput | SessionWhereInput[] + OR?: SessionWhereInput[] + NOT?: SessionWhereInput | SessionWhereInput[] + id?: StringFilter<"Session"> | string + userId?: StringFilter<"Session"> | string + expiresAt?: DateTimeFilter<"Session"> | Date | string + token?: StringFilter<"Session"> | string + ipAddress?: StringNullableFilter<"Session"> | string | null + userAgent?: StringNullableFilter<"Session"> | string | null + createdAt?: DateTimeFilter<"Session"> | Date | string + updatedAt?: DateTimeFilter<"Session"> | Date | string + impersonatedBy?: StringNullableFilter<"Session"> | string | null + user?: XOR + } + + export type SessionOrderByWithRelationInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + token?: SortOrder + ipAddress?: SortOrderInput | SortOrder + userAgent?: SortOrderInput | SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + impersonatedBy?: SortOrderInput | SortOrder + user?: UserOrderByWithRelationInput + } + + export type SessionWhereUniqueInput = Prisma.AtLeast<{ + id?: string + token?: string + AND?: SessionWhereInput | SessionWhereInput[] + OR?: SessionWhereInput[] + NOT?: SessionWhereInput | SessionWhereInput[] + userId?: StringFilter<"Session"> | string + expiresAt?: DateTimeFilter<"Session"> | Date | string + ipAddress?: StringNullableFilter<"Session"> | string | null + userAgent?: StringNullableFilter<"Session"> | string | null + createdAt?: DateTimeFilter<"Session"> | Date | string + updatedAt?: DateTimeFilter<"Session"> | Date | string + impersonatedBy?: StringNullableFilter<"Session"> | string | null + user?: XOR + }, "id" | "token"> + + export type SessionOrderByWithAggregationInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + token?: SortOrder + ipAddress?: SortOrderInput | SortOrder + userAgent?: SortOrderInput | SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + impersonatedBy?: SortOrderInput | 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 + token?: StringWithAggregatesFilter<"Session"> | string + ipAddress?: StringNullableWithAggregatesFilter<"Session"> | string | null + userAgent?: StringNullableWithAggregatesFilter<"Session"> | string | null + createdAt?: DateTimeWithAggregatesFilter<"Session"> | Date | string + updatedAt?: DateTimeWithAggregatesFilter<"Session"> | Date | string + impersonatedBy?: StringNullableWithAggregatesFilter<"Session"> | string | null + } + + export type VerificationWhereInput = { + AND?: VerificationWhereInput | VerificationWhereInput[] + OR?: VerificationWhereInput[] + NOT?: VerificationWhereInput | VerificationWhereInput[] + id?: StringFilter<"Verification"> | string + identifier?: StringFilter<"Verification"> | string + value?: StringFilter<"Verification"> | string + expiresAt?: DateTimeFilter<"Verification"> | Date | string + createdAt?: DateTimeNullableFilter<"Verification"> | Date | string | null + updatedAt?: DateTimeNullableFilter<"Verification"> | Date | string | null + userId?: StringNullableFilter<"Verification"> | string | null + user?: XOR | null + } + + export type VerificationOrderByWithRelationInput = { + id?: SortOrder + identifier?: SortOrder + value?: SortOrder + expiresAt?: SortOrder + createdAt?: SortOrderInput | SortOrder + updatedAt?: SortOrderInput | SortOrder + userId?: SortOrderInput | SortOrder + user?: UserOrderByWithRelationInput + } + + export type VerificationWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: VerificationWhereInput | VerificationWhereInput[] + OR?: VerificationWhereInput[] + NOT?: VerificationWhereInput | VerificationWhereInput[] + identifier?: StringFilter<"Verification"> | string + value?: StringFilter<"Verification"> | string + expiresAt?: DateTimeFilter<"Verification"> | Date | string + createdAt?: DateTimeNullableFilter<"Verification"> | Date | string | null + updatedAt?: DateTimeNullableFilter<"Verification"> | Date | string | null + userId?: StringNullableFilter<"Verification"> | string | null + user?: XOR | null + }, "id"> + + export type VerificationOrderByWithAggregationInput = { + id?: SortOrder + identifier?: SortOrder + value?: SortOrder + expiresAt?: SortOrder + createdAt?: SortOrderInput | SortOrder + updatedAt?: SortOrderInput | SortOrder + userId?: SortOrderInput | SortOrder + _count?: VerificationCountOrderByAggregateInput + _max?: VerificationMaxOrderByAggregateInput + _min?: VerificationMinOrderByAggregateInput + } + + export type VerificationScalarWhereWithAggregatesInput = { + AND?: VerificationScalarWhereWithAggregatesInput | VerificationScalarWhereWithAggregatesInput[] + OR?: VerificationScalarWhereWithAggregatesInput[] + NOT?: VerificationScalarWhereWithAggregatesInput | VerificationScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"Verification"> | string + identifier?: StringWithAggregatesFilter<"Verification"> | string + value?: StringWithAggregatesFilter<"Verification"> | string + expiresAt?: DateTimeWithAggregatesFilter<"Verification"> | Date | string + createdAt?: DateTimeNullableWithAggregatesFilter<"Verification"> | Date | string | null + updatedAt?: DateTimeNullableWithAggregatesFilter<"Verification"> | Date | string | null + userId?: StringNullableWithAggregatesFilter<"Verification"> | string | null + } + + export type PasskeyWhereInput = { + AND?: PasskeyWhereInput | PasskeyWhereInput[] + OR?: PasskeyWhereInput[] + NOT?: PasskeyWhereInput | PasskeyWhereInput[] + id?: StringFilter<"Passkey"> | string + name?: StringNullableFilter<"Passkey"> | string | null + publicKey?: StringFilter<"Passkey"> | string + userId?: StringFilter<"Passkey"> | string + credentialID?: StringFilter<"Passkey"> | string + counter?: IntFilter<"Passkey"> | number + deviceType?: StringFilter<"Passkey"> | string + backedUp?: BoolFilter<"Passkey"> | boolean + transports?: StringNullableFilter<"Passkey"> | string | null + createdAt?: DateTimeNullableFilter<"Passkey"> | Date | string | null + aaguid?: StringNullableFilter<"Passkey"> | string | null + user?: XOR + } + + export type PasskeyOrderByWithRelationInput = { + id?: SortOrder + name?: SortOrderInput | SortOrder + publicKey?: SortOrder + userId?: SortOrder + credentialID?: SortOrder + counter?: SortOrder + deviceType?: SortOrder + backedUp?: SortOrder + transports?: SortOrderInput | SortOrder + createdAt?: SortOrderInput | SortOrder + aaguid?: SortOrderInput | SortOrder + user?: UserOrderByWithRelationInput + } + + export type PasskeyWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: PasskeyWhereInput | PasskeyWhereInput[] + OR?: PasskeyWhereInput[] + NOT?: PasskeyWhereInput | PasskeyWhereInput[] + name?: StringNullableFilter<"Passkey"> | string | null + publicKey?: StringFilter<"Passkey"> | string + userId?: StringFilter<"Passkey"> | string + credentialID?: StringFilter<"Passkey"> | string + counter?: IntFilter<"Passkey"> | number + deviceType?: StringFilter<"Passkey"> | string + backedUp?: BoolFilter<"Passkey"> | boolean + transports?: StringNullableFilter<"Passkey"> | string | null + createdAt?: DateTimeNullableFilter<"Passkey"> | Date | string | null + aaguid?: StringNullableFilter<"Passkey"> | string | null + user?: XOR + }, "id"> + + export type PasskeyOrderByWithAggregationInput = { + id?: SortOrder + name?: SortOrderInput | SortOrder + publicKey?: SortOrder + userId?: SortOrder + credentialID?: SortOrder + counter?: SortOrder + deviceType?: SortOrder + backedUp?: SortOrder + transports?: SortOrderInput | SortOrder + createdAt?: SortOrderInput | SortOrder + aaguid?: SortOrderInput | SortOrder + _count?: PasskeyCountOrderByAggregateInput + _avg?: PasskeyAvgOrderByAggregateInput + _max?: PasskeyMaxOrderByAggregateInput + _min?: PasskeyMinOrderByAggregateInput + _sum?: PasskeySumOrderByAggregateInput + } + + export type PasskeyScalarWhereWithAggregatesInput = { + AND?: PasskeyScalarWhereWithAggregatesInput | PasskeyScalarWhereWithAggregatesInput[] + OR?: PasskeyScalarWhereWithAggregatesInput[] + NOT?: PasskeyScalarWhereWithAggregatesInput | PasskeyScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"Passkey"> | string + name?: StringNullableWithAggregatesFilter<"Passkey"> | string | null + publicKey?: StringWithAggregatesFilter<"Passkey"> | string + userId?: StringWithAggregatesFilter<"Passkey"> | string + credentialID?: StringWithAggregatesFilter<"Passkey"> | string + counter?: IntWithAggregatesFilter<"Passkey"> | number + deviceType?: StringWithAggregatesFilter<"Passkey"> | string + backedUp?: BoolWithAggregatesFilter<"Passkey"> | boolean + transports?: StringNullableWithAggregatesFilter<"Passkey"> | string | null + createdAt?: DateTimeNullableWithAggregatesFilter<"Passkey"> | Date | string | null + aaguid?: StringNullableWithAggregatesFilter<"Passkey"> | string | null + } + + export type ModelWhereInput = { + AND?: ModelWhereInput | ModelWhereInput[] + OR?: ModelWhereInput[] + NOT?: ModelWhereInput | ModelWhereInput[] + id?: StringFilter<"Model"> | string + legacyId?: IntNullableFilter<"Model"> | number | null + latestVersionNumber?: IntNullableFilter<"Model"> | number | null + parentModelId?: StringNullableFilter<"Model"> | string | null + parentVersionNumber?: IntNullableFilter<"Model"> | number | null + visibility?: EnumModelVisibilityFilter<"Model"> | $Enums.ModelVisibility + isEndorsed?: BoolFilter<"Model"> | boolean + isLibraryModel?: BoolFilter<"Model"> | boolean + viewCount?: IntFilter<"Model"> | number + runCount?: IntFilter<"Model"> | number + downloadCount?: IntFilter<"Model"> | number + shareCount?: IntFilter<"Model"> | number + createdAt?: DateTimeFilter<"Model"> | Date | string + updatedAt?: DateTimeFilter<"Model"> | Date | string + deletedAt?: DateTimeNullableFilter<"Model"> | Date | string | null + latestVersion?: XOR | null + parentModel?: XOR | null + childModels?: ModelListRelationFilter + parentVersion?: XOR | null + versions?: ModelVersionListRelationFilter + authors?: ModelAuthorListRelationFilter + permissions?: ModelPermissionListRelationFilter + additionalFiles?: ModelAdditionalFileListRelationFilter + likes?: ModelLikeListRelationFilter + interactions?: ModelInteractionListRelationFilter + drafts?: ModelDraftListRelationFilter + comments?: ModelCommentListRelationFilter + } + + export type ModelOrderByWithRelationInput = { + id?: SortOrder + legacyId?: SortOrderInput | SortOrder + latestVersionNumber?: SortOrderInput | SortOrder + parentModelId?: SortOrderInput | SortOrder + parentVersionNumber?: SortOrderInput | SortOrder + visibility?: SortOrder + isEndorsed?: SortOrder + isLibraryModel?: SortOrder + viewCount?: SortOrder + runCount?: SortOrder + downloadCount?: SortOrder + shareCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + deletedAt?: SortOrderInput | SortOrder + latestVersion?: ModelVersionOrderByWithRelationInput + parentModel?: ModelOrderByWithRelationInput + childModels?: ModelOrderByRelationAggregateInput + parentVersion?: ModelVersionOrderByWithRelationInput + versions?: ModelVersionOrderByRelationAggregateInput + authors?: ModelAuthorOrderByRelationAggregateInput + permissions?: ModelPermissionOrderByRelationAggregateInput + additionalFiles?: ModelAdditionalFileOrderByRelationAggregateInput + likes?: ModelLikeOrderByRelationAggregateInput + interactions?: ModelInteractionOrderByRelationAggregateInput + drafts?: ModelDraftOrderByRelationAggregateInput + comments?: ModelCommentOrderByRelationAggregateInput + } + + export type ModelWhereUniqueInput = Prisma.AtLeast<{ + id?: string + legacyId?: number + id_latestVersionNumber?: ModelIdLatestVersionNumberCompoundUniqueInput + AND?: ModelWhereInput | ModelWhereInput[] + OR?: ModelWhereInput[] + NOT?: ModelWhereInput | ModelWhereInput[] + latestVersionNumber?: IntNullableFilter<"Model"> | number | null + parentModelId?: StringNullableFilter<"Model"> | string | null + parentVersionNumber?: IntNullableFilter<"Model"> | number | null + visibility?: EnumModelVisibilityFilter<"Model"> | $Enums.ModelVisibility + isEndorsed?: BoolFilter<"Model"> | boolean + isLibraryModel?: BoolFilter<"Model"> | boolean + viewCount?: IntFilter<"Model"> | number + runCount?: IntFilter<"Model"> | number + downloadCount?: IntFilter<"Model"> | number + shareCount?: IntFilter<"Model"> | number + createdAt?: DateTimeFilter<"Model"> | Date | string + updatedAt?: DateTimeFilter<"Model"> | Date | string + deletedAt?: DateTimeNullableFilter<"Model"> | Date | string | null + latestVersion?: XOR | null + parentModel?: XOR | null + childModels?: ModelListRelationFilter + parentVersion?: XOR | null + versions?: ModelVersionListRelationFilter + authors?: ModelAuthorListRelationFilter + permissions?: ModelPermissionListRelationFilter + additionalFiles?: ModelAdditionalFileListRelationFilter + likes?: ModelLikeListRelationFilter + interactions?: ModelInteractionListRelationFilter + drafts?: ModelDraftListRelationFilter + comments?: ModelCommentListRelationFilter + }, "id" | "legacyId" | "id_latestVersionNumber"> + + export type ModelOrderByWithAggregationInput = { + id?: SortOrder + legacyId?: SortOrderInput | SortOrder + latestVersionNumber?: SortOrderInput | SortOrder + parentModelId?: SortOrderInput | SortOrder + parentVersionNumber?: SortOrderInput | SortOrder + visibility?: SortOrder + isEndorsed?: SortOrder + isLibraryModel?: SortOrder + viewCount?: SortOrder + runCount?: SortOrder + downloadCount?: SortOrder + shareCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + deletedAt?: SortOrderInput | SortOrder + _count?: ModelCountOrderByAggregateInput + _avg?: ModelAvgOrderByAggregateInput + _max?: ModelMaxOrderByAggregateInput + _min?: ModelMinOrderByAggregateInput + _sum?: ModelSumOrderByAggregateInput + } + + export type ModelScalarWhereWithAggregatesInput = { + AND?: ModelScalarWhereWithAggregatesInput | ModelScalarWhereWithAggregatesInput[] + OR?: ModelScalarWhereWithAggregatesInput[] + NOT?: ModelScalarWhereWithAggregatesInput | ModelScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"Model"> | string + legacyId?: IntNullableWithAggregatesFilter<"Model"> | number | null + latestVersionNumber?: IntNullableWithAggregatesFilter<"Model"> | number | null + parentModelId?: StringNullableWithAggregatesFilter<"Model"> | string | null + parentVersionNumber?: IntNullableWithAggregatesFilter<"Model"> | number | null + visibility?: EnumModelVisibilityWithAggregatesFilter<"Model"> | $Enums.ModelVisibility + isEndorsed?: BoolWithAggregatesFilter<"Model"> | boolean + isLibraryModel?: BoolWithAggregatesFilter<"Model"> | boolean + viewCount?: IntWithAggregatesFilter<"Model"> | number + runCount?: IntWithAggregatesFilter<"Model"> | number + downloadCount?: IntWithAggregatesFilter<"Model"> | number + shareCount?: IntWithAggregatesFilter<"Model"> | number + createdAt?: DateTimeWithAggregatesFilter<"Model"> | Date | string + updatedAt?: DateTimeWithAggregatesFilter<"Model"> | Date | string + deletedAt?: DateTimeNullableWithAggregatesFilter<"Model"> | Date | string | null + } + + export type ModelVersionWhereInput = { + AND?: ModelVersionWhereInput | ModelVersionWhereInput[] + OR?: ModelVersionWhereInput[] + NOT?: ModelVersionWhereInput | ModelVersionWhereInput[] + modelId?: StringFilter<"ModelVersion"> | string + versionNumber?: IntFilter<"ModelVersion"> | number + title?: StringFilter<"ModelVersion"> | string + description?: StringNullableFilter<"ModelVersion"> | string | null + changeSummary?: StringNullableFilter<"ModelVersion"> | string | null + previewImageFileKey?: StringNullableFilter<"ModelVersion"> | string | null + netlogoFileKey?: StringFilter<"ModelVersion"> | string + netlogoVersion?: StringNullableFilter<"ModelVersion"> | string | null + infoTab?: StringNullableFilter<"ModelVersion"> | string | null + createdAt?: DateTimeFilter<"ModelVersion"> | Date | string + finalizedAt?: DateTimeNullableFilter<"ModelVersion"> | Date | string | null + model?: XOR + latestOfModel?: XOR | null + parentOfModels?: ModelListRelationFilter + tags?: ModelVersionTagListRelationFilter + taggedAdditionalFiles?: ModelAdditionalFileListRelationFilter + } + + export type ModelVersionOrderByWithRelationInput = { + modelId?: SortOrder + versionNumber?: SortOrder + title?: SortOrder + description?: SortOrderInput | SortOrder + changeSummary?: SortOrderInput | SortOrder + previewImageFileKey?: SortOrderInput | SortOrder + netlogoFileKey?: SortOrder + netlogoVersion?: SortOrderInput | SortOrder + infoTab?: SortOrderInput | SortOrder + createdAt?: SortOrder + finalizedAt?: SortOrderInput | SortOrder + model?: ModelOrderByWithRelationInput + latestOfModel?: ModelOrderByWithRelationInput + parentOfModels?: ModelOrderByRelationAggregateInput + tags?: ModelVersionTagOrderByRelationAggregateInput + taggedAdditionalFiles?: ModelAdditionalFileOrderByRelationAggregateInput + } + + export type ModelVersionWhereUniqueInput = Prisma.AtLeast<{ + modelId_versionNumber?: ModelVersionModelIdVersionNumberCompoundUniqueInput + AND?: ModelVersionWhereInput | ModelVersionWhereInput[] + OR?: ModelVersionWhereInput[] + NOT?: ModelVersionWhereInput | ModelVersionWhereInput[] + modelId?: StringFilter<"ModelVersion"> | string + versionNumber?: IntFilter<"ModelVersion"> | number + title?: StringFilter<"ModelVersion"> | string + description?: StringNullableFilter<"ModelVersion"> | string | null + changeSummary?: StringNullableFilter<"ModelVersion"> | string | null + previewImageFileKey?: StringNullableFilter<"ModelVersion"> | string | null + netlogoFileKey?: StringFilter<"ModelVersion"> | string + netlogoVersion?: StringNullableFilter<"ModelVersion"> | string | null + infoTab?: StringNullableFilter<"ModelVersion"> | string | null + createdAt?: DateTimeFilter<"ModelVersion"> | Date | string + finalizedAt?: DateTimeNullableFilter<"ModelVersion"> | Date | string | null + model?: XOR + latestOfModel?: XOR | null + parentOfModels?: ModelListRelationFilter + tags?: ModelVersionTagListRelationFilter + taggedAdditionalFiles?: ModelAdditionalFileListRelationFilter + }, "modelId_versionNumber"> + + export type ModelVersionOrderByWithAggregationInput = { + modelId?: SortOrder + versionNumber?: SortOrder + title?: SortOrder + description?: SortOrderInput | SortOrder + changeSummary?: SortOrderInput | SortOrder + previewImageFileKey?: SortOrderInput | SortOrder + netlogoFileKey?: SortOrder + netlogoVersion?: SortOrderInput | SortOrder + infoTab?: SortOrderInput | SortOrder + createdAt?: SortOrder + finalizedAt?: SortOrderInput | SortOrder + _count?: ModelVersionCountOrderByAggregateInput + _avg?: ModelVersionAvgOrderByAggregateInput + _max?: ModelVersionMaxOrderByAggregateInput + _min?: ModelVersionMinOrderByAggregateInput + _sum?: ModelVersionSumOrderByAggregateInput + } + + export type ModelVersionScalarWhereWithAggregatesInput = { + AND?: ModelVersionScalarWhereWithAggregatesInput | ModelVersionScalarWhereWithAggregatesInput[] + OR?: ModelVersionScalarWhereWithAggregatesInput[] + NOT?: ModelVersionScalarWhereWithAggregatesInput | ModelVersionScalarWhereWithAggregatesInput[] + modelId?: StringWithAggregatesFilter<"ModelVersion"> | string + versionNumber?: IntWithAggregatesFilter<"ModelVersion"> | number + title?: StringWithAggregatesFilter<"ModelVersion"> | string + description?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null + changeSummary?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null + previewImageFileKey?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null + netlogoFileKey?: StringWithAggregatesFilter<"ModelVersion"> | string + netlogoVersion?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null + infoTab?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null + createdAt?: DateTimeWithAggregatesFilter<"ModelVersion"> | Date | string + finalizedAt?: DateTimeNullableWithAggregatesFilter<"ModelVersion"> | Date | string | null + } + + export type ModelVersionTagWhereInput = { + AND?: ModelVersionTagWhereInput | ModelVersionTagWhereInput[] + OR?: ModelVersionTagWhereInput[] + NOT?: ModelVersionTagWhereInput | ModelVersionTagWhereInput[] + modelId?: StringFilter<"ModelVersionTag"> | string + versionNumber?: IntFilter<"ModelVersionTag"> | number + tagId?: StringFilter<"ModelVersionTag"> | string + createdAt?: DateTimeFilter<"ModelVersionTag"> | Date | string + modelVersion?: XOR + tag?: XOR + } + + export type ModelVersionTagOrderByWithRelationInput = { + modelId?: SortOrder + versionNumber?: SortOrder + tagId?: SortOrder + createdAt?: SortOrder + modelVersion?: ModelVersionOrderByWithRelationInput + tag?: TagOrderByWithRelationInput + } + + export type ModelVersionTagWhereUniqueInput = Prisma.AtLeast<{ + modelId_versionNumber_tagId?: ModelVersionTagModelIdVersionNumberTagIdCompoundUniqueInput + AND?: ModelVersionTagWhereInput | ModelVersionTagWhereInput[] + OR?: ModelVersionTagWhereInput[] + NOT?: ModelVersionTagWhereInput | ModelVersionTagWhereInput[] + modelId?: StringFilter<"ModelVersionTag"> | string + versionNumber?: IntFilter<"ModelVersionTag"> | number + tagId?: StringFilter<"ModelVersionTag"> | string + createdAt?: DateTimeFilter<"ModelVersionTag"> | Date | string + modelVersion?: XOR + tag?: XOR + }, "modelId_versionNumber_tagId"> + + export type ModelVersionTagOrderByWithAggregationInput = { + modelId?: SortOrder + versionNumber?: SortOrder + tagId?: SortOrder + createdAt?: SortOrder + _count?: ModelVersionTagCountOrderByAggregateInput + _avg?: ModelVersionTagAvgOrderByAggregateInput + _max?: ModelVersionTagMaxOrderByAggregateInput + _min?: ModelVersionTagMinOrderByAggregateInput + _sum?: ModelVersionTagSumOrderByAggregateInput + } + + export type ModelVersionTagScalarWhereWithAggregatesInput = { + AND?: ModelVersionTagScalarWhereWithAggregatesInput | ModelVersionTagScalarWhereWithAggregatesInput[] + OR?: ModelVersionTagScalarWhereWithAggregatesInput[] + NOT?: ModelVersionTagScalarWhereWithAggregatesInput | ModelVersionTagScalarWhereWithAggregatesInput[] + modelId?: StringWithAggregatesFilter<"ModelVersionTag"> | string + versionNumber?: IntWithAggregatesFilter<"ModelVersionTag"> | number + tagId?: StringWithAggregatesFilter<"ModelVersionTag"> | string + createdAt?: DateTimeWithAggregatesFilter<"ModelVersionTag"> | Date | string + } + + export type ModelAdditionalFileWhereInput = { + AND?: ModelAdditionalFileWhereInput | ModelAdditionalFileWhereInput[] + OR?: ModelAdditionalFileWhereInput[] + NOT?: ModelAdditionalFileWhereInput | ModelAdditionalFileWhereInput[] + id?: StringFilter<"ModelAdditionalFile"> | string + modelId?: StringFilter<"ModelAdditionalFile"> | string + taggedVersionNumber?: IntFilter<"ModelAdditionalFile"> | number + fileKey?: StringFilter<"ModelAdditionalFile"> | string + kind?: EnumModelFileKindFilter<"ModelAdditionalFile"> | $Enums.ModelFileKind + createdAt?: DateTimeFilter<"ModelAdditionalFile"> | Date | string + model?: XOR + taggedVersion?: XOR + } + + export type ModelAdditionalFileOrderByWithRelationInput = { + id?: SortOrder + modelId?: SortOrder + taggedVersionNumber?: SortOrder + fileKey?: SortOrder + kind?: SortOrder + createdAt?: SortOrder + model?: ModelOrderByWithRelationInput + taggedVersion?: ModelVersionOrderByWithRelationInput + } + + export type ModelAdditionalFileWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: ModelAdditionalFileWhereInput | ModelAdditionalFileWhereInput[] + OR?: ModelAdditionalFileWhereInput[] + NOT?: ModelAdditionalFileWhereInput | ModelAdditionalFileWhereInput[] + modelId?: StringFilter<"ModelAdditionalFile"> | string + taggedVersionNumber?: IntFilter<"ModelAdditionalFile"> | number + fileKey?: StringFilter<"ModelAdditionalFile"> | string + kind?: EnumModelFileKindFilter<"ModelAdditionalFile"> | $Enums.ModelFileKind + createdAt?: DateTimeFilter<"ModelAdditionalFile"> | Date | string + model?: XOR + taggedVersion?: XOR + }, "id"> + + export type ModelAdditionalFileOrderByWithAggregationInput = { + id?: SortOrder + modelId?: SortOrder + taggedVersionNumber?: SortOrder + fileKey?: SortOrder + kind?: SortOrder + createdAt?: SortOrder + _count?: ModelAdditionalFileCountOrderByAggregateInput + _avg?: ModelAdditionalFileAvgOrderByAggregateInput + _max?: ModelAdditionalFileMaxOrderByAggregateInput + _min?: ModelAdditionalFileMinOrderByAggregateInput + _sum?: ModelAdditionalFileSumOrderByAggregateInput + } + + export type ModelAdditionalFileScalarWhereWithAggregatesInput = { + AND?: ModelAdditionalFileScalarWhereWithAggregatesInput | ModelAdditionalFileScalarWhereWithAggregatesInput[] + OR?: ModelAdditionalFileScalarWhereWithAggregatesInput[] + NOT?: ModelAdditionalFileScalarWhereWithAggregatesInput | ModelAdditionalFileScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"ModelAdditionalFile"> | string + modelId?: StringWithAggregatesFilter<"ModelAdditionalFile"> | string + taggedVersionNumber?: IntWithAggregatesFilter<"ModelAdditionalFile"> | number + fileKey?: StringWithAggregatesFilter<"ModelAdditionalFile"> | string + kind?: EnumModelFileKindWithAggregatesFilter<"ModelAdditionalFile"> | $Enums.ModelFileKind + createdAt?: DateTimeWithAggregatesFilter<"ModelAdditionalFile"> | Date | string + } + + export type TagWhereInput = { + AND?: TagWhereInput | TagWhereInput[] + OR?: TagWhereInput[] + NOT?: TagWhereInput | TagWhereInput[] + id?: StringFilter<"Tag"> | string + legacyId?: IntNullableFilter<"Tag"> | number | null + name?: StringFilter<"Tag"> | string + displayName?: StringNullableFilter<"Tag"> | string | null + createdAt?: DateTimeFilter<"Tag"> | Date | string + modelVersions?: ModelVersionTagListRelationFilter + } + + export type TagOrderByWithRelationInput = { + id?: SortOrder + legacyId?: SortOrderInput | SortOrder + name?: SortOrder + displayName?: SortOrderInput | SortOrder + createdAt?: SortOrder + modelVersions?: ModelVersionTagOrderByRelationAggregateInput + } + + export type TagWhereUniqueInput = Prisma.AtLeast<{ + id?: string + legacyId?: number + name?: string + AND?: TagWhereInput | TagWhereInput[] + OR?: TagWhereInput[] + NOT?: TagWhereInput | TagWhereInput[] + displayName?: StringNullableFilter<"Tag"> | string | null + createdAt?: DateTimeFilter<"Tag"> | Date | string + modelVersions?: ModelVersionTagListRelationFilter + }, "id" | "legacyId" | "name"> + + export type TagOrderByWithAggregationInput = { + id?: SortOrder + legacyId?: SortOrderInput | SortOrder + name?: SortOrder + displayName?: SortOrderInput | SortOrder + createdAt?: SortOrder + _count?: TagCountOrderByAggregateInput + _avg?: TagAvgOrderByAggregateInput + _max?: TagMaxOrderByAggregateInput + _min?: TagMinOrderByAggregateInput + _sum?: TagSumOrderByAggregateInput + } + + export type TagScalarWhereWithAggregatesInput = { + AND?: TagScalarWhereWithAggregatesInput | TagScalarWhereWithAggregatesInput[] + OR?: TagScalarWhereWithAggregatesInput[] + NOT?: TagScalarWhereWithAggregatesInput | TagScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"Tag"> | string + legacyId?: IntNullableWithAggregatesFilter<"Tag"> | number | null + name?: StringWithAggregatesFilter<"Tag"> | string + displayName?: StringNullableWithAggregatesFilter<"Tag"> | string | null + createdAt?: DateTimeWithAggregatesFilter<"Tag"> | Date | string + } + + export type ModelAuthorWhereInput = { + AND?: ModelAuthorWhereInput | ModelAuthorWhereInput[] + OR?: ModelAuthorWhereInput[] + NOT?: ModelAuthorWhereInput | ModelAuthorWhereInput[] + modelId?: StringFilter<"ModelAuthor"> | string + userId?: StringFilter<"ModelAuthor"> | string + role?: EnumAuthorRoleFilter<"ModelAuthor"> | $Enums.AuthorRole + createdAt?: DateTimeFilter<"ModelAuthor"> | Date | string + model?: XOR + user?: XOR + } + + export type ModelAuthorOrderByWithRelationInput = { + modelId?: SortOrder + userId?: SortOrder + role?: SortOrder + createdAt?: SortOrder + model?: ModelOrderByWithRelationInput + user?: UserOrderByWithRelationInput + } + + export type ModelAuthorWhereUniqueInput = Prisma.AtLeast<{ + modelId_userId?: ModelAuthorModelIdUserIdCompoundUniqueInput + AND?: ModelAuthorWhereInput | ModelAuthorWhereInput[] + OR?: ModelAuthorWhereInput[] + NOT?: ModelAuthorWhereInput | ModelAuthorWhereInput[] + modelId?: StringFilter<"ModelAuthor"> | string + userId?: StringFilter<"ModelAuthor"> | string + role?: EnumAuthorRoleFilter<"ModelAuthor"> | $Enums.AuthorRole + createdAt?: DateTimeFilter<"ModelAuthor"> | Date | string + model?: XOR + user?: XOR + }, "modelId_userId"> + + export type ModelAuthorOrderByWithAggregationInput = { + modelId?: SortOrder + userId?: SortOrder + role?: SortOrder + createdAt?: SortOrder + _count?: ModelAuthorCountOrderByAggregateInput + _max?: ModelAuthorMaxOrderByAggregateInput + _min?: ModelAuthorMinOrderByAggregateInput + } + + export type ModelAuthorScalarWhereWithAggregatesInput = { + AND?: ModelAuthorScalarWhereWithAggregatesInput | ModelAuthorScalarWhereWithAggregatesInput[] + OR?: ModelAuthorScalarWhereWithAggregatesInput[] + NOT?: ModelAuthorScalarWhereWithAggregatesInput | ModelAuthorScalarWhereWithAggregatesInput[] + modelId?: StringWithAggregatesFilter<"ModelAuthor"> | string + userId?: StringWithAggregatesFilter<"ModelAuthor"> | string + role?: EnumAuthorRoleWithAggregatesFilter<"ModelAuthor"> | $Enums.AuthorRole + createdAt?: DateTimeWithAggregatesFilter<"ModelAuthor"> | Date | string + } + + export type ModelPermissionWhereInput = { + AND?: ModelPermissionWhereInput | ModelPermissionWhereInput[] + OR?: ModelPermissionWhereInput[] + NOT?: ModelPermissionWhereInput | ModelPermissionWhereInput[] + id?: StringFilter<"ModelPermission"> | string + modelId?: StringFilter<"ModelPermission"> | string + granteeUserId?: StringNullableFilter<"ModelPermission"> | string | null + permissionLevel?: EnumPermissionLevelFilter<"ModelPermission"> | $Enums.PermissionLevel + createdAt?: DateTimeFilter<"ModelPermission"> | Date | string + model?: XOR + granteeUser?: XOR | null + } + + export type ModelPermissionOrderByWithRelationInput = { + id?: SortOrder + modelId?: SortOrder + granteeUserId?: SortOrderInput | SortOrder + permissionLevel?: SortOrder + createdAt?: SortOrder + model?: ModelOrderByWithRelationInput + granteeUser?: UserOrderByWithRelationInput + } + + export type ModelPermissionWhereUniqueInput = Prisma.AtLeast<{ + id?: string + modelId_granteeUserId?: ModelPermissionModelIdGranteeUserIdCompoundUniqueInput + AND?: ModelPermissionWhereInput | ModelPermissionWhereInput[] + OR?: ModelPermissionWhereInput[] + NOT?: ModelPermissionWhereInput | ModelPermissionWhereInput[] + modelId?: StringFilter<"ModelPermission"> | string + granteeUserId?: StringNullableFilter<"ModelPermission"> | string | null + permissionLevel?: EnumPermissionLevelFilter<"ModelPermission"> | $Enums.PermissionLevel + createdAt?: DateTimeFilter<"ModelPermission"> | Date | string + model?: XOR + granteeUser?: XOR | null + }, "id" | "modelId_granteeUserId"> + + export type ModelPermissionOrderByWithAggregationInput = { + id?: SortOrder + modelId?: SortOrder + granteeUserId?: SortOrderInput | SortOrder + permissionLevel?: SortOrder + createdAt?: SortOrder + _count?: ModelPermissionCountOrderByAggregateInput + _max?: ModelPermissionMaxOrderByAggregateInput + _min?: ModelPermissionMinOrderByAggregateInput + } + + export type ModelPermissionScalarWhereWithAggregatesInput = { + AND?: ModelPermissionScalarWhereWithAggregatesInput | ModelPermissionScalarWhereWithAggregatesInput[] + OR?: ModelPermissionScalarWhereWithAggregatesInput[] + NOT?: ModelPermissionScalarWhereWithAggregatesInput | ModelPermissionScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"ModelPermission"> | string + modelId?: StringWithAggregatesFilter<"ModelPermission"> | string + granteeUserId?: StringNullableWithAggregatesFilter<"ModelPermission"> | string | null + permissionLevel?: EnumPermissionLevelWithAggregatesFilter<"ModelPermission"> | $Enums.PermissionLevel + createdAt?: DateTimeWithAggregatesFilter<"ModelPermission"> | Date | string + } + + export type ModelLikeWhereInput = { + AND?: ModelLikeWhereInput | ModelLikeWhereInput[] + OR?: ModelLikeWhereInput[] + NOT?: ModelLikeWhereInput | ModelLikeWhereInput[] + modelId?: StringFilter<"ModelLike"> | string + userId?: StringFilter<"ModelLike"> | string + createdAt?: DateTimeFilter<"ModelLike"> | Date | string + model?: XOR + user?: XOR + } + + export type ModelLikeOrderByWithRelationInput = { + modelId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder + model?: ModelOrderByWithRelationInput + user?: UserOrderByWithRelationInput + } + + export type ModelLikeWhereUniqueInput = Prisma.AtLeast<{ + modelId_userId?: ModelLikeModelIdUserIdCompoundUniqueInput + AND?: ModelLikeWhereInput | ModelLikeWhereInput[] + OR?: ModelLikeWhereInput[] + NOT?: ModelLikeWhereInput | ModelLikeWhereInput[] + modelId?: StringFilter<"ModelLike"> | string + userId?: StringFilter<"ModelLike"> | string + createdAt?: DateTimeFilter<"ModelLike"> | Date | string + model?: XOR + user?: XOR + }, "modelId_userId"> + + export type ModelLikeOrderByWithAggregationInput = { + modelId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder + _count?: ModelLikeCountOrderByAggregateInput + _max?: ModelLikeMaxOrderByAggregateInput + _min?: ModelLikeMinOrderByAggregateInput + } + + export type ModelLikeScalarWhereWithAggregatesInput = { + AND?: ModelLikeScalarWhereWithAggregatesInput | ModelLikeScalarWhereWithAggregatesInput[] + OR?: ModelLikeScalarWhereWithAggregatesInput[] + NOT?: ModelLikeScalarWhereWithAggregatesInput | ModelLikeScalarWhereWithAggregatesInput[] + modelId?: StringWithAggregatesFilter<"ModelLike"> | string + userId?: StringWithAggregatesFilter<"ModelLike"> | string + createdAt?: DateTimeWithAggregatesFilter<"ModelLike"> | Date | string + } + + export type ModelInteractionWhereInput = { + AND?: ModelInteractionWhereInput | ModelInteractionWhereInput[] + OR?: ModelInteractionWhereInput[] + NOT?: ModelInteractionWhereInput | ModelInteractionWhereInput[] + id?: StringFilter<"ModelInteraction"> | string + modelId?: StringFilter<"ModelInteraction"> | string + versionNumber?: IntNullableFilter<"ModelInteraction"> | number | null + kind?: EnumModelInteractionKindFilter<"ModelInteraction"> | $Enums.ModelInteractionKind + userId?: StringNullableFilter<"ModelInteraction"> | string | null + sessionId?: StringNullableFilter<"ModelInteraction"> | string | null + ipHash?: StringNullableFilter<"ModelInteraction"> | string | null + userAgent?: StringNullableFilter<"ModelInteraction"> | string | null + referer?: StringNullableFilter<"ModelInteraction"> | string | null + geo?: JsonNullableFilter<"ModelInteraction"> + cookie?: StringNullableFilter<"ModelInteraction"> | string | null + createdAt?: DateTimeFilter<"ModelInteraction"> | Date | string + model?: XOR + user?: XOR | null + } + + export type ModelInteractionOrderByWithRelationInput = { + id?: SortOrder + modelId?: SortOrder + versionNumber?: SortOrderInput | SortOrder + kind?: SortOrder + userId?: SortOrderInput | SortOrder + sessionId?: SortOrderInput | SortOrder + ipHash?: SortOrderInput | SortOrder + userAgent?: SortOrderInput | SortOrder + referer?: SortOrderInput | SortOrder + geo?: SortOrderInput | SortOrder + cookie?: SortOrderInput | SortOrder + createdAt?: SortOrder + model?: ModelOrderByWithRelationInput + user?: UserOrderByWithRelationInput + } + + export type ModelInteractionWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: ModelInteractionWhereInput | ModelInteractionWhereInput[] + OR?: ModelInteractionWhereInput[] + NOT?: ModelInteractionWhereInput | ModelInteractionWhereInput[] + modelId?: StringFilter<"ModelInteraction"> | string + versionNumber?: IntNullableFilter<"ModelInteraction"> | number | null + kind?: EnumModelInteractionKindFilter<"ModelInteraction"> | $Enums.ModelInteractionKind + userId?: StringNullableFilter<"ModelInteraction"> | string | null + sessionId?: StringNullableFilter<"ModelInteraction"> | string | null + ipHash?: StringNullableFilter<"ModelInteraction"> | string | null + userAgent?: StringNullableFilter<"ModelInteraction"> | string | null + referer?: StringNullableFilter<"ModelInteraction"> | string | null + geo?: JsonNullableFilter<"ModelInteraction"> + cookie?: StringNullableFilter<"ModelInteraction"> | string | null + createdAt?: DateTimeFilter<"ModelInteraction"> | Date | string + model?: XOR + user?: XOR | null + }, "id"> + + export type ModelInteractionOrderByWithAggregationInput = { + id?: SortOrder + modelId?: SortOrder + versionNumber?: SortOrderInput | SortOrder + kind?: SortOrder + userId?: SortOrderInput | SortOrder + sessionId?: SortOrderInput | SortOrder + ipHash?: SortOrderInput | SortOrder + userAgent?: SortOrderInput | SortOrder + referer?: SortOrderInput | SortOrder + geo?: SortOrderInput | SortOrder + cookie?: SortOrderInput | SortOrder + createdAt?: SortOrder + _count?: ModelInteractionCountOrderByAggregateInput + _avg?: ModelInteractionAvgOrderByAggregateInput + _max?: ModelInteractionMaxOrderByAggregateInput + _min?: ModelInteractionMinOrderByAggregateInput + _sum?: ModelInteractionSumOrderByAggregateInput + } + + export type ModelInteractionScalarWhereWithAggregatesInput = { + AND?: ModelInteractionScalarWhereWithAggregatesInput | ModelInteractionScalarWhereWithAggregatesInput[] + OR?: ModelInteractionScalarWhereWithAggregatesInput[] + NOT?: ModelInteractionScalarWhereWithAggregatesInput | ModelInteractionScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"ModelInteraction"> | string + modelId?: StringWithAggregatesFilter<"ModelInteraction"> | string + versionNumber?: IntNullableWithAggregatesFilter<"ModelInteraction"> | number | null + kind?: EnumModelInteractionKindWithAggregatesFilter<"ModelInteraction"> | $Enums.ModelInteractionKind + userId?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null + sessionId?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null + ipHash?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null + userAgent?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null + referer?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null + geo?: JsonNullableWithAggregatesFilter<"ModelInteraction"> + cookie?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null + createdAt?: DateTimeWithAggregatesFilter<"ModelInteraction"> | Date | string + } + + export type ModelDraftWhereInput = { + AND?: ModelDraftWhereInput | ModelDraftWhereInput[] + OR?: ModelDraftWhereInput[] + NOT?: ModelDraftWhereInput | ModelDraftWhereInput[] + id?: StringFilter<"ModelDraft"> | string + userId?: StringFilter<"ModelDraft"> | string + modelId?: StringNullableFilter<"ModelDraft"> | string | null + schemaVersion?: IntFilter<"ModelDraft"> | number + data?: JsonFilter<"ModelDraft"> + createdAt?: DateTimeFilter<"ModelDraft"> | Date | string + updatedAt?: DateTimeFilter<"ModelDraft"> | Date | string + user?: XOR + model?: XOR | null + } + + export type ModelDraftOrderByWithRelationInput = { + id?: SortOrder + userId?: SortOrder + modelId?: SortOrderInput | SortOrder + schemaVersion?: SortOrder + data?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + user?: UserOrderByWithRelationInput + model?: ModelOrderByWithRelationInput + } + + export type ModelDraftWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: ModelDraftWhereInput | ModelDraftWhereInput[] + OR?: ModelDraftWhereInput[] + NOT?: ModelDraftWhereInput | ModelDraftWhereInput[] + userId?: StringFilter<"ModelDraft"> | string + modelId?: StringNullableFilter<"ModelDraft"> | string | null + schemaVersion?: IntFilter<"ModelDraft"> | number + data?: JsonFilter<"ModelDraft"> + createdAt?: DateTimeFilter<"ModelDraft"> | Date | string + updatedAt?: DateTimeFilter<"ModelDraft"> | Date | string + user?: XOR + model?: XOR | null + }, "id"> + + export type ModelDraftOrderByWithAggregationInput = { + id?: SortOrder + userId?: SortOrder + modelId?: SortOrderInput | SortOrder + schemaVersion?: SortOrder + data?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + _count?: ModelDraftCountOrderByAggregateInput + _avg?: ModelDraftAvgOrderByAggregateInput + _max?: ModelDraftMaxOrderByAggregateInput + _min?: ModelDraftMinOrderByAggregateInput + _sum?: ModelDraftSumOrderByAggregateInput + } + + export type ModelDraftScalarWhereWithAggregatesInput = { + AND?: ModelDraftScalarWhereWithAggregatesInput | ModelDraftScalarWhereWithAggregatesInput[] + OR?: ModelDraftScalarWhereWithAggregatesInput[] + NOT?: ModelDraftScalarWhereWithAggregatesInput | ModelDraftScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"ModelDraft"> | string + userId?: StringWithAggregatesFilter<"ModelDraft"> | string + modelId?: StringNullableWithAggregatesFilter<"ModelDraft"> | string | null + schemaVersion?: IntWithAggregatesFilter<"ModelDraft"> | number + data?: JsonWithAggregatesFilter<"ModelDraft"> + createdAt?: DateTimeWithAggregatesFilter<"ModelDraft"> | Date | string + updatedAt?: DateTimeWithAggregatesFilter<"ModelDraft"> | Date | string + } + + export type ModelCommentWhereInput = { + AND?: ModelCommentWhereInput | ModelCommentWhereInput[] + OR?: ModelCommentWhereInput[] + NOT?: ModelCommentWhereInput | ModelCommentWhereInput[] + id?: StringFilter<"ModelComment"> | string + legacyId?: IntNullableFilter<"ModelComment"> | number | null + parentId?: StringNullableFilter<"ModelComment"> | string | null + userId?: StringNullableFilter<"ModelComment"> | string | null + modelId?: StringFilter<"ModelComment"> | string + versionNumber?: IntNullableFilter<"ModelComment"> | number | null + content?: StringNullableFilter<"ModelComment"> | string | null + likesCount?: IntFilter<"ModelComment"> | number + createdAt?: DateTimeFilter<"ModelComment"> | Date | string + updatedAt?: DateTimeFilter<"ModelComment"> | Date | string + editedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null + deletedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null + model?: XOR + user?: XOR | null + parent?: XOR | null + replies?: ModelCommentListRelationFilter + likes?: ModelCommentLikeListRelationFilter + } + + export type ModelCommentOrderByWithRelationInput = { + id?: SortOrder + legacyId?: SortOrderInput | SortOrder + parentId?: SortOrderInput | SortOrder + userId?: SortOrderInput | SortOrder + modelId?: SortOrder + versionNumber?: SortOrderInput | SortOrder + content?: SortOrderInput | SortOrder + likesCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + editedAt?: SortOrderInput | SortOrder + deletedAt?: SortOrderInput | SortOrder + model?: ModelOrderByWithRelationInput + user?: UserOrderByWithRelationInput + parent?: ModelCommentOrderByWithRelationInput + replies?: ModelCommentOrderByRelationAggregateInput + likes?: ModelCommentLikeOrderByRelationAggregateInput + } + + export type ModelCommentWhereUniqueInput = Prisma.AtLeast<{ + id?: string + legacyId?: number + AND?: ModelCommentWhereInput | ModelCommentWhereInput[] + OR?: ModelCommentWhereInput[] + NOT?: ModelCommentWhereInput | ModelCommentWhereInput[] + parentId?: StringNullableFilter<"ModelComment"> | string | null + userId?: StringNullableFilter<"ModelComment"> | string | null + modelId?: StringFilter<"ModelComment"> | string + versionNumber?: IntNullableFilter<"ModelComment"> | number | null + content?: StringNullableFilter<"ModelComment"> | string | null + likesCount?: IntFilter<"ModelComment"> | number + createdAt?: DateTimeFilter<"ModelComment"> | Date | string + updatedAt?: DateTimeFilter<"ModelComment"> | Date | string + editedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null + deletedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null + model?: XOR + user?: XOR | null + parent?: XOR | null + replies?: ModelCommentListRelationFilter + likes?: ModelCommentLikeListRelationFilter + }, "id" | "legacyId"> + + export type ModelCommentOrderByWithAggregationInput = { + id?: SortOrder + legacyId?: SortOrderInput | SortOrder + parentId?: SortOrderInput | SortOrder + userId?: SortOrderInput | SortOrder + modelId?: SortOrder + versionNumber?: SortOrderInput | SortOrder + content?: SortOrderInput | SortOrder + likesCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + editedAt?: SortOrderInput | SortOrder + deletedAt?: SortOrderInput | SortOrder + _count?: ModelCommentCountOrderByAggregateInput + _avg?: ModelCommentAvgOrderByAggregateInput + _max?: ModelCommentMaxOrderByAggregateInput + _min?: ModelCommentMinOrderByAggregateInput + _sum?: ModelCommentSumOrderByAggregateInput + } + + export type ModelCommentScalarWhereWithAggregatesInput = { + AND?: ModelCommentScalarWhereWithAggregatesInput | ModelCommentScalarWhereWithAggregatesInput[] + OR?: ModelCommentScalarWhereWithAggregatesInput[] + NOT?: ModelCommentScalarWhereWithAggregatesInput | ModelCommentScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"ModelComment"> | string + legacyId?: IntNullableWithAggregatesFilter<"ModelComment"> | number | null + parentId?: StringNullableWithAggregatesFilter<"ModelComment"> | string | null + userId?: StringNullableWithAggregatesFilter<"ModelComment"> | string | null + modelId?: StringWithAggregatesFilter<"ModelComment"> | string + versionNumber?: IntNullableWithAggregatesFilter<"ModelComment"> | number | null + content?: StringNullableWithAggregatesFilter<"ModelComment"> | string | null + likesCount?: IntWithAggregatesFilter<"ModelComment"> | number + createdAt?: DateTimeWithAggregatesFilter<"ModelComment"> | Date | string + updatedAt?: DateTimeWithAggregatesFilter<"ModelComment"> | Date | string + editedAt?: DateTimeNullableWithAggregatesFilter<"ModelComment"> | Date | string | null + deletedAt?: DateTimeNullableWithAggregatesFilter<"ModelComment"> | Date | string | null + } + + export type ModelCommentLikeWhereInput = { + AND?: ModelCommentLikeWhereInput | ModelCommentLikeWhereInput[] + OR?: ModelCommentLikeWhereInput[] + NOT?: ModelCommentLikeWhereInput | ModelCommentLikeWhereInput[] + modelCommentId?: StringFilter<"ModelCommentLike"> | string + userId?: StringFilter<"ModelCommentLike"> | string + createdAt?: DateTimeFilter<"ModelCommentLike"> | Date | string + modelComment?: XOR + user?: XOR + } + + export type ModelCommentLikeOrderByWithRelationInput = { + modelCommentId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder + modelComment?: ModelCommentOrderByWithRelationInput + user?: UserOrderByWithRelationInput + } + + export type ModelCommentLikeWhereUniqueInput = Prisma.AtLeast<{ + modelCommentId_userId?: ModelCommentLikeModelCommentIdUserIdCompoundUniqueInput + AND?: ModelCommentLikeWhereInput | ModelCommentLikeWhereInput[] + OR?: ModelCommentLikeWhereInput[] + NOT?: ModelCommentLikeWhereInput | ModelCommentLikeWhereInput[] + modelCommentId?: StringFilter<"ModelCommentLike"> | string + userId?: StringFilter<"ModelCommentLike"> | string + createdAt?: DateTimeFilter<"ModelCommentLike"> | Date | string + modelComment?: XOR + user?: XOR + }, "modelCommentId_userId"> + + export type ModelCommentLikeOrderByWithAggregationInput = { + modelCommentId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder + _count?: ModelCommentLikeCountOrderByAggregateInput + _max?: ModelCommentLikeMaxOrderByAggregateInput + _min?: ModelCommentLikeMinOrderByAggregateInput + } + + export type ModelCommentLikeScalarWhereWithAggregatesInput = { + AND?: ModelCommentLikeScalarWhereWithAggregatesInput | ModelCommentLikeScalarWhereWithAggregatesInput[] + OR?: ModelCommentLikeScalarWhereWithAggregatesInput[] + NOT?: ModelCommentLikeScalarWhereWithAggregatesInput | ModelCommentLikeScalarWhereWithAggregatesInput[] + modelCommentId?: StringWithAggregatesFilter<"ModelCommentLike"> | string + userId?: StringWithAggregatesFilter<"ModelCommentLike"> | string + createdAt?: DateTimeWithAggregatesFilter<"ModelCommentLike"> | Date | string + } + + export type EventWhereInput = { + AND?: EventWhereInput | EventWhereInput[] + OR?: EventWhereInput[] + NOT?: EventWhereInput | EventWhereInput[] + id?: StringFilter<"Event"> | string + type?: StringFilter<"Event"> | string + actorId?: StringFilter<"Event"> | string + resourceType?: StringFilter<"Event"> | string + resourceId?: StringFilter<"Event"> | string + payload?: JsonFilter<"Event"> + createdAt?: DateTimeFilter<"Event"> | Date | string + processedAt?: DateTimeNullableFilter<"Event"> | Date | string | null + attempts?: IntFilter<"Event"> | number + lastError?: StringNullableFilter<"Event"> | string | null + actor?: XOR + notifications?: UserNotificationListRelationFilter + } + + export type EventOrderByWithRelationInput = { + id?: SortOrder + type?: SortOrder + actorId?: SortOrder + resourceType?: SortOrder + resourceId?: SortOrder + payload?: SortOrder + createdAt?: SortOrder + processedAt?: SortOrderInput | SortOrder + attempts?: SortOrder + lastError?: SortOrderInput | SortOrder + actor?: UserOrderByWithRelationInput + notifications?: UserNotificationOrderByRelationAggregateInput + } + + export type EventWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: EventWhereInput | EventWhereInput[] + OR?: EventWhereInput[] + NOT?: EventWhereInput | EventWhereInput[] + type?: StringFilter<"Event"> | string + actorId?: StringFilter<"Event"> | string + resourceType?: StringFilter<"Event"> | string + resourceId?: StringFilter<"Event"> | string + payload?: JsonFilter<"Event"> + createdAt?: DateTimeFilter<"Event"> | Date | string + processedAt?: DateTimeNullableFilter<"Event"> | Date | string | null + attempts?: IntFilter<"Event"> | number + lastError?: StringNullableFilter<"Event"> | string | null + actor?: XOR + notifications?: UserNotificationListRelationFilter + }, "id"> + + export type EventOrderByWithAggregationInput = { + id?: SortOrder + type?: SortOrder + actorId?: SortOrder + resourceType?: SortOrder + resourceId?: SortOrder + payload?: SortOrder + createdAt?: SortOrder + processedAt?: SortOrderInput | SortOrder + attempts?: SortOrder + lastError?: SortOrderInput | SortOrder + _count?: EventCountOrderByAggregateInput + _avg?: EventAvgOrderByAggregateInput + _max?: EventMaxOrderByAggregateInput + _min?: EventMinOrderByAggregateInput + _sum?: EventSumOrderByAggregateInput + } + + export type EventScalarWhereWithAggregatesInput = { + AND?: EventScalarWhereWithAggregatesInput | EventScalarWhereWithAggregatesInput[] + OR?: EventScalarWhereWithAggregatesInput[] + NOT?: EventScalarWhereWithAggregatesInput | EventScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"Event"> | string + type?: StringWithAggregatesFilter<"Event"> | string + actorId?: StringWithAggregatesFilter<"Event"> | string + resourceType?: StringWithAggregatesFilter<"Event"> | string + resourceId?: StringWithAggregatesFilter<"Event"> | string + payload?: JsonWithAggregatesFilter<"Event"> + createdAt?: DateTimeWithAggregatesFilter<"Event"> | Date | string + processedAt?: DateTimeNullableWithAggregatesFilter<"Event"> | Date | string | null + attempts?: IntWithAggregatesFilter<"Event"> | number + lastError?: StringNullableWithAggregatesFilter<"Event"> | string | null + } + + export type UserNotificationWhereInput = { + AND?: UserNotificationWhereInput | UserNotificationWhereInput[] + OR?: UserNotificationWhereInput[] + NOT?: UserNotificationWhereInput | UserNotificationWhereInput[] + id?: StringFilter<"UserNotification"> | string + recipientId?: StringFilter<"UserNotification"> | string + eventId?: StringFilter<"UserNotification"> | string + category?: StringFilter<"UserNotification"> | string + title?: StringFilter<"UserNotification"> | string + body?: StringFilter<"UserNotification"> | string + url?: StringFilter<"UserNotification"> | string + emailSentAt?: DateTimeNullableFilter<"UserNotification"> | Date | string | null + readAt?: DateTimeNullableFilter<"UserNotification"> | Date | string | null + createdAt?: DateTimeFilter<"UserNotification"> | Date | string + recipient?: XOR + event?: XOR + } + + export type UserNotificationOrderByWithRelationInput = { + id?: SortOrder + recipientId?: SortOrder + eventId?: SortOrder + category?: SortOrder + title?: SortOrder + body?: SortOrder + url?: SortOrder + emailSentAt?: SortOrderInput | SortOrder + readAt?: SortOrderInput | SortOrder + createdAt?: SortOrder + recipient?: UserOrderByWithRelationInput + event?: EventOrderByWithRelationInput + } + + export type UserNotificationWhereUniqueInput = Prisma.AtLeast<{ + id?: string + eventId_recipientId_category?: UserNotificationEventIdRecipientIdCategoryCompoundUniqueInput + AND?: UserNotificationWhereInput | UserNotificationWhereInput[] + OR?: UserNotificationWhereInput[] + NOT?: UserNotificationWhereInput | UserNotificationWhereInput[] + recipientId?: StringFilter<"UserNotification"> | string + eventId?: StringFilter<"UserNotification"> | string + category?: StringFilter<"UserNotification"> | string + title?: StringFilter<"UserNotification"> | string + body?: StringFilter<"UserNotification"> | string + url?: StringFilter<"UserNotification"> | string + emailSentAt?: DateTimeNullableFilter<"UserNotification"> | Date | string | null + readAt?: DateTimeNullableFilter<"UserNotification"> | Date | string | null + createdAt?: DateTimeFilter<"UserNotification"> | Date | string + recipient?: XOR + event?: XOR + }, "id" | "eventId_recipientId_category"> + + export type UserNotificationOrderByWithAggregationInput = { + id?: SortOrder + recipientId?: SortOrder + eventId?: SortOrder + category?: SortOrder + title?: SortOrder + body?: SortOrder + url?: SortOrder + emailSentAt?: SortOrderInput | SortOrder + readAt?: SortOrderInput | SortOrder + createdAt?: SortOrder + _count?: UserNotificationCountOrderByAggregateInput + _max?: UserNotificationMaxOrderByAggregateInput + _min?: UserNotificationMinOrderByAggregateInput + } + + export type UserNotificationScalarWhereWithAggregatesInput = { + AND?: UserNotificationScalarWhereWithAggregatesInput | UserNotificationScalarWhereWithAggregatesInput[] + OR?: UserNotificationScalarWhereWithAggregatesInput[] + NOT?: UserNotificationScalarWhereWithAggregatesInput | UserNotificationScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"UserNotification"> | string + recipientId?: StringWithAggregatesFilter<"UserNotification"> | string + eventId?: StringWithAggregatesFilter<"UserNotification"> | string + category?: StringWithAggregatesFilter<"UserNotification"> | string + title?: StringWithAggregatesFilter<"UserNotification"> | string + body?: StringWithAggregatesFilter<"UserNotification"> | string + url?: StringWithAggregatesFilter<"UserNotification"> | string + emailSentAt?: DateTimeNullableWithAggregatesFilter<"UserNotification"> | Date | string | null + readAt?: DateTimeNullableWithAggregatesFilter<"UserNotification"> | Date | string | null + createdAt?: DateTimeWithAggregatesFilter<"UserNotification"> | Date | string + } + + export type UserNotificationPreferenceWhereInput = { + AND?: UserNotificationPreferenceWhereInput | UserNotificationPreferenceWhereInput[] + OR?: UserNotificationPreferenceWhereInput[] + NOT?: UserNotificationPreferenceWhereInput | UserNotificationPreferenceWhereInput[] + id?: StringFilter<"UserNotificationPreference"> | string + userId?: StringFilter<"UserNotificationPreference"> | string + category?: StringFilter<"UserNotificationPreference"> | string + email?: BoolFilter<"UserNotificationPreference"> | boolean + inApp?: BoolFilter<"UserNotificationPreference"> | boolean + updatedAt?: DateTimeFilter<"UserNotificationPreference"> | Date | string + user?: XOR + } + + export type UserNotificationPreferenceOrderByWithRelationInput = { + id?: SortOrder + userId?: SortOrder + category?: SortOrder + email?: SortOrder + inApp?: SortOrder + updatedAt?: SortOrder + user?: UserOrderByWithRelationInput + } + + export type UserNotificationPreferenceWhereUniqueInput = Prisma.AtLeast<{ + id?: string + userId_category?: UserNotificationPreferenceUserIdCategoryCompoundUniqueInput + AND?: UserNotificationPreferenceWhereInput | UserNotificationPreferenceWhereInput[] + OR?: UserNotificationPreferenceWhereInput[] + NOT?: UserNotificationPreferenceWhereInput | UserNotificationPreferenceWhereInput[] + userId?: StringFilter<"UserNotificationPreference"> | string + category?: StringFilter<"UserNotificationPreference"> | string + email?: BoolFilter<"UserNotificationPreference"> | boolean + inApp?: BoolFilter<"UserNotificationPreference"> | boolean + updatedAt?: DateTimeFilter<"UserNotificationPreference"> | Date | string + user?: XOR + }, "id" | "userId_category"> + + export type UserNotificationPreferenceOrderByWithAggregationInput = { + id?: SortOrder + userId?: SortOrder + category?: SortOrder + email?: SortOrder + inApp?: SortOrder + updatedAt?: SortOrder + _count?: UserNotificationPreferenceCountOrderByAggregateInput + _max?: UserNotificationPreferenceMaxOrderByAggregateInput + _min?: UserNotificationPreferenceMinOrderByAggregateInput + } + + export type UserNotificationPreferenceScalarWhereWithAggregatesInput = { + AND?: UserNotificationPreferenceScalarWhereWithAggregatesInput | UserNotificationPreferenceScalarWhereWithAggregatesInput[] + OR?: UserNotificationPreferenceScalarWhereWithAggregatesInput[] + NOT?: UserNotificationPreferenceScalarWhereWithAggregatesInput | UserNotificationPreferenceScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"UserNotificationPreference"> | string + userId?: StringWithAggregatesFilter<"UserNotificationPreference"> | string + category?: StringWithAggregatesFilter<"UserNotificationPreference"> | string + email?: BoolWithAggregatesFilter<"UserNotificationPreference"> | boolean + inApp?: BoolWithAggregatesFilter<"UserNotificationPreference"> | boolean + updatedAt?: DateTimeWithAggregatesFilter<"UserNotificationPreference"> | Date | string + } + + export type UserCreateInput = { + id?: string + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null + createdAt?: Date | string + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountCreateNestedManyWithoutUserInput + sessions?: SessionCreateNestedManyWithoutUserInput + verifications?: VerificationCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput + events?: EventCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput + comments?: ModelCommentCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput + passkeys?: PasskeyCreateNestedManyWithoutUserInput + } + + export type UserUncheckedCreateInput = { + id?: string + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null + createdAt?: Date | string + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountUncheckedCreateNestedManyWithoutUserInput + sessions?: SessionUncheckedCreateNestedManyWithoutUserInput + verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput + events?: EventUncheckedCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput + passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput + } + + export type UserUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUpdateManyWithoutUserNestedInput + sessions?: SessionUpdateManyWithoutUserNestedInput + verifications?: VerificationUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput + events?: EventUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput + comments?: ModelCommentUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type SessionOrderByWithRelationInput = { - id?: SortOrder - userId?: SortOrder - expiresAt?: SortOrder - token?: SortOrder - ipAddress?: SortOrderInput | SortOrder - userAgent?: SortOrderInput | SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - impersonatedBy?: SortOrderInput | SortOrder - user?: UserOrderByWithRelationInput + export type UserUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput + sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput + verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput + events?: EventUncheckedUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type SessionWhereUniqueInput = Prisma.AtLeast<{ + export type UserCreateManyInput = { id?: string - token?: string - AND?: SessionWhereInput | SessionWhereInput[] - OR?: SessionWhereInput[] - NOT?: SessionWhereInput | SessionWhereInput[] - userId?: StringFilter<"Session"> | string - expiresAt?: DateTimeFilter<"Session"> | Date | string - ipAddress?: StringNullableFilter<"Session"> | string | null - userAgent?: StringNullableFilter<"Session"> | string | null - createdAt?: DateTimeFilter<"Session"> | Date | string - updatedAt?: DateTimeFilter<"Session"> | Date | string - impersonatedBy?: StringNullableFilter<"Session"> | string | null - user?: XOR - }, "id" | "token"> + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null + createdAt?: Date | string + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + } - export type SessionOrderByWithAggregationInput = { - id?: SortOrder - userId?: SortOrder - expiresAt?: SortOrder - token?: SortOrder - ipAddress?: SortOrderInput | SortOrder - userAgent?: SortOrderInput | SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - impersonatedBy?: SortOrderInput | SortOrder - _count?: SessionCountOrderByAggregateInput - _max?: SessionMaxOrderByAggregateInput - _min?: SessionMinOrderByAggregateInput + export type UserUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null } - export type SessionScalarWhereWithAggregatesInput = { - AND?: SessionScalarWhereWithAggregatesInput | SessionScalarWhereWithAggregatesInput[] - OR?: SessionScalarWhereWithAggregatesInput[] - NOT?: SessionScalarWhereWithAggregatesInput | SessionScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"Session"> | string - userId?: StringWithAggregatesFilter<"Session"> | string - expiresAt?: DateTimeWithAggregatesFilter<"Session"> | Date | string - token?: StringWithAggregatesFilter<"Session"> | string - ipAddress?: StringNullableWithAggregatesFilter<"Session"> | string | null - userAgent?: StringNullableWithAggregatesFilter<"Session"> | string | null - createdAt?: DateTimeWithAggregatesFilter<"Session"> | Date | string - updatedAt?: DateTimeWithAggregatesFilter<"Session"> | Date | string - impersonatedBy?: StringNullableWithAggregatesFilter<"Session"> | string | null + export type UserUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null } - export type VerificationWhereInput = { - AND?: VerificationWhereInput | VerificationWhereInput[] - OR?: VerificationWhereInput[] - NOT?: VerificationWhereInput | VerificationWhereInput[] - id?: StringFilter<"Verification"> | string - identifier?: StringFilter<"Verification"> | string - value?: StringFilter<"Verification"> | string - expiresAt?: DateTimeFilter<"Verification"> | Date | string - createdAt?: DateTimeNullableFilter<"Verification"> | Date | string | null - updatedAt?: DateTimeNullableFilter<"Verification"> | Date | string | null - userId?: StringNullableFilter<"Verification"> | string | null - user?: XOR | null + export type AccountCreateInput = { + id?: string + accountId: string + providerId: string + accessToken?: string | null + refreshToken?: string | null + accessTokenExpiresAt?: Date | string | null + refreshTokenExpiresAt?: Date | string | null + scope?: string | null + idToken?: string | null + password?: string | null + createdAt?: Date | string + updatedAt?: Date | string + user: UserCreateNestedOneWithoutAccountsInput } - export type VerificationOrderByWithRelationInput = { - id?: SortOrder - identifier?: SortOrder - value?: SortOrder - expiresAt?: SortOrder - createdAt?: SortOrderInput | SortOrder - updatedAt?: SortOrderInput | SortOrder - userId?: SortOrderInput | SortOrder - user?: UserOrderByWithRelationInput + export type AccountUncheckedCreateInput = { + id?: string + userId: string + accountId: string + providerId: string + accessToken?: string | null + refreshToken?: string | null + accessTokenExpiresAt?: Date | string | null + refreshTokenExpiresAt?: Date | string | null + scope?: string | null + idToken?: string | null + password?: string | null + createdAt?: Date | string + updatedAt?: Date | string + } + + export type AccountUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + accountId?: StringFieldUpdateOperationsInput | string + providerId?: StringFieldUpdateOperationsInput | string + accessToken?: NullableStringFieldUpdateOperationsInput | string | null + refreshToken?: NullableStringFieldUpdateOperationsInput | string | null + accessTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + refreshTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + scope?: NullableStringFieldUpdateOperationsInput | string | null + idToken?: NullableStringFieldUpdateOperationsInput | string | null + password?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + user?: UserUpdateOneRequiredWithoutAccountsNestedInput + } + + export type AccountUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + accountId?: StringFieldUpdateOperationsInput | string + providerId?: StringFieldUpdateOperationsInput | string + accessToken?: NullableStringFieldUpdateOperationsInput | string | null + refreshToken?: NullableStringFieldUpdateOperationsInput | string | null + accessTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + refreshTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + scope?: NullableStringFieldUpdateOperationsInput | string | null + idToken?: NullableStringFieldUpdateOperationsInput | string | null + password?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type AccountCreateManyInput = { + id?: string + userId: string + accountId: string + providerId: string + accessToken?: string | null + refreshToken?: string | null + accessTokenExpiresAt?: Date | string | null + refreshTokenExpiresAt?: Date | string | null + scope?: string | null + idToken?: string | null + password?: string | null + createdAt?: Date | string + updatedAt?: Date | string + } + + export type AccountUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + accountId?: StringFieldUpdateOperationsInput | string + providerId?: StringFieldUpdateOperationsInput | string + accessToken?: NullableStringFieldUpdateOperationsInput | string | null + refreshToken?: NullableStringFieldUpdateOperationsInput | string | null + accessTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + refreshTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + scope?: NullableStringFieldUpdateOperationsInput | string | null + idToken?: NullableStringFieldUpdateOperationsInput | string | null + password?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type AccountUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + accountId?: StringFieldUpdateOperationsInput | string + providerId?: StringFieldUpdateOperationsInput | string + accessToken?: NullableStringFieldUpdateOperationsInput | string | null + refreshToken?: NullableStringFieldUpdateOperationsInput | string | null + accessTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + refreshTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + scope?: NullableStringFieldUpdateOperationsInput | string | null + idToken?: NullableStringFieldUpdateOperationsInput | string | null + password?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type SessionCreateInput = { + id?: string + expiresAt: Date | string + token: string + ipAddress?: string | null + userAgent?: string | null + createdAt?: Date | string + updatedAt?: Date | string + impersonatedBy?: string | null + user: UserCreateNestedOneWithoutSessionsInput + } + + export type SessionUncheckedCreateInput = { + id?: string + userId: string + expiresAt: Date | string + token: string + ipAddress?: string | null + userAgent?: string | null + createdAt?: Date | string + updatedAt?: Date | string + impersonatedBy?: string | null + } + + export type SessionUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + token?: StringFieldUpdateOperationsInput | string + ipAddress?: NullableStringFieldUpdateOperationsInput | string | null + userAgent?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + impersonatedBy?: NullableStringFieldUpdateOperationsInput | string | null + user?: UserUpdateOneRequiredWithoutSessionsNestedInput + } + + export type SessionUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + token?: StringFieldUpdateOperationsInput | string + ipAddress?: NullableStringFieldUpdateOperationsInput | string | null + userAgent?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + impersonatedBy?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type SessionCreateManyInput = { + id?: string + userId: string + expiresAt: Date | string + token: string + ipAddress?: string | null + userAgent?: string | null + createdAt?: Date | string + updatedAt?: Date | string + impersonatedBy?: string | null + } + + export type SessionUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + token?: StringFieldUpdateOperationsInput | string + ipAddress?: NullableStringFieldUpdateOperationsInput | string | null + userAgent?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + impersonatedBy?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type SessionUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + token?: StringFieldUpdateOperationsInput | string + ipAddress?: NullableStringFieldUpdateOperationsInput | string | null + userAgent?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + impersonatedBy?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type VerificationCreateInput = { + id?: string + identifier: string + value: string + expiresAt: Date | string + createdAt?: Date | string | null + updatedAt?: Date | string | null + user?: UserCreateNestedOneWithoutVerificationsInput + } + + export type VerificationUncheckedCreateInput = { + id?: string + identifier: string + value: string + expiresAt: Date | string + createdAt?: Date | string | null + updatedAt?: Date | string | null + userId?: string | null + } + + export type VerificationUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + identifier?: StringFieldUpdateOperationsInput | string + value?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + updatedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + user?: UserUpdateOneWithoutVerificationsNestedInput + } + + export type VerificationUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + identifier?: StringFieldUpdateOperationsInput | string + value?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + updatedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + userId?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type VerificationCreateManyInput = { + id?: string + identifier: string + value: string + expiresAt: Date | string + createdAt?: Date | string | null + updatedAt?: Date | string | null + userId?: string | null + } + + export type VerificationUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + identifier?: StringFieldUpdateOperationsInput | string + value?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + updatedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + } + + export type VerificationUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + identifier?: StringFieldUpdateOperationsInput | string + value?: StringFieldUpdateOperationsInput | string + expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string + createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + updatedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + userId?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type PasskeyCreateInput = { + id?: string + name?: string | null + publicKey: string + credentialID: string + counter: number + deviceType: string + backedUp: boolean + transports?: string | null + createdAt?: Date | string | null + aaguid?: string | null + user: UserCreateNestedOneWithoutPasskeysInput } - export type VerificationWhereUniqueInput = Prisma.AtLeast<{ + export type PasskeyUncheckedCreateInput = { id?: string - AND?: VerificationWhereInput | VerificationWhereInput[] - OR?: VerificationWhereInput[] - NOT?: VerificationWhereInput | VerificationWhereInput[] - identifier?: StringFilter<"Verification"> | string - value?: StringFilter<"Verification"> | string - expiresAt?: DateTimeFilter<"Verification"> | Date | string - createdAt?: DateTimeNullableFilter<"Verification"> | Date | string | null - updatedAt?: DateTimeNullableFilter<"Verification"> | Date | string | null - userId?: StringNullableFilter<"Verification"> | string | null - user?: XOR | null - }, "id"> + name?: string | null + publicKey: string + userId: string + credentialID: string + counter: number + deviceType: string + backedUp: boolean + transports?: string | null + createdAt?: Date | string | null + aaguid?: string | null + } - export type VerificationOrderByWithAggregationInput = { - id?: SortOrder - identifier?: SortOrder - value?: SortOrder - expiresAt?: SortOrder - createdAt?: SortOrderInput | SortOrder - updatedAt?: SortOrderInput | SortOrder - userId?: SortOrderInput | SortOrder - _count?: VerificationCountOrderByAggregateInput - _max?: VerificationMaxOrderByAggregateInput - _min?: VerificationMinOrderByAggregateInput + export type PasskeyUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + publicKey?: StringFieldUpdateOperationsInput | string + credentialID?: StringFieldUpdateOperationsInput | string + counter?: IntFieldUpdateOperationsInput | number + deviceType?: StringFieldUpdateOperationsInput | string + backedUp?: BoolFieldUpdateOperationsInput | boolean + transports?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + aaguid?: NullableStringFieldUpdateOperationsInput | string | null + user?: UserUpdateOneRequiredWithoutPasskeysNestedInput } - export type VerificationScalarWhereWithAggregatesInput = { - AND?: VerificationScalarWhereWithAggregatesInput | VerificationScalarWhereWithAggregatesInput[] - OR?: VerificationScalarWhereWithAggregatesInput[] - NOT?: VerificationScalarWhereWithAggregatesInput | VerificationScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"Verification"> | string - identifier?: StringWithAggregatesFilter<"Verification"> | string - value?: StringWithAggregatesFilter<"Verification"> | string - expiresAt?: DateTimeWithAggregatesFilter<"Verification"> | Date | string - createdAt?: DateTimeNullableWithAggregatesFilter<"Verification"> | Date | string | null - updatedAt?: DateTimeNullableWithAggregatesFilter<"Verification"> | Date | string | null - userId?: StringNullableWithAggregatesFilter<"Verification"> | string | null + export type PasskeyUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + publicKey?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + credentialID?: StringFieldUpdateOperationsInput | string + counter?: IntFieldUpdateOperationsInput | number + deviceType?: StringFieldUpdateOperationsInput | string + backedUp?: BoolFieldUpdateOperationsInput | boolean + transports?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + aaguid?: NullableStringFieldUpdateOperationsInput | string | null } - export type PasskeyWhereInput = { - AND?: PasskeyWhereInput | PasskeyWhereInput[] - OR?: PasskeyWhereInput[] - NOT?: PasskeyWhereInput | PasskeyWhereInput[] - id?: StringFilter<"Passkey"> | string - name?: StringNullableFilter<"Passkey"> | string | null - publicKey?: StringFilter<"Passkey"> | string - userId?: StringFilter<"Passkey"> | string - credentialID?: StringFilter<"Passkey"> | string - counter?: IntFilter<"Passkey"> | number - deviceType?: StringFilter<"Passkey"> | string - backedUp?: BoolFilter<"Passkey"> | boolean - transports?: StringNullableFilter<"Passkey"> | string | null - createdAt?: DateTimeNullableFilter<"Passkey"> | Date | string | null - aaguid?: StringNullableFilter<"Passkey"> | string | null - user?: XOR + export type PasskeyCreateManyInput = { + id?: string + name?: string | null + publicKey: string + userId: string + credentialID: string + counter: number + deviceType: string + backedUp: boolean + transports?: string | null + createdAt?: Date | string | null + aaguid?: string | null } - export type PasskeyOrderByWithRelationInput = { - id?: SortOrder - name?: SortOrderInput | SortOrder - publicKey?: SortOrder - userId?: SortOrder - credentialID?: SortOrder - counter?: SortOrder - deviceType?: SortOrder - backedUp?: SortOrder - transports?: SortOrderInput | SortOrder - createdAt?: SortOrderInput | SortOrder - aaguid?: SortOrderInput | SortOrder - user?: UserOrderByWithRelationInput + export type PasskeyUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + publicKey?: StringFieldUpdateOperationsInput | string + credentialID?: StringFieldUpdateOperationsInput | string + counter?: IntFieldUpdateOperationsInput | number + deviceType?: StringFieldUpdateOperationsInput | string + backedUp?: BoolFieldUpdateOperationsInput | boolean + transports?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + aaguid?: NullableStringFieldUpdateOperationsInput | string | null } - export type PasskeyWhereUniqueInput = Prisma.AtLeast<{ - id?: string - AND?: PasskeyWhereInput | PasskeyWhereInput[] - OR?: PasskeyWhereInput[] - NOT?: PasskeyWhereInput | PasskeyWhereInput[] - name?: StringNullableFilter<"Passkey"> | string | null - publicKey?: StringFilter<"Passkey"> | string - userId?: StringFilter<"Passkey"> | string - credentialID?: StringFilter<"Passkey"> | string - counter?: IntFilter<"Passkey"> | number - deviceType?: StringFilter<"Passkey"> | string - backedUp?: BoolFilter<"Passkey"> | boolean - transports?: StringNullableFilter<"Passkey"> | string | null - createdAt?: DateTimeNullableFilter<"Passkey"> | Date | string | null - aaguid?: StringNullableFilter<"Passkey"> | string | null - user?: XOR - }, "id"> + export type PasskeyUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + publicKey?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + credentialID?: StringFieldUpdateOperationsInput | string + counter?: IntFieldUpdateOperationsInput | number + deviceType?: StringFieldUpdateOperationsInput | string + backedUp?: BoolFieldUpdateOperationsInput | boolean + transports?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + aaguid?: NullableStringFieldUpdateOperationsInput | string | null + } - export type PasskeyOrderByWithAggregationInput = { - id?: SortOrder - name?: SortOrderInput | SortOrder - publicKey?: SortOrder - userId?: SortOrder - credentialID?: SortOrder - counter?: SortOrder - deviceType?: SortOrder - backedUp?: SortOrder - transports?: SortOrderInput | SortOrder - createdAt?: SortOrderInput | SortOrder - aaguid?: SortOrderInput | SortOrder - _count?: PasskeyCountOrderByAggregateInput - _avg?: PasskeyAvgOrderByAggregateInput - _max?: PasskeyMaxOrderByAggregateInput - _min?: PasskeyMinOrderByAggregateInput - _sum?: PasskeySumOrderByAggregateInput + export type ModelCreateInput = { + legacyId?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number + createdAt?: Date | string + updatedAt?: Date | string + deletedAt?: Date | string | null + latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput + parentModel?: ModelCreateNestedOneWithoutChildModelsInput + childModels?: ModelCreateNestedManyWithoutParentModelInput + parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput + versions?: ModelVersionCreateNestedManyWithoutModelInput + authors?: ModelAuthorCreateNestedManyWithoutModelInput + permissions?: ModelPermissionCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput + likes?: ModelLikeCreateNestedManyWithoutModelInput + interactions?: ModelInteractionCreateNestedManyWithoutModelInput + drafts?: ModelDraftCreateNestedManyWithoutModelInput + comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type PasskeyScalarWhereWithAggregatesInput = { - AND?: PasskeyScalarWhereWithAggregatesInput | PasskeyScalarWhereWithAggregatesInput[] - OR?: PasskeyScalarWhereWithAggregatesInput[] - NOT?: PasskeyScalarWhereWithAggregatesInput | PasskeyScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"Passkey"> | string - name?: StringNullableWithAggregatesFilter<"Passkey"> | string | null - publicKey?: StringWithAggregatesFilter<"Passkey"> | string - userId?: StringWithAggregatesFilter<"Passkey"> | string - credentialID?: StringWithAggregatesFilter<"Passkey"> | string - counter?: IntWithAggregatesFilter<"Passkey"> | number - deviceType?: StringWithAggregatesFilter<"Passkey"> | string - backedUp?: BoolWithAggregatesFilter<"Passkey"> | boolean - transports?: StringNullableWithAggregatesFilter<"Passkey"> | string | null - createdAt?: DateTimeNullableWithAggregatesFilter<"Passkey"> | Date | string | null - aaguid?: StringNullableWithAggregatesFilter<"Passkey"> | string | null + export type ModelUncheckedCreateInput = { + id?: string + legacyId?: number | null + latestVersionNumber?: number | null + parentModelId?: string | null + parentVersionNumber?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number + createdAt?: Date | string + updatedAt?: Date | string + deletedAt?: Date | string | null + childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput + versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput + authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput + permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput + likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput + interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput + drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelWhereInput = { - AND?: ModelWhereInput | ModelWhereInput[] - OR?: ModelWhereInput[] - NOT?: ModelWhereInput | ModelWhereInput[] - id?: StringFilter<"Model"> | string - legacyId?: IntNullableFilter<"Model"> | number | null - latestVersionNumber?: IntNullableFilter<"Model"> | number | null - parentModelId?: StringNullableFilter<"Model"> | string | null - parentVersionNumber?: IntNullableFilter<"Model"> | number | null - visibility?: EnumModelVisibilityFilter<"Model"> | $Enums.ModelVisibility - isEndorsed?: BoolFilter<"Model"> | boolean - isLibraryModel?: BoolFilter<"Model"> | boolean - viewCount?: IntFilter<"Model"> | number - runCount?: IntFilter<"Model"> | number - downloadCount?: IntFilter<"Model"> | number - shareCount?: IntFilter<"Model"> | number - createdAt?: DateTimeFilter<"Model"> | Date | string - updatedAt?: DateTimeFilter<"Model"> | Date | string - deletedAt?: DateTimeNullableFilter<"Model"> | Date | string | null - latestVersion?: XOR | null - parentModel?: XOR | null - childModels?: ModelListRelationFilter - parentVersion?: XOR | null - versions?: ModelVersionListRelationFilter - authors?: ModelAuthorListRelationFilter - permissions?: ModelPermissionListRelationFilter - additionalFiles?: ModelAdditionalFileListRelationFilter - likes?: ModelLikeListRelationFilter - interactions?: ModelInteractionListRelationFilter - drafts?: ModelDraftListRelationFilter - comments?: ModelCommentListRelationFilter + export type ModelUpdateInput = { + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + latestVersion?: ModelVersionUpdateOneWithoutLatestOfModelNestedInput + parentModel?: ModelUpdateOneWithoutChildModelsNestedInput + childModels?: ModelUpdateManyWithoutParentModelNestedInput + parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput + versions?: ModelVersionUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput + likes?: ModelLikeUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUpdateManyWithoutModelNestedInput + drafts?: ModelDraftUpdateManyWithoutModelNestedInput + comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type ModelOrderByWithRelationInput = { - id?: SortOrder - legacyId?: SortOrderInput | SortOrder - latestVersionNumber?: SortOrderInput | SortOrder - parentModelId?: SortOrderInput | SortOrder - parentVersionNumber?: SortOrderInput | SortOrder - visibility?: SortOrder - isEndorsed?: SortOrder - isLibraryModel?: SortOrder - viewCount?: SortOrder - runCount?: SortOrder - downloadCount?: SortOrder - shareCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - deletedAt?: SortOrderInput | SortOrder - latestVersion?: ModelVersionOrderByWithRelationInput - parentModel?: ModelOrderByWithRelationInput - childModels?: ModelOrderByRelationAggregateInput - parentVersion?: ModelVersionOrderByWithRelationInput - versions?: ModelVersionOrderByRelationAggregateInput - authors?: ModelAuthorOrderByRelationAggregateInput - permissions?: ModelPermissionOrderByRelationAggregateInput - additionalFiles?: ModelAdditionalFileOrderByRelationAggregateInput - likes?: ModelLikeOrderByRelationAggregateInput - interactions?: ModelInteractionOrderByRelationAggregateInput - drafts?: ModelDraftOrderByRelationAggregateInput - comments?: ModelCommentOrderByRelationAggregateInput + export type ModelUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + parentModelId?: NullableStringFieldUpdateOperationsInput | string | null + parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput + versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput + likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput + drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput } - export type ModelWhereUniqueInput = Prisma.AtLeast<{ + export type ModelCreateManyInput = { id?: string - legacyId?: number - id_latestVersionNumber?: ModelIdLatestVersionNumberCompoundUniqueInput - AND?: ModelWhereInput | ModelWhereInput[] - OR?: ModelWhereInput[] - NOT?: ModelWhereInput | ModelWhereInput[] - latestVersionNumber?: IntNullableFilter<"Model"> | number | null - parentModelId?: StringNullableFilter<"Model"> | string | null - parentVersionNumber?: IntNullableFilter<"Model"> | number | null - visibility?: EnumModelVisibilityFilter<"Model"> | $Enums.ModelVisibility - isEndorsed?: BoolFilter<"Model"> | boolean - isLibraryModel?: BoolFilter<"Model"> | boolean - viewCount?: IntFilter<"Model"> | number - runCount?: IntFilter<"Model"> | number - downloadCount?: IntFilter<"Model"> | number - shareCount?: IntFilter<"Model"> | number - createdAt?: DateTimeFilter<"Model"> | Date | string - updatedAt?: DateTimeFilter<"Model"> | Date | string - deletedAt?: DateTimeNullableFilter<"Model"> | Date | string | null - latestVersion?: XOR | null - parentModel?: XOR | null - childModels?: ModelListRelationFilter - parentVersion?: XOR | null - versions?: ModelVersionListRelationFilter - authors?: ModelAuthorListRelationFilter - permissions?: ModelPermissionListRelationFilter - additionalFiles?: ModelAdditionalFileListRelationFilter - likes?: ModelLikeListRelationFilter - interactions?: ModelInteractionListRelationFilter - drafts?: ModelDraftListRelationFilter - comments?: ModelCommentListRelationFilter - }, "id" | "legacyId" | "id_latestVersionNumber"> + legacyId?: number | null + latestVersionNumber?: number | null + parentModelId?: string | null + parentVersionNumber?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number + createdAt?: Date | string + updatedAt?: Date | string + deletedAt?: Date | string | null + } - export type ModelOrderByWithAggregationInput = { - id?: SortOrder - legacyId?: SortOrderInput | SortOrder - latestVersionNumber?: SortOrderInput | SortOrder - parentModelId?: SortOrderInput | SortOrder - parentVersionNumber?: SortOrderInput | SortOrder - visibility?: SortOrder - isEndorsed?: SortOrder - isLibraryModel?: SortOrder - viewCount?: SortOrder - runCount?: SortOrder - downloadCount?: SortOrder - shareCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - deletedAt?: SortOrderInput | SortOrder - _count?: ModelCountOrderByAggregateInput - _avg?: ModelAvgOrderByAggregateInput - _max?: ModelMaxOrderByAggregateInput - _min?: ModelMinOrderByAggregateInput - _sum?: ModelSumOrderByAggregateInput + export type ModelUpdateManyMutationInput = { + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null } - export type ModelScalarWhereWithAggregatesInput = { - AND?: ModelScalarWhereWithAggregatesInput | ModelScalarWhereWithAggregatesInput[] - OR?: ModelScalarWhereWithAggregatesInput[] - NOT?: ModelScalarWhereWithAggregatesInput | ModelScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"Model"> | string - legacyId?: IntNullableWithAggregatesFilter<"Model"> | number | null - latestVersionNumber?: IntNullableWithAggregatesFilter<"Model"> | number | null - parentModelId?: StringNullableWithAggregatesFilter<"Model"> | string | null - parentVersionNumber?: IntNullableWithAggregatesFilter<"Model"> | number | null - visibility?: EnumModelVisibilityWithAggregatesFilter<"Model"> | $Enums.ModelVisibility - isEndorsed?: BoolWithAggregatesFilter<"Model"> | boolean - isLibraryModel?: BoolWithAggregatesFilter<"Model"> | boolean - viewCount?: IntWithAggregatesFilter<"Model"> | number - runCount?: IntWithAggregatesFilter<"Model"> | number - downloadCount?: IntWithAggregatesFilter<"Model"> | number - shareCount?: IntWithAggregatesFilter<"Model"> | number - createdAt?: DateTimeWithAggregatesFilter<"Model"> | Date | string - updatedAt?: DateTimeWithAggregatesFilter<"Model"> | Date | string - deletedAt?: DateTimeNullableWithAggregatesFilter<"Model"> | Date | string | null + export type ModelUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + parentModelId?: NullableStringFieldUpdateOperationsInput | string | null + parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null } - export type ModelVersionWhereInput = { - AND?: ModelVersionWhereInput | ModelVersionWhereInput[] - OR?: ModelVersionWhereInput[] - NOT?: ModelVersionWhereInput | ModelVersionWhereInput[] - modelId?: StringFilter<"ModelVersion"> | string - versionNumber?: IntFilter<"ModelVersion"> | number - title?: StringFilter<"ModelVersion"> | string - description?: StringNullableFilter<"ModelVersion"> | string | null - changeSummary?: StringNullableFilter<"ModelVersion"> | string | null - previewImageFileKey?: StringNullableFilter<"ModelVersion"> | string | null - netlogoFileKey?: StringFilter<"ModelVersion"> | string - netlogoVersion?: StringNullableFilter<"ModelVersion"> | string | null - infoTab?: StringNullableFilter<"ModelVersion"> | string | null - createdAt?: DateTimeFilter<"ModelVersion"> | Date | string - finalizedAt?: DateTimeNullableFilter<"ModelVersion"> | Date | string | null - model?: XOR - latestOfModel?: XOR | null - parentOfModels?: ModelListRelationFilter - tags?: ModelVersionTagListRelationFilter - taggedAdditionalFiles?: ModelAdditionalFileListRelationFilter + export type ModelVersionCreateInput = { + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + model: ModelCreateNestedOneWithoutVersionsInput + latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput + parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput + tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput + taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput + } + + export type ModelVersionUncheckedCreateInput = { + modelId: string + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput + parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput + tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput + taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput + } + + export type ModelVersionUpdateInput = { + versionNumber?: IntFieldUpdateOperationsInput | number + title?: StringFieldUpdateOperationsInput | string + description?: NullableStringFieldUpdateOperationsInput | string | null + changeSummary?: NullableStringFieldUpdateOperationsInput | string | null + previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null + netlogoFileKey?: StringFieldUpdateOperationsInput | string + netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null + infoTab?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + model?: ModelUpdateOneRequiredWithoutVersionsNestedInput + latestOfModel?: ModelUpdateOneWithoutLatestVersionNestedInput + parentOfModels?: ModelUpdateManyWithoutParentVersionNestedInput + tags?: ModelVersionTagUpdateManyWithoutModelVersionNestedInput + taggedAdditionalFiles?: ModelAdditionalFileUpdateManyWithoutTaggedVersionNestedInput } - export type ModelVersionOrderByWithRelationInput = { - modelId?: SortOrder - versionNumber?: SortOrder - title?: SortOrder - description?: SortOrderInput | SortOrder - changeSummary?: SortOrderInput | SortOrder - previewImageFileKey?: SortOrderInput | SortOrder - netlogoFileKey?: SortOrder - netlogoVersion?: SortOrderInput | SortOrder - infoTab?: SortOrderInput | SortOrder - createdAt?: SortOrder - finalizedAt?: SortOrderInput | SortOrder - model?: ModelOrderByWithRelationInput - latestOfModel?: ModelOrderByWithRelationInput - parentOfModels?: ModelOrderByRelationAggregateInput - tags?: ModelVersionTagOrderByRelationAggregateInput - taggedAdditionalFiles?: ModelAdditionalFileOrderByRelationAggregateInput + export type ModelVersionUncheckedUpdateInput = { + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: IntFieldUpdateOperationsInput | number + title?: StringFieldUpdateOperationsInput | string + description?: NullableStringFieldUpdateOperationsInput | string | null + changeSummary?: NullableStringFieldUpdateOperationsInput | string | null + previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null + netlogoFileKey?: StringFieldUpdateOperationsInput | string + netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null + infoTab?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + latestOfModel?: ModelUncheckedUpdateOneWithoutLatestVersionNestedInput + parentOfModels?: ModelUncheckedUpdateManyWithoutParentVersionNestedInput + tags?: ModelVersionTagUncheckedUpdateManyWithoutModelVersionNestedInput + taggedAdditionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutTaggedVersionNestedInput } - export type ModelVersionWhereUniqueInput = Prisma.AtLeast<{ - modelId_versionNumber?: ModelVersionModelIdVersionNumberCompoundUniqueInput - AND?: ModelVersionWhereInput | ModelVersionWhereInput[] - OR?: ModelVersionWhereInput[] - NOT?: ModelVersionWhereInput | ModelVersionWhereInput[] - modelId?: StringFilter<"ModelVersion"> | string - versionNumber?: IntFilter<"ModelVersion"> | number - title?: StringFilter<"ModelVersion"> | string - description?: StringNullableFilter<"ModelVersion"> | string | null - changeSummary?: StringNullableFilter<"ModelVersion"> | string | null - previewImageFileKey?: StringNullableFilter<"ModelVersion"> | string | null - netlogoFileKey?: StringFilter<"ModelVersion"> | string - netlogoVersion?: StringNullableFilter<"ModelVersion"> | string | null - infoTab?: StringNullableFilter<"ModelVersion"> | string | null - createdAt?: DateTimeFilter<"ModelVersion"> | Date | string - finalizedAt?: DateTimeNullableFilter<"ModelVersion"> | Date | string | null - model?: XOR - latestOfModel?: XOR | null - parentOfModels?: ModelListRelationFilter - tags?: ModelVersionTagListRelationFilter - taggedAdditionalFiles?: ModelAdditionalFileListRelationFilter - }, "modelId_versionNumber"> + export type ModelVersionCreateManyInput = { + modelId: string + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + } - export type ModelVersionOrderByWithAggregationInput = { - modelId?: SortOrder - versionNumber?: SortOrder - title?: SortOrder - description?: SortOrderInput | SortOrder - changeSummary?: SortOrderInput | SortOrder - previewImageFileKey?: SortOrderInput | SortOrder - netlogoFileKey?: SortOrder - netlogoVersion?: SortOrderInput | SortOrder - infoTab?: SortOrderInput | SortOrder - createdAt?: SortOrder - finalizedAt?: SortOrderInput | SortOrder - _count?: ModelVersionCountOrderByAggregateInput - _avg?: ModelVersionAvgOrderByAggregateInput - _max?: ModelVersionMaxOrderByAggregateInput - _min?: ModelVersionMinOrderByAggregateInput - _sum?: ModelVersionSumOrderByAggregateInput + export type ModelVersionUpdateManyMutationInput = { + versionNumber?: IntFieldUpdateOperationsInput | number + title?: StringFieldUpdateOperationsInput | string + description?: NullableStringFieldUpdateOperationsInput | string | null + changeSummary?: NullableStringFieldUpdateOperationsInput | string | null + previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null + netlogoFileKey?: StringFieldUpdateOperationsInput | string + netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null + infoTab?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null } - export type ModelVersionScalarWhereWithAggregatesInput = { - AND?: ModelVersionScalarWhereWithAggregatesInput | ModelVersionScalarWhereWithAggregatesInput[] - OR?: ModelVersionScalarWhereWithAggregatesInput[] - NOT?: ModelVersionScalarWhereWithAggregatesInput | ModelVersionScalarWhereWithAggregatesInput[] - modelId?: StringWithAggregatesFilter<"ModelVersion"> | string - versionNumber?: IntWithAggregatesFilter<"ModelVersion"> | number - title?: StringWithAggregatesFilter<"ModelVersion"> | string - description?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null - changeSummary?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null - previewImageFileKey?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null - netlogoFileKey?: StringWithAggregatesFilter<"ModelVersion"> | string - netlogoVersion?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null - infoTab?: StringNullableWithAggregatesFilter<"ModelVersion"> | string | null - createdAt?: DateTimeWithAggregatesFilter<"ModelVersion"> | Date | string - finalizedAt?: DateTimeNullableWithAggregatesFilter<"ModelVersion"> | Date | string | null + export type ModelVersionUncheckedUpdateManyInput = { + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: IntFieldUpdateOperationsInput | number + title?: StringFieldUpdateOperationsInput | string + description?: NullableStringFieldUpdateOperationsInput | string | null + changeSummary?: NullableStringFieldUpdateOperationsInput | string | null + previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null + netlogoFileKey?: StringFieldUpdateOperationsInput | string + netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null + infoTab?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null } - export type ModelVersionTagWhereInput = { - AND?: ModelVersionTagWhereInput | ModelVersionTagWhereInput[] - OR?: ModelVersionTagWhereInput[] - NOT?: ModelVersionTagWhereInput | ModelVersionTagWhereInput[] - modelId?: StringFilter<"ModelVersionTag"> | string - versionNumber?: IntFilter<"ModelVersionTag"> | number - tagId?: StringFilter<"ModelVersionTag"> | string - createdAt?: DateTimeFilter<"ModelVersionTag"> | Date | string - modelVersion?: XOR - tag?: XOR + export type ModelVersionTagCreateInput = { + createdAt?: Date | string + modelVersion: ModelVersionCreateNestedOneWithoutTagsInput + tag: TagCreateNestedOneWithoutModelVersionsInput } - export type ModelVersionTagOrderByWithRelationInput = { - modelId?: SortOrder - versionNumber?: SortOrder - tagId?: SortOrder - createdAt?: SortOrder - modelVersion?: ModelVersionOrderByWithRelationInput - tag?: TagOrderByWithRelationInput + export type ModelVersionTagUncheckedCreateInput = { + modelId: string + versionNumber: number + tagId: string + createdAt?: Date | string } - export type ModelVersionTagWhereUniqueInput = Prisma.AtLeast<{ - modelId_versionNumber_tagId?: ModelVersionTagModelIdVersionNumberTagIdCompoundUniqueInput - AND?: ModelVersionTagWhereInput | ModelVersionTagWhereInput[] - OR?: ModelVersionTagWhereInput[] - NOT?: ModelVersionTagWhereInput | ModelVersionTagWhereInput[] - modelId?: StringFilter<"ModelVersionTag"> | string - versionNumber?: IntFilter<"ModelVersionTag"> | number - tagId?: StringFilter<"ModelVersionTag"> | string - createdAt?: DateTimeFilter<"ModelVersionTag"> | Date | string - modelVersion?: XOR - tag?: XOR - }, "modelId_versionNumber_tagId"> + export type ModelVersionTagUpdateInput = { + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + modelVersion?: ModelVersionUpdateOneRequiredWithoutTagsNestedInput + tag?: TagUpdateOneRequiredWithoutModelVersionsNestedInput + } - export type ModelVersionTagOrderByWithAggregationInput = { - modelId?: SortOrder - versionNumber?: SortOrder - tagId?: SortOrder - createdAt?: SortOrder - _count?: ModelVersionTagCountOrderByAggregateInput - _avg?: ModelVersionTagAvgOrderByAggregateInput - _max?: ModelVersionTagMaxOrderByAggregateInput - _min?: ModelVersionTagMinOrderByAggregateInput - _sum?: ModelVersionTagSumOrderByAggregateInput + export type ModelVersionTagUncheckedUpdateInput = { + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: IntFieldUpdateOperationsInput | number + tagId?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelVersionTagScalarWhereWithAggregatesInput = { - AND?: ModelVersionTagScalarWhereWithAggregatesInput | ModelVersionTagScalarWhereWithAggregatesInput[] - OR?: ModelVersionTagScalarWhereWithAggregatesInput[] - NOT?: ModelVersionTagScalarWhereWithAggregatesInput | ModelVersionTagScalarWhereWithAggregatesInput[] - modelId?: StringWithAggregatesFilter<"ModelVersionTag"> | string - versionNumber?: IntWithAggregatesFilter<"ModelVersionTag"> | number - tagId?: StringWithAggregatesFilter<"ModelVersionTag"> | string - createdAt?: DateTimeWithAggregatesFilter<"ModelVersionTag"> | Date | string + export type ModelVersionTagCreateManyInput = { + modelId: string + versionNumber: number + tagId: string + createdAt?: Date | string } - export type ModelAdditionalFileWhereInput = { - AND?: ModelAdditionalFileWhereInput | ModelAdditionalFileWhereInput[] - OR?: ModelAdditionalFileWhereInput[] - NOT?: ModelAdditionalFileWhereInput | ModelAdditionalFileWhereInput[] - id?: StringFilter<"ModelAdditionalFile"> | string - modelId?: StringFilter<"ModelAdditionalFile"> | string - taggedVersionNumber?: IntFilter<"ModelAdditionalFile"> | number - fileKey?: StringFilter<"ModelAdditionalFile"> | string - kind?: EnumModelFileKindFilter<"ModelAdditionalFile"> | $Enums.ModelFileKind - createdAt?: DateTimeFilter<"ModelAdditionalFile"> | Date | string - model?: XOR - taggedVersion?: XOR + export type ModelVersionTagUpdateManyMutationInput = { + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelAdditionalFileOrderByWithRelationInput = { - id?: SortOrder - modelId?: SortOrder - taggedVersionNumber?: SortOrder - fileKey?: SortOrder - kind?: SortOrder - createdAt?: SortOrder - model?: ModelOrderByWithRelationInput - taggedVersion?: ModelVersionOrderByWithRelationInput + export type ModelVersionTagUncheckedUpdateManyInput = { + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: IntFieldUpdateOperationsInput | number + tagId?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelAdditionalFileWhereUniqueInput = Prisma.AtLeast<{ + export type ModelAdditionalFileCreateInput = { id?: string - AND?: ModelAdditionalFileWhereInput | ModelAdditionalFileWhereInput[] - OR?: ModelAdditionalFileWhereInput[] - NOT?: ModelAdditionalFileWhereInput | ModelAdditionalFileWhereInput[] - modelId?: StringFilter<"ModelAdditionalFile"> | string - taggedVersionNumber?: IntFilter<"ModelAdditionalFile"> | number - fileKey?: StringFilter<"ModelAdditionalFile"> | string - kind?: EnumModelFileKindFilter<"ModelAdditionalFile"> | $Enums.ModelFileKind - createdAt?: DateTimeFilter<"ModelAdditionalFile"> | Date | string - model?: XOR - taggedVersion?: XOR - }, "id"> - - export type ModelAdditionalFileOrderByWithAggregationInput = { - id?: SortOrder - modelId?: SortOrder - taggedVersionNumber?: SortOrder - fileKey?: SortOrder - kind?: SortOrder - createdAt?: SortOrder - _count?: ModelAdditionalFileCountOrderByAggregateInput - _avg?: ModelAdditionalFileAvgOrderByAggregateInput - _max?: ModelAdditionalFileMaxOrderByAggregateInput - _min?: ModelAdditionalFileMinOrderByAggregateInput - _sum?: ModelAdditionalFileSumOrderByAggregateInput + fileKey: string + kind?: $Enums.ModelFileKind + createdAt?: Date | string + model: ModelCreateNestedOneWithoutAdditionalFilesInput + taggedVersion: ModelVersionCreateNestedOneWithoutTaggedAdditionalFilesInput } - export type ModelAdditionalFileScalarWhereWithAggregatesInput = { - AND?: ModelAdditionalFileScalarWhereWithAggregatesInput | ModelAdditionalFileScalarWhereWithAggregatesInput[] - OR?: ModelAdditionalFileScalarWhereWithAggregatesInput[] - NOT?: ModelAdditionalFileScalarWhereWithAggregatesInput | ModelAdditionalFileScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"ModelAdditionalFile"> | string - modelId?: StringWithAggregatesFilter<"ModelAdditionalFile"> | string - taggedVersionNumber?: IntWithAggregatesFilter<"ModelAdditionalFile"> | number - fileKey?: StringWithAggregatesFilter<"ModelAdditionalFile"> | string - kind?: EnumModelFileKindWithAggregatesFilter<"ModelAdditionalFile"> | $Enums.ModelFileKind - createdAt?: DateTimeWithAggregatesFilter<"ModelAdditionalFile"> | Date | string + export type ModelAdditionalFileUncheckedCreateInput = { + id?: string + modelId: string + taggedVersionNumber: number + fileKey: string + kind?: $Enums.ModelFileKind + createdAt?: Date | string } - export type TagWhereInput = { - AND?: TagWhereInput | TagWhereInput[] - OR?: TagWhereInput[] - NOT?: TagWhereInput | TagWhereInput[] - id?: StringFilter<"Tag"> | string - legacyId?: IntNullableFilter<"Tag"> | number | null - name?: StringFilter<"Tag"> | string - displayName?: StringNullableFilter<"Tag"> | string | null - createdAt?: DateTimeFilter<"Tag"> | Date | string - modelVersions?: ModelVersionTagListRelationFilter + export type ModelAdditionalFileUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + fileKey?: StringFieldUpdateOperationsInput | string + kind?: EnumModelFileKindFieldUpdateOperationsInput | $Enums.ModelFileKind + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + model?: ModelUpdateOneRequiredWithoutAdditionalFilesNestedInput + taggedVersion?: ModelVersionUpdateOneRequiredWithoutTaggedAdditionalFilesNestedInput } - export type TagOrderByWithRelationInput = { - id?: SortOrder - legacyId?: SortOrderInput | SortOrder - name?: SortOrder - displayName?: SortOrderInput | SortOrder - createdAt?: SortOrder - modelVersions?: ModelVersionTagOrderByRelationAggregateInput + export type ModelAdditionalFileUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + modelId?: StringFieldUpdateOperationsInput | string + taggedVersionNumber?: IntFieldUpdateOperationsInput | number + fileKey?: StringFieldUpdateOperationsInput | string + kind?: EnumModelFileKindFieldUpdateOperationsInput | $Enums.ModelFileKind + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type TagWhereUniqueInput = Prisma.AtLeast<{ + export type ModelAdditionalFileCreateManyInput = { id?: string - legacyId?: number - name?: string - AND?: TagWhereInput | TagWhereInput[] - OR?: TagWhereInput[] - NOT?: TagWhereInput | TagWhereInput[] - displayName?: StringNullableFilter<"Tag"> | string | null - createdAt?: DateTimeFilter<"Tag"> | Date | string - modelVersions?: ModelVersionTagListRelationFilter - }, "id" | "legacyId" | "name"> + modelId: string + taggedVersionNumber: number + fileKey: string + kind?: $Enums.ModelFileKind + createdAt?: Date | string + } - export type TagOrderByWithAggregationInput = { - id?: SortOrder - legacyId?: SortOrderInput | SortOrder - name?: SortOrder - displayName?: SortOrderInput | SortOrder - createdAt?: SortOrder - _count?: TagCountOrderByAggregateInput - _avg?: TagAvgOrderByAggregateInput - _max?: TagMaxOrderByAggregateInput - _min?: TagMinOrderByAggregateInput - _sum?: TagSumOrderByAggregateInput + export type ModelAdditionalFileUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + fileKey?: StringFieldUpdateOperationsInput | string + kind?: EnumModelFileKindFieldUpdateOperationsInput | $Enums.ModelFileKind + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type TagScalarWhereWithAggregatesInput = { - AND?: TagScalarWhereWithAggregatesInput | TagScalarWhereWithAggregatesInput[] - OR?: TagScalarWhereWithAggregatesInput[] - NOT?: TagScalarWhereWithAggregatesInput | TagScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"Tag"> | string - legacyId?: IntNullableWithAggregatesFilter<"Tag"> | number | null - name?: StringWithAggregatesFilter<"Tag"> | string - displayName?: StringNullableWithAggregatesFilter<"Tag"> | string | null - createdAt?: DateTimeWithAggregatesFilter<"Tag"> | Date | string + export type ModelAdditionalFileUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + modelId?: StringFieldUpdateOperationsInput | string + taggedVersionNumber?: IntFieldUpdateOperationsInput | number + fileKey?: StringFieldUpdateOperationsInput | string + kind?: EnumModelFileKindFieldUpdateOperationsInput | $Enums.ModelFileKind + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelAuthorWhereInput = { - AND?: ModelAuthorWhereInput | ModelAuthorWhereInput[] - OR?: ModelAuthorWhereInput[] - NOT?: ModelAuthorWhereInput | ModelAuthorWhereInput[] - modelId?: StringFilter<"ModelAuthor"> | string - userId?: StringFilter<"ModelAuthor"> | string - role?: EnumAuthorRoleFilter<"ModelAuthor"> | $Enums.AuthorRole - createdAt?: DateTimeFilter<"ModelAuthor"> | Date | string - model?: XOR - user?: XOR + export type TagCreateInput = { + id?: string + legacyId?: number | null + name: string + displayName?: string | null + createdAt?: Date | string + modelVersions?: ModelVersionTagCreateNestedManyWithoutTagInput } - export type ModelAuthorOrderByWithRelationInput = { - modelId?: SortOrder - userId?: SortOrder - role?: SortOrder - createdAt?: SortOrder - model?: ModelOrderByWithRelationInput - user?: UserOrderByWithRelationInput + export type TagUncheckedCreateInput = { + id?: string + legacyId?: number | null + name: string + displayName?: string | null + createdAt?: Date | string + modelVersions?: ModelVersionTagUncheckedCreateNestedManyWithoutTagInput } - export type ModelAuthorWhereUniqueInput = Prisma.AtLeast<{ - modelId_userId?: ModelAuthorModelIdUserIdCompoundUniqueInput - AND?: ModelAuthorWhereInput | ModelAuthorWhereInput[] - OR?: ModelAuthorWhereInput[] - NOT?: ModelAuthorWhereInput | ModelAuthorWhereInput[] - modelId?: StringFilter<"ModelAuthor"> | string - userId?: StringFilter<"ModelAuthor"> | string - role?: EnumAuthorRoleFilter<"ModelAuthor"> | $Enums.AuthorRole - createdAt?: DateTimeFilter<"ModelAuthor"> | Date | string - model?: XOR - user?: XOR - }, "modelId_userId"> + export type TagUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + name?: StringFieldUpdateOperationsInput | string + displayName?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + modelVersions?: ModelVersionTagUpdateManyWithoutTagNestedInput + } - export type ModelAuthorOrderByWithAggregationInput = { - modelId?: SortOrder - userId?: SortOrder - role?: SortOrder - createdAt?: SortOrder - _count?: ModelAuthorCountOrderByAggregateInput - _max?: ModelAuthorMaxOrderByAggregateInput - _min?: ModelAuthorMinOrderByAggregateInput + export type TagUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + name?: StringFieldUpdateOperationsInput | string + displayName?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + modelVersions?: ModelVersionTagUncheckedUpdateManyWithoutTagNestedInput } - export type ModelAuthorScalarWhereWithAggregatesInput = { - AND?: ModelAuthorScalarWhereWithAggregatesInput | ModelAuthorScalarWhereWithAggregatesInput[] - OR?: ModelAuthorScalarWhereWithAggregatesInput[] - NOT?: ModelAuthorScalarWhereWithAggregatesInput | ModelAuthorScalarWhereWithAggregatesInput[] - modelId?: StringWithAggregatesFilter<"ModelAuthor"> | string - userId?: StringWithAggregatesFilter<"ModelAuthor"> | string - role?: EnumAuthorRoleWithAggregatesFilter<"ModelAuthor"> | $Enums.AuthorRole - createdAt?: DateTimeWithAggregatesFilter<"ModelAuthor"> | Date | string + export type TagCreateManyInput = { + id?: string + legacyId?: number | null + name: string + displayName?: string | null + createdAt?: Date | string } - export type ModelPermissionWhereInput = { - AND?: ModelPermissionWhereInput | ModelPermissionWhereInput[] - OR?: ModelPermissionWhereInput[] - NOT?: ModelPermissionWhereInput | ModelPermissionWhereInput[] - id?: StringFilter<"ModelPermission"> | string - modelId?: StringFilter<"ModelPermission"> | string - granteeUserId?: StringNullableFilter<"ModelPermission"> | string | null - permissionLevel?: EnumPermissionLevelFilter<"ModelPermission"> | $Enums.PermissionLevel - createdAt?: DateTimeFilter<"ModelPermission"> | Date | string - model?: XOR - granteeUser?: XOR | null + export type TagUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + name?: StringFieldUpdateOperationsInput | string + displayName?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelPermissionOrderByWithRelationInput = { - id?: SortOrder - modelId?: SortOrder - granteeUserId?: SortOrderInput | SortOrder - permissionLevel?: SortOrder - createdAt?: SortOrder - model?: ModelOrderByWithRelationInput - granteeUser?: UserOrderByWithRelationInput + export type TagUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + name?: StringFieldUpdateOperationsInput | string + displayName?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelPermissionWhereUniqueInput = Prisma.AtLeast<{ - id?: string - modelId_granteeUserId?: ModelPermissionModelIdGranteeUserIdCompoundUniqueInput - AND?: ModelPermissionWhereInput | ModelPermissionWhereInput[] - OR?: ModelPermissionWhereInput[] - NOT?: ModelPermissionWhereInput | ModelPermissionWhereInput[] - modelId?: StringFilter<"ModelPermission"> | string - granteeUserId?: StringNullableFilter<"ModelPermission"> | string | null - permissionLevel?: EnumPermissionLevelFilter<"ModelPermission"> | $Enums.PermissionLevel - createdAt?: DateTimeFilter<"ModelPermission"> | Date | string - model?: XOR - granteeUser?: XOR | null - }, "id" | "modelId_granteeUserId"> + export type ModelAuthorCreateInput = { + role: $Enums.AuthorRole + createdAt?: Date | string + model: ModelCreateNestedOneWithoutAuthorsInput + user: UserCreateNestedOneWithoutAuthoredModelsInput + } - export type ModelPermissionOrderByWithAggregationInput = { - id?: SortOrder - modelId?: SortOrder - granteeUserId?: SortOrderInput | SortOrder - permissionLevel?: SortOrder - createdAt?: SortOrder - _count?: ModelPermissionCountOrderByAggregateInput - _max?: ModelPermissionMaxOrderByAggregateInput - _min?: ModelPermissionMinOrderByAggregateInput + export type ModelAuthorUncheckedCreateInput = { + modelId: string + userId: string + role: $Enums.AuthorRole + createdAt?: Date | string + } + + export type ModelAuthorUpdateInput = { + role?: EnumAuthorRoleFieldUpdateOperationsInput | $Enums.AuthorRole + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + model?: ModelUpdateOneRequiredWithoutAuthorsNestedInput + user?: UserUpdateOneRequiredWithoutAuthoredModelsNestedInput } - export type ModelPermissionScalarWhereWithAggregatesInput = { - AND?: ModelPermissionScalarWhereWithAggregatesInput | ModelPermissionScalarWhereWithAggregatesInput[] - OR?: ModelPermissionScalarWhereWithAggregatesInput[] - NOT?: ModelPermissionScalarWhereWithAggregatesInput | ModelPermissionScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"ModelPermission"> | string - modelId?: StringWithAggregatesFilter<"ModelPermission"> | string - granteeUserId?: StringNullableWithAggregatesFilter<"ModelPermission"> | string | null - permissionLevel?: EnumPermissionLevelWithAggregatesFilter<"ModelPermission"> | $Enums.PermissionLevel - createdAt?: DateTimeWithAggregatesFilter<"ModelPermission"> | Date | string + export type ModelAuthorUncheckedUpdateInput = { + modelId?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + role?: EnumAuthorRoleFieldUpdateOperationsInput | $Enums.AuthorRole + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelLikeWhereInput = { - AND?: ModelLikeWhereInput | ModelLikeWhereInput[] - OR?: ModelLikeWhereInput[] - NOT?: ModelLikeWhereInput | ModelLikeWhereInput[] - modelId?: StringFilter<"ModelLike"> | string - userId?: StringFilter<"ModelLike"> | string - createdAt?: DateTimeFilter<"ModelLike"> | Date | string - model?: XOR - user?: XOR + export type ModelAuthorCreateManyInput = { + modelId: string + userId: string + role: $Enums.AuthorRole + createdAt?: Date | string } - export type ModelLikeOrderByWithRelationInput = { - modelId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder - model?: ModelOrderByWithRelationInput - user?: UserOrderByWithRelationInput + export type ModelAuthorUpdateManyMutationInput = { + role?: EnumAuthorRoleFieldUpdateOperationsInput | $Enums.AuthorRole + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelLikeWhereUniqueInput = Prisma.AtLeast<{ - modelId_userId?: ModelLikeModelIdUserIdCompoundUniqueInput - AND?: ModelLikeWhereInput | ModelLikeWhereInput[] - OR?: ModelLikeWhereInput[] - NOT?: ModelLikeWhereInput | ModelLikeWhereInput[] - modelId?: StringFilter<"ModelLike"> | string - userId?: StringFilter<"ModelLike"> | string - createdAt?: DateTimeFilter<"ModelLike"> | Date | string - model?: XOR - user?: XOR - }, "modelId_userId"> + export type ModelAuthorUncheckedUpdateManyInput = { + modelId?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + role?: EnumAuthorRoleFieldUpdateOperationsInput | $Enums.AuthorRole + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } - export type ModelLikeOrderByWithAggregationInput = { - modelId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder - _count?: ModelLikeCountOrderByAggregateInput - _max?: ModelLikeMaxOrderByAggregateInput - _min?: ModelLikeMinOrderByAggregateInput + export type ModelPermissionCreateInput = { + id?: string + permissionLevel: $Enums.PermissionLevel + createdAt?: Date | string + model: ModelCreateNestedOneWithoutPermissionsInput + granteeUser?: UserCreateNestedOneWithoutGrantedPermissionsInput } - export type ModelLikeScalarWhereWithAggregatesInput = { - AND?: ModelLikeScalarWhereWithAggregatesInput | ModelLikeScalarWhereWithAggregatesInput[] - OR?: ModelLikeScalarWhereWithAggregatesInput[] - NOT?: ModelLikeScalarWhereWithAggregatesInput | ModelLikeScalarWhereWithAggregatesInput[] - modelId?: StringWithAggregatesFilter<"ModelLike"> | string - userId?: StringWithAggregatesFilter<"ModelLike"> | string - createdAt?: DateTimeWithAggregatesFilter<"ModelLike"> | Date | string + export type ModelPermissionUncheckedCreateInput = { + id?: string + modelId: string + granteeUserId?: string | null + permissionLevel: $Enums.PermissionLevel + createdAt?: Date | string } - export type ModelInteractionWhereInput = { - AND?: ModelInteractionWhereInput | ModelInteractionWhereInput[] - OR?: ModelInteractionWhereInput[] - NOT?: ModelInteractionWhereInput | ModelInteractionWhereInput[] - id?: StringFilter<"ModelInteraction"> | string - modelId?: StringFilter<"ModelInteraction"> | string - versionNumber?: IntNullableFilter<"ModelInteraction"> | number | null - kind?: EnumModelInteractionKindFilter<"ModelInteraction"> | $Enums.ModelInteractionKind - userId?: StringNullableFilter<"ModelInteraction"> | string | null - sessionId?: StringNullableFilter<"ModelInteraction"> | string | null - ipHash?: StringNullableFilter<"ModelInteraction"> | string | null - userAgent?: StringNullableFilter<"ModelInteraction"> | string | null - referer?: StringNullableFilter<"ModelInteraction"> | string | null - geo?: JsonNullableFilter<"ModelInteraction"> - cookie?: StringNullableFilter<"ModelInteraction"> | string | null - createdAt?: DateTimeFilter<"ModelInteraction"> | Date | string - model?: XOR - user?: XOR | null + export type ModelPermissionUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + permissionLevel?: EnumPermissionLevelFieldUpdateOperationsInput | $Enums.PermissionLevel + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + model?: ModelUpdateOneRequiredWithoutPermissionsNestedInput + granteeUser?: UserUpdateOneWithoutGrantedPermissionsNestedInput } - export type ModelInteractionOrderByWithRelationInput = { - id?: SortOrder - modelId?: SortOrder - versionNumber?: SortOrderInput | SortOrder - kind?: SortOrder - userId?: SortOrderInput | SortOrder - sessionId?: SortOrderInput | SortOrder - ipHash?: SortOrderInput | SortOrder - userAgent?: SortOrderInput | SortOrder - referer?: SortOrderInput | SortOrder - geo?: SortOrderInput | SortOrder - cookie?: SortOrderInput | SortOrder - createdAt?: SortOrder - model?: ModelOrderByWithRelationInput - user?: UserOrderByWithRelationInput + export type ModelPermissionUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + modelId?: StringFieldUpdateOperationsInput | string + granteeUserId?: NullableStringFieldUpdateOperationsInput | string | null + permissionLevel?: EnumPermissionLevelFieldUpdateOperationsInput | $Enums.PermissionLevel + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelInteractionWhereUniqueInput = Prisma.AtLeast<{ + export type ModelPermissionCreateManyInput = { id?: string - AND?: ModelInteractionWhereInput | ModelInteractionWhereInput[] - OR?: ModelInteractionWhereInput[] - NOT?: ModelInteractionWhereInput | ModelInteractionWhereInput[] - modelId?: StringFilter<"ModelInteraction"> | string - versionNumber?: IntNullableFilter<"ModelInteraction"> | number | null - kind?: EnumModelInteractionKindFilter<"ModelInteraction"> | $Enums.ModelInteractionKind - userId?: StringNullableFilter<"ModelInteraction"> | string | null - sessionId?: StringNullableFilter<"ModelInteraction"> | string | null - ipHash?: StringNullableFilter<"ModelInteraction"> | string | null - userAgent?: StringNullableFilter<"ModelInteraction"> | string | null - referer?: StringNullableFilter<"ModelInteraction"> | string | null - geo?: JsonNullableFilter<"ModelInteraction"> - cookie?: StringNullableFilter<"ModelInteraction"> | string | null - createdAt?: DateTimeFilter<"ModelInteraction"> | Date | string - model?: XOR - user?: XOR | null - }, "id"> + modelId: string + granteeUserId?: string | null + permissionLevel: $Enums.PermissionLevel + createdAt?: Date | string + } - export type ModelInteractionOrderByWithAggregationInput = { - id?: SortOrder - modelId?: SortOrder - versionNumber?: SortOrderInput | SortOrder - kind?: SortOrder - userId?: SortOrderInput | SortOrder - sessionId?: SortOrderInput | SortOrder - ipHash?: SortOrderInput | SortOrder - userAgent?: SortOrderInput | SortOrder - referer?: SortOrderInput | SortOrder - geo?: SortOrderInput | SortOrder - cookie?: SortOrderInput | SortOrder - createdAt?: SortOrder - _count?: ModelInteractionCountOrderByAggregateInput - _avg?: ModelInteractionAvgOrderByAggregateInput - _max?: ModelInteractionMaxOrderByAggregateInput - _min?: ModelInteractionMinOrderByAggregateInput - _sum?: ModelInteractionSumOrderByAggregateInput + export type ModelPermissionUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + permissionLevel?: EnumPermissionLevelFieldUpdateOperationsInput | $Enums.PermissionLevel + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelInteractionScalarWhereWithAggregatesInput = { - AND?: ModelInteractionScalarWhereWithAggregatesInput | ModelInteractionScalarWhereWithAggregatesInput[] - OR?: ModelInteractionScalarWhereWithAggregatesInput[] - NOT?: ModelInteractionScalarWhereWithAggregatesInput | ModelInteractionScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"ModelInteraction"> | string - modelId?: StringWithAggregatesFilter<"ModelInteraction"> | string - versionNumber?: IntNullableWithAggregatesFilter<"ModelInteraction"> | number | null - kind?: EnumModelInteractionKindWithAggregatesFilter<"ModelInteraction"> | $Enums.ModelInteractionKind - userId?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null - sessionId?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null - ipHash?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null - userAgent?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null - referer?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null - geo?: JsonNullableWithAggregatesFilter<"ModelInteraction"> - cookie?: StringNullableWithAggregatesFilter<"ModelInteraction"> | string | null - createdAt?: DateTimeWithAggregatesFilter<"ModelInteraction"> | Date | string + export type ModelPermissionUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + modelId?: StringFieldUpdateOperationsInput | string + granteeUserId?: NullableStringFieldUpdateOperationsInput | string | null + permissionLevel?: EnumPermissionLevelFieldUpdateOperationsInput | $Enums.PermissionLevel + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelDraftWhereInput = { - AND?: ModelDraftWhereInput | ModelDraftWhereInput[] - OR?: ModelDraftWhereInput[] - NOT?: ModelDraftWhereInput | ModelDraftWhereInput[] - id?: StringFilter<"ModelDraft"> | string - userId?: StringFilter<"ModelDraft"> | string - modelId?: StringNullableFilter<"ModelDraft"> | string | null - schemaVersion?: IntFilter<"ModelDraft"> | number - data?: JsonFilter<"ModelDraft"> - createdAt?: DateTimeFilter<"ModelDraft"> | Date | string - updatedAt?: DateTimeFilter<"ModelDraft"> | Date | string - user?: XOR - model?: XOR | null + export type ModelLikeCreateInput = { + createdAt?: Date | string + model: ModelCreateNestedOneWithoutLikesInput + user: UserCreateNestedOneWithoutModelLikesInput } - export type ModelDraftOrderByWithRelationInput = { - id?: SortOrder - userId?: SortOrder - modelId?: SortOrderInput | SortOrder - schemaVersion?: SortOrder - data?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - user?: UserOrderByWithRelationInput - model?: ModelOrderByWithRelationInput + export type ModelLikeUncheckedCreateInput = { + modelId: string + userId: string + createdAt?: Date | string } - export type ModelDraftWhereUniqueInput = Prisma.AtLeast<{ - id?: string - AND?: ModelDraftWhereInput | ModelDraftWhereInput[] - OR?: ModelDraftWhereInput[] - NOT?: ModelDraftWhereInput | ModelDraftWhereInput[] - userId?: StringFilter<"ModelDraft"> | string - modelId?: StringNullableFilter<"ModelDraft"> | string | null - schemaVersion?: IntFilter<"ModelDraft"> | number - data?: JsonFilter<"ModelDraft"> - createdAt?: DateTimeFilter<"ModelDraft"> | Date | string - updatedAt?: DateTimeFilter<"ModelDraft"> | Date | string - user?: XOR - model?: XOR | null - }, "id"> + export type ModelLikeUpdateInput = { + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + model?: ModelUpdateOneRequiredWithoutLikesNestedInput + user?: UserUpdateOneRequiredWithoutModelLikesNestedInput + } - export type ModelDraftOrderByWithAggregationInput = { - id?: SortOrder - userId?: SortOrder - modelId?: SortOrderInput | SortOrder - schemaVersion?: SortOrder - data?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - _count?: ModelDraftCountOrderByAggregateInput - _avg?: ModelDraftAvgOrderByAggregateInput - _max?: ModelDraftMaxOrderByAggregateInput - _min?: ModelDraftMinOrderByAggregateInput - _sum?: ModelDraftSumOrderByAggregateInput + export type ModelLikeUncheckedUpdateInput = { + modelId?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelDraftScalarWhereWithAggregatesInput = { - AND?: ModelDraftScalarWhereWithAggregatesInput | ModelDraftScalarWhereWithAggregatesInput[] - OR?: ModelDraftScalarWhereWithAggregatesInput[] - NOT?: ModelDraftScalarWhereWithAggregatesInput | ModelDraftScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"ModelDraft"> | string - userId?: StringWithAggregatesFilter<"ModelDraft"> | string - modelId?: StringNullableWithAggregatesFilter<"ModelDraft"> | string | null - schemaVersion?: IntWithAggregatesFilter<"ModelDraft"> | number - data?: JsonWithAggregatesFilter<"ModelDraft"> - createdAt?: DateTimeWithAggregatesFilter<"ModelDraft"> | Date | string - updatedAt?: DateTimeWithAggregatesFilter<"ModelDraft"> | Date | string + export type ModelLikeCreateManyInput = { + modelId: string + userId: string + createdAt?: Date | string } - export type ModelCommentWhereInput = { - AND?: ModelCommentWhereInput | ModelCommentWhereInput[] - OR?: ModelCommentWhereInput[] - NOT?: ModelCommentWhereInput | ModelCommentWhereInput[] - id?: StringFilter<"ModelComment"> | string - legacyId?: IntNullableFilter<"ModelComment"> | number | null - parentId?: StringNullableFilter<"ModelComment"> | string | null - userId?: StringNullableFilter<"ModelComment"> | string | null - modelId?: StringFilter<"ModelComment"> | string - versionNumber?: IntNullableFilter<"ModelComment"> | number | null - content?: StringNullableFilter<"ModelComment"> | string | null - likesCount?: IntFilter<"ModelComment"> | number - createdAt?: DateTimeFilter<"ModelComment"> | Date | string - updatedAt?: DateTimeFilter<"ModelComment"> | Date | string - editedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null - deletedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null - model?: XOR - user?: XOR | null - parent?: XOR | null - replies?: ModelCommentListRelationFilter - likes?: ModelCommentLikeListRelationFilter + export type ModelLikeUpdateManyMutationInput = { + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelCommentOrderByWithRelationInput = { - id?: SortOrder - legacyId?: SortOrderInput | SortOrder - parentId?: SortOrderInput | SortOrder - userId?: SortOrderInput | SortOrder - modelId?: SortOrder - versionNumber?: SortOrderInput | SortOrder - content?: SortOrderInput | SortOrder - likesCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - editedAt?: SortOrderInput | SortOrder - deletedAt?: SortOrderInput | SortOrder - model?: ModelOrderByWithRelationInput - user?: UserOrderByWithRelationInput - parent?: ModelCommentOrderByWithRelationInput - replies?: ModelCommentOrderByRelationAggregateInput - likes?: ModelCommentLikeOrderByRelationAggregateInput + export type ModelLikeUncheckedUpdateManyInput = { + modelId?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelCommentWhereUniqueInput = Prisma.AtLeast<{ + export type ModelInteractionCreateInput = { id?: string - legacyId?: number - AND?: ModelCommentWhereInput | ModelCommentWhereInput[] - OR?: ModelCommentWhereInput[] - NOT?: ModelCommentWhereInput | ModelCommentWhereInput[] - parentId?: StringNullableFilter<"ModelComment"> | string | null - userId?: StringNullableFilter<"ModelComment"> | string | null - modelId?: StringFilter<"ModelComment"> | string - versionNumber?: IntNullableFilter<"ModelComment"> | number | null - content?: StringNullableFilter<"ModelComment"> | string | null - likesCount?: IntFilter<"ModelComment"> | number - createdAt?: DateTimeFilter<"ModelComment"> | Date | string - updatedAt?: DateTimeFilter<"ModelComment"> | Date | string - editedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null - deletedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null - model?: XOR - user?: XOR | null - parent?: XOR | null - replies?: ModelCommentListRelationFilter - likes?: ModelCommentLikeListRelationFilter - }, "id" | "legacyId"> + versionNumber?: number | null + kind: $Enums.ModelInteractionKind + sessionId?: string | null + ipHash?: string | null + userAgent?: string | null + referer?: string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: string | null + createdAt?: Date | string + model: ModelCreateNestedOneWithoutInteractionsInput + user?: UserCreateNestedOneWithoutModelInteractionsInput + } - export type ModelCommentOrderByWithAggregationInput = { - id?: SortOrder - legacyId?: SortOrderInput | SortOrder - parentId?: SortOrderInput | SortOrder - userId?: SortOrderInput | SortOrder - modelId?: SortOrder - versionNumber?: SortOrderInput | SortOrder - content?: SortOrderInput | SortOrder - likesCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - editedAt?: SortOrderInput | SortOrder - deletedAt?: SortOrderInput | SortOrder - _count?: ModelCommentCountOrderByAggregateInput - _avg?: ModelCommentAvgOrderByAggregateInput - _max?: ModelCommentMaxOrderByAggregateInput - _min?: ModelCommentMinOrderByAggregateInput - _sum?: ModelCommentSumOrderByAggregateInput + export type ModelInteractionUncheckedCreateInput = { + id?: string + modelId: string + versionNumber?: number | null + kind: $Enums.ModelInteractionKind + userId?: string | null + sessionId?: string | null + ipHash?: string | null + userAgent?: string | null + referer?: string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: string | null + createdAt?: Date | string } - export type ModelCommentScalarWhereWithAggregatesInput = { - AND?: ModelCommentScalarWhereWithAggregatesInput | ModelCommentScalarWhereWithAggregatesInput[] - OR?: ModelCommentScalarWhereWithAggregatesInput[] - NOT?: ModelCommentScalarWhereWithAggregatesInput | ModelCommentScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"ModelComment"> | string - legacyId?: IntNullableWithAggregatesFilter<"ModelComment"> | number | null - parentId?: StringNullableWithAggregatesFilter<"ModelComment"> | string | null - userId?: StringNullableWithAggregatesFilter<"ModelComment"> | string | null - modelId?: StringWithAggregatesFilter<"ModelComment"> | string - versionNumber?: IntNullableWithAggregatesFilter<"ModelComment"> | number | null - content?: StringNullableWithAggregatesFilter<"ModelComment"> | string | null - likesCount?: IntWithAggregatesFilter<"ModelComment"> | number - createdAt?: DateTimeWithAggregatesFilter<"ModelComment"> | Date | string - updatedAt?: DateTimeWithAggregatesFilter<"ModelComment"> | Date | string - editedAt?: DateTimeNullableWithAggregatesFilter<"ModelComment"> | Date | string | null - deletedAt?: DateTimeNullableWithAggregatesFilter<"ModelComment"> | Date | string | null + export type ModelInteractionUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + kind?: EnumModelInteractionKindFieldUpdateOperationsInput | $Enums.ModelInteractionKind + sessionId?: NullableStringFieldUpdateOperationsInput | string | null + ipHash?: NullableStringFieldUpdateOperationsInput | string | null + userAgent?: NullableStringFieldUpdateOperationsInput | string | null + referer?: NullableStringFieldUpdateOperationsInput | string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + model?: ModelUpdateOneRequiredWithoutInteractionsNestedInput + user?: UserUpdateOneWithoutModelInteractionsNestedInput } - export type ModelCommentLikeWhereInput = { - AND?: ModelCommentLikeWhereInput | ModelCommentLikeWhereInput[] - OR?: ModelCommentLikeWhereInput[] - NOT?: ModelCommentLikeWhereInput | ModelCommentLikeWhereInput[] - modelCommentId?: StringFilter<"ModelCommentLike"> | string - userId?: StringFilter<"ModelCommentLike"> | string - createdAt?: DateTimeFilter<"ModelCommentLike"> | Date | string - modelComment?: XOR - user?: XOR + export type ModelInteractionUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + kind?: EnumModelInteractionKindFieldUpdateOperationsInput | $Enums.ModelInteractionKind + userId?: NullableStringFieldUpdateOperationsInput | string | null + sessionId?: NullableStringFieldUpdateOperationsInput | string | null + ipHash?: NullableStringFieldUpdateOperationsInput | string | null + userAgent?: NullableStringFieldUpdateOperationsInput | string | null + referer?: NullableStringFieldUpdateOperationsInput | string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type ModelCommentLikeOrderByWithRelationInput = { - modelCommentId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder - modelComment?: ModelCommentOrderByWithRelationInput - user?: UserOrderByWithRelationInput + export type ModelInteractionCreateManyInput = { + id?: string + modelId: string + versionNumber?: number | null + kind: $Enums.ModelInteractionKind + userId?: string | null + sessionId?: string | null + ipHash?: string | null + userAgent?: string | null + referer?: string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: string | null + createdAt?: Date | string } - export type ModelCommentLikeWhereUniqueInput = Prisma.AtLeast<{ - modelCommentId_userId?: ModelCommentLikeModelCommentIdUserIdCompoundUniqueInput - AND?: ModelCommentLikeWhereInput | ModelCommentLikeWhereInput[] - OR?: ModelCommentLikeWhereInput[] - NOT?: ModelCommentLikeWhereInput | ModelCommentLikeWhereInput[] - modelCommentId?: StringFilter<"ModelCommentLike"> | string - userId?: StringFilter<"ModelCommentLike"> | string - createdAt?: DateTimeFilter<"ModelCommentLike"> | Date | string - modelComment?: XOR - user?: XOR - }, "modelCommentId_userId"> + export type ModelInteractionUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + kind?: EnumModelInteractionKindFieldUpdateOperationsInput | $Enums.ModelInteractionKind + sessionId?: NullableStringFieldUpdateOperationsInput | string | null + ipHash?: NullableStringFieldUpdateOperationsInput | string | null + userAgent?: NullableStringFieldUpdateOperationsInput | string | null + referer?: NullableStringFieldUpdateOperationsInput | string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } - export type ModelCommentLikeOrderByWithAggregationInput = { - modelCommentId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder - _count?: ModelCommentLikeCountOrderByAggregateInput - _max?: ModelCommentLikeMaxOrderByAggregateInput - _min?: ModelCommentLikeMinOrderByAggregateInput + export type ModelInteractionUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + kind?: EnumModelInteractionKindFieldUpdateOperationsInput | $Enums.ModelInteractionKind + userId?: NullableStringFieldUpdateOperationsInput | string | null + sessionId?: NullableStringFieldUpdateOperationsInput | string | null + ipHash?: NullableStringFieldUpdateOperationsInput | string | null + userAgent?: NullableStringFieldUpdateOperationsInput | string | null + referer?: NullableStringFieldUpdateOperationsInput | string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type ModelDraftCreateInput = { + id?: string + schemaVersion: number + data: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + updatedAt?: Date | string + user: UserCreateNestedOneWithoutModelDraftsInput + model?: ModelCreateNestedOneWithoutDraftsInput } - export type ModelCommentLikeScalarWhereWithAggregatesInput = { - AND?: ModelCommentLikeScalarWhereWithAggregatesInput | ModelCommentLikeScalarWhereWithAggregatesInput[] - OR?: ModelCommentLikeScalarWhereWithAggregatesInput[] - NOT?: ModelCommentLikeScalarWhereWithAggregatesInput | ModelCommentLikeScalarWhereWithAggregatesInput[] - modelCommentId?: StringWithAggregatesFilter<"ModelCommentLike"> | string - userId?: StringWithAggregatesFilter<"ModelCommentLike"> | string - createdAt?: DateTimeWithAggregatesFilter<"ModelCommentLike"> | Date | string + export type ModelDraftUncheckedCreateInput = { + id?: string + userId: string + modelId?: string | null + schemaVersion: number + data: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + updatedAt?: Date | string } - export type EventWhereInput = { - AND?: EventWhereInput | EventWhereInput[] - OR?: EventWhereInput[] - NOT?: EventWhereInput | EventWhereInput[] - id?: StringFilter<"Event"> | string - type?: StringFilter<"Event"> | string - actorId?: StringFilter<"Event"> | string - resourceType?: StringFilter<"Event"> | string - resourceId?: StringFilter<"Event"> | string - payload?: JsonFilter<"Event"> - createdAt?: DateTimeFilter<"Event"> | Date | string - processedAt?: DateTimeNullableFilter<"Event"> | Date | string | null - actor?: XOR + export type ModelDraftUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + schemaVersion?: IntFieldUpdateOperationsInput | number + data?: JsonNullValueInput | InputJsonValue + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + user?: UserUpdateOneRequiredWithoutModelDraftsNestedInput + model?: ModelUpdateOneWithoutDraftsNestedInput } - export type EventOrderByWithRelationInput = { - id?: SortOrder - type?: SortOrder - actorId?: SortOrder - resourceType?: SortOrder - resourceId?: SortOrder - payload?: SortOrder - createdAt?: SortOrder - processedAt?: SortOrderInput | SortOrder - actor?: UserOrderByWithRelationInput + export type ModelDraftUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + modelId?: NullableStringFieldUpdateOperationsInput | string | null + schemaVersion?: IntFieldUpdateOperationsInput | number + data?: JsonNullValueInput | InputJsonValue + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type EventWhereUniqueInput = Prisma.AtLeast<{ + export type ModelDraftCreateManyInput = { id?: string - AND?: EventWhereInput | EventWhereInput[] - OR?: EventWhereInput[] - NOT?: EventWhereInput | EventWhereInput[] - type?: StringFilter<"Event"> | string - actorId?: StringFilter<"Event"> | string - resourceType?: StringFilter<"Event"> | string - resourceId?: StringFilter<"Event"> | string - payload?: JsonFilter<"Event"> - createdAt?: DateTimeFilter<"Event"> | Date | string - processedAt?: DateTimeNullableFilter<"Event"> | Date | string | null - actor?: XOR - }, "id"> + userId: string + modelId?: string | null + schemaVersion: number + data: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + updatedAt?: Date | string + } - export type EventOrderByWithAggregationInput = { - id?: SortOrder - type?: SortOrder - actorId?: SortOrder - resourceType?: SortOrder - resourceId?: SortOrder - payload?: SortOrder - createdAt?: SortOrder - processedAt?: SortOrderInput | SortOrder - _count?: EventCountOrderByAggregateInput - _max?: EventMaxOrderByAggregateInput - _min?: EventMinOrderByAggregateInput + export type ModelDraftUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + schemaVersion?: IntFieldUpdateOperationsInput | number + data?: JsonNullValueInput | InputJsonValue + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type EventScalarWhereWithAggregatesInput = { - AND?: EventScalarWhereWithAggregatesInput | EventScalarWhereWithAggregatesInput[] - OR?: EventScalarWhereWithAggregatesInput[] - NOT?: EventScalarWhereWithAggregatesInput | EventScalarWhereWithAggregatesInput[] - id?: StringWithAggregatesFilter<"Event"> | string - type?: StringWithAggregatesFilter<"Event"> | string - actorId?: StringWithAggregatesFilter<"Event"> | string - resourceType?: StringWithAggregatesFilter<"Event"> | string - resourceId?: StringWithAggregatesFilter<"Event"> | string - payload?: JsonWithAggregatesFilter<"Event"> - createdAt?: DateTimeWithAggregatesFilter<"Event"> | Date | string - processedAt?: DateTimeNullableWithAggregatesFilter<"Event"> | Date | string | null + export type ModelDraftUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + modelId?: NullableStringFieldUpdateOperationsInput | string | null + schemaVersion?: IntFieldUpdateOperationsInput | number + data?: JsonNullValueInput | InputJsonValue + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type UserCreateInput = { + export type ModelCommentCreateInput = { id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null + legacyId?: number | null + versionNumber?: number | null + content?: string | null + likesCount?: number createdAt?: Date | string updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean + editedAt?: Date | string | null deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountCreateNestedManyWithoutUserInput - sessions?: SessionCreateNestedManyWithoutUserInput - verifications?: VerificationCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput - events?: EventCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput - comments?: ModelCommentCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput - passkeys?: PasskeyCreateNestedManyWithoutUserInput + model: ModelCreateNestedOneWithoutCommentsInput + user?: UserCreateNestedOneWithoutCommentsInput + parent?: ModelCommentCreateNestedOneWithoutRepliesInput + replies?: ModelCommentCreateNestedManyWithoutParentInput + likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput } - export type UserUncheckedCreateInput = { + export type ModelCommentUncheckedCreateInput = { id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null + legacyId?: number | null + parentId?: string | null + userId?: string | null + modelId: string + versionNumber?: number | null + content?: string | null + likesCount?: number createdAt?: Date | string updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean + editedAt?: Date | string | null deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountUncheckedCreateNestedManyWithoutUserInput - sessions?: SessionUncheckedCreateNestedManyWithoutUserInput - verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput - events?: EventUncheckedCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput - passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput + replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput + likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput } - export type UserUpdateInput = { + export type ModelCommentUpdateInput = { id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + content?: NullableStringFieldUpdateOperationsInput | string | null + likesCount?: IntFieldUpdateOperationsInput | number createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUpdateManyWithoutUserNestedInput - sessions?: SessionUpdateManyWithoutUserNestedInput - verifications?: VerificationUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput - events?: EventUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput - comments?: ModelCommentUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUpdateManyWithoutUserNestedInput + model?: ModelUpdateOneRequiredWithoutCommentsNestedInput + user?: UserUpdateOneWithoutCommentsNestedInput + parent?: ModelCommentUpdateOneWithoutRepliesNestedInput + replies?: ModelCommentUpdateManyWithoutParentNestedInput + likes?: ModelCommentLikeUpdateManyWithoutModelCommentNestedInput } - export type UserUncheckedUpdateInput = { + export type ModelCommentUncheckedUpdateInput = { id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + parentId?: NullableStringFieldUpdateOperationsInput | string | null + userId?: NullableStringFieldUpdateOperationsInput | string | null + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + content?: NullableStringFieldUpdateOperationsInput | string | null + likesCount?: IntFieldUpdateOperationsInput | number createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput - sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput - verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput - events?: EventUncheckedUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput + replies?: ModelCommentUncheckedUpdateManyWithoutParentNestedInput + likes?: ModelCommentLikeUncheckedUpdateManyWithoutModelCommentNestedInput } - export type UserCreateManyInput = { + export type ModelCommentCreateManyInput = { id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null + legacyId?: number | null + parentId?: string | null + userId?: string | null + modelId: string + versionNumber?: number | null + content?: string | null + likesCount?: number createdAt?: Date | string updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean + editedAt?: Date | string | null deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null } - export type UserUpdateManyMutationInput = { + export type ModelCommentUpdateManyMutationInput = { id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + content?: NullableStringFieldUpdateOperationsInput | string | null + likesCount?: IntFieldUpdateOperationsInput | number createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null } - export type UserUncheckedUpdateManyInput = { + export type ModelCommentUncheckedUpdateManyInput = { id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + parentId?: NullableStringFieldUpdateOperationsInput | string | null + userId?: NullableStringFieldUpdateOperationsInput | string | null + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + content?: NullableStringFieldUpdateOperationsInput | string | null + likesCount?: IntFieldUpdateOperationsInput | number createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null } - export type AccountCreateInput = { + export type ModelCommentLikeCreateInput = { + createdAt?: Date | string + modelComment: ModelCommentCreateNestedOneWithoutLikesInput + user: UserCreateNestedOneWithoutCommentLikesInput + } + + export type ModelCommentLikeUncheckedCreateInput = { + modelCommentId: string + userId: string + createdAt?: Date | string + } + + export type ModelCommentLikeUpdateInput = { + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + modelComment?: ModelCommentUpdateOneRequiredWithoutLikesNestedInput + user?: UserUpdateOneRequiredWithoutCommentLikesNestedInput + } + + export type ModelCommentLikeUncheckedUpdateInput = { + modelCommentId?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type ModelCommentLikeCreateManyInput = { + modelCommentId: string + userId: string + createdAt?: Date | string + } + + export type ModelCommentLikeUpdateManyMutationInput = { + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type ModelCommentLikeUncheckedUpdateManyInput = { + modelCommentId?: StringFieldUpdateOperationsInput | string + userId?: StringFieldUpdateOperationsInput | string + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type EventCreateInput = { id?: string - accountId: string - providerId: string - accessToken?: string | null - refreshToken?: string | null - accessTokenExpiresAt?: Date | string | null - refreshTokenExpiresAt?: Date | string | null - scope?: string | null - idToken?: string | null - password?: string | null + type: string + resourceType: string + resourceId: string + payload: JsonNullValueInput | InputJsonValue createdAt?: Date | string - updatedAt?: Date | string - user: UserCreateNestedOneWithoutAccountsInput + processedAt?: Date | string | null + attempts?: number + lastError?: string | null + actor: UserCreateNestedOneWithoutEventsInput + notifications?: UserNotificationCreateNestedManyWithoutEventInput } - export type AccountUncheckedCreateInput = { + export type EventUncheckedCreateInput = { id?: string - userId: string - accountId: string - providerId: string - accessToken?: string | null - refreshToken?: string | null - accessTokenExpiresAt?: Date | string | null - refreshTokenExpiresAt?: Date | string | null - scope?: string | null - idToken?: string | null - password?: string | null + type: string + actorId: string + resourceType: string + resourceId: string + payload: JsonNullValueInput | InputJsonValue createdAt?: Date | string - updatedAt?: Date | string + processedAt?: Date | string | null + attempts?: number + lastError?: string | null + notifications?: UserNotificationUncheckedCreateNestedManyWithoutEventInput } - export type AccountUpdateInput = { + export type EventUpdateInput = { id?: StringFieldUpdateOperationsInput | string - accountId?: StringFieldUpdateOperationsInput | string - providerId?: StringFieldUpdateOperationsInput | string - accessToken?: NullableStringFieldUpdateOperationsInput | string | null - refreshToken?: NullableStringFieldUpdateOperationsInput | string | null - accessTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - refreshTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - scope?: NullableStringFieldUpdateOperationsInput | string | null - idToken?: NullableStringFieldUpdateOperationsInput | string | null - password?: NullableStringFieldUpdateOperationsInput | string | null + type?: StringFieldUpdateOperationsInput | string + resourceType?: StringFieldUpdateOperationsInput | string + resourceId?: StringFieldUpdateOperationsInput | string + payload?: JsonNullValueInput | InputJsonValue + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + attempts?: IntFieldUpdateOperationsInput | number + lastError?: NullableStringFieldUpdateOperationsInput | string | null + actor?: UserUpdateOneRequiredWithoutEventsNestedInput + notifications?: UserNotificationUpdateManyWithoutEventNestedInput + } + + export type EventUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + type?: StringFieldUpdateOperationsInput | string + actorId?: StringFieldUpdateOperationsInput | string + resourceType?: StringFieldUpdateOperationsInput | string + resourceId?: StringFieldUpdateOperationsInput | string + payload?: JsonNullValueInput | InputJsonValue + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + attempts?: IntFieldUpdateOperationsInput | number + lastError?: NullableStringFieldUpdateOperationsInput | string | null + notifications?: UserNotificationUncheckedUpdateManyWithoutEventNestedInput + } + + export type EventCreateManyInput = { + id?: string + type: string + actorId: string + resourceType: string + resourceId: string + payload: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + processedAt?: Date | string | null + attempts?: number + lastError?: string | null + } + + export type EventUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + type?: StringFieldUpdateOperationsInput | string + resourceType?: StringFieldUpdateOperationsInput | string + resourceId?: StringFieldUpdateOperationsInput | string + payload?: JsonNullValueInput | InputJsonValue + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + attempts?: IntFieldUpdateOperationsInput | number + lastError?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type EventUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + type?: StringFieldUpdateOperationsInput | string + actorId?: StringFieldUpdateOperationsInput | string + resourceType?: StringFieldUpdateOperationsInput | string + resourceId?: StringFieldUpdateOperationsInput | string + payload?: JsonNullValueInput | InputJsonValue + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + attempts?: IntFieldUpdateOperationsInput | number + lastError?: NullableStringFieldUpdateOperationsInput | string | null + } + + export type UserNotificationCreateInput = { + id?: string + category: string + title: string + body: string + url: string + emailSentAt?: Date | string | null + readAt?: Date | string | null + createdAt?: Date | string + recipient: UserCreateNestedOneWithoutNotificationsInput + event: EventCreateNestedOneWithoutNotificationsInput + } + + export type UserNotificationUncheckedCreateInput = { + id?: string + recipientId: string + eventId: string + category: string + title: string + body: string + url: string + emailSentAt?: Date | string | null + readAt?: Date | string | null + createdAt?: Date | string + } + + export type UserNotificationUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - user?: UserUpdateOneRequiredWithoutAccountsNestedInput + recipient?: UserUpdateOneRequiredWithoutNotificationsNestedInput + event?: EventUpdateOneRequiredWithoutNotificationsNestedInput } - export type AccountUncheckedUpdateInput = { + export type UserNotificationUncheckedUpdateInput = { id?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - accountId?: StringFieldUpdateOperationsInput | string - providerId?: StringFieldUpdateOperationsInput | string - accessToken?: NullableStringFieldUpdateOperationsInput | string | null - refreshToken?: NullableStringFieldUpdateOperationsInput | string | null - accessTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - refreshTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - scope?: NullableStringFieldUpdateOperationsInput | string | null - idToken?: NullableStringFieldUpdateOperationsInput | string | null - password?: NullableStringFieldUpdateOperationsInput | string | null + recipientId?: StringFieldUpdateOperationsInput | string + eventId?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type AccountCreateManyInput = { + export type UserNotificationCreateManyInput = { id?: string - userId: string - accountId: string - providerId: string - accessToken?: string | null - refreshToken?: string | null - accessTokenExpiresAt?: Date | string | null - refreshTokenExpiresAt?: Date | string | null - scope?: string | null - idToken?: string | null - password?: string | null + recipientId: string + eventId: string + category: string + title: string + body: string + url: string + emailSentAt?: Date | string | null + readAt?: Date | string | null createdAt?: Date | string - updatedAt?: Date | string } - export type AccountUpdateManyMutationInput = { + export type UserNotificationUpdateManyMutationInput = { id?: StringFieldUpdateOperationsInput | string - accountId?: StringFieldUpdateOperationsInput | string - providerId?: StringFieldUpdateOperationsInput | string - accessToken?: NullableStringFieldUpdateOperationsInput | string | null - refreshToken?: NullableStringFieldUpdateOperationsInput | string | null - accessTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - refreshTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - scope?: NullableStringFieldUpdateOperationsInput | string | null - idToken?: NullableStringFieldUpdateOperationsInput | string | null - password?: NullableStringFieldUpdateOperationsInput | string | null + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type AccountUncheckedUpdateManyInput = { + export type UserNotificationUncheckedUpdateManyInput = { id?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - accountId?: StringFieldUpdateOperationsInput | string - providerId?: StringFieldUpdateOperationsInput | string - accessToken?: NullableStringFieldUpdateOperationsInput | string | null - refreshToken?: NullableStringFieldUpdateOperationsInput | string | null - accessTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - refreshTokenExpiresAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - scope?: NullableStringFieldUpdateOperationsInput | string | null - idToken?: NullableStringFieldUpdateOperationsInput | string | null - password?: NullableStringFieldUpdateOperationsInput | string | null + recipientId?: StringFieldUpdateOperationsInput | string + eventId?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } - export type SessionCreateInput = { + export type UserNotificationPreferenceCreateInput = { id?: string - expiresAt: Date | string - token: string - ipAddress?: string | null - userAgent?: string | null - createdAt?: Date | string + category: string + email: boolean + inApp: boolean updatedAt?: Date | string - impersonatedBy?: string | null - user: UserCreateNestedOneWithoutSessionsInput + user: UserCreateNestedOneWithoutNotificationPreferencesInput } - export type SessionUncheckedCreateInput = { + export type UserNotificationPreferenceUncheckedCreateInput = { id?: string userId: string - expiresAt: Date | string - token: string - ipAddress?: string | null - userAgent?: string | null - createdAt?: Date | string + category: string + email: boolean + inApp: boolean updatedAt?: Date | string - impersonatedBy?: string | null } - export type SessionUpdateInput = { + export type UserNotificationPreferenceUpdateInput = { id?: StringFieldUpdateOperationsInput | string - expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string - token?: StringFieldUpdateOperationsInput | string - ipAddress?: NullableStringFieldUpdateOperationsInput | string | null - userAgent?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + category?: StringFieldUpdateOperationsInput | string + email?: BoolFieldUpdateOperationsInput | boolean + inApp?: BoolFieldUpdateOperationsInput | boolean updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - impersonatedBy?: NullableStringFieldUpdateOperationsInput | string | null - user?: UserUpdateOneRequiredWithoutSessionsNestedInput + user?: UserUpdateOneRequiredWithoutNotificationPreferencesNestedInput } - export type SessionUncheckedUpdateInput = { + export type UserNotificationPreferenceUncheckedUpdateInput = { id?: StringFieldUpdateOperationsInput | string userId?: StringFieldUpdateOperationsInput | string - expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string - token?: StringFieldUpdateOperationsInput | string - ipAddress?: NullableStringFieldUpdateOperationsInput | string | null - userAgent?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + category?: StringFieldUpdateOperationsInput | string + email?: BoolFieldUpdateOperationsInput | boolean + inApp?: BoolFieldUpdateOperationsInput | boolean updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - impersonatedBy?: NullableStringFieldUpdateOperationsInput | string | null } - export type SessionCreateManyInput = { + export type UserNotificationPreferenceCreateManyInput = { id?: string userId: string - expiresAt: Date | string - token: string - ipAddress?: string | null - userAgent?: string | null - createdAt?: Date | string + category: string + email: boolean + inApp: boolean updatedAt?: Date | string - impersonatedBy?: string | null } - export type SessionUpdateManyMutationInput = { + export type UserNotificationPreferenceUpdateManyMutationInput = { id?: StringFieldUpdateOperationsInput | string - expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string - token?: StringFieldUpdateOperationsInput | string - ipAddress?: NullableStringFieldUpdateOperationsInput | string | null - userAgent?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + category?: StringFieldUpdateOperationsInput | string + email?: BoolFieldUpdateOperationsInput | boolean + inApp?: BoolFieldUpdateOperationsInput | boolean updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - impersonatedBy?: NullableStringFieldUpdateOperationsInput | string | null } - export type SessionUncheckedUpdateManyInput = { + export type UserNotificationPreferenceUncheckedUpdateManyInput = { id?: StringFieldUpdateOperationsInput | string userId?: StringFieldUpdateOperationsInput | string - expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string - token?: StringFieldUpdateOperationsInput | string - ipAddress?: NullableStringFieldUpdateOperationsInput | string | null - userAgent?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + category?: StringFieldUpdateOperationsInput | string + email?: BoolFieldUpdateOperationsInput | boolean + inApp?: BoolFieldUpdateOperationsInput | boolean updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - impersonatedBy?: NullableStringFieldUpdateOperationsInput | string | null } - export type VerificationCreateInput = { - id?: string - identifier: string - value: string - expiresAt: Date | string - createdAt?: Date | string | null - updatedAt?: Date | string | null - user?: UserCreateNestedOneWithoutVerificationsInput + export type StringFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] | ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> + 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> + mode?: QueryMode + not?: NestedStringFilter<$PrismaModel> | string } - export type VerificationUncheckedCreateInput = { - id?: string - identifier: string - value: string - expiresAt: Date | string - createdAt?: Date | string | null - updatedAt?: Date | string | null - userId?: string | null + export type StringNullableFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | 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> + mode?: QueryMode + not?: NestedStringNullableFilter<$PrismaModel> | string | null } - export type VerificationUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - identifier?: StringFieldUpdateOperationsInput | string - value?: StringFieldUpdateOperationsInput | string - expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - updatedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - user?: UserUpdateOneWithoutVerificationsNestedInput + export type BoolFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolFilter<$PrismaModel> | boolean } - export type VerificationUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - identifier?: StringFieldUpdateOperationsInput | string - value?: StringFieldUpdateOperationsInput | string - expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - updatedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - userId?: NullableStringFieldUpdateOperationsInput | string | null + export type DateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + 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 VerificationCreateManyInput = { - id?: string - identifier: string - value: string - expiresAt: Date | string - createdAt?: Date | string | null - updatedAt?: Date | string | null - userId?: string | null + export type EnumSystemRoleFilter<$PrismaModel = never> = { + equals?: $Enums.SystemRole | EnumSystemRoleFieldRefInput<$PrismaModel> + in?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> + notIn?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> + not?: NestedEnumSystemRoleFilter<$PrismaModel> | $Enums.SystemRole } - export type VerificationUpdateManyMutationInput = { - id?: StringFieldUpdateOperationsInput | string - identifier?: StringFieldUpdateOperationsInput | string - value?: StringFieldUpdateOperationsInput | string - expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - updatedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type EnumUserKindFilter<$PrismaModel = never> = { + equals?: $Enums.UserKind | EnumUserKindFieldRefInput<$PrismaModel> + in?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> + notIn?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> + not?: NestedEnumUserKindFilter<$PrismaModel> | $Enums.UserKind } - export type VerificationUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - identifier?: StringFieldUpdateOperationsInput | string - value?: StringFieldUpdateOperationsInput | string - expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - updatedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - userId?: NullableStringFieldUpdateOperationsInput | string | null + export type DateTimeNullableFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null } + export type JsonNullableFilter<$PrismaModel = never> = + | PatchUndefined< + Either>, Exclude>, 'path'>>, + Required> + > + | OptionalFlat>, 'path'>> - export type PasskeyCreateInput = { - id?: string - name?: string | null - publicKey: string - credentialID: string - counter: number - deviceType: string - backedUp: boolean - transports?: string | null - createdAt?: Date | string | null - aaguid?: string | null - user: UserCreateNestedOneWithoutPasskeysInput + export type JsonNullableFilterBase<$PrismaModel = never> = { + equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + path?: string[] + mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | StringFieldRefInput<$PrismaModel> + string_starts_with?: string | StringFieldRefInput<$PrismaModel> + string_ends_with?: string | StringFieldRefInput<$PrismaModel> + array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter } - export type PasskeyUncheckedCreateInput = { - id?: string - name?: string | null - publicKey: string - userId: string - credentialID: string - counter: number - deviceType: string - backedUp: boolean - transports?: string | null - createdAt?: Date | string | null - aaguid?: string | null + export type BoolNullableFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null + not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null } - export type PasskeyUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - publicKey?: StringFieldUpdateOperationsInput | string - credentialID?: StringFieldUpdateOperationsInput | string - counter?: IntFieldUpdateOperationsInput | number - deviceType?: StringFieldUpdateOperationsInput | string - backedUp?: BoolFieldUpdateOperationsInput | boolean - transports?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - aaguid?: NullableStringFieldUpdateOperationsInput | string | null - user?: UserUpdateOneRequiredWithoutPasskeysNestedInput + export type IntNullableFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableFilter<$PrismaModel> | number | null } - export type PasskeyUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - publicKey?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - credentialID?: StringFieldUpdateOperationsInput | string - counter?: IntFieldUpdateOperationsInput | number - deviceType?: StringFieldUpdateOperationsInput | string - backedUp?: BoolFieldUpdateOperationsInput | boolean - transports?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - aaguid?: NullableStringFieldUpdateOperationsInput | string | null + export type AccountListRelationFilter = { + every?: AccountWhereInput + some?: AccountWhereInput + none?: AccountWhereInput + } + + export type SessionListRelationFilter = { + every?: SessionWhereInput + some?: SessionWhereInput + none?: SessionWhereInput + } + + export type VerificationListRelationFilter = { + every?: VerificationWhereInput + some?: VerificationWhereInput + none?: VerificationWhereInput + } + + export type ModelAuthorListRelationFilter = { + every?: ModelAuthorWhereInput + some?: ModelAuthorWhereInput + none?: ModelAuthorWhereInput + } + + export type ModelPermissionListRelationFilter = { + every?: ModelPermissionWhereInput + some?: ModelPermissionWhereInput + none?: ModelPermissionWhereInput + } + + export type EventListRelationFilter = { + every?: EventWhereInput + some?: EventWhereInput + none?: EventWhereInput + } + + export type ModelLikeListRelationFilter = { + every?: ModelLikeWhereInput + some?: ModelLikeWhereInput + none?: ModelLikeWhereInput + } + + export type ModelInteractionListRelationFilter = { + every?: ModelInteractionWhereInput + some?: ModelInteractionWhereInput + none?: ModelInteractionWhereInput + } + + export type ModelDraftListRelationFilter = { + every?: ModelDraftWhereInput + some?: ModelDraftWhereInput + none?: ModelDraftWhereInput + } + + export type ModelCommentListRelationFilter = { + every?: ModelCommentWhereInput + some?: ModelCommentWhereInput + none?: ModelCommentWhereInput + } + + export type ModelCommentLikeListRelationFilter = { + every?: ModelCommentLikeWhereInput + some?: ModelCommentLikeWhereInput + none?: ModelCommentLikeWhereInput + } + + export type UserNotificationListRelationFilter = { + every?: UserNotificationWhereInput + some?: UserNotificationWhereInput + none?: UserNotificationWhereInput + } + + export type UserNotificationPreferenceListRelationFilter = { + every?: UserNotificationPreferenceWhereInput + some?: UserNotificationPreferenceWhereInput + none?: UserNotificationPreferenceWhereInput + } + + export type PasskeyListRelationFilter = { + every?: PasskeyWhereInput + some?: PasskeyWhereInput + none?: PasskeyWhereInput + } + + export type SortOrderInput = { + sort: SortOrder + nulls?: NullsOrder + } + + export type AccountOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type SessionOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type VerificationOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type ModelAuthorOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type ModelPermissionOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type EventOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type ModelLikeOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type ModelInteractionOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type ModelDraftOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type ModelCommentOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type ModelCommentLikeOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type UserNotificationOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type UserNotificationPreferenceOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type PasskeyOrderByRelationAggregateInput = { + _count?: SortOrder + } + + export type UserCountOrderByAggregateInput = { + id?: SortOrder + name?: SortOrder + email?: SortOrder + emailVerified?: SortOrder + image?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + systemRole?: SortOrder + userKind?: SortOrder + isProfilePublic?: SortOrder + deletedAt?: SortOrder + bio?: SortOrder + country?: SortOrder + socialLinks?: SortOrder + dob?: SortOrder + affiliation?: SortOrder + role?: SortOrder + banned?: SortOrder + banReason?: SortOrder + banExpires?: SortOrder + onboardedAt?: SortOrder + legacyId?: SortOrder + } + + export type UserAvgOrderByAggregateInput = { + legacyId?: SortOrder + } + + export type UserMaxOrderByAggregateInput = { + id?: SortOrder + name?: SortOrder + email?: SortOrder + emailVerified?: SortOrder + image?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + systemRole?: SortOrder + userKind?: SortOrder + isProfilePublic?: SortOrder + deletedAt?: SortOrder + bio?: SortOrder + country?: SortOrder + dob?: SortOrder + affiliation?: SortOrder + role?: SortOrder + banned?: SortOrder + banReason?: SortOrder + banExpires?: SortOrder + onboardedAt?: SortOrder + legacyId?: SortOrder + } + + export type UserMinOrderByAggregateInput = { + id?: SortOrder + name?: SortOrder + email?: SortOrder + emailVerified?: SortOrder + image?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + systemRole?: SortOrder + userKind?: SortOrder + isProfilePublic?: SortOrder + deletedAt?: SortOrder + bio?: SortOrder + country?: SortOrder + dob?: SortOrder + affiliation?: SortOrder + role?: SortOrder + banned?: SortOrder + banReason?: SortOrder + banExpires?: SortOrder + onboardedAt?: SortOrder + legacyId?: SortOrder } - export type PasskeyCreateManyInput = { - id?: string - name?: string | null - publicKey: string - userId: string - credentialID: string - counter: number - deviceType: string - backedUp: boolean - transports?: string | null - createdAt?: Date | string | null - aaguid?: string | null + export type UserSumOrderByAggregateInput = { + legacyId?: SortOrder } - export type PasskeyUpdateManyMutationInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - publicKey?: StringFieldUpdateOperationsInput | string - credentialID?: StringFieldUpdateOperationsInput | string - counter?: IntFieldUpdateOperationsInput | number - deviceType?: StringFieldUpdateOperationsInput | string - backedUp?: BoolFieldUpdateOperationsInput | boolean - transports?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - aaguid?: NullableStringFieldUpdateOperationsInput | string | null + export type StringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] | ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> + 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> + mode?: QueryMode + not?: NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedStringFilter<$PrismaModel> + _max?: NestedStringFilter<$PrismaModel> } - export type PasskeyUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - publicKey?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - credentialID?: StringFieldUpdateOperationsInput | string - counter?: IntFieldUpdateOperationsInput | number - deviceType?: StringFieldUpdateOperationsInput | string - backedUp?: BoolFieldUpdateOperationsInput | boolean - transports?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - aaguid?: NullableStringFieldUpdateOperationsInput | string | null + export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | 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> + mode?: QueryMode + not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedStringNullableFilter<$PrismaModel> + _max?: NestedStringNullableFilter<$PrismaModel> } - export type ModelCreateInput = { - legacyId?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number - createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput - parentModel?: ModelCreateNestedOneWithoutChildModelsInput - childModels?: ModelCreateNestedManyWithoutParentModelInput - parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput - versions?: ModelVersionCreateNestedManyWithoutModelInput - authors?: ModelAuthorCreateNestedManyWithoutModelInput - permissions?: ModelPermissionCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput - likes?: ModelLikeCreateNestedManyWithoutModelInput - interactions?: ModelInteractionCreateNestedManyWithoutModelInput - drafts?: ModelDraftCreateNestedManyWithoutModelInput - comments?: ModelCommentCreateNestedManyWithoutModelInput + export type BoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedBoolFilter<$PrismaModel> + _max?: NestedBoolFilter<$PrismaModel> } - export type ModelUncheckedCreateInput = { - id?: string - legacyId?: number | null - latestVersionNumber?: number | null - parentModelId?: string | null - parentVersionNumber?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number - createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput - versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput - authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput - permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput - likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput - interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput - drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput + export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + 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 ModelUpdateInput = { - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - latestVersion?: ModelVersionUpdateOneWithoutLatestOfModelNestedInput - parentModel?: ModelUpdateOneWithoutChildModelsNestedInput - childModels?: ModelUpdateManyWithoutParentModelNestedInput - parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput - versions?: ModelVersionUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput - likes?: ModelLikeUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUpdateManyWithoutModelNestedInput - drafts?: ModelDraftUpdateManyWithoutModelNestedInput - comments?: ModelCommentUpdateManyWithoutModelNestedInput + export type EnumSystemRoleWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.SystemRole | EnumSystemRoleFieldRefInput<$PrismaModel> + in?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> + notIn?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> + not?: NestedEnumSystemRoleWithAggregatesFilter<$PrismaModel> | $Enums.SystemRole + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumSystemRoleFilter<$PrismaModel> + _max?: NestedEnumSystemRoleFilter<$PrismaModel> } - export type ModelUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - parentModelId?: NullableStringFieldUpdateOperationsInput | string | null - parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput - versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput - likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput - drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput + export type EnumUserKindWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.UserKind | EnumUserKindFieldRefInput<$PrismaModel> + in?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> + notIn?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> + not?: NestedEnumUserKindWithAggregatesFilter<$PrismaModel> | $Enums.UserKind + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumUserKindFilter<$PrismaModel> + _max?: NestedEnumUserKindFilter<$PrismaModel> } - export type ModelCreateManyInput = { - id?: string - legacyId?: number | null - latestVersionNumber?: number | null - parentModelId?: string | null - parentVersionNumber?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number - createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null + export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedDateTimeNullableFilter<$PrismaModel> + _max?: NestedDateTimeNullableFilter<$PrismaModel> } + export type JsonNullableWithAggregatesFilter<$PrismaModel = never> = + | PatchUndefined< + Either>, Exclude>, 'path'>>, + Required> + > + | OptionalFlat>, 'path'>> - export type ModelUpdateManyMutationInput = { - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = { + equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + path?: string[] + mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | StringFieldRefInput<$PrismaModel> + string_starts_with?: string | StringFieldRefInput<$PrismaModel> + string_ends_with?: string | StringFieldRefInput<$PrismaModel> + array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedJsonNullableFilter<$PrismaModel> + _max?: NestedJsonNullableFilter<$PrismaModel> } - export type ModelUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - parentModelId?: NullableStringFieldUpdateOperationsInput | string | null - parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type BoolNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null + not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedBoolNullableFilter<$PrismaModel> + _max?: NestedBoolNullableFilter<$PrismaModel> } - export type ModelVersionCreateInput = { - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null - createdAt?: Date | string - finalizedAt?: Date | string | null - model: ModelCreateNestedOneWithoutVersionsInput - latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput - parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput - tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput - taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput + export type IntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | 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 ModelVersionUncheckedCreateInput = { - modelId: string - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null - createdAt?: Date | string - finalizedAt?: Date | string | null - latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput - parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput - tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput - taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput + export type UserScalarRelationFilter = { + is?: UserWhereInput + isNot?: UserWhereInput } - export type ModelVersionUpdateInput = { - versionNumber?: IntFieldUpdateOperationsInput | number - title?: StringFieldUpdateOperationsInput | string - description?: NullableStringFieldUpdateOperationsInput | string | null - changeSummary?: NullableStringFieldUpdateOperationsInput | string | null - previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null - netlogoFileKey?: StringFieldUpdateOperationsInput | string - netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null - infoTab?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - model?: ModelUpdateOneRequiredWithoutVersionsNestedInput - latestOfModel?: ModelUpdateOneWithoutLatestVersionNestedInput - parentOfModels?: ModelUpdateManyWithoutParentVersionNestedInput - tags?: ModelVersionTagUpdateManyWithoutModelVersionNestedInput - taggedAdditionalFiles?: ModelAdditionalFileUpdateManyWithoutTaggedVersionNestedInput + export type AccountCountOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + accountId?: SortOrder + providerId?: SortOrder + accessToken?: SortOrder + refreshToken?: SortOrder + accessTokenExpiresAt?: SortOrder + refreshTokenExpiresAt?: SortOrder + scope?: SortOrder + idToken?: SortOrder + password?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder } - export type ModelVersionUncheckedUpdateInput = { - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: IntFieldUpdateOperationsInput | number - title?: StringFieldUpdateOperationsInput | string - description?: NullableStringFieldUpdateOperationsInput | string | null - changeSummary?: NullableStringFieldUpdateOperationsInput | string | null - previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null - netlogoFileKey?: StringFieldUpdateOperationsInput | string - netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null - infoTab?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - latestOfModel?: ModelUncheckedUpdateOneWithoutLatestVersionNestedInput - parentOfModels?: ModelUncheckedUpdateManyWithoutParentVersionNestedInput - tags?: ModelVersionTagUncheckedUpdateManyWithoutModelVersionNestedInput - taggedAdditionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutTaggedVersionNestedInput + export type AccountMaxOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + accountId?: SortOrder + providerId?: SortOrder + accessToken?: SortOrder + refreshToken?: SortOrder + accessTokenExpiresAt?: SortOrder + refreshTokenExpiresAt?: SortOrder + scope?: SortOrder + idToken?: SortOrder + password?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder } - export type ModelVersionCreateManyInput = { - modelId: string - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null - createdAt?: Date | string - finalizedAt?: Date | string | null + export type AccountMinOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + accountId?: SortOrder + providerId?: SortOrder + accessToken?: SortOrder + refreshToken?: SortOrder + accessTokenExpiresAt?: SortOrder + refreshTokenExpiresAt?: SortOrder + scope?: SortOrder + idToken?: SortOrder + password?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder } - export type ModelVersionUpdateManyMutationInput = { - versionNumber?: IntFieldUpdateOperationsInput | number - title?: StringFieldUpdateOperationsInput | string - description?: NullableStringFieldUpdateOperationsInput | string | null - changeSummary?: NullableStringFieldUpdateOperationsInput | string | null - previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null - netlogoFileKey?: StringFieldUpdateOperationsInput | string - netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null - infoTab?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type SessionCountOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + token?: SortOrder + ipAddress?: SortOrder + userAgent?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + impersonatedBy?: SortOrder } - export type ModelVersionUncheckedUpdateManyInput = { - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: IntFieldUpdateOperationsInput | number - title?: StringFieldUpdateOperationsInput | string - description?: NullableStringFieldUpdateOperationsInput | string | null - changeSummary?: NullableStringFieldUpdateOperationsInput | string | null - previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null - netlogoFileKey?: StringFieldUpdateOperationsInput | string - netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null - infoTab?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type SessionMaxOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + token?: SortOrder + ipAddress?: SortOrder + userAgent?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + impersonatedBy?: SortOrder } - export type ModelVersionTagCreateInput = { - createdAt?: Date | string - modelVersion: ModelVersionCreateNestedOneWithoutTagsInput - tag: TagCreateNestedOneWithoutModelVersionsInput + export type SessionMinOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + expiresAt?: SortOrder + token?: SortOrder + ipAddress?: SortOrder + userAgent?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + impersonatedBy?: SortOrder } - export type ModelVersionTagUncheckedCreateInput = { - modelId: string - versionNumber: number - tagId: string - createdAt?: Date | string + export type UserNullableScalarRelationFilter = { + is?: UserWhereInput | null + isNot?: UserWhereInput | null } - export type ModelVersionTagUpdateInput = { - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - modelVersion?: ModelVersionUpdateOneRequiredWithoutTagsNestedInput - tag?: TagUpdateOneRequiredWithoutModelVersionsNestedInput + export type VerificationCountOrderByAggregateInput = { + id?: SortOrder + identifier?: SortOrder + value?: SortOrder + expiresAt?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + userId?: SortOrder + } + + export type VerificationMaxOrderByAggregateInput = { + id?: SortOrder + identifier?: SortOrder + value?: SortOrder + expiresAt?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + userId?: SortOrder + } + + export type VerificationMinOrderByAggregateInput = { + id?: SortOrder + identifier?: SortOrder + value?: SortOrder + expiresAt?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + userId?: SortOrder } - export type ModelVersionTagUncheckedUpdateInput = { - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: IntFieldUpdateOperationsInput | number - tagId?: StringFieldUpdateOperationsInput | string - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type IntFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> + in?: number[] | ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntFilter<$PrismaModel> | number } - export type ModelVersionTagCreateManyInput = { - modelId: string - versionNumber: number - tagId: string - createdAt?: Date | string + export type PasskeyCountOrderByAggregateInput = { + id?: SortOrder + name?: SortOrder + publicKey?: SortOrder + userId?: SortOrder + credentialID?: SortOrder + counter?: SortOrder + deviceType?: SortOrder + backedUp?: SortOrder + transports?: SortOrder + createdAt?: SortOrder + aaguid?: SortOrder } - export type ModelVersionTagUpdateManyMutationInput = { - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type PasskeyAvgOrderByAggregateInput = { + counter?: SortOrder } - export type ModelVersionTagUncheckedUpdateManyInput = { - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: IntFieldUpdateOperationsInput | number - tagId?: StringFieldUpdateOperationsInput | string - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type PasskeyMaxOrderByAggregateInput = { + id?: SortOrder + name?: SortOrder + publicKey?: SortOrder + userId?: SortOrder + credentialID?: SortOrder + counter?: SortOrder + deviceType?: SortOrder + backedUp?: SortOrder + transports?: SortOrder + createdAt?: SortOrder + aaguid?: SortOrder } - export type ModelAdditionalFileCreateInput = { - id?: string - fileKey: string - kind?: $Enums.ModelFileKind - createdAt?: Date | string - model: ModelCreateNestedOneWithoutAdditionalFilesInput - taggedVersion: ModelVersionCreateNestedOneWithoutTaggedAdditionalFilesInput + export type PasskeyMinOrderByAggregateInput = { + id?: SortOrder + name?: SortOrder + publicKey?: SortOrder + userId?: SortOrder + credentialID?: SortOrder + counter?: SortOrder + deviceType?: SortOrder + backedUp?: SortOrder + transports?: SortOrder + createdAt?: SortOrder + aaguid?: SortOrder } - export type ModelAdditionalFileUncheckedCreateInput = { - id?: string - modelId: string - taggedVersionNumber: number - fileKey: string - kind?: $Enums.ModelFileKind - createdAt?: Date | string + export type PasskeySumOrderByAggregateInput = { + counter?: SortOrder } - export type ModelAdditionalFileUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - fileKey?: StringFieldUpdateOperationsInput | string - kind?: EnumModelFileKindFieldUpdateOperationsInput | $Enums.ModelFileKind - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - model?: ModelUpdateOneRequiredWithoutAdditionalFilesNestedInput - taggedVersion?: ModelVersionUpdateOneRequiredWithoutTaggedAdditionalFilesNestedInput + export type IntWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> + in?: number[] | ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntWithAggregatesFilter<$PrismaModel> | number + _count?: NestedIntFilter<$PrismaModel> + _avg?: NestedFloatFilter<$PrismaModel> + _sum?: NestedIntFilter<$PrismaModel> + _min?: NestedIntFilter<$PrismaModel> + _max?: NestedIntFilter<$PrismaModel> } - export type ModelAdditionalFileUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - modelId?: StringFieldUpdateOperationsInput | string - taggedVersionNumber?: IntFieldUpdateOperationsInput | number - fileKey?: StringFieldUpdateOperationsInput | string - kind?: EnumModelFileKindFieldUpdateOperationsInput | $Enums.ModelFileKind - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type EnumModelVisibilityFilter<$PrismaModel = never> = { + equals?: $Enums.ModelVisibility | EnumModelVisibilityFieldRefInput<$PrismaModel> + in?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> + not?: NestedEnumModelVisibilityFilter<$PrismaModel> | $Enums.ModelVisibility } - export type ModelAdditionalFileCreateManyInput = { - id?: string - modelId: string - taggedVersionNumber: number - fileKey: string - kind?: $Enums.ModelFileKind - createdAt?: Date | string + export type ModelVersionNullableScalarRelationFilter = { + is?: ModelVersionWhereInput | null + isNot?: ModelVersionWhereInput | null } - export type ModelAdditionalFileUpdateManyMutationInput = { - id?: StringFieldUpdateOperationsInput | string - fileKey?: StringFieldUpdateOperationsInput | string - kind?: EnumModelFileKindFieldUpdateOperationsInput | $Enums.ModelFileKind - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelNullableScalarRelationFilter = { + is?: ModelWhereInput | null + isNot?: ModelWhereInput | null } - export type ModelAdditionalFileUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - modelId?: StringFieldUpdateOperationsInput | string - taggedVersionNumber?: IntFieldUpdateOperationsInput | number - fileKey?: StringFieldUpdateOperationsInput | string - kind?: EnumModelFileKindFieldUpdateOperationsInput | $Enums.ModelFileKind - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelListRelationFilter = { + every?: ModelWhereInput + some?: ModelWhereInput + none?: ModelWhereInput } - export type TagCreateInput = { - id?: string - legacyId?: number | null - name: string - displayName?: string | null - createdAt?: Date | string - modelVersions?: ModelVersionTagCreateNestedManyWithoutTagInput + export type ModelVersionListRelationFilter = { + every?: ModelVersionWhereInput + some?: ModelVersionWhereInput + none?: ModelVersionWhereInput } - export type TagUncheckedCreateInput = { - id?: string - legacyId?: number | null - name: string - displayName?: string | null - createdAt?: Date | string - modelVersions?: ModelVersionTagUncheckedCreateNestedManyWithoutTagInput + export type ModelAdditionalFileListRelationFilter = { + every?: ModelAdditionalFileWhereInput + some?: ModelAdditionalFileWhereInput + none?: ModelAdditionalFileWhereInput } - export type TagUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - name?: StringFieldUpdateOperationsInput | string - displayName?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - modelVersions?: ModelVersionTagUpdateManyWithoutTagNestedInput + export type ModelOrderByRelationAggregateInput = { + _count?: SortOrder } - export type TagUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - name?: StringFieldUpdateOperationsInput | string - displayName?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - modelVersions?: ModelVersionTagUncheckedUpdateManyWithoutTagNestedInput + export type ModelVersionOrderByRelationAggregateInput = { + _count?: SortOrder } - export type TagCreateManyInput = { - id?: string - legacyId?: number | null - name: string - displayName?: string | null - createdAt?: Date | string + export type ModelAdditionalFileOrderByRelationAggregateInput = { + _count?: SortOrder } - export type TagUpdateManyMutationInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - name?: StringFieldUpdateOperationsInput | string - displayName?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelIdLatestVersionNumberCompoundUniqueInput = { + id: string + latestVersionNumber: number } - export type TagUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - name?: StringFieldUpdateOperationsInput | string - displayName?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelCountOrderByAggregateInput = { + id?: SortOrder + legacyId?: SortOrder + latestVersionNumber?: SortOrder + parentModelId?: SortOrder + parentVersionNumber?: SortOrder + visibility?: SortOrder + isEndorsed?: SortOrder + isLibraryModel?: SortOrder + viewCount?: SortOrder + runCount?: SortOrder + downloadCount?: SortOrder + shareCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + deletedAt?: SortOrder } - export type ModelAuthorCreateInput = { - role: $Enums.AuthorRole - createdAt?: Date | string - model: ModelCreateNestedOneWithoutAuthorsInput - user: UserCreateNestedOneWithoutAuthoredModelsInput + export type ModelAvgOrderByAggregateInput = { + legacyId?: SortOrder + latestVersionNumber?: SortOrder + parentVersionNumber?: SortOrder + viewCount?: SortOrder + runCount?: SortOrder + downloadCount?: SortOrder + shareCount?: SortOrder } - export type ModelAuthorUncheckedCreateInput = { - modelId: string - userId: string - role: $Enums.AuthorRole - createdAt?: Date | string + export type ModelMaxOrderByAggregateInput = { + id?: SortOrder + legacyId?: SortOrder + latestVersionNumber?: SortOrder + parentModelId?: SortOrder + parentVersionNumber?: SortOrder + visibility?: SortOrder + isEndorsed?: SortOrder + isLibraryModel?: SortOrder + viewCount?: SortOrder + runCount?: SortOrder + downloadCount?: SortOrder + shareCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + deletedAt?: SortOrder } - export type ModelAuthorUpdateInput = { - role?: EnumAuthorRoleFieldUpdateOperationsInput | $Enums.AuthorRole - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - model?: ModelUpdateOneRequiredWithoutAuthorsNestedInput - user?: UserUpdateOneRequiredWithoutAuthoredModelsNestedInput + export type ModelMinOrderByAggregateInput = { + id?: SortOrder + legacyId?: SortOrder + latestVersionNumber?: SortOrder + parentModelId?: SortOrder + parentVersionNumber?: SortOrder + visibility?: SortOrder + isEndorsed?: SortOrder + isLibraryModel?: SortOrder + viewCount?: SortOrder + runCount?: SortOrder + downloadCount?: SortOrder + shareCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + deletedAt?: SortOrder } - export type ModelAuthorUncheckedUpdateInput = { - modelId?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - role?: EnumAuthorRoleFieldUpdateOperationsInput | $Enums.AuthorRole - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelSumOrderByAggregateInput = { + legacyId?: SortOrder + latestVersionNumber?: SortOrder + parentVersionNumber?: SortOrder + viewCount?: SortOrder + runCount?: SortOrder + downloadCount?: SortOrder + shareCount?: SortOrder } - export type ModelAuthorCreateManyInput = { - modelId: string - userId: string - role: $Enums.AuthorRole - createdAt?: Date | string + export type EnumModelVisibilityWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.ModelVisibility | EnumModelVisibilityFieldRefInput<$PrismaModel> + in?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> + not?: NestedEnumModelVisibilityWithAggregatesFilter<$PrismaModel> | $Enums.ModelVisibility + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumModelVisibilityFilter<$PrismaModel> + _max?: NestedEnumModelVisibilityFilter<$PrismaModel> } - export type ModelAuthorUpdateManyMutationInput = { - role?: EnumAuthorRoleFieldUpdateOperationsInput | $Enums.AuthorRole - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelScalarRelationFilter = { + is?: ModelWhereInput + isNot?: ModelWhereInput } - export type ModelAuthorUncheckedUpdateManyInput = { - modelId?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - role?: EnumAuthorRoleFieldUpdateOperationsInput | $Enums.AuthorRole - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelVersionTagListRelationFilter = { + every?: ModelVersionTagWhereInput + some?: ModelVersionTagWhereInput + none?: ModelVersionTagWhereInput } - export type ModelPermissionCreateInput = { - id?: string - permissionLevel: $Enums.PermissionLevel - createdAt?: Date | string - model: ModelCreateNestedOneWithoutPermissionsInput - granteeUser?: UserCreateNestedOneWithoutGrantedPermissionsInput + export type ModelVersionTagOrderByRelationAggregateInput = { + _count?: SortOrder } - export type ModelPermissionUncheckedCreateInput = { - id?: string + export type ModelVersionModelIdVersionNumberCompoundUniqueInput = { modelId: string - granteeUserId?: string | null - permissionLevel: $Enums.PermissionLevel - createdAt?: Date | string + versionNumber: number } - export type ModelPermissionUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - permissionLevel?: EnumPermissionLevelFieldUpdateOperationsInput | $Enums.PermissionLevel - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - model?: ModelUpdateOneRequiredWithoutPermissionsNestedInput - granteeUser?: UserUpdateOneWithoutGrantedPermissionsNestedInput + export type ModelVersionCountOrderByAggregateInput = { + modelId?: SortOrder + versionNumber?: SortOrder + title?: SortOrder + description?: SortOrder + changeSummary?: SortOrder + previewImageFileKey?: SortOrder + netlogoFileKey?: SortOrder + netlogoVersion?: SortOrder + infoTab?: SortOrder + createdAt?: SortOrder + finalizedAt?: SortOrder } - export type ModelPermissionUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - modelId?: StringFieldUpdateOperationsInput | string - granteeUserId?: NullableStringFieldUpdateOperationsInput | string | null - permissionLevel?: EnumPermissionLevelFieldUpdateOperationsInput | $Enums.PermissionLevel - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelVersionAvgOrderByAggregateInput = { + versionNumber?: SortOrder } - export type ModelPermissionCreateManyInput = { - id?: string - modelId: string - granteeUserId?: string | null - permissionLevel: $Enums.PermissionLevel - createdAt?: Date | string + export type ModelVersionMaxOrderByAggregateInput = { + modelId?: SortOrder + versionNumber?: SortOrder + title?: SortOrder + description?: SortOrder + changeSummary?: SortOrder + previewImageFileKey?: SortOrder + netlogoFileKey?: SortOrder + netlogoVersion?: SortOrder + infoTab?: SortOrder + createdAt?: SortOrder + finalizedAt?: SortOrder } - export type ModelPermissionUpdateManyMutationInput = { - id?: StringFieldUpdateOperationsInput | string - permissionLevel?: EnumPermissionLevelFieldUpdateOperationsInput | $Enums.PermissionLevel - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelVersionMinOrderByAggregateInput = { + modelId?: SortOrder + versionNumber?: SortOrder + title?: SortOrder + description?: SortOrder + changeSummary?: SortOrder + previewImageFileKey?: SortOrder + netlogoFileKey?: SortOrder + netlogoVersion?: SortOrder + infoTab?: SortOrder + createdAt?: SortOrder + finalizedAt?: SortOrder } - export type ModelPermissionUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - modelId?: StringFieldUpdateOperationsInput | string - granteeUserId?: NullableStringFieldUpdateOperationsInput | string | null - permissionLevel?: EnumPermissionLevelFieldUpdateOperationsInput | $Enums.PermissionLevel - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelVersionSumOrderByAggregateInput = { + versionNumber?: SortOrder } - export type ModelLikeCreateInput = { - createdAt?: Date | string - model: ModelCreateNestedOneWithoutLikesInput - user: UserCreateNestedOneWithoutModelLikesInput + export type ModelVersionScalarRelationFilter = { + is?: ModelVersionWhereInput + isNot?: ModelVersionWhereInput } - export type ModelLikeUncheckedCreateInput = { - modelId: string - userId: string - createdAt?: Date | string + export type TagScalarRelationFilter = { + is?: TagWhereInput + isNot?: TagWhereInput } - export type ModelLikeUpdateInput = { - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - model?: ModelUpdateOneRequiredWithoutLikesNestedInput - user?: UserUpdateOneRequiredWithoutModelLikesNestedInput + export type ModelVersionTagModelIdVersionNumberTagIdCompoundUniqueInput = { + modelId: string + versionNumber: number + tagId: string } - export type ModelLikeUncheckedUpdateInput = { - modelId?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelVersionTagCountOrderByAggregateInput = { + modelId?: SortOrder + versionNumber?: SortOrder + tagId?: SortOrder + createdAt?: SortOrder } - export type ModelLikeCreateManyInput = { - modelId: string - userId: string - createdAt?: Date | string + export type ModelVersionTagAvgOrderByAggregateInput = { + versionNumber?: SortOrder } - export type ModelLikeUpdateManyMutationInput = { - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelVersionTagMaxOrderByAggregateInput = { + modelId?: SortOrder + versionNumber?: SortOrder + tagId?: SortOrder + createdAt?: SortOrder } - export type ModelLikeUncheckedUpdateManyInput = { - modelId?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelVersionTagMinOrderByAggregateInput = { + modelId?: SortOrder + versionNumber?: SortOrder + tagId?: SortOrder + createdAt?: SortOrder } - export type ModelInteractionCreateInput = { - id?: string - versionNumber?: number | null - kind: $Enums.ModelInteractionKind - sessionId?: string | null - ipHash?: string | null - userAgent?: string | null - referer?: string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: string | null - createdAt?: Date | string - model: ModelCreateNestedOneWithoutInteractionsInput - user?: UserCreateNestedOneWithoutModelInteractionsInput + export type ModelVersionTagSumOrderByAggregateInput = { + versionNumber?: SortOrder } - export type ModelInteractionUncheckedCreateInput = { - id?: string - modelId: string - versionNumber?: number | null - kind: $Enums.ModelInteractionKind - userId?: string | null - sessionId?: string | null - ipHash?: string | null - userAgent?: string | null - referer?: string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: string | null - createdAt?: Date | string + export type EnumModelFileKindFilter<$PrismaModel = never> = { + equals?: $Enums.ModelFileKind | EnumModelFileKindFieldRefInput<$PrismaModel> + in?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> + not?: NestedEnumModelFileKindFilter<$PrismaModel> | $Enums.ModelFileKind } - export type ModelInteractionUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - kind?: EnumModelInteractionKindFieldUpdateOperationsInput | $Enums.ModelInteractionKind - sessionId?: NullableStringFieldUpdateOperationsInput | string | null - ipHash?: NullableStringFieldUpdateOperationsInput | string | null - userAgent?: NullableStringFieldUpdateOperationsInput | string | null - referer?: NullableStringFieldUpdateOperationsInput | string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - model?: ModelUpdateOneRequiredWithoutInteractionsNestedInput - user?: UserUpdateOneWithoutModelInteractionsNestedInput + export type ModelAdditionalFileCountOrderByAggregateInput = { + id?: SortOrder + modelId?: SortOrder + taggedVersionNumber?: SortOrder + fileKey?: SortOrder + kind?: SortOrder + createdAt?: SortOrder } - export type ModelInteractionUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - kind?: EnumModelInteractionKindFieldUpdateOperationsInput | $Enums.ModelInteractionKind - userId?: NullableStringFieldUpdateOperationsInput | string | null - sessionId?: NullableStringFieldUpdateOperationsInput | string | null - ipHash?: NullableStringFieldUpdateOperationsInput | string | null - userAgent?: NullableStringFieldUpdateOperationsInput | string | null - referer?: NullableStringFieldUpdateOperationsInput | string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelAdditionalFileAvgOrderByAggregateInput = { + taggedVersionNumber?: SortOrder } - export type ModelInteractionCreateManyInput = { - id?: string - modelId: string - versionNumber?: number | null - kind: $Enums.ModelInteractionKind - userId?: string | null - sessionId?: string | null - ipHash?: string | null - userAgent?: string | null - referer?: string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: string | null - createdAt?: Date | string + export type ModelAdditionalFileMaxOrderByAggregateInput = { + id?: SortOrder + modelId?: SortOrder + taggedVersionNumber?: SortOrder + fileKey?: SortOrder + kind?: SortOrder + createdAt?: SortOrder } - export type ModelInteractionUpdateManyMutationInput = { - id?: StringFieldUpdateOperationsInput | string - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - kind?: EnumModelInteractionKindFieldUpdateOperationsInput | $Enums.ModelInteractionKind - sessionId?: NullableStringFieldUpdateOperationsInput | string | null - ipHash?: NullableStringFieldUpdateOperationsInput | string | null - userAgent?: NullableStringFieldUpdateOperationsInput | string | null - referer?: NullableStringFieldUpdateOperationsInput | string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelAdditionalFileMinOrderByAggregateInput = { + id?: SortOrder + modelId?: SortOrder + taggedVersionNumber?: SortOrder + fileKey?: SortOrder + kind?: SortOrder + createdAt?: SortOrder } - export type ModelInteractionUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - kind?: EnumModelInteractionKindFieldUpdateOperationsInput | $Enums.ModelInteractionKind - userId?: NullableStringFieldUpdateOperationsInput | string | null - sessionId?: NullableStringFieldUpdateOperationsInput | string | null - ipHash?: NullableStringFieldUpdateOperationsInput | string | null - userAgent?: NullableStringFieldUpdateOperationsInput | string | null - referer?: NullableStringFieldUpdateOperationsInput | string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelAdditionalFileSumOrderByAggregateInput = { + taggedVersionNumber?: SortOrder } - export type ModelDraftCreateInput = { - id?: string - schemaVersion: number - data: JsonNullValueInput | InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - user: UserCreateNestedOneWithoutModelDraftsInput - model?: ModelCreateNestedOneWithoutDraftsInput + export type EnumModelFileKindWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.ModelFileKind | EnumModelFileKindFieldRefInput<$PrismaModel> + in?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> + not?: NestedEnumModelFileKindWithAggregatesFilter<$PrismaModel> | $Enums.ModelFileKind + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumModelFileKindFilter<$PrismaModel> + _max?: NestedEnumModelFileKindFilter<$PrismaModel> } - export type ModelDraftUncheckedCreateInput = { - id?: string - userId: string - modelId?: string | null - schemaVersion: number - data: JsonNullValueInput | InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string + export type TagCountOrderByAggregateInput = { + id?: SortOrder + legacyId?: SortOrder + name?: SortOrder + displayName?: SortOrder + createdAt?: SortOrder } - export type ModelDraftUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - schemaVersion?: IntFieldUpdateOperationsInput | number - data?: JsonNullValueInput | InputJsonValue - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - user?: UserUpdateOneRequiredWithoutModelDraftsNestedInput - model?: ModelUpdateOneWithoutDraftsNestedInput + export type TagAvgOrderByAggregateInput = { + legacyId?: SortOrder } - export type ModelDraftUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - modelId?: NullableStringFieldUpdateOperationsInput | string | null - schemaVersion?: IntFieldUpdateOperationsInput | number - data?: JsonNullValueInput | InputJsonValue - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type TagMaxOrderByAggregateInput = { + id?: SortOrder + legacyId?: SortOrder + name?: SortOrder + displayName?: SortOrder + createdAt?: SortOrder } - export type ModelDraftCreateManyInput = { - id?: string - userId: string - modelId?: string | null - schemaVersion: number - data: JsonNullValueInput | InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string + export type TagMinOrderByAggregateInput = { + id?: SortOrder + legacyId?: SortOrder + name?: SortOrder + displayName?: SortOrder + createdAt?: SortOrder } - export type ModelDraftUpdateManyMutationInput = { - id?: StringFieldUpdateOperationsInput | string - schemaVersion?: IntFieldUpdateOperationsInput | number - data?: JsonNullValueInput | InputJsonValue - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type TagSumOrderByAggregateInput = { + legacyId?: SortOrder } - export type ModelDraftUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - modelId?: NullableStringFieldUpdateOperationsInput | string | null - schemaVersion?: IntFieldUpdateOperationsInput | number - data?: JsonNullValueInput | InputJsonValue - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type EnumAuthorRoleFilter<$PrismaModel = never> = { + equals?: $Enums.AuthorRole | EnumAuthorRoleFieldRefInput<$PrismaModel> + in?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> + notIn?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> + not?: NestedEnumAuthorRoleFilter<$PrismaModel> | $Enums.AuthorRole } - export type ModelCommentCreateInput = { - id?: string - legacyId?: number | null - versionNumber?: number | null - content?: string | null - likesCount?: number - createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - model: ModelCreateNestedOneWithoutCommentsInput - user?: UserCreateNestedOneWithoutCommentsInput - parent?: ModelCommentCreateNestedOneWithoutRepliesInput - replies?: ModelCommentCreateNestedManyWithoutParentInput - likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput + export type ModelAuthorModelIdUserIdCompoundUniqueInput = { + modelId: string + userId: string } - export type ModelCommentUncheckedCreateInput = { - id?: string - legacyId?: number | null - parentId?: string | null - userId?: string | null - modelId: string - versionNumber?: number | null - content?: string | null - likesCount?: number - createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput - likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput + export type ModelAuthorCountOrderByAggregateInput = { + modelId?: SortOrder + userId?: SortOrder + role?: SortOrder + createdAt?: SortOrder } - export type ModelCommentUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - content?: NullableStringFieldUpdateOperationsInput | string | null - likesCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - model?: ModelUpdateOneRequiredWithoutCommentsNestedInput - user?: UserUpdateOneWithoutCommentsNestedInput - parent?: ModelCommentUpdateOneWithoutRepliesNestedInput - replies?: ModelCommentUpdateManyWithoutParentNestedInput - likes?: ModelCommentLikeUpdateManyWithoutModelCommentNestedInput + export type ModelAuthorMaxOrderByAggregateInput = { + modelId?: SortOrder + userId?: SortOrder + role?: SortOrder + createdAt?: SortOrder } - export type ModelCommentUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - parentId?: NullableStringFieldUpdateOperationsInput | string | null - userId?: NullableStringFieldUpdateOperationsInput | string | null - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - content?: NullableStringFieldUpdateOperationsInput | string | null - likesCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - replies?: ModelCommentUncheckedUpdateManyWithoutParentNestedInput - likes?: ModelCommentLikeUncheckedUpdateManyWithoutModelCommentNestedInput + export type ModelAuthorMinOrderByAggregateInput = { + modelId?: SortOrder + userId?: SortOrder + role?: SortOrder + createdAt?: SortOrder } - export type ModelCommentCreateManyInput = { - id?: string - legacyId?: number | null - parentId?: string | null - userId?: string | null - modelId: string - versionNumber?: number | null - content?: string | null - likesCount?: number - createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null + export type EnumAuthorRoleWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.AuthorRole | EnumAuthorRoleFieldRefInput<$PrismaModel> + in?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> + notIn?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> + not?: NestedEnumAuthorRoleWithAggregatesFilter<$PrismaModel> | $Enums.AuthorRole + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumAuthorRoleFilter<$PrismaModel> + _max?: NestedEnumAuthorRoleFilter<$PrismaModel> } - export type ModelCommentUpdateManyMutationInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - content?: NullableStringFieldUpdateOperationsInput | string | null - likesCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type EnumPermissionLevelFilter<$PrismaModel = never> = { + equals?: $Enums.PermissionLevel | EnumPermissionLevelFieldRefInput<$PrismaModel> + in?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> + notIn?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> + not?: NestedEnumPermissionLevelFilter<$PrismaModel> | $Enums.PermissionLevel } - export type ModelCommentUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - parentId?: NullableStringFieldUpdateOperationsInput | string | null - userId?: NullableStringFieldUpdateOperationsInput | string | null - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - content?: NullableStringFieldUpdateOperationsInput | string | null - likesCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type ModelPermissionModelIdGranteeUserIdCompoundUniqueInput = { + modelId: string + granteeUserId: string } - export type ModelCommentLikeCreateInput = { - createdAt?: Date | string - modelComment: ModelCommentCreateNestedOneWithoutLikesInput - user: UserCreateNestedOneWithoutCommentLikesInput + export type ModelPermissionCountOrderByAggregateInput = { + id?: SortOrder + modelId?: SortOrder + granteeUserId?: SortOrder + permissionLevel?: SortOrder + createdAt?: SortOrder } - export type ModelCommentLikeUncheckedCreateInput = { - modelCommentId: string - userId: string - createdAt?: Date | string + export type ModelPermissionMaxOrderByAggregateInput = { + id?: SortOrder + modelId?: SortOrder + granteeUserId?: SortOrder + permissionLevel?: SortOrder + createdAt?: SortOrder } - export type ModelCommentLikeUpdateInput = { - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - modelComment?: ModelCommentUpdateOneRequiredWithoutLikesNestedInput - user?: UserUpdateOneRequiredWithoutCommentLikesNestedInput + export type ModelPermissionMinOrderByAggregateInput = { + id?: SortOrder + modelId?: SortOrder + granteeUserId?: SortOrder + permissionLevel?: SortOrder + createdAt?: SortOrder } - export type ModelCommentLikeUncheckedUpdateInput = { - modelCommentId?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type EnumPermissionLevelWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.PermissionLevel | EnumPermissionLevelFieldRefInput<$PrismaModel> + in?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> + notIn?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> + not?: NestedEnumPermissionLevelWithAggregatesFilter<$PrismaModel> | $Enums.PermissionLevel + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumPermissionLevelFilter<$PrismaModel> + _max?: NestedEnumPermissionLevelFilter<$PrismaModel> } - export type ModelCommentLikeCreateManyInput = { - modelCommentId: string + export type ModelLikeModelIdUserIdCompoundUniqueInput = { + modelId: string userId: string - createdAt?: Date | string } - export type ModelCommentLikeUpdateManyMutationInput = { - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelLikeCountOrderByAggregateInput = { + modelId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder } - export type ModelCommentLikeUncheckedUpdateManyInput = { - modelCommentId?: StringFieldUpdateOperationsInput | string - userId?: StringFieldUpdateOperationsInput | string - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + export type ModelLikeMaxOrderByAggregateInput = { + modelId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder } - export type EventCreateInput = { - id?: string - type: string - resourceType: string - resourceId: string - payload: JsonNullValueInput | InputJsonValue - createdAt?: Date | string - processedAt?: Date | string | null - actor: UserCreateNestedOneWithoutEventsInput + export type ModelLikeMinOrderByAggregateInput = { + modelId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder } - export type EventUncheckedCreateInput = { - id?: string - type: string - actorId: string - resourceType: string - resourceId: string - payload: JsonNullValueInput | InputJsonValue - createdAt?: Date | string - processedAt?: Date | string | null + export type EnumModelInteractionKindFilter<$PrismaModel = never> = { + equals?: $Enums.ModelInteractionKind | EnumModelInteractionKindFieldRefInput<$PrismaModel> + in?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> + not?: NestedEnumModelInteractionKindFilter<$PrismaModel> | $Enums.ModelInteractionKind } - export type EventUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - type?: StringFieldUpdateOperationsInput | string - resourceType?: StringFieldUpdateOperationsInput | string - resourceId?: StringFieldUpdateOperationsInput | string - payload?: JsonNullValueInput | InputJsonValue - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - actor?: UserUpdateOneRequiredWithoutEventsNestedInput + export type ModelInteractionCountOrderByAggregateInput = { + id?: SortOrder + modelId?: SortOrder + versionNumber?: SortOrder + kind?: SortOrder + userId?: SortOrder + sessionId?: SortOrder + ipHash?: SortOrder + userAgent?: SortOrder + referer?: SortOrder + geo?: SortOrder + cookie?: SortOrder + createdAt?: SortOrder } - export type EventUncheckedUpdateInput = { - id?: StringFieldUpdateOperationsInput | string - type?: StringFieldUpdateOperationsInput | string - actorId?: StringFieldUpdateOperationsInput | string - resourceType?: StringFieldUpdateOperationsInput | string - resourceId?: StringFieldUpdateOperationsInput | string - payload?: JsonNullValueInput | InputJsonValue - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type ModelInteractionAvgOrderByAggregateInput = { + versionNumber?: SortOrder } - export type EventCreateManyInput = { - id?: string - type: string - actorId: string - resourceType: string - resourceId: string - payload: JsonNullValueInput | InputJsonValue - createdAt?: Date | string - processedAt?: Date | string | null + export type ModelInteractionMaxOrderByAggregateInput = { + id?: SortOrder + modelId?: SortOrder + versionNumber?: SortOrder + kind?: SortOrder + userId?: SortOrder + sessionId?: SortOrder + ipHash?: SortOrder + userAgent?: SortOrder + referer?: SortOrder + cookie?: SortOrder + createdAt?: SortOrder } - export type EventUpdateManyMutationInput = { - id?: StringFieldUpdateOperationsInput | string - type?: StringFieldUpdateOperationsInput | string - resourceType?: StringFieldUpdateOperationsInput | string - resourceId?: StringFieldUpdateOperationsInput | string - payload?: JsonNullValueInput | InputJsonValue - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type ModelInteractionMinOrderByAggregateInput = { + id?: SortOrder + modelId?: SortOrder + versionNumber?: SortOrder + kind?: SortOrder + userId?: SortOrder + sessionId?: SortOrder + ipHash?: SortOrder + userAgent?: SortOrder + referer?: SortOrder + cookie?: SortOrder + createdAt?: SortOrder } - export type EventUncheckedUpdateManyInput = { - id?: StringFieldUpdateOperationsInput | string - type?: StringFieldUpdateOperationsInput | string - actorId?: StringFieldUpdateOperationsInput | string - resourceType?: StringFieldUpdateOperationsInput | string - resourceId?: StringFieldUpdateOperationsInput | string - payload?: JsonNullValueInput | InputJsonValue - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + export type ModelInteractionSumOrderByAggregateInput = { + versionNumber?: SortOrder } - export type StringFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> - in?: string[] | ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> - 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> - mode?: QueryMode - not?: NestedStringFilter<$PrismaModel> | string + export type EnumModelInteractionKindWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.ModelInteractionKind | EnumModelInteractionKindFieldRefInput<$PrismaModel> + in?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> + not?: NestedEnumModelInteractionKindWithAggregatesFilter<$PrismaModel> | $Enums.ModelInteractionKind + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumModelInteractionKindFilter<$PrismaModel> + _max?: NestedEnumModelInteractionKindFilter<$PrismaModel> } + export type JsonFilter<$PrismaModel = never> = + | PatchUndefined< + Either>, Exclude>, 'path'>>, + Required> + > + | OptionalFlat>, 'path'>> - export type StringNullableFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> | null - in?: string[] | ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | 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> - mode?: QueryMode - not?: NestedStringNullableFilter<$PrismaModel> | string | null + export type JsonFilterBase<$PrismaModel = never> = { + equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + path?: string[] + mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | StringFieldRefInput<$PrismaModel> + string_starts_with?: string | StringFieldRefInput<$PrismaModel> + string_ends_with?: string | StringFieldRefInput<$PrismaModel> + array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter } - export type BoolFilter<$PrismaModel = never> = { - equals?: boolean | BooleanFieldRefInput<$PrismaModel> - not?: NestedBoolFilter<$PrismaModel> | boolean + export type ModelDraftCountOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + modelId?: SortOrder + schemaVersion?: SortOrder + data?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder } - export type DateTimeFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - 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 ModelDraftAvgOrderByAggregateInput = { + schemaVersion?: SortOrder } - export type EnumSystemRoleFilter<$PrismaModel = never> = { - equals?: $Enums.SystemRole | EnumSystemRoleFieldRefInput<$PrismaModel> - in?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> - notIn?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> - not?: NestedEnumSystemRoleFilter<$PrismaModel> | $Enums.SystemRole + export type ModelDraftMaxOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + modelId?: SortOrder + schemaVersion?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder } - export type EnumUserKindFilter<$PrismaModel = never> = { - equals?: $Enums.UserKind | EnumUserKindFieldRefInput<$PrismaModel> - in?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> - notIn?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> - not?: NestedEnumUserKindFilter<$PrismaModel> | $Enums.UserKind + export type ModelDraftMinOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + modelId?: SortOrder + schemaVersion?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder } - export type DateTimeNullableFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null - lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null + export type ModelDraftSumOrderByAggregateInput = { + schemaVersion?: SortOrder } - export type JsonNullableFilter<$PrismaModel = never> = + export type JsonWithAggregatesFilter<$PrismaModel = never> = | PatchUndefined< - Either>, Exclude>, 'path'>>, - Required> + Either>, Exclude>, 'path'>>, + Required> > - | OptionalFlat>, 'path'>> + | OptionalFlat>, 'path'>> - export type JsonNullableFilterBase<$PrismaModel = never> = { + export type JsonWithAggregatesFilterBase<$PrismaModel = never> = { equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter path?: string[] mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> @@ -27865,4715 +32009,4723 @@ export namespace Prisma { gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedJsonFilter<$PrismaModel> + _max?: NestedJsonFilter<$PrismaModel> } - export type BoolNullableFilter<$PrismaModel = never> = { - equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null - not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null + export type ModelCommentNullableScalarRelationFilter = { + is?: ModelCommentWhereInput | null + isNot?: ModelCommentWhereInput | null } - export type IntNullableFilter<$PrismaModel = never> = { - equals?: number | IntFieldRefInput<$PrismaModel> | null - in?: number[] | ListIntFieldRefInput<$PrismaModel> | null - notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null - lt?: number | IntFieldRefInput<$PrismaModel> - lte?: number | IntFieldRefInput<$PrismaModel> - gt?: number | IntFieldRefInput<$PrismaModel> - gte?: number | IntFieldRefInput<$PrismaModel> - not?: NestedIntNullableFilter<$PrismaModel> | number | null + export type ModelCommentCountOrderByAggregateInput = { + id?: SortOrder + legacyId?: SortOrder + parentId?: SortOrder + userId?: SortOrder + modelId?: SortOrder + versionNumber?: SortOrder + content?: SortOrder + likesCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + editedAt?: SortOrder + deletedAt?: SortOrder } - export type AccountListRelationFilter = { - every?: AccountWhereInput - some?: AccountWhereInput - none?: AccountWhereInput + export type ModelCommentAvgOrderByAggregateInput = { + legacyId?: SortOrder + versionNumber?: SortOrder + likesCount?: SortOrder } - export type SessionListRelationFilter = { - every?: SessionWhereInput - some?: SessionWhereInput - none?: SessionWhereInput + export type ModelCommentMaxOrderByAggregateInput = { + id?: SortOrder + legacyId?: SortOrder + parentId?: SortOrder + userId?: SortOrder + modelId?: SortOrder + versionNumber?: SortOrder + content?: SortOrder + likesCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + editedAt?: SortOrder + deletedAt?: SortOrder } - export type VerificationListRelationFilter = { - every?: VerificationWhereInput - some?: VerificationWhereInput - none?: VerificationWhereInput + export type ModelCommentMinOrderByAggregateInput = { + id?: SortOrder + legacyId?: SortOrder + parentId?: SortOrder + userId?: SortOrder + modelId?: SortOrder + versionNumber?: SortOrder + content?: SortOrder + likesCount?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + editedAt?: SortOrder + deletedAt?: SortOrder } - export type ModelAuthorListRelationFilter = { - every?: ModelAuthorWhereInput - some?: ModelAuthorWhereInput - none?: ModelAuthorWhereInput + export type ModelCommentSumOrderByAggregateInput = { + legacyId?: SortOrder + versionNumber?: SortOrder + likesCount?: SortOrder } - export type ModelPermissionListRelationFilter = { - every?: ModelPermissionWhereInput - some?: ModelPermissionWhereInput - none?: ModelPermissionWhereInput + export type ModelCommentScalarRelationFilter = { + is?: ModelCommentWhereInput + isNot?: ModelCommentWhereInput } - export type EventListRelationFilter = { - every?: EventWhereInput - some?: EventWhereInput - none?: EventWhereInput + export type ModelCommentLikeModelCommentIdUserIdCompoundUniqueInput = { + modelCommentId: string + userId: string } - export type ModelLikeListRelationFilter = { - every?: ModelLikeWhereInput - some?: ModelLikeWhereInput - none?: ModelLikeWhereInput + export type ModelCommentLikeCountOrderByAggregateInput = { + modelCommentId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder } - export type ModelInteractionListRelationFilter = { - every?: ModelInteractionWhereInput - some?: ModelInteractionWhereInput - none?: ModelInteractionWhereInput + export type ModelCommentLikeMaxOrderByAggregateInput = { + modelCommentId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder } - export type ModelDraftListRelationFilter = { - every?: ModelDraftWhereInput - some?: ModelDraftWhereInput - none?: ModelDraftWhereInput + export type ModelCommentLikeMinOrderByAggregateInput = { + modelCommentId?: SortOrder + userId?: SortOrder + createdAt?: SortOrder } - export type ModelCommentListRelationFilter = { - every?: ModelCommentWhereInput - some?: ModelCommentWhereInput - none?: ModelCommentWhereInput + export type EventCountOrderByAggregateInput = { + id?: SortOrder + type?: SortOrder + actorId?: SortOrder + resourceType?: SortOrder + resourceId?: SortOrder + payload?: SortOrder + createdAt?: SortOrder + processedAt?: SortOrder + attempts?: SortOrder + lastError?: SortOrder } - export type ModelCommentLikeListRelationFilter = { - every?: ModelCommentLikeWhereInput - some?: ModelCommentLikeWhereInput - none?: ModelCommentLikeWhereInput + export type EventAvgOrderByAggregateInput = { + attempts?: SortOrder } - export type PasskeyListRelationFilter = { - every?: PasskeyWhereInput - some?: PasskeyWhereInput - none?: PasskeyWhereInput + export type EventMaxOrderByAggregateInput = { + id?: SortOrder + type?: SortOrder + actorId?: SortOrder + resourceType?: SortOrder + resourceId?: SortOrder + createdAt?: SortOrder + processedAt?: SortOrder + attempts?: SortOrder + lastError?: SortOrder } - export type SortOrderInput = { - sort: SortOrder - nulls?: NullsOrder + export type EventMinOrderByAggregateInput = { + id?: SortOrder + type?: SortOrder + actorId?: SortOrder + resourceType?: SortOrder + resourceId?: SortOrder + createdAt?: SortOrder + processedAt?: SortOrder + attempts?: SortOrder + lastError?: SortOrder } - export type AccountOrderByRelationAggregateInput = { - _count?: SortOrder + export type EventSumOrderByAggregateInput = { + attempts?: SortOrder } - export type SessionOrderByRelationAggregateInput = { - _count?: SortOrder + export type EventScalarRelationFilter = { + is?: EventWhereInput + isNot?: EventWhereInput } - export type VerificationOrderByRelationAggregateInput = { - _count?: SortOrder + export type UserNotificationEventIdRecipientIdCategoryCompoundUniqueInput = { + eventId: string + recipientId: string + category: string } - export type ModelAuthorOrderByRelationAggregateInput = { - _count?: SortOrder + export type UserNotificationCountOrderByAggregateInput = { + id?: SortOrder + recipientId?: SortOrder + eventId?: SortOrder + category?: SortOrder + title?: SortOrder + body?: SortOrder + url?: SortOrder + emailSentAt?: SortOrder + readAt?: SortOrder + createdAt?: SortOrder } - export type ModelPermissionOrderByRelationAggregateInput = { - _count?: SortOrder + export type UserNotificationMaxOrderByAggregateInput = { + id?: SortOrder + recipientId?: SortOrder + eventId?: SortOrder + category?: SortOrder + title?: SortOrder + body?: SortOrder + url?: SortOrder + emailSentAt?: SortOrder + readAt?: SortOrder + createdAt?: SortOrder } - export type EventOrderByRelationAggregateInput = { - _count?: SortOrder + export type UserNotificationMinOrderByAggregateInput = { + id?: SortOrder + recipientId?: SortOrder + eventId?: SortOrder + category?: SortOrder + title?: SortOrder + body?: SortOrder + url?: SortOrder + emailSentAt?: SortOrder + readAt?: SortOrder + createdAt?: SortOrder } - export type ModelLikeOrderByRelationAggregateInput = { - _count?: SortOrder + export type UserNotificationPreferenceUserIdCategoryCompoundUniqueInput = { + userId: string + category: string } - export type ModelInteractionOrderByRelationAggregateInput = { - _count?: SortOrder + export type UserNotificationPreferenceCountOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + category?: SortOrder + email?: SortOrder + inApp?: SortOrder + updatedAt?: SortOrder } - export type ModelDraftOrderByRelationAggregateInput = { - _count?: SortOrder + export type UserNotificationPreferenceMaxOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + category?: SortOrder + email?: SortOrder + inApp?: SortOrder + updatedAt?: SortOrder } - export type ModelCommentOrderByRelationAggregateInput = { - _count?: SortOrder + export type UserNotificationPreferenceMinOrderByAggregateInput = { + id?: SortOrder + userId?: SortOrder + category?: SortOrder + email?: SortOrder + inApp?: SortOrder + updatedAt?: SortOrder } - export type ModelCommentLikeOrderByRelationAggregateInput = { - _count?: SortOrder + export type AccountCreateNestedManyWithoutUserInput = { + create?: XOR | AccountCreateWithoutUserInput[] | AccountUncheckedCreateWithoutUserInput[] + connectOrCreate?: AccountCreateOrConnectWithoutUserInput | AccountCreateOrConnectWithoutUserInput[] + createMany?: AccountCreateManyUserInputEnvelope + connect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] } - export type PasskeyOrderByRelationAggregateInput = { - _count?: SortOrder + export type SessionCreateNestedManyWithoutUserInput = { + create?: XOR | SessionCreateWithoutUserInput[] | SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: SessionCreateOrConnectWithoutUserInput | SessionCreateOrConnectWithoutUserInput[] + createMany?: SessionCreateManyUserInputEnvelope + connect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] } - export type UserCountOrderByAggregateInput = { - id?: SortOrder - name?: SortOrder - email?: SortOrder - emailVerified?: SortOrder - image?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - systemRole?: SortOrder - userKind?: SortOrder - isProfilePublic?: SortOrder - deletedAt?: SortOrder - bio?: SortOrder - country?: SortOrder - socialLinks?: SortOrder - dob?: SortOrder - affiliation?: SortOrder - role?: SortOrder - banned?: SortOrder - banReason?: SortOrder - banExpires?: SortOrder - onboardedAt?: SortOrder - legacyId?: SortOrder + export type VerificationCreateNestedManyWithoutUserInput = { + create?: XOR | VerificationCreateWithoutUserInput[] | VerificationUncheckedCreateWithoutUserInput[] + connectOrCreate?: VerificationCreateOrConnectWithoutUserInput | VerificationCreateOrConnectWithoutUserInput[] + createMany?: VerificationCreateManyUserInputEnvelope + connect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] } - export type UserAvgOrderByAggregateInput = { - legacyId?: SortOrder + export type ModelAuthorCreateNestedManyWithoutUserInput = { + create?: XOR | ModelAuthorCreateWithoutUserInput[] | ModelAuthorUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelAuthorCreateOrConnectWithoutUserInput | ModelAuthorCreateOrConnectWithoutUserInput[] + createMany?: ModelAuthorCreateManyUserInputEnvelope + connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] } - export type UserMaxOrderByAggregateInput = { - id?: SortOrder - name?: SortOrder - email?: SortOrder - emailVerified?: SortOrder - image?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - systemRole?: SortOrder - userKind?: SortOrder - isProfilePublic?: SortOrder - deletedAt?: SortOrder - bio?: SortOrder - country?: SortOrder - dob?: SortOrder - affiliation?: SortOrder - role?: SortOrder - banned?: SortOrder - banReason?: SortOrder - banExpires?: SortOrder - onboardedAt?: SortOrder - legacyId?: SortOrder + export type ModelPermissionCreateNestedManyWithoutGranteeUserInput = { + create?: XOR | ModelPermissionCreateWithoutGranteeUserInput[] | ModelPermissionUncheckedCreateWithoutGranteeUserInput[] + connectOrCreate?: ModelPermissionCreateOrConnectWithoutGranteeUserInput | ModelPermissionCreateOrConnectWithoutGranteeUserInput[] + createMany?: ModelPermissionCreateManyGranteeUserInputEnvelope + connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] } - export type UserMinOrderByAggregateInput = { - id?: SortOrder - name?: SortOrder - email?: SortOrder - emailVerified?: SortOrder - image?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - systemRole?: SortOrder - userKind?: SortOrder - isProfilePublic?: SortOrder - deletedAt?: SortOrder - bio?: SortOrder - country?: SortOrder - dob?: SortOrder - affiliation?: SortOrder - role?: SortOrder - banned?: SortOrder - banReason?: SortOrder - banExpires?: SortOrder - onboardedAt?: SortOrder - legacyId?: SortOrder + export type EventCreateNestedManyWithoutActorInput = { + create?: XOR | EventCreateWithoutActorInput[] | EventUncheckedCreateWithoutActorInput[] + connectOrCreate?: EventCreateOrConnectWithoutActorInput | EventCreateOrConnectWithoutActorInput[] + createMany?: EventCreateManyActorInputEnvelope + connect?: EventWhereUniqueInput | EventWhereUniqueInput[] } - export type UserSumOrderByAggregateInput = { - legacyId?: SortOrder + export type ModelLikeCreateNestedManyWithoutUserInput = { + create?: XOR | ModelLikeCreateWithoutUserInput[] | ModelLikeUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelLikeCreateOrConnectWithoutUserInput | ModelLikeCreateOrConnectWithoutUserInput[] + createMany?: ModelLikeCreateManyUserInputEnvelope + connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] } - export type StringWithAggregatesFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> - in?: string[] | ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> - 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> - mode?: QueryMode - not?: NestedStringWithAggregatesFilter<$PrismaModel> | string - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedStringFilter<$PrismaModel> - _max?: NestedStringFilter<$PrismaModel> + export type ModelInteractionCreateNestedManyWithoutUserInput = { + create?: XOR | ModelInteractionCreateWithoutUserInput[] | ModelInteractionUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelInteractionCreateOrConnectWithoutUserInput | ModelInteractionCreateOrConnectWithoutUserInput[] + createMany?: ModelInteractionCreateManyUserInputEnvelope + connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] } - export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> | null - in?: string[] | ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | 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> - mode?: QueryMode - not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null - _count?: NestedIntNullableFilter<$PrismaModel> - _min?: NestedStringNullableFilter<$PrismaModel> - _max?: NestedStringNullableFilter<$PrismaModel> + export type ModelDraftCreateNestedManyWithoutUserInput = { + create?: XOR | ModelDraftCreateWithoutUserInput[] | ModelDraftUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelDraftCreateOrConnectWithoutUserInput | ModelDraftCreateOrConnectWithoutUserInput[] + createMany?: ModelDraftCreateManyUserInputEnvelope + connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] } - export type BoolWithAggregatesFilter<$PrismaModel = never> = { - equals?: boolean | BooleanFieldRefInput<$PrismaModel> - not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedBoolFilter<$PrismaModel> - _max?: NestedBoolFilter<$PrismaModel> + export type ModelCommentCreateNestedManyWithoutUserInput = { + create?: XOR | ModelCommentCreateWithoutUserInput[] | ModelCommentUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutUserInput | ModelCommentCreateOrConnectWithoutUserInput[] + createMany?: ModelCommentCreateManyUserInputEnvelope + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] } - export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - 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 ModelCommentLikeCreateNestedManyWithoutUserInput = { + create?: XOR | ModelCommentLikeCreateWithoutUserInput[] | ModelCommentLikeUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutUserInput | ModelCommentLikeCreateOrConnectWithoutUserInput[] + createMany?: ModelCommentLikeCreateManyUserInputEnvelope + connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] } - export type EnumSystemRoleWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.SystemRole | EnumSystemRoleFieldRefInput<$PrismaModel> - in?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> - notIn?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> - not?: NestedEnumSystemRoleWithAggregatesFilter<$PrismaModel> | $Enums.SystemRole - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumSystemRoleFilter<$PrismaModel> - _max?: NestedEnumSystemRoleFilter<$PrismaModel> + export type UserNotificationCreateNestedManyWithoutRecipientInput = { + create?: XOR | UserNotificationCreateWithoutRecipientInput[] | UserNotificationUncheckedCreateWithoutRecipientInput[] + connectOrCreate?: UserNotificationCreateOrConnectWithoutRecipientInput | UserNotificationCreateOrConnectWithoutRecipientInput[] + createMany?: UserNotificationCreateManyRecipientInputEnvelope + connect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] } - export type EnumUserKindWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.UserKind | EnumUserKindFieldRefInput<$PrismaModel> - in?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> - notIn?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> - not?: NestedEnumUserKindWithAggregatesFilter<$PrismaModel> | $Enums.UserKind - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumUserKindFilter<$PrismaModel> - _max?: NestedEnumUserKindFilter<$PrismaModel> + export type UserNotificationPreferenceCreateNestedManyWithoutUserInput = { + create?: XOR | UserNotificationPreferenceCreateWithoutUserInput[] | UserNotificationPreferenceUncheckedCreateWithoutUserInput[] + connectOrCreate?: UserNotificationPreferenceCreateOrConnectWithoutUserInput | UserNotificationPreferenceCreateOrConnectWithoutUserInput[] + createMany?: UserNotificationPreferenceCreateManyUserInputEnvelope + connect?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] } - export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null - lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null - _count?: NestedIntNullableFilter<$PrismaModel> - _min?: NestedDateTimeNullableFilter<$PrismaModel> - _max?: NestedDateTimeNullableFilter<$PrismaModel> + export type PasskeyCreateNestedManyWithoutUserInput = { + create?: XOR | PasskeyCreateWithoutUserInput[] | PasskeyUncheckedCreateWithoutUserInput[] + connectOrCreate?: PasskeyCreateOrConnectWithoutUserInput | PasskeyCreateOrConnectWithoutUserInput[] + createMany?: PasskeyCreateManyUserInputEnvelope + connect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] } - export type JsonNullableWithAggregatesFilter<$PrismaModel = never> = - | PatchUndefined< - Either>, Exclude>, 'path'>>, - Required> - > - | OptionalFlat>, 'path'>> - export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = { - equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - path?: string[] - mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | StringFieldRefInput<$PrismaModel> - string_starts_with?: string | StringFieldRefInput<$PrismaModel> - string_ends_with?: string | StringFieldRefInput<$PrismaModel> - array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - _count?: NestedIntNullableFilter<$PrismaModel> - _min?: NestedJsonNullableFilter<$PrismaModel> - _max?: NestedJsonNullableFilter<$PrismaModel> + export type AccountUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | AccountCreateWithoutUserInput[] | AccountUncheckedCreateWithoutUserInput[] + connectOrCreate?: AccountCreateOrConnectWithoutUserInput | AccountCreateOrConnectWithoutUserInput[] + createMany?: AccountCreateManyUserInputEnvelope + connect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] } - export type BoolNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null - not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null - _count?: NestedIntNullableFilter<$PrismaModel> - _min?: NestedBoolNullableFilter<$PrismaModel> - _max?: NestedBoolNullableFilter<$PrismaModel> + export type SessionUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | SessionCreateWithoutUserInput[] | SessionUncheckedCreateWithoutUserInput[] + connectOrCreate?: SessionCreateOrConnectWithoutUserInput | SessionCreateOrConnectWithoutUserInput[] + createMany?: SessionCreateManyUserInputEnvelope + connect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] } - export type IntNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: number | IntFieldRefInput<$PrismaModel> | null - in?: number[] | ListIntFieldRefInput<$PrismaModel> | null - notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | 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 VerificationUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | VerificationCreateWithoutUserInput[] | VerificationUncheckedCreateWithoutUserInput[] + connectOrCreate?: VerificationCreateOrConnectWithoutUserInput | VerificationCreateOrConnectWithoutUserInput[] + createMany?: VerificationCreateManyUserInputEnvelope + connect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] } - export type UserScalarRelationFilter = { - is?: UserWhereInput - isNot?: UserWhereInput + export type ModelAuthorUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | ModelAuthorCreateWithoutUserInput[] | ModelAuthorUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelAuthorCreateOrConnectWithoutUserInput | ModelAuthorCreateOrConnectWithoutUserInput[] + createMany?: ModelAuthorCreateManyUserInputEnvelope + connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] } - export type AccountCountOrderByAggregateInput = { - id?: SortOrder - userId?: SortOrder - accountId?: SortOrder - providerId?: SortOrder - accessToken?: SortOrder - refreshToken?: SortOrder - accessTokenExpiresAt?: SortOrder - refreshTokenExpiresAt?: SortOrder - scope?: SortOrder - idToken?: SortOrder - password?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder + export type ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput = { + create?: XOR | ModelPermissionCreateWithoutGranteeUserInput[] | ModelPermissionUncheckedCreateWithoutGranteeUserInput[] + connectOrCreate?: ModelPermissionCreateOrConnectWithoutGranteeUserInput | ModelPermissionCreateOrConnectWithoutGranteeUserInput[] + createMany?: ModelPermissionCreateManyGranteeUserInputEnvelope + connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] } - export type AccountMaxOrderByAggregateInput = { - id?: SortOrder - userId?: SortOrder - accountId?: SortOrder - providerId?: SortOrder - accessToken?: SortOrder - refreshToken?: SortOrder - accessTokenExpiresAt?: SortOrder - refreshTokenExpiresAt?: SortOrder - scope?: SortOrder - idToken?: SortOrder - password?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder + export type EventUncheckedCreateNestedManyWithoutActorInput = { + create?: XOR | EventCreateWithoutActorInput[] | EventUncheckedCreateWithoutActorInput[] + connectOrCreate?: EventCreateOrConnectWithoutActorInput | EventCreateOrConnectWithoutActorInput[] + createMany?: EventCreateManyActorInputEnvelope + connect?: EventWhereUniqueInput | EventWhereUniqueInput[] } - export type AccountMinOrderByAggregateInput = { - id?: SortOrder - userId?: SortOrder - accountId?: SortOrder - providerId?: SortOrder - accessToken?: SortOrder - refreshToken?: SortOrder - accessTokenExpiresAt?: SortOrder - refreshTokenExpiresAt?: SortOrder - scope?: SortOrder - idToken?: SortOrder - password?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder + export type ModelLikeUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | ModelLikeCreateWithoutUserInput[] | ModelLikeUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelLikeCreateOrConnectWithoutUserInput | ModelLikeCreateOrConnectWithoutUserInput[] + createMany?: ModelLikeCreateManyUserInputEnvelope + connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] } - export type SessionCountOrderByAggregateInput = { - id?: SortOrder - userId?: SortOrder - expiresAt?: SortOrder - token?: SortOrder - ipAddress?: SortOrder - userAgent?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - impersonatedBy?: SortOrder + export type ModelInteractionUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | ModelInteractionCreateWithoutUserInput[] | ModelInteractionUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelInteractionCreateOrConnectWithoutUserInput | ModelInteractionCreateOrConnectWithoutUserInput[] + createMany?: ModelInteractionCreateManyUserInputEnvelope + connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] } - export type SessionMaxOrderByAggregateInput = { - id?: SortOrder - userId?: SortOrder - expiresAt?: SortOrder - token?: SortOrder - ipAddress?: SortOrder - userAgent?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - impersonatedBy?: SortOrder + export type ModelDraftUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | ModelDraftCreateWithoutUserInput[] | ModelDraftUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelDraftCreateOrConnectWithoutUserInput | ModelDraftCreateOrConnectWithoutUserInput[] + createMany?: ModelDraftCreateManyUserInputEnvelope + connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] } - export type SessionMinOrderByAggregateInput = { - id?: SortOrder - userId?: SortOrder - expiresAt?: SortOrder - token?: SortOrder - ipAddress?: SortOrder - userAgent?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - impersonatedBy?: SortOrder + export type ModelCommentUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | ModelCommentCreateWithoutUserInput[] | ModelCommentUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutUserInput | ModelCommentCreateOrConnectWithoutUserInput[] + createMany?: ModelCommentCreateManyUserInputEnvelope + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] } - export type UserNullableScalarRelationFilter = { - is?: UserWhereInput | null - isNot?: UserWhereInput | null + export type ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | ModelCommentLikeCreateWithoutUserInput[] | ModelCommentLikeUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutUserInput | ModelCommentLikeCreateOrConnectWithoutUserInput[] + createMany?: ModelCommentLikeCreateManyUserInputEnvelope + connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] } - export type VerificationCountOrderByAggregateInput = { - id?: SortOrder - identifier?: SortOrder - value?: SortOrder - expiresAt?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - userId?: SortOrder + export type UserNotificationUncheckedCreateNestedManyWithoutRecipientInput = { + create?: XOR | UserNotificationCreateWithoutRecipientInput[] | UserNotificationUncheckedCreateWithoutRecipientInput[] + connectOrCreate?: UserNotificationCreateOrConnectWithoutRecipientInput | UserNotificationCreateOrConnectWithoutRecipientInput[] + createMany?: UserNotificationCreateManyRecipientInputEnvelope + connect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] } - export type VerificationMaxOrderByAggregateInput = { - id?: SortOrder - identifier?: SortOrder - value?: SortOrder - expiresAt?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - userId?: SortOrder + export type UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | UserNotificationPreferenceCreateWithoutUserInput[] | UserNotificationPreferenceUncheckedCreateWithoutUserInput[] + connectOrCreate?: UserNotificationPreferenceCreateOrConnectWithoutUserInput | UserNotificationPreferenceCreateOrConnectWithoutUserInput[] + createMany?: UserNotificationPreferenceCreateManyUserInputEnvelope + connect?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] } - export type VerificationMinOrderByAggregateInput = { - id?: SortOrder - identifier?: SortOrder - value?: SortOrder - expiresAt?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - userId?: SortOrder + export type PasskeyUncheckedCreateNestedManyWithoutUserInput = { + create?: XOR | PasskeyCreateWithoutUserInput[] | PasskeyUncheckedCreateWithoutUserInput[] + connectOrCreate?: PasskeyCreateOrConnectWithoutUserInput | PasskeyCreateOrConnectWithoutUserInput[] + createMany?: PasskeyCreateManyUserInputEnvelope + connect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] } - export type IntFilter<$PrismaModel = never> = { - equals?: number | IntFieldRefInput<$PrismaModel> - in?: number[] | ListIntFieldRefInput<$PrismaModel> - notIn?: number[] | ListIntFieldRefInput<$PrismaModel> - lt?: number | IntFieldRefInput<$PrismaModel> - lte?: number | IntFieldRefInput<$PrismaModel> - gt?: number | IntFieldRefInput<$PrismaModel> - gte?: number | IntFieldRefInput<$PrismaModel> - not?: NestedIntFilter<$PrismaModel> | number + export type StringFieldUpdateOperationsInput = { + set?: string } - export type PasskeyCountOrderByAggregateInput = { - id?: SortOrder - name?: SortOrder - publicKey?: SortOrder - userId?: SortOrder - credentialID?: SortOrder - counter?: SortOrder - deviceType?: SortOrder - backedUp?: SortOrder - transports?: SortOrder - createdAt?: SortOrder - aaguid?: SortOrder + export type NullableStringFieldUpdateOperationsInput = { + set?: string | null } - export type PasskeyAvgOrderByAggregateInput = { - counter?: SortOrder + export type BoolFieldUpdateOperationsInput = { + set?: boolean } - export type PasskeyMaxOrderByAggregateInput = { - id?: SortOrder - name?: SortOrder - publicKey?: SortOrder - userId?: SortOrder - credentialID?: SortOrder - counter?: SortOrder - deviceType?: SortOrder - backedUp?: SortOrder - transports?: SortOrder - createdAt?: SortOrder - aaguid?: SortOrder + export type DateTimeFieldUpdateOperationsInput = { + set?: Date | string } - export type PasskeyMinOrderByAggregateInput = { - id?: SortOrder - name?: SortOrder - publicKey?: SortOrder - userId?: SortOrder - credentialID?: SortOrder - counter?: SortOrder - deviceType?: SortOrder - backedUp?: SortOrder - transports?: SortOrder - createdAt?: SortOrder - aaguid?: SortOrder + export type EnumSystemRoleFieldUpdateOperationsInput = { + set?: $Enums.SystemRole } - export type PasskeySumOrderByAggregateInput = { - counter?: SortOrder + export type EnumUserKindFieldUpdateOperationsInput = { + set?: $Enums.UserKind } - export type IntWithAggregatesFilter<$PrismaModel = never> = { - equals?: number | IntFieldRefInput<$PrismaModel> - in?: number[] | ListIntFieldRefInput<$PrismaModel> - notIn?: number[] | ListIntFieldRefInput<$PrismaModel> - lt?: number | IntFieldRefInput<$PrismaModel> - lte?: number | IntFieldRefInput<$PrismaModel> - gt?: number | IntFieldRefInput<$PrismaModel> - gte?: number | IntFieldRefInput<$PrismaModel> - not?: NestedIntWithAggregatesFilter<$PrismaModel> | number - _count?: NestedIntFilter<$PrismaModel> - _avg?: NestedFloatFilter<$PrismaModel> - _sum?: NestedIntFilter<$PrismaModel> - _min?: NestedIntFilter<$PrismaModel> - _max?: NestedIntFilter<$PrismaModel> + export type NullableDateTimeFieldUpdateOperationsInput = { + set?: Date | string | null } - export type EnumModelVisibilityFilter<$PrismaModel = never> = { - equals?: $Enums.ModelVisibility | EnumModelVisibilityFieldRefInput<$PrismaModel> - in?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> - not?: NestedEnumModelVisibilityFilter<$PrismaModel> | $Enums.ModelVisibility + export type NullableBoolFieldUpdateOperationsInput = { + set?: boolean | null } - export type ModelVersionNullableScalarRelationFilter = { - is?: ModelVersionWhereInput | null - isNot?: ModelVersionWhereInput | null + export type NullableIntFieldUpdateOperationsInput = { + set?: number | null + increment?: number + decrement?: number + multiply?: number + divide?: number } - export type ModelNullableScalarRelationFilter = { - is?: ModelWhereInput | null - isNot?: ModelWhereInput | null + export type AccountUpdateManyWithoutUserNestedInput = { + create?: XOR | AccountCreateWithoutUserInput[] | AccountUncheckedCreateWithoutUserInput[] + connectOrCreate?: AccountCreateOrConnectWithoutUserInput | AccountCreateOrConnectWithoutUserInput[] + upsert?: AccountUpsertWithWhereUniqueWithoutUserInput | AccountUpsertWithWhereUniqueWithoutUserInput[] + createMany?: AccountCreateManyUserInputEnvelope + set?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + disconnect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + delete?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + connect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + update?: AccountUpdateWithWhereUniqueWithoutUserInput | AccountUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: AccountUpdateManyWithWhereWithoutUserInput | AccountUpdateManyWithWhereWithoutUserInput[] + deleteMany?: AccountScalarWhereInput | AccountScalarWhereInput[] } - export type ModelListRelationFilter = { - every?: ModelWhereInput - some?: ModelWhereInput - none?: ModelWhereInput + 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 ModelVersionListRelationFilter = { - every?: ModelVersionWhereInput - some?: ModelVersionWhereInput - none?: ModelVersionWhereInput + export type VerificationUpdateManyWithoutUserNestedInput = { + create?: XOR | VerificationCreateWithoutUserInput[] | VerificationUncheckedCreateWithoutUserInput[] + connectOrCreate?: VerificationCreateOrConnectWithoutUserInput | VerificationCreateOrConnectWithoutUserInput[] + upsert?: VerificationUpsertWithWhereUniqueWithoutUserInput | VerificationUpsertWithWhereUniqueWithoutUserInput[] + createMany?: VerificationCreateManyUserInputEnvelope + set?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + disconnect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + delete?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + connect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + update?: VerificationUpdateWithWhereUniqueWithoutUserInput | VerificationUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: VerificationUpdateManyWithWhereWithoutUserInput | VerificationUpdateManyWithWhereWithoutUserInput[] + deleteMany?: VerificationScalarWhereInput | VerificationScalarWhereInput[] } - export type ModelAdditionalFileListRelationFilter = { - every?: ModelAdditionalFileWhereInput - some?: ModelAdditionalFileWhereInput - none?: ModelAdditionalFileWhereInput + export type ModelAuthorUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelAuthorCreateWithoutUserInput[] | ModelAuthorUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelAuthorCreateOrConnectWithoutUserInput | ModelAuthorCreateOrConnectWithoutUserInput[] + upsert?: ModelAuthorUpsertWithWhereUniqueWithoutUserInput | ModelAuthorUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelAuthorCreateManyUserInputEnvelope + set?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + disconnect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + delete?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + update?: ModelAuthorUpdateWithWhereUniqueWithoutUserInput | ModelAuthorUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelAuthorUpdateManyWithWhereWithoutUserInput | ModelAuthorUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] } - export type ModelOrderByRelationAggregateInput = { - _count?: SortOrder + export type ModelPermissionUpdateManyWithoutGranteeUserNestedInput = { + create?: XOR | ModelPermissionCreateWithoutGranteeUserInput[] | ModelPermissionUncheckedCreateWithoutGranteeUserInput[] + connectOrCreate?: ModelPermissionCreateOrConnectWithoutGranteeUserInput | ModelPermissionCreateOrConnectWithoutGranteeUserInput[] + upsert?: ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput | ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput[] + createMany?: ModelPermissionCreateManyGranteeUserInputEnvelope + set?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + disconnect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + delete?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + update?: ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput | ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput[] + updateMany?: ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput | ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput[] + deleteMany?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] } - export type ModelVersionOrderByRelationAggregateInput = { - _count?: SortOrder + export type EventUpdateManyWithoutActorNestedInput = { + create?: XOR | EventCreateWithoutActorInput[] | EventUncheckedCreateWithoutActorInput[] + connectOrCreate?: EventCreateOrConnectWithoutActorInput | EventCreateOrConnectWithoutActorInput[] + upsert?: EventUpsertWithWhereUniqueWithoutActorInput | EventUpsertWithWhereUniqueWithoutActorInput[] + createMany?: EventCreateManyActorInputEnvelope + set?: EventWhereUniqueInput | EventWhereUniqueInput[] + disconnect?: EventWhereUniqueInput | EventWhereUniqueInput[] + delete?: EventWhereUniqueInput | EventWhereUniqueInput[] + connect?: EventWhereUniqueInput | EventWhereUniqueInput[] + update?: EventUpdateWithWhereUniqueWithoutActorInput | EventUpdateWithWhereUniqueWithoutActorInput[] + updateMany?: EventUpdateManyWithWhereWithoutActorInput | EventUpdateManyWithWhereWithoutActorInput[] + deleteMany?: EventScalarWhereInput | EventScalarWhereInput[] } - export type ModelAdditionalFileOrderByRelationAggregateInput = { - _count?: SortOrder + export type ModelLikeUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelLikeCreateWithoutUserInput[] | ModelLikeUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelLikeCreateOrConnectWithoutUserInput | ModelLikeCreateOrConnectWithoutUserInput[] + upsert?: ModelLikeUpsertWithWhereUniqueWithoutUserInput | ModelLikeUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelLikeCreateManyUserInputEnvelope + set?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + disconnect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + delete?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + update?: ModelLikeUpdateWithWhereUniqueWithoutUserInput | ModelLikeUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelLikeUpdateManyWithWhereWithoutUserInput | ModelLikeUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] } - export type ModelIdLatestVersionNumberCompoundUniqueInput = { - id: string - latestVersionNumber: number + export type ModelInteractionUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelInteractionCreateWithoutUserInput[] | ModelInteractionUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelInteractionCreateOrConnectWithoutUserInput | ModelInteractionCreateOrConnectWithoutUserInput[] + upsert?: ModelInteractionUpsertWithWhereUniqueWithoutUserInput | ModelInteractionUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelInteractionCreateManyUserInputEnvelope + set?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + disconnect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + delete?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + update?: ModelInteractionUpdateWithWhereUniqueWithoutUserInput | ModelInteractionUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelInteractionUpdateManyWithWhereWithoutUserInput | ModelInteractionUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] } - export type ModelCountOrderByAggregateInput = { - id?: SortOrder - legacyId?: SortOrder - latestVersionNumber?: SortOrder - parentModelId?: SortOrder - parentVersionNumber?: SortOrder - visibility?: SortOrder - isEndorsed?: SortOrder - isLibraryModel?: SortOrder - viewCount?: SortOrder - runCount?: SortOrder - downloadCount?: SortOrder - shareCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - deletedAt?: SortOrder + export type ModelDraftUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelDraftCreateWithoutUserInput[] | ModelDraftUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelDraftCreateOrConnectWithoutUserInput | ModelDraftCreateOrConnectWithoutUserInput[] + upsert?: ModelDraftUpsertWithWhereUniqueWithoutUserInput | ModelDraftUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelDraftCreateManyUserInputEnvelope + set?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + disconnect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + delete?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + update?: ModelDraftUpdateWithWhereUniqueWithoutUserInput | ModelDraftUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelDraftUpdateManyWithWhereWithoutUserInput | ModelDraftUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] } - export type ModelAvgOrderByAggregateInput = { - legacyId?: SortOrder - latestVersionNumber?: SortOrder - parentVersionNumber?: SortOrder - viewCount?: SortOrder - runCount?: SortOrder - downloadCount?: SortOrder - shareCount?: SortOrder + export type ModelCommentUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelCommentCreateWithoutUserInput[] | ModelCommentUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutUserInput | ModelCommentCreateOrConnectWithoutUserInput[] + upsert?: ModelCommentUpsertWithWhereUniqueWithoutUserInput | ModelCommentUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelCommentCreateManyUserInputEnvelope + set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + update?: ModelCommentUpdateWithWhereUniqueWithoutUserInput | ModelCommentUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelCommentUpdateManyWithWhereWithoutUserInput | ModelCommentUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] } - export type ModelMaxOrderByAggregateInput = { - id?: SortOrder - legacyId?: SortOrder - latestVersionNumber?: SortOrder - parentModelId?: SortOrder - parentVersionNumber?: SortOrder - visibility?: SortOrder - isEndorsed?: SortOrder - isLibraryModel?: SortOrder - viewCount?: SortOrder - runCount?: SortOrder - downloadCount?: SortOrder - shareCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - deletedAt?: SortOrder + export type ModelCommentLikeUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelCommentLikeCreateWithoutUserInput[] | ModelCommentLikeUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutUserInput | ModelCommentLikeCreateOrConnectWithoutUserInput[] + upsert?: ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput | ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelCommentLikeCreateManyUserInputEnvelope + set?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + disconnect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + delete?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + update?: ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput | ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelCommentLikeUpdateManyWithWhereWithoutUserInput | ModelCommentLikeUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] } - export type ModelMinOrderByAggregateInput = { - id?: SortOrder - legacyId?: SortOrder - latestVersionNumber?: SortOrder - parentModelId?: SortOrder - parentVersionNumber?: SortOrder - visibility?: SortOrder - isEndorsed?: SortOrder - isLibraryModel?: SortOrder - viewCount?: SortOrder - runCount?: SortOrder - downloadCount?: SortOrder - shareCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - deletedAt?: SortOrder + export type UserNotificationUpdateManyWithoutRecipientNestedInput = { + create?: XOR | UserNotificationCreateWithoutRecipientInput[] | UserNotificationUncheckedCreateWithoutRecipientInput[] + connectOrCreate?: UserNotificationCreateOrConnectWithoutRecipientInput | UserNotificationCreateOrConnectWithoutRecipientInput[] + upsert?: UserNotificationUpsertWithWhereUniqueWithoutRecipientInput | UserNotificationUpsertWithWhereUniqueWithoutRecipientInput[] + createMany?: UserNotificationCreateManyRecipientInputEnvelope + set?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + disconnect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + delete?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + connect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + update?: UserNotificationUpdateWithWhereUniqueWithoutRecipientInput | UserNotificationUpdateWithWhereUniqueWithoutRecipientInput[] + updateMany?: UserNotificationUpdateManyWithWhereWithoutRecipientInput | UserNotificationUpdateManyWithWhereWithoutRecipientInput[] + deleteMany?: UserNotificationScalarWhereInput | UserNotificationScalarWhereInput[] + } + + export type UserNotificationPreferenceUpdateManyWithoutUserNestedInput = { + create?: XOR | UserNotificationPreferenceCreateWithoutUserInput[] | UserNotificationPreferenceUncheckedCreateWithoutUserInput[] + connectOrCreate?: UserNotificationPreferenceCreateOrConnectWithoutUserInput | UserNotificationPreferenceCreateOrConnectWithoutUserInput[] + upsert?: UserNotificationPreferenceUpsertWithWhereUniqueWithoutUserInput | UserNotificationPreferenceUpsertWithWhereUniqueWithoutUserInput[] + createMany?: UserNotificationPreferenceCreateManyUserInputEnvelope + set?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] + disconnect?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] + delete?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] + connect?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] + update?: UserNotificationPreferenceUpdateWithWhereUniqueWithoutUserInput | UserNotificationPreferenceUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: UserNotificationPreferenceUpdateManyWithWhereWithoutUserInput | UserNotificationPreferenceUpdateManyWithWhereWithoutUserInput[] + deleteMany?: UserNotificationPreferenceScalarWhereInput | UserNotificationPreferenceScalarWhereInput[] } - export type ModelSumOrderByAggregateInput = { - legacyId?: SortOrder - latestVersionNumber?: SortOrder - parentVersionNumber?: SortOrder - viewCount?: SortOrder - runCount?: SortOrder - downloadCount?: SortOrder - shareCount?: SortOrder + export type PasskeyUpdateManyWithoutUserNestedInput = { + create?: XOR | PasskeyCreateWithoutUserInput[] | PasskeyUncheckedCreateWithoutUserInput[] + connectOrCreate?: PasskeyCreateOrConnectWithoutUserInput | PasskeyCreateOrConnectWithoutUserInput[] + upsert?: PasskeyUpsertWithWhereUniqueWithoutUserInput | PasskeyUpsertWithWhereUniqueWithoutUserInput[] + createMany?: PasskeyCreateManyUserInputEnvelope + set?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + disconnect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + delete?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + connect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + update?: PasskeyUpdateWithWhereUniqueWithoutUserInput | PasskeyUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: PasskeyUpdateManyWithWhereWithoutUserInput | PasskeyUpdateManyWithWhereWithoutUserInput[] + deleteMany?: PasskeyScalarWhereInput | PasskeyScalarWhereInput[] + } + + export type AccountUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | AccountCreateWithoutUserInput[] | AccountUncheckedCreateWithoutUserInput[] + connectOrCreate?: AccountCreateOrConnectWithoutUserInput | AccountCreateOrConnectWithoutUserInput[] + upsert?: AccountUpsertWithWhereUniqueWithoutUserInput | AccountUpsertWithWhereUniqueWithoutUserInput[] + createMany?: AccountCreateManyUserInputEnvelope + set?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + disconnect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + delete?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + connect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + update?: AccountUpdateWithWhereUniqueWithoutUserInput | AccountUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: AccountUpdateManyWithWhereWithoutUserInput | AccountUpdateManyWithWhereWithoutUserInput[] + deleteMany?: AccountScalarWhereInput | AccountScalarWhereInput[] } - export type EnumModelVisibilityWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.ModelVisibility | EnumModelVisibilityFieldRefInput<$PrismaModel> - in?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> - not?: NestedEnumModelVisibilityWithAggregatesFilter<$PrismaModel> | $Enums.ModelVisibility - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumModelVisibilityFilter<$PrismaModel> - _max?: NestedEnumModelVisibilityFilter<$PrismaModel> + 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 ModelScalarRelationFilter = { - is?: ModelWhereInput - isNot?: ModelWhereInput + export type VerificationUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | VerificationCreateWithoutUserInput[] | VerificationUncheckedCreateWithoutUserInput[] + connectOrCreate?: VerificationCreateOrConnectWithoutUserInput | VerificationCreateOrConnectWithoutUserInput[] + upsert?: VerificationUpsertWithWhereUniqueWithoutUserInput | VerificationUpsertWithWhereUniqueWithoutUserInput[] + createMany?: VerificationCreateManyUserInputEnvelope + set?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + disconnect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + delete?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + connect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + update?: VerificationUpdateWithWhereUniqueWithoutUserInput | VerificationUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: VerificationUpdateManyWithWhereWithoutUserInput | VerificationUpdateManyWithWhereWithoutUserInput[] + deleteMany?: VerificationScalarWhereInput | VerificationScalarWhereInput[] } - export type ModelVersionTagListRelationFilter = { - every?: ModelVersionTagWhereInput - some?: ModelVersionTagWhereInput - none?: ModelVersionTagWhereInput + export type ModelAuthorUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelAuthorCreateWithoutUserInput[] | ModelAuthorUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelAuthorCreateOrConnectWithoutUserInput | ModelAuthorCreateOrConnectWithoutUserInput[] + upsert?: ModelAuthorUpsertWithWhereUniqueWithoutUserInput | ModelAuthorUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelAuthorCreateManyUserInputEnvelope + set?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + disconnect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + delete?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + update?: ModelAuthorUpdateWithWhereUniqueWithoutUserInput | ModelAuthorUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelAuthorUpdateManyWithWhereWithoutUserInput | ModelAuthorUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] } - export type ModelVersionTagOrderByRelationAggregateInput = { - _count?: SortOrder + export type ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput = { + create?: XOR | ModelPermissionCreateWithoutGranteeUserInput[] | ModelPermissionUncheckedCreateWithoutGranteeUserInput[] + connectOrCreate?: ModelPermissionCreateOrConnectWithoutGranteeUserInput | ModelPermissionCreateOrConnectWithoutGranteeUserInput[] + upsert?: ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput | ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput[] + createMany?: ModelPermissionCreateManyGranteeUserInputEnvelope + set?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + disconnect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + delete?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + update?: ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput | ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput[] + updateMany?: ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput | ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput[] + deleteMany?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] } - export type ModelVersionModelIdVersionNumberCompoundUniqueInput = { - modelId: string - versionNumber: number + export type EventUncheckedUpdateManyWithoutActorNestedInput = { + create?: XOR | EventCreateWithoutActorInput[] | EventUncheckedCreateWithoutActorInput[] + connectOrCreate?: EventCreateOrConnectWithoutActorInput | EventCreateOrConnectWithoutActorInput[] + upsert?: EventUpsertWithWhereUniqueWithoutActorInput | EventUpsertWithWhereUniqueWithoutActorInput[] + createMany?: EventCreateManyActorInputEnvelope + set?: EventWhereUniqueInput | EventWhereUniqueInput[] + disconnect?: EventWhereUniqueInput | EventWhereUniqueInput[] + delete?: EventWhereUniqueInput | EventWhereUniqueInput[] + connect?: EventWhereUniqueInput | EventWhereUniqueInput[] + update?: EventUpdateWithWhereUniqueWithoutActorInput | EventUpdateWithWhereUniqueWithoutActorInput[] + updateMany?: EventUpdateManyWithWhereWithoutActorInput | EventUpdateManyWithWhereWithoutActorInput[] + deleteMany?: EventScalarWhereInput | EventScalarWhereInput[] } - export type ModelVersionCountOrderByAggregateInput = { - modelId?: SortOrder - versionNumber?: SortOrder - title?: SortOrder - description?: SortOrder - changeSummary?: SortOrder - previewImageFileKey?: SortOrder - netlogoFileKey?: SortOrder - netlogoVersion?: SortOrder - infoTab?: SortOrder - createdAt?: SortOrder - finalizedAt?: SortOrder + export type ModelLikeUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelLikeCreateWithoutUserInput[] | ModelLikeUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelLikeCreateOrConnectWithoutUserInput | ModelLikeCreateOrConnectWithoutUserInput[] + upsert?: ModelLikeUpsertWithWhereUniqueWithoutUserInput | ModelLikeUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelLikeCreateManyUserInputEnvelope + set?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + disconnect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + delete?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + update?: ModelLikeUpdateWithWhereUniqueWithoutUserInput | ModelLikeUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelLikeUpdateManyWithWhereWithoutUserInput | ModelLikeUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] } - export type ModelVersionAvgOrderByAggregateInput = { - versionNumber?: SortOrder + export type ModelInteractionUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelInteractionCreateWithoutUserInput[] | ModelInteractionUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelInteractionCreateOrConnectWithoutUserInput | ModelInteractionCreateOrConnectWithoutUserInput[] + upsert?: ModelInteractionUpsertWithWhereUniqueWithoutUserInput | ModelInteractionUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelInteractionCreateManyUserInputEnvelope + set?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + disconnect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + delete?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + update?: ModelInteractionUpdateWithWhereUniqueWithoutUserInput | ModelInteractionUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelInteractionUpdateManyWithWhereWithoutUserInput | ModelInteractionUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] } - export type ModelVersionMaxOrderByAggregateInput = { - modelId?: SortOrder - versionNumber?: SortOrder - title?: SortOrder - description?: SortOrder - changeSummary?: SortOrder - previewImageFileKey?: SortOrder - netlogoFileKey?: SortOrder - netlogoVersion?: SortOrder - infoTab?: SortOrder - createdAt?: SortOrder - finalizedAt?: SortOrder + export type ModelDraftUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelDraftCreateWithoutUserInput[] | ModelDraftUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelDraftCreateOrConnectWithoutUserInput | ModelDraftCreateOrConnectWithoutUserInput[] + upsert?: ModelDraftUpsertWithWhereUniqueWithoutUserInput | ModelDraftUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelDraftCreateManyUserInputEnvelope + set?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + disconnect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + delete?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + update?: ModelDraftUpdateWithWhereUniqueWithoutUserInput | ModelDraftUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelDraftUpdateManyWithWhereWithoutUserInput | ModelDraftUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] } - export type ModelVersionMinOrderByAggregateInput = { - modelId?: SortOrder - versionNumber?: SortOrder - title?: SortOrder - description?: SortOrder - changeSummary?: SortOrder - previewImageFileKey?: SortOrder - netlogoFileKey?: SortOrder - netlogoVersion?: SortOrder - infoTab?: SortOrder - createdAt?: SortOrder - finalizedAt?: SortOrder + export type ModelCommentUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelCommentCreateWithoutUserInput[] | ModelCommentUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutUserInput | ModelCommentCreateOrConnectWithoutUserInput[] + upsert?: ModelCommentUpsertWithWhereUniqueWithoutUserInput | ModelCommentUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelCommentCreateManyUserInputEnvelope + set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + update?: ModelCommentUpdateWithWhereUniqueWithoutUserInput | ModelCommentUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelCommentUpdateManyWithWhereWithoutUserInput | ModelCommentUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] } - export type ModelVersionSumOrderByAggregateInput = { - versionNumber?: SortOrder + export type ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | ModelCommentLikeCreateWithoutUserInput[] | ModelCommentLikeUncheckedCreateWithoutUserInput[] + connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutUserInput | ModelCommentLikeCreateOrConnectWithoutUserInput[] + upsert?: ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput | ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput[] + createMany?: ModelCommentLikeCreateManyUserInputEnvelope + set?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + disconnect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + delete?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + update?: ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput | ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: ModelCommentLikeUpdateManyWithWhereWithoutUserInput | ModelCommentLikeUpdateManyWithWhereWithoutUserInput[] + deleteMany?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] } - export type ModelVersionScalarRelationFilter = { - is?: ModelVersionWhereInput - isNot?: ModelVersionWhereInput + export type UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput = { + create?: XOR | UserNotificationCreateWithoutRecipientInput[] | UserNotificationUncheckedCreateWithoutRecipientInput[] + connectOrCreate?: UserNotificationCreateOrConnectWithoutRecipientInput | UserNotificationCreateOrConnectWithoutRecipientInput[] + upsert?: UserNotificationUpsertWithWhereUniqueWithoutRecipientInput | UserNotificationUpsertWithWhereUniqueWithoutRecipientInput[] + createMany?: UserNotificationCreateManyRecipientInputEnvelope + set?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + disconnect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + delete?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + connect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + update?: UserNotificationUpdateWithWhereUniqueWithoutRecipientInput | UserNotificationUpdateWithWhereUniqueWithoutRecipientInput[] + updateMany?: UserNotificationUpdateManyWithWhereWithoutRecipientInput | UserNotificationUpdateManyWithWhereWithoutRecipientInput[] + deleteMany?: UserNotificationScalarWhereInput | UserNotificationScalarWhereInput[] + } + + export type UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | UserNotificationPreferenceCreateWithoutUserInput[] | UserNotificationPreferenceUncheckedCreateWithoutUserInput[] + connectOrCreate?: UserNotificationPreferenceCreateOrConnectWithoutUserInput | UserNotificationPreferenceCreateOrConnectWithoutUserInput[] + upsert?: UserNotificationPreferenceUpsertWithWhereUniqueWithoutUserInput | UserNotificationPreferenceUpsertWithWhereUniqueWithoutUserInput[] + createMany?: UserNotificationPreferenceCreateManyUserInputEnvelope + set?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] + disconnect?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] + delete?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] + connect?: UserNotificationPreferenceWhereUniqueInput | UserNotificationPreferenceWhereUniqueInput[] + update?: UserNotificationPreferenceUpdateWithWhereUniqueWithoutUserInput | UserNotificationPreferenceUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: UserNotificationPreferenceUpdateManyWithWhereWithoutUserInput | UserNotificationPreferenceUpdateManyWithWhereWithoutUserInput[] + deleteMany?: UserNotificationPreferenceScalarWhereInput | UserNotificationPreferenceScalarWhereInput[] } - export type TagScalarRelationFilter = { - is?: TagWhereInput - isNot?: TagWhereInput + export type PasskeyUncheckedUpdateManyWithoutUserNestedInput = { + create?: XOR | PasskeyCreateWithoutUserInput[] | PasskeyUncheckedCreateWithoutUserInput[] + connectOrCreate?: PasskeyCreateOrConnectWithoutUserInput | PasskeyCreateOrConnectWithoutUserInput[] + upsert?: PasskeyUpsertWithWhereUniqueWithoutUserInput | PasskeyUpsertWithWhereUniqueWithoutUserInput[] + createMany?: PasskeyCreateManyUserInputEnvelope + set?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + disconnect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + delete?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + connect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + update?: PasskeyUpdateWithWhereUniqueWithoutUserInput | PasskeyUpdateWithWhereUniqueWithoutUserInput[] + updateMany?: PasskeyUpdateManyWithWhereWithoutUserInput | PasskeyUpdateManyWithWhereWithoutUserInput[] + deleteMany?: PasskeyScalarWhereInput | PasskeyScalarWhereInput[] } - export type ModelVersionTagModelIdVersionNumberTagIdCompoundUniqueInput = { - modelId: string - versionNumber: number - tagId: string + export type UserCreateNestedOneWithoutAccountsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutAccountsInput + connect?: UserWhereUniqueInput } - export type ModelVersionTagCountOrderByAggregateInput = { - modelId?: SortOrder - versionNumber?: SortOrder - tagId?: SortOrder - createdAt?: SortOrder + export type UserUpdateOneRequiredWithoutAccountsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutAccountsInput + upsert?: UserUpsertWithoutAccountsInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutAccountsInput> } - export type ModelVersionTagAvgOrderByAggregateInput = { - versionNumber?: SortOrder + export type UserCreateNestedOneWithoutSessionsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutSessionsInput + connect?: UserWhereUniqueInput } - export type ModelVersionTagMaxOrderByAggregateInput = { - modelId?: SortOrder - versionNumber?: SortOrder - tagId?: SortOrder - createdAt?: SortOrder + export type UserUpdateOneRequiredWithoutSessionsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutSessionsInput + upsert?: UserUpsertWithoutSessionsInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutSessionsInput> } - export type ModelVersionTagMinOrderByAggregateInput = { - modelId?: SortOrder - versionNumber?: SortOrder - tagId?: SortOrder - createdAt?: SortOrder + export type UserCreateNestedOneWithoutVerificationsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutVerificationsInput + connect?: UserWhereUniqueInput } - export type ModelVersionTagSumOrderByAggregateInput = { - versionNumber?: SortOrder + export type UserUpdateOneWithoutVerificationsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutVerificationsInput + upsert?: UserUpsertWithoutVerificationsInput + disconnect?: UserWhereInput | boolean + delete?: UserWhereInput | boolean + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutVerificationsInput> } - export type EnumModelFileKindFilter<$PrismaModel = never> = { - equals?: $Enums.ModelFileKind | EnumModelFileKindFieldRefInput<$PrismaModel> - in?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> - not?: NestedEnumModelFileKindFilter<$PrismaModel> | $Enums.ModelFileKind + export type UserCreateNestedOneWithoutPasskeysInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutPasskeysInput + connect?: UserWhereUniqueInput } - export type ModelAdditionalFileCountOrderByAggregateInput = { - id?: SortOrder - modelId?: SortOrder - taggedVersionNumber?: SortOrder - fileKey?: SortOrder - kind?: SortOrder - createdAt?: SortOrder + export type IntFieldUpdateOperationsInput = { + set?: number + increment?: number + decrement?: number + multiply?: number + divide?: number } - export type ModelAdditionalFileAvgOrderByAggregateInput = { - taggedVersionNumber?: SortOrder + export type UserUpdateOneRequiredWithoutPasskeysNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutPasskeysInput + upsert?: UserUpsertWithoutPasskeysInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutPasskeysInput> } - export type ModelAdditionalFileMaxOrderByAggregateInput = { - id?: SortOrder - modelId?: SortOrder - taggedVersionNumber?: SortOrder - fileKey?: SortOrder - kind?: SortOrder - createdAt?: SortOrder + export type ModelVersionCreateNestedOneWithoutLatestOfModelInput = { + create?: XOR + connectOrCreate?: ModelVersionCreateOrConnectWithoutLatestOfModelInput + connect?: ModelVersionWhereUniqueInput } - export type ModelAdditionalFileMinOrderByAggregateInput = { - id?: SortOrder - modelId?: SortOrder - taggedVersionNumber?: SortOrder - fileKey?: SortOrder - kind?: SortOrder - createdAt?: SortOrder + export type ModelCreateNestedOneWithoutChildModelsInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutChildModelsInput + connect?: ModelWhereUniqueInput } - export type ModelAdditionalFileSumOrderByAggregateInput = { - taggedVersionNumber?: SortOrder + export type ModelCreateNestedManyWithoutParentModelInput = { + create?: XOR | ModelCreateWithoutParentModelInput[] | ModelUncheckedCreateWithoutParentModelInput[] + connectOrCreate?: ModelCreateOrConnectWithoutParentModelInput | ModelCreateOrConnectWithoutParentModelInput[] + createMany?: ModelCreateManyParentModelInputEnvelope + connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] } - export type EnumModelFileKindWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.ModelFileKind | EnumModelFileKindFieldRefInput<$PrismaModel> - in?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> - not?: NestedEnumModelFileKindWithAggregatesFilter<$PrismaModel> | $Enums.ModelFileKind - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumModelFileKindFilter<$PrismaModel> - _max?: NestedEnumModelFileKindFilter<$PrismaModel> + export type ModelVersionCreateNestedOneWithoutParentOfModelsInput = { + create?: XOR + connectOrCreate?: ModelVersionCreateOrConnectWithoutParentOfModelsInput + connect?: ModelVersionWhereUniqueInput } - export type TagCountOrderByAggregateInput = { - id?: SortOrder - legacyId?: SortOrder - name?: SortOrder - displayName?: SortOrder - createdAt?: SortOrder + export type ModelVersionCreateNestedManyWithoutModelInput = { + create?: XOR | ModelVersionCreateWithoutModelInput[] | ModelVersionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelVersionCreateOrConnectWithoutModelInput | ModelVersionCreateOrConnectWithoutModelInput[] + createMany?: ModelVersionCreateManyModelInputEnvelope + connect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] } - export type TagAvgOrderByAggregateInput = { - legacyId?: SortOrder + export type ModelAuthorCreateNestedManyWithoutModelInput = { + create?: XOR | ModelAuthorCreateWithoutModelInput[] | ModelAuthorUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelAuthorCreateOrConnectWithoutModelInput | ModelAuthorCreateOrConnectWithoutModelInput[] + createMany?: ModelAuthorCreateManyModelInputEnvelope + connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] } - export type TagMaxOrderByAggregateInput = { - id?: SortOrder - legacyId?: SortOrder - name?: SortOrder - displayName?: SortOrder - createdAt?: SortOrder + export type ModelPermissionCreateNestedManyWithoutModelInput = { + create?: XOR | ModelPermissionCreateWithoutModelInput[] | ModelPermissionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelPermissionCreateOrConnectWithoutModelInput | ModelPermissionCreateOrConnectWithoutModelInput[] + createMany?: ModelPermissionCreateManyModelInputEnvelope + connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] } - export type TagMinOrderByAggregateInput = { - id?: SortOrder - legacyId?: SortOrder - name?: SortOrder - displayName?: SortOrder - createdAt?: SortOrder + export type ModelAdditionalFileCreateNestedManyWithoutModelInput = { + create?: XOR | ModelAdditionalFileCreateWithoutModelInput[] | ModelAdditionalFileUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutModelInput | ModelAdditionalFileCreateOrConnectWithoutModelInput[] + createMany?: ModelAdditionalFileCreateManyModelInputEnvelope + connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] } - export type TagSumOrderByAggregateInput = { - legacyId?: SortOrder + export type ModelLikeCreateNestedManyWithoutModelInput = { + create?: XOR | ModelLikeCreateWithoutModelInput[] | ModelLikeUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelLikeCreateOrConnectWithoutModelInput | ModelLikeCreateOrConnectWithoutModelInput[] + createMany?: ModelLikeCreateManyModelInputEnvelope + connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] } - export type EnumAuthorRoleFilter<$PrismaModel = never> = { - equals?: $Enums.AuthorRole | EnumAuthorRoleFieldRefInput<$PrismaModel> - in?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> - notIn?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> - not?: NestedEnumAuthorRoleFilter<$PrismaModel> | $Enums.AuthorRole + export type ModelInteractionCreateNestedManyWithoutModelInput = { + create?: XOR | ModelInteractionCreateWithoutModelInput[] | ModelInteractionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelInteractionCreateOrConnectWithoutModelInput | ModelInteractionCreateOrConnectWithoutModelInput[] + createMany?: ModelInteractionCreateManyModelInputEnvelope + connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] } - export type ModelAuthorModelIdUserIdCompoundUniqueInput = { - modelId: string - userId: string + export type ModelDraftCreateNestedManyWithoutModelInput = { + create?: XOR | ModelDraftCreateWithoutModelInput[] | ModelDraftUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelDraftCreateOrConnectWithoutModelInput | ModelDraftCreateOrConnectWithoutModelInput[] + createMany?: ModelDraftCreateManyModelInputEnvelope + connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] } - export type ModelAuthorCountOrderByAggregateInput = { - modelId?: SortOrder - userId?: SortOrder - role?: SortOrder - createdAt?: SortOrder + export type ModelCommentCreateNestedManyWithoutModelInput = { + create?: XOR | ModelCommentCreateWithoutModelInput[] | ModelCommentUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutModelInput | ModelCommentCreateOrConnectWithoutModelInput[] + createMany?: ModelCommentCreateManyModelInputEnvelope + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] } - export type ModelAuthorMaxOrderByAggregateInput = { - modelId?: SortOrder - userId?: SortOrder - role?: SortOrder - createdAt?: SortOrder + export type ModelUncheckedCreateNestedManyWithoutParentModelInput = { + create?: XOR | ModelCreateWithoutParentModelInput[] | ModelUncheckedCreateWithoutParentModelInput[] + connectOrCreate?: ModelCreateOrConnectWithoutParentModelInput | ModelCreateOrConnectWithoutParentModelInput[] + createMany?: ModelCreateManyParentModelInputEnvelope + connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] } - export type ModelAuthorMinOrderByAggregateInput = { - modelId?: SortOrder - userId?: SortOrder - role?: SortOrder - createdAt?: SortOrder + export type ModelVersionUncheckedCreateNestedManyWithoutModelInput = { + create?: XOR | ModelVersionCreateWithoutModelInput[] | ModelVersionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelVersionCreateOrConnectWithoutModelInput | ModelVersionCreateOrConnectWithoutModelInput[] + createMany?: ModelVersionCreateManyModelInputEnvelope + connect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] } - export type EnumAuthorRoleWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.AuthorRole | EnumAuthorRoleFieldRefInput<$PrismaModel> - in?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> - notIn?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> - not?: NestedEnumAuthorRoleWithAggregatesFilter<$PrismaModel> | $Enums.AuthorRole - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumAuthorRoleFilter<$PrismaModel> - _max?: NestedEnumAuthorRoleFilter<$PrismaModel> + export type ModelAuthorUncheckedCreateNestedManyWithoutModelInput = { + create?: XOR | ModelAuthorCreateWithoutModelInput[] | ModelAuthorUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelAuthorCreateOrConnectWithoutModelInput | ModelAuthorCreateOrConnectWithoutModelInput[] + createMany?: ModelAuthorCreateManyModelInputEnvelope + connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] } - export type EnumPermissionLevelFilter<$PrismaModel = never> = { - equals?: $Enums.PermissionLevel | EnumPermissionLevelFieldRefInput<$PrismaModel> - in?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> - notIn?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> - not?: NestedEnumPermissionLevelFilter<$PrismaModel> | $Enums.PermissionLevel + export type ModelPermissionUncheckedCreateNestedManyWithoutModelInput = { + create?: XOR | ModelPermissionCreateWithoutModelInput[] | ModelPermissionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelPermissionCreateOrConnectWithoutModelInput | ModelPermissionCreateOrConnectWithoutModelInput[] + createMany?: ModelPermissionCreateManyModelInputEnvelope + connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] } - export type ModelPermissionModelIdGranteeUserIdCompoundUniqueInput = { - modelId: string - granteeUserId: string + export type ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput = { + create?: XOR | ModelAdditionalFileCreateWithoutModelInput[] | ModelAdditionalFileUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutModelInput | ModelAdditionalFileCreateOrConnectWithoutModelInput[] + createMany?: ModelAdditionalFileCreateManyModelInputEnvelope + connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] } - export type ModelPermissionCountOrderByAggregateInput = { - id?: SortOrder - modelId?: SortOrder - granteeUserId?: SortOrder - permissionLevel?: SortOrder - createdAt?: SortOrder + export type ModelLikeUncheckedCreateNestedManyWithoutModelInput = { + create?: XOR | ModelLikeCreateWithoutModelInput[] | ModelLikeUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelLikeCreateOrConnectWithoutModelInput | ModelLikeCreateOrConnectWithoutModelInput[] + createMany?: ModelLikeCreateManyModelInputEnvelope + connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] } - export type ModelPermissionMaxOrderByAggregateInput = { - id?: SortOrder - modelId?: SortOrder - granteeUserId?: SortOrder - permissionLevel?: SortOrder - createdAt?: SortOrder + export type ModelInteractionUncheckedCreateNestedManyWithoutModelInput = { + create?: XOR | ModelInteractionCreateWithoutModelInput[] | ModelInteractionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelInteractionCreateOrConnectWithoutModelInput | ModelInteractionCreateOrConnectWithoutModelInput[] + createMany?: ModelInteractionCreateManyModelInputEnvelope + connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] } - export type ModelPermissionMinOrderByAggregateInput = { - id?: SortOrder - modelId?: SortOrder - granteeUserId?: SortOrder - permissionLevel?: SortOrder - createdAt?: SortOrder + export type ModelDraftUncheckedCreateNestedManyWithoutModelInput = { + create?: XOR | ModelDraftCreateWithoutModelInput[] | ModelDraftUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelDraftCreateOrConnectWithoutModelInput | ModelDraftCreateOrConnectWithoutModelInput[] + createMany?: ModelDraftCreateManyModelInputEnvelope + connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] } - export type EnumPermissionLevelWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.PermissionLevel | EnumPermissionLevelFieldRefInput<$PrismaModel> - in?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> - notIn?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> - not?: NestedEnumPermissionLevelWithAggregatesFilter<$PrismaModel> | $Enums.PermissionLevel - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumPermissionLevelFilter<$PrismaModel> - _max?: NestedEnumPermissionLevelFilter<$PrismaModel> + export type ModelCommentUncheckedCreateNestedManyWithoutModelInput = { + create?: XOR | ModelCommentCreateWithoutModelInput[] | ModelCommentUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutModelInput | ModelCommentCreateOrConnectWithoutModelInput[] + createMany?: ModelCommentCreateManyModelInputEnvelope + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] } - export type ModelLikeModelIdUserIdCompoundUniqueInput = { - modelId: string - userId: string + export type EnumModelVisibilityFieldUpdateOperationsInput = { + set?: $Enums.ModelVisibility } - - export type ModelLikeCountOrderByAggregateInput = { - modelId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder + + export type ModelVersionUpdateOneWithoutLatestOfModelNestedInput = { + create?: XOR + connectOrCreate?: ModelVersionCreateOrConnectWithoutLatestOfModelInput + upsert?: ModelVersionUpsertWithoutLatestOfModelInput + disconnect?: ModelVersionWhereInput | boolean + delete?: ModelVersionWhereInput | boolean + connect?: ModelVersionWhereUniqueInput + update?: XOR, ModelVersionUncheckedUpdateWithoutLatestOfModelInput> } - export type ModelLikeMaxOrderByAggregateInput = { - modelId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder + export type ModelUpdateOneWithoutChildModelsNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutChildModelsInput + upsert?: ModelUpsertWithoutChildModelsInput + disconnect?: ModelWhereInput | boolean + delete?: ModelWhereInput | boolean + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutChildModelsInput> } - export type ModelLikeMinOrderByAggregateInput = { - modelId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder + export type ModelUpdateManyWithoutParentModelNestedInput = { + create?: XOR | ModelCreateWithoutParentModelInput[] | ModelUncheckedCreateWithoutParentModelInput[] + connectOrCreate?: ModelCreateOrConnectWithoutParentModelInput | ModelCreateOrConnectWithoutParentModelInput[] + upsert?: ModelUpsertWithWhereUniqueWithoutParentModelInput | ModelUpsertWithWhereUniqueWithoutParentModelInput[] + createMany?: ModelCreateManyParentModelInputEnvelope + set?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + disconnect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + delete?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + update?: ModelUpdateWithWhereUniqueWithoutParentModelInput | ModelUpdateWithWhereUniqueWithoutParentModelInput[] + updateMany?: ModelUpdateManyWithWhereWithoutParentModelInput | ModelUpdateManyWithWhereWithoutParentModelInput[] + deleteMany?: ModelScalarWhereInput | ModelScalarWhereInput[] } - export type EnumModelInteractionKindFilter<$PrismaModel = never> = { - equals?: $Enums.ModelInteractionKind | EnumModelInteractionKindFieldRefInput<$PrismaModel> - in?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> - not?: NestedEnumModelInteractionKindFilter<$PrismaModel> | $Enums.ModelInteractionKind + export type ModelVersionUpdateOneWithoutParentOfModelsNestedInput = { + create?: XOR + connectOrCreate?: ModelVersionCreateOrConnectWithoutParentOfModelsInput + upsert?: ModelVersionUpsertWithoutParentOfModelsInput + disconnect?: ModelVersionWhereInput | boolean + delete?: ModelVersionWhereInput | boolean + connect?: ModelVersionWhereUniqueInput + update?: XOR, ModelVersionUncheckedUpdateWithoutParentOfModelsInput> } - export type ModelInteractionCountOrderByAggregateInput = { - id?: SortOrder - modelId?: SortOrder - versionNumber?: SortOrder - kind?: SortOrder - userId?: SortOrder - sessionId?: SortOrder - ipHash?: SortOrder - userAgent?: SortOrder - referer?: SortOrder - geo?: SortOrder - cookie?: SortOrder - createdAt?: SortOrder + export type ModelVersionUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelVersionCreateWithoutModelInput[] | ModelVersionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelVersionCreateOrConnectWithoutModelInput | ModelVersionCreateOrConnectWithoutModelInput[] + upsert?: ModelVersionUpsertWithWhereUniqueWithoutModelInput | ModelVersionUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelVersionCreateManyModelInputEnvelope + set?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + disconnect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + delete?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + connect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + update?: ModelVersionUpdateWithWhereUniqueWithoutModelInput | ModelVersionUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelVersionUpdateManyWithWhereWithoutModelInput | ModelVersionUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelVersionScalarWhereInput | ModelVersionScalarWhereInput[] } - export type ModelInteractionAvgOrderByAggregateInput = { - versionNumber?: SortOrder + export type ModelAuthorUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelAuthorCreateWithoutModelInput[] | ModelAuthorUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelAuthorCreateOrConnectWithoutModelInput | ModelAuthorCreateOrConnectWithoutModelInput[] + upsert?: ModelAuthorUpsertWithWhereUniqueWithoutModelInput | ModelAuthorUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelAuthorCreateManyModelInputEnvelope + set?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + disconnect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + delete?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + update?: ModelAuthorUpdateWithWhereUniqueWithoutModelInput | ModelAuthorUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelAuthorUpdateManyWithWhereWithoutModelInput | ModelAuthorUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] } - export type ModelInteractionMaxOrderByAggregateInput = { - id?: SortOrder - modelId?: SortOrder - versionNumber?: SortOrder - kind?: SortOrder - userId?: SortOrder - sessionId?: SortOrder - ipHash?: SortOrder - userAgent?: SortOrder - referer?: SortOrder - cookie?: SortOrder - createdAt?: SortOrder + export type ModelPermissionUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelPermissionCreateWithoutModelInput[] | ModelPermissionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelPermissionCreateOrConnectWithoutModelInput | ModelPermissionCreateOrConnectWithoutModelInput[] + upsert?: ModelPermissionUpsertWithWhereUniqueWithoutModelInput | ModelPermissionUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelPermissionCreateManyModelInputEnvelope + set?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + disconnect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + delete?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + update?: ModelPermissionUpdateWithWhereUniqueWithoutModelInput | ModelPermissionUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelPermissionUpdateManyWithWhereWithoutModelInput | ModelPermissionUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] } - export type ModelInteractionMinOrderByAggregateInput = { - id?: SortOrder - modelId?: SortOrder - versionNumber?: SortOrder - kind?: SortOrder - userId?: SortOrder - sessionId?: SortOrder - ipHash?: SortOrder - userAgent?: SortOrder - referer?: SortOrder - cookie?: SortOrder - createdAt?: SortOrder + export type ModelAdditionalFileUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelAdditionalFileCreateWithoutModelInput[] | ModelAdditionalFileUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutModelInput | ModelAdditionalFileCreateOrConnectWithoutModelInput[] + upsert?: ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput | ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelAdditionalFileCreateManyModelInputEnvelope + set?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + disconnect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + delete?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + update?: ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput | ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelAdditionalFileUpdateManyWithWhereWithoutModelInput | ModelAdditionalFileUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] } - export type ModelInteractionSumOrderByAggregateInput = { - versionNumber?: SortOrder + export type ModelLikeUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelLikeCreateWithoutModelInput[] | ModelLikeUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelLikeCreateOrConnectWithoutModelInput | ModelLikeCreateOrConnectWithoutModelInput[] + upsert?: ModelLikeUpsertWithWhereUniqueWithoutModelInput | ModelLikeUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelLikeCreateManyModelInputEnvelope + set?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + disconnect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + delete?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + update?: ModelLikeUpdateWithWhereUniqueWithoutModelInput | ModelLikeUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelLikeUpdateManyWithWhereWithoutModelInput | ModelLikeUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] } - export type EnumModelInteractionKindWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.ModelInteractionKind | EnumModelInteractionKindFieldRefInput<$PrismaModel> - in?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> - not?: NestedEnumModelInteractionKindWithAggregatesFilter<$PrismaModel> | $Enums.ModelInteractionKind - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumModelInteractionKindFilter<$PrismaModel> - _max?: NestedEnumModelInteractionKindFilter<$PrismaModel> + export type ModelInteractionUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelInteractionCreateWithoutModelInput[] | ModelInteractionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelInteractionCreateOrConnectWithoutModelInput | ModelInteractionCreateOrConnectWithoutModelInput[] + upsert?: ModelInteractionUpsertWithWhereUniqueWithoutModelInput | ModelInteractionUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelInteractionCreateManyModelInputEnvelope + set?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + disconnect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + delete?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + update?: ModelInteractionUpdateWithWhereUniqueWithoutModelInput | ModelInteractionUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelInteractionUpdateManyWithWhereWithoutModelInput | ModelInteractionUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] } - export type JsonFilter<$PrismaModel = never> = - | PatchUndefined< - Either>, Exclude>, 'path'>>, - Required> - > - | OptionalFlat>, 'path'>> - export type JsonFilterBase<$PrismaModel = never> = { - equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - path?: string[] - mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | StringFieldRefInput<$PrismaModel> - string_starts_with?: string | StringFieldRefInput<$PrismaModel> - string_ends_with?: string | StringFieldRefInput<$PrismaModel> - array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + export type ModelDraftUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelDraftCreateWithoutModelInput[] | ModelDraftUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelDraftCreateOrConnectWithoutModelInput | ModelDraftCreateOrConnectWithoutModelInput[] + upsert?: ModelDraftUpsertWithWhereUniqueWithoutModelInput | ModelDraftUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelDraftCreateManyModelInputEnvelope + set?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + disconnect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + delete?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + update?: ModelDraftUpdateWithWhereUniqueWithoutModelInput | ModelDraftUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelDraftUpdateManyWithWhereWithoutModelInput | ModelDraftUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] } - export type ModelDraftCountOrderByAggregateInput = { - id?: SortOrder - userId?: SortOrder - modelId?: SortOrder - schemaVersion?: SortOrder - data?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder + export type ModelCommentUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelCommentCreateWithoutModelInput[] | ModelCommentUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutModelInput | ModelCommentCreateOrConnectWithoutModelInput[] + upsert?: ModelCommentUpsertWithWhereUniqueWithoutModelInput | ModelCommentUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelCommentCreateManyModelInputEnvelope + set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + update?: ModelCommentUpdateWithWhereUniqueWithoutModelInput | ModelCommentUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelCommentUpdateManyWithWhereWithoutModelInput | ModelCommentUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] } - export type ModelDraftAvgOrderByAggregateInput = { - schemaVersion?: SortOrder + export type ModelUncheckedUpdateManyWithoutParentModelNestedInput = { + create?: XOR | ModelCreateWithoutParentModelInput[] | ModelUncheckedCreateWithoutParentModelInput[] + connectOrCreate?: ModelCreateOrConnectWithoutParentModelInput | ModelCreateOrConnectWithoutParentModelInput[] + upsert?: ModelUpsertWithWhereUniqueWithoutParentModelInput | ModelUpsertWithWhereUniqueWithoutParentModelInput[] + createMany?: ModelCreateManyParentModelInputEnvelope + set?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + disconnect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + delete?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + update?: ModelUpdateWithWhereUniqueWithoutParentModelInput | ModelUpdateWithWhereUniqueWithoutParentModelInput[] + updateMany?: ModelUpdateManyWithWhereWithoutParentModelInput | ModelUpdateManyWithWhereWithoutParentModelInput[] + deleteMany?: ModelScalarWhereInput | ModelScalarWhereInput[] } - export type ModelDraftMaxOrderByAggregateInput = { - id?: SortOrder - userId?: SortOrder - modelId?: SortOrder - schemaVersion?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder + export type ModelVersionUncheckedUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelVersionCreateWithoutModelInput[] | ModelVersionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelVersionCreateOrConnectWithoutModelInput | ModelVersionCreateOrConnectWithoutModelInput[] + upsert?: ModelVersionUpsertWithWhereUniqueWithoutModelInput | ModelVersionUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelVersionCreateManyModelInputEnvelope + set?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + disconnect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + delete?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + connect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + update?: ModelVersionUpdateWithWhereUniqueWithoutModelInput | ModelVersionUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelVersionUpdateManyWithWhereWithoutModelInput | ModelVersionUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelVersionScalarWhereInput | ModelVersionScalarWhereInput[] } - export type ModelDraftMinOrderByAggregateInput = { - id?: SortOrder - userId?: SortOrder - modelId?: SortOrder - schemaVersion?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder + export type ModelAuthorUncheckedUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelAuthorCreateWithoutModelInput[] | ModelAuthorUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelAuthorCreateOrConnectWithoutModelInput | ModelAuthorCreateOrConnectWithoutModelInput[] + upsert?: ModelAuthorUpsertWithWhereUniqueWithoutModelInput | ModelAuthorUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelAuthorCreateManyModelInputEnvelope + set?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + disconnect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + delete?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + update?: ModelAuthorUpdateWithWhereUniqueWithoutModelInput | ModelAuthorUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelAuthorUpdateManyWithWhereWithoutModelInput | ModelAuthorUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] } - export type ModelDraftSumOrderByAggregateInput = { - schemaVersion?: SortOrder + export type ModelPermissionUncheckedUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelPermissionCreateWithoutModelInput[] | ModelPermissionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelPermissionCreateOrConnectWithoutModelInput | ModelPermissionCreateOrConnectWithoutModelInput[] + upsert?: ModelPermissionUpsertWithWhereUniqueWithoutModelInput | ModelPermissionUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelPermissionCreateManyModelInputEnvelope + set?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + disconnect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + delete?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + update?: ModelPermissionUpdateWithWhereUniqueWithoutModelInput | ModelPermissionUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelPermissionUpdateManyWithWhereWithoutModelInput | ModelPermissionUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] } - export type JsonWithAggregatesFilter<$PrismaModel = never> = - | PatchUndefined< - Either>, Exclude>, 'path'>>, - Required> - > - | OptionalFlat>, 'path'>> - export type JsonWithAggregatesFilterBase<$PrismaModel = never> = { - equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - path?: string[] - mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | StringFieldRefInput<$PrismaModel> - string_starts_with?: string | StringFieldRefInput<$PrismaModel> - string_ends_with?: string | StringFieldRefInput<$PrismaModel> - array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedJsonFilter<$PrismaModel> - _max?: NestedJsonFilter<$PrismaModel> + export type ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelAdditionalFileCreateWithoutModelInput[] | ModelAdditionalFileUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutModelInput | ModelAdditionalFileCreateOrConnectWithoutModelInput[] + upsert?: ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput | ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelAdditionalFileCreateManyModelInputEnvelope + set?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + disconnect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + delete?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + update?: ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput | ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelAdditionalFileUpdateManyWithWhereWithoutModelInput | ModelAdditionalFileUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] } - export type ModelCommentNullableScalarRelationFilter = { - is?: ModelCommentWhereInput | null - isNot?: ModelCommentWhereInput | null + export type ModelLikeUncheckedUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelLikeCreateWithoutModelInput[] | ModelLikeUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelLikeCreateOrConnectWithoutModelInput | ModelLikeCreateOrConnectWithoutModelInput[] + upsert?: ModelLikeUpsertWithWhereUniqueWithoutModelInput | ModelLikeUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelLikeCreateManyModelInputEnvelope + set?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + disconnect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + delete?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + update?: ModelLikeUpdateWithWhereUniqueWithoutModelInput | ModelLikeUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelLikeUpdateManyWithWhereWithoutModelInput | ModelLikeUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] } - export type ModelCommentCountOrderByAggregateInput = { - id?: SortOrder - legacyId?: SortOrder - parentId?: SortOrder - userId?: SortOrder - modelId?: SortOrder - versionNumber?: SortOrder - content?: SortOrder - likesCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - editedAt?: SortOrder - deletedAt?: SortOrder + export type ModelInteractionUncheckedUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelInteractionCreateWithoutModelInput[] | ModelInteractionUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelInteractionCreateOrConnectWithoutModelInput | ModelInteractionCreateOrConnectWithoutModelInput[] + upsert?: ModelInteractionUpsertWithWhereUniqueWithoutModelInput | ModelInteractionUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelInteractionCreateManyModelInputEnvelope + set?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + disconnect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + delete?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + update?: ModelInteractionUpdateWithWhereUniqueWithoutModelInput | ModelInteractionUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelInteractionUpdateManyWithWhereWithoutModelInput | ModelInteractionUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] } - export type ModelCommentAvgOrderByAggregateInput = { - legacyId?: SortOrder - versionNumber?: SortOrder - likesCount?: SortOrder + export type ModelDraftUncheckedUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelDraftCreateWithoutModelInput[] | ModelDraftUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelDraftCreateOrConnectWithoutModelInput | ModelDraftCreateOrConnectWithoutModelInput[] + upsert?: ModelDraftUpsertWithWhereUniqueWithoutModelInput | ModelDraftUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelDraftCreateManyModelInputEnvelope + set?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + disconnect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + delete?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + update?: ModelDraftUpdateWithWhereUniqueWithoutModelInput | ModelDraftUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelDraftUpdateManyWithWhereWithoutModelInput | ModelDraftUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] } - export type ModelCommentMaxOrderByAggregateInput = { - id?: SortOrder - legacyId?: SortOrder - parentId?: SortOrder - userId?: SortOrder - modelId?: SortOrder - versionNumber?: SortOrder - content?: SortOrder - likesCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - editedAt?: SortOrder - deletedAt?: SortOrder + export type ModelCommentUncheckedUpdateManyWithoutModelNestedInput = { + create?: XOR | ModelCommentCreateWithoutModelInput[] | ModelCommentUncheckedCreateWithoutModelInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutModelInput | ModelCommentCreateOrConnectWithoutModelInput[] + upsert?: ModelCommentUpsertWithWhereUniqueWithoutModelInput | ModelCommentUpsertWithWhereUniqueWithoutModelInput[] + createMany?: ModelCommentCreateManyModelInputEnvelope + set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + update?: ModelCommentUpdateWithWhereUniqueWithoutModelInput | ModelCommentUpdateWithWhereUniqueWithoutModelInput[] + updateMany?: ModelCommentUpdateManyWithWhereWithoutModelInput | ModelCommentUpdateManyWithWhereWithoutModelInput[] + deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] } - export type ModelCommentMinOrderByAggregateInput = { - id?: SortOrder - legacyId?: SortOrder - parentId?: SortOrder - userId?: SortOrder - modelId?: SortOrder - versionNumber?: SortOrder - content?: SortOrder - likesCount?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - editedAt?: SortOrder - deletedAt?: SortOrder + export type ModelCreateNestedOneWithoutVersionsInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutVersionsInput + connect?: ModelWhereUniqueInput } - export type ModelCommentSumOrderByAggregateInput = { - legacyId?: SortOrder - versionNumber?: SortOrder - likesCount?: SortOrder + export type ModelCreateNestedOneWithoutLatestVersionInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutLatestVersionInput + connect?: ModelWhereUniqueInput } - export type ModelCommentScalarRelationFilter = { - is?: ModelCommentWhereInput - isNot?: ModelCommentWhereInput + export type ModelCreateNestedManyWithoutParentVersionInput = { + create?: XOR | ModelCreateWithoutParentVersionInput[] | ModelUncheckedCreateWithoutParentVersionInput[] + connectOrCreate?: ModelCreateOrConnectWithoutParentVersionInput | ModelCreateOrConnectWithoutParentVersionInput[] + createMany?: ModelCreateManyParentVersionInputEnvelope + connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] } - export type ModelCommentLikeModelCommentIdUserIdCompoundUniqueInput = { - modelCommentId: string - userId: string + export type ModelVersionTagCreateNestedManyWithoutModelVersionInput = { + create?: XOR | ModelVersionTagCreateWithoutModelVersionInput[] | ModelVersionTagUncheckedCreateWithoutModelVersionInput[] + connectOrCreate?: ModelVersionTagCreateOrConnectWithoutModelVersionInput | ModelVersionTagCreateOrConnectWithoutModelVersionInput[] + createMany?: ModelVersionTagCreateManyModelVersionInputEnvelope + connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] } - export type ModelCommentLikeCountOrderByAggregateInput = { - modelCommentId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder + export type ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput = { + create?: XOR | ModelAdditionalFileCreateWithoutTaggedVersionInput[] | ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput[] + connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput | ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput[] + createMany?: ModelAdditionalFileCreateManyTaggedVersionInputEnvelope + connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] } - export type ModelCommentLikeMaxOrderByAggregateInput = { - modelCommentId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder + export type ModelUncheckedCreateNestedOneWithoutLatestVersionInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutLatestVersionInput + connect?: ModelWhereUniqueInput } - export type ModelCommentLikeMinOrderByAggregateInput = { - modelCommentId?: SortOrder - userId?: SortOrder - createdAt?: SortOrder + export type ModelUncheckedCreateNestedManyWithoutParentVersionInput = { + create?: XOR | ModelCreateWithoutParentVersionInput[] | ModelUncheckedCreateWithoutParentVersionInput[] + connectOrCreate?: ModelCreateOrConnectWithoutParentVersionInput | ModelCreateOrConnectWithoutParentVersionInput[] + createMany?: ModelCreateManyParentVersionInputEnvelope + connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] } - export type EventCountOrderByAggregateInput = { - id?: SortOrder - type?: SortOrder - actorId?: SortOrder - resourceType?: SortOrder - resourceId?: SortOrder - payload?: SortOrder - createdAt?: SortOrder - processedAt?: SortOrder + export type ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput = { + create?: XOR | ModelVersionTagCreateWithoutModelVersionInput[] | ModelVersionTagUncheckedCreateWithoutModelVersionInput[] + connectOrCreate?: ModelVersionTagCreateOrConnectWithoutModelVersionInput | ModelVersionTagCreateOrConnectWithoutModelVersionInput[] + createMany?: ModelVersionTagCreateManyModelVersionInputEnvelope + connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] } - export type EventMaxOrderByAggregateInput = { - id?: SortOrder - type?: SortOrder - actorId?: SortOrder - resourceType?: SortOrder - resourceId?: SortOrder - createdAt?: SortOrder - processedAt?: SortOrder + export type ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput = { + create?: XOR | ModelAdditionalFileCreateWithoutTaggedVersionInput[] | ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput[] + connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput | ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput[] + createMany?: ModelAdditionalFileCreateManyTaggedVersionInputEnvelope + connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] } - export type EventMinOrderByAggregateInput = { - id?: SortOrder - type?: SortOrder - actorId?: SortOrder - resourceType?: SortOrder - resourceId?: SortOrder - createdAt?: SortOrder - processedAt?: SortOrder + export type ModelUpdateOneRequiredWithoutVersionsNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutVersionsInput + upsert?: ModelUpsertWithoutVersionsInput + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutVersionsInput> } - export type AccountCreateNestedManyWithoutUserInput = { - create?: XOR | AccountCreateWithoutUserInput[] | AccountUncheckedCreateWithoutUserInput[] - connectOrCreate?: AccountCreateOrConnectWithoutUserInput | AccountCreateOrConnectWithoutUserInput[] - createMany?: AccountCreateManyUserInputEnvelope - connect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + export type ModelUpdateOneWithoutLatestVersionNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutLatestVersionInput + upsert?: ModelUpsertWithoutLatestVersionInput + disconnect?: ModelWhereInput | boolean + delete?: ModelWhereInput | boolean + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutLatestVersionInput> } - export type SessionCreateNestedManyWithoutUserInput = { - create?: XOR | SessionCreateWithoutUserInput[] | SessionUncheckedCreateWithoutUserInput[] - connectOrCreate?: SessionCreateOrConnectWithoutUserInput | SessionCreateOrConnectWithoutUserInput[] - createMany?: SessionCreateManyUserInputEnvelope - connect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + export type ModelUpdateManyWithoutParentVersionNestedInput = { + create?: XOR | ModelCreateWithoutParentVersionInput[] | ModelUncheckedCreateWithoutParentVersionInput[] + connectOrCreate?: ModelCreateOrConnectWithoutParentVersionInput | ModelCreateOrConnectWithoutParentVersionInput[] + upsert?: ModelUpsertWithWhereUniqueWithoutParentVersionInput | ModelUpsertWithWhereUniqueWithoutParentVersionInput[] + createMany?: ModelCreateManyParentVersionInputEnvelope + set?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + disconnect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + delete?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + update?: ModelUpdateWithWhereUniqueWithoutParentVersionInput | ModelUpdateWithWhereUniqueWithoutParentVersionInput[] + updateMany?: ModelUpdateManyWithWhereWithoutParentVersionInput | ModelUpdateManyWithWhereWithoutParentVersionInput[] + deleteMany?: ModelScalarWhereInput | ModelScalarWhereInput[] } - export type VerificationCreateNestedManyWithoutUserInput = { - create?: XOR | VerificationCreateWithoutUserInput[] | VerificationUncheckedCreateWithoutUserInput[] - connectOrCreate?: VerificationCreateOrConnectWithoutUserInput | VerificationCreateOrConnectWithoutUserInput[] - createMany?: VerificationCreateManyUserInputEnvelope - connect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + export type ModelVersionTagUpdateManyWithoutModelVersionNestedInput = { + create?: XOR | ModelVersionTagCreateWithoutModelVersionInput[] | ModelVersionTagUncheckedCreateWithoutModelVersionInput[] + connectOrCreate?: ModelVersionTagCreateOrConnectWithoutModelVersionInput | ModelVersionTagCreateOrConnectWithoutModelVersionInput[] + upsert?: ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput | ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput[] + createMany?: ModelVersionTagCreateManyModelVersionInputEnvelope + set?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + disconnect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + delete?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + update?: ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput | ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput[] + updateMany?: ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput | ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput[] + deleteMany?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] } - export type ModelAuthorCreateNestedManyWithoutUserInput = { - create?: XOR | ModelAuthorCreateWithoutUserInput[] | ModelAuthorUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelAuthorCreateOrConnectWithoutUserInput | ModelAuthorCreateOrConnectWithoutUserInput[] - createMany?: ModelAuthorCreateManyUserInputEnvelope - connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + export type ModelAdditionalFileUpdateManyWithoutTaggedVersionNestedInput = { + create?: XOR | ModelAdditionalFileCreateWithoutTaggedVersionInput[] | ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput[] + connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput | ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput[] + upsert?: ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput | ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput[] + createMany?: ModelAdditionalFileCreateManyTaggedVersionInputEnvelope + set?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + disconnect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + delete?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + update?: ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput | ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput[] + updateMany?: ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput | ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput[] + deleteMany?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] } - export type ModelPermissionCreateNestedManyWithoutGranteeUserInput = { - create?: XOR | ModelPermissionCreateWithoutGranteeUserInput[] | ModelPermissionUncheckedCreateWithoutGranteeUserInput[] - connectOrCreate?: ModelPermissionCreateOrConnectWithoutGranteeUserInput | ModelPermissionCreateOrConnectWithoutGranteeUserInput[] - createMany?: ModelPermissionCreateManyGranteeUserInputEnvelope - connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + export type ModelUncheckedUpdateOneWithoutLatestVersionNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutLatestVersionInput + upsert?: ModelUpsertWithoutLatestVersionInput + disconnect?: ModelWhereInput | boolean + delete?: ModelWhereInput | boolean + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutLatestVersionInput> } - export type EventCreateNestedManyWithoutActorInput = { - create?: XOR | EventCreateWithoutActorInput[] | EventUncheckedCreateWithoutActorInput[] - connectOrCreate?: EventCreateOrConnectWithoutActorInput | EventCreateOrConnectWithoutActorInput[] - createMany?: EventCreateManyActorInputEnvelope - connect?: EventWhereUniqueInput | EventWhereUniqueInput[] + export type ModelUncheckedUpdateManyWithoutParentVersionNestedInput = { + create?: XOR | ModelCreateWithoutParentVersionInput[] | ModelUncheckedCreateWithoutParentVersionInput[] + connectOrCreate?: ModelCreateOrConnectWithoutParentVersionInput | ModelCreateOrConnectWithoutParentVersionInput[] + upsert?: ModelUpsertWithWhereUniqueWithoutParentVersionInput | ModelUpsertWithWhereUniqueWithoutParentVersionInput[] + createMany?: ModelCreateManyParentVersionInputEnvelope + set?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + disconnect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + delete?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + update?: ModelUpdateWithWhereUniqueWithoutParentVersionInput | ModelUpdateWithWhereUniqueWithoutParentVersionInput[] + updateMany?: ModelUpdateManyWithWhereWithoutParentVersionInput | ModelUpdateManyWithWhereWithoutParentVersionInput[] + deleteMany?: ModelScalarWhereInput | ModelScalarWhereInput[] } - export type ModelLikeCreateNestedManyWithoutUserInput = { - create?: XOR | ModelLikeCreateWithoutUserInput[] | ModelLikeUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelLikeCreateOrConnectWithoutUserInput | ModelLikeCreateOrConnectWithoutUserInput[] - createMany?: ModelLikeCreateManyUserInputEnvelope - connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + export type ModelVersionTagUncheckedUpdateManyWithoutModelVersionNestedInput = { + create?: XOR | ModelVersionTagCreateWithoutModelVersionInput[] | ModelVersionTagUncheckedCreateWithoutModelVersionInput[] + connectOrCreate?: ModelVersionTagCreateOrConnectWithoutModelVersionInput | ModelVersionTagCreateOrConnectWithoutModelVersionInput[] + upsert?: ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput | ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput[] + createMany?: ModelVersionTagCreateManyModelVersionInputEnvelope + set?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + disconnect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + delete?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + update?: ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput | ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput[] + updateMany?: ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput | ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput[] + deleteMany?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] } - export type ModelInteractionCreateNestedManyWithoutUserInput = { - create?: XOR | ModelInteractionCreateWithoutUserInput[] | ModelInteractionUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelInteractionCreateOrConnectWithoutUserInput | ModelInteractionCreateOrConnectWithoutUserInput[] - createMany?: ModelInteractionCreateManyUserInputEnvelope - connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + export type ModelAdditionalFileUncheckedUpdateManyWithoutTaggedVersionNestedInput = { + create?: XOR | ModelAdditionalFileCreateWithoutTaggedVersionInput[] | ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput[] + connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput | ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput[] + upsert?: ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput | ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput[] + createMany?: ModelAdditionalFileCreateManyTaggedVersionInputEnvelope + set?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + disconnect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + delete?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + update?: ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput | ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput[] + updateMany?: ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput | ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput[] + deleteMany?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] } - export type ModelDraftCreateNestedManyWithoutUserInput = { - create?: XOR | ModelDraftCreateWithoutUserInput[] | ModelDraftUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelDraftCreateOrConnectWithoutUserInput | ModelDraftCreateOrConnectWithoutUserInput[] - createMany?: ModelDraftCreateManyUserInputEnvelope - connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + export type ModelVersionCreateNestedOneWithoutTagsInput = { + create?: XOR + connectOrCreate?: ModelVersionCreateOrConnectWithoutTagsInput + connect?: ModelVersionWhereUniqueInput } - export type ModelCommentCreateNestedManyWithoutUserInput = { - create?: XOR | ModelCommentCreateWithoutUserInput[] | ModelCommentUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutUserInput | ModelCommentCreateOrConnectWithoutUserInput[] - createMany?: ModelCommentCreateManyUserInputEnvelope - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + export type TagCreateNestedOneWithoutModelVersionsInput = { + create?: XOR + connectOrCreate?: TagCreateOrConnectWithoutModelVersionsInput + connect?: TagWhereUniqueInput } - export type ModelCommentLikeCreateNestedManyWithoutUserInput = { - create?: XOR | ModelCommentLikeCreateWithoutUserInput[] | ModelCommentLikeUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutUserInput | ModelCommentLikeCreateOrConnectWithoutUserInput[] - createMany?: ModelCommentLikeCreateManyUserInputEnvelope - connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + export type ModelVersionUpdateOneRequiredWithoutTagsNestedInput = { + create?: XOR + connectOrCreate?: ModelVersionCreateOrConnectWithoutTagsInput + upsert?: ModelVersionUpsertWithoutTagsInput + connect?: ModelVersionWhereUniqueInput + update?: XOR, ModelVersionUncheckedUpdateWithoutTagsInput> } - export type PasskeyCreateNestedManyWithoutUserInput = { - create?: XOR | PasskeyCreateWithoutUserInput[] | PasskeyUncheckedCreateWithoutUserInput[] - connectOrCreate?: PasskeyCreateOrConnectWithoutUserInput | PasskeyCreateOrConnectWithoutUserInput[] - createMany?: PasskeyCreateManyUserInputEnvelope - connect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + export type TagUpdateOneRequiredWithoutModelVersionsNestedInput = { + create?: XOR + connectOrCreate?: TagCreateOrConnectWithoutModelVersionsInput + upsert?: TagUpsertWithoutModelVersionsInput + connect?: TagWhereUniqueInput + update?: XOR, TagUncheckedUpdateWithoutModelVersionsInput> } - export type AccountUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | AccountCreateWithoutUserInput[] | AccountUncheckedCreateWithoutUserInput[] - connectOrCreate?: AccountCreateOrConnectWithoutUserInput | AccountCreateOrConnectWithoutUserInput[] - createMany?: AccountCreateManyUserInputEnvelope - connect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] + export type ModelCreateNestedOneWithoutAdditionalFilesInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutAdditionalFilesInput + connect?: ModelWhereUniqueInput } - export type SessionUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | SessionCreateWithoutUserInput[] | SessionUncheckedCreateWithoutUserInput[] - connectOrCreate?: SessionCreateOrConnectWithoutUserInput | SessionCreateOrConnectWithoutUserInput[] - createMany?: SessionCreateManyUserInputEnvelope - connect?: SessionWhereUniqueInput | SessionWhereUniqueInput[] + export type ModelVersionCreateNestedOneWithoutTaggedAdditionalFilesInput = { + create?: XOR + connectOrCreate?: ModelVersionCreateOrConnectWithoutTaggedAdditionalFilesInput + connect?: ModelVersionWhereUniqueInput } - export type VerificationUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | VerificationCreateWithoutUserInput[] | VerificationUncheckedCreateWithoutUserInput[] - connectOrCreate?: VerificationCreateOrConnectWithoutUserInput | VerificationCreateOrConnectWithoutUserInput[] - createMany?: VerificationCreateManyUserInputEnvelope - connect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] + export type EnumModelFileKindFieldUpdateOperationsInput = { + set?: $Enums.ModelFileKind } - export type ModelAuthorUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | ModelAuthorCreateWithoutUserInput[] | ModelAuthorUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelAuthorCreateOrConnectWithoutUserInput | ModelAuthorCreateOrConnectWithoutUserInput[] - createMany?: ModelAuthorCreateManyUserInputEnvelope - connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + export type ModelUpdateOneRequiredWithoutAdditionalFilesNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutAdditionalFilesInput + upsert?: ModelUpsertWithoutAdditionalFilesInput + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutAdditionalFilesInput> } - export type ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput = { - create?: XOR | ModelPermissionCreateWithoutGranteeUserInput[] | ModelPermissionUncheckedCreateWithoutGranteeUserInput[] - connectOrCreate?: ModelPermissionCreateOrConnectWithoutGranteeUserInput | ModelPermissionCreateOrConnectWithoutGranteeUserInput[] - createMany?: ModelPermissionCreateManyGranteeUserInputEnvelope - connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + export type ModelVersionUpdateOneRequiredWithoutTaggedAdditionalFilesNestedInput = { + create?: XOR + connectOrCreate?: ModelVersionCreateOrConnectWithoutTaggedAdditionalFilesInput + upsert?: ModelVersionUpsertWithoutTaggedAdditionalFilesInput + connect?: ModelVersionWhereUniqueInput + update?: XOR, ModelVersionUncheckedUpdateWithoutTaggedAdditionalFilesInput> } - export type EventUncheckedCreateNestedManyWithoutActorInput = { - create?: XOR | EventCreateWithoutActorInput[] | EventUncheckedCreateWithoutActorInput[] - connectOrCreate?: EventCreateOrConnectWithoutActorInput | EventCreateOrConnectWithoutActorInput[] - createMany?: EventCreateManyActorInputEnvelope - connect?: EventWhereUniqueInput | EventWhereUniqueInput[] + export type ModelVersionTagCreateNestedManyWithoutTagInput = { + create?: XOR | ModelVersionTagCreateWithoutTagInput[] | ModelVersionTagUncheckedCreateWithoutTagInput[] + connectOrCreate?: ModelVersionTagCreateOrConnectWithoutTagInput | ModelVersionTagCreateOrConnectWithoutTagInput[] + createMany?: ModelVersionTagCreateManyTagInputEnvelope + connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] } - export type ModelLikeUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | ModelLikeCreateWithoutUserInput[] | ModelLikeUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelLikeCreateOrConnectWithoutUserInput | ModelLikeCreateOrConnectWithoutUserInput[] - createMany?: ModelLikeCreateManyUserInputEnvelope - connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + export type ModelVersionTagUncheckedCreateNestedManyWithoutTagInput = { + create?: XOR | ModelVersionTagCreateWithoutTagInput[] | ModelVersionTagUncheckedCreateWithoutTagInput[] + connectOrCreate?: ModelVersionTagCreateOrConnectWithoutTagInput | ModelVersionTagCreateOrConnectWithoutTagInput[] + createMany?: ModelVersionTagCreateManyTagInputEnvelope + connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] } - export type ModelInteractionUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | ModelInteractionCreateWithoutUserInput[] | ModelInteractionUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelInteractionCreateOrConnectWithoutUserInput | ModelInteractionCreateOrConnectWithoutUserInput[] - createMany?: ModelInteractionCreateManyUserInputEnvelope - connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + export type ModelVersionTagUpdateManyWithoutTagNestedInput = { + create?: XOR | ModelVersionTagCreateWithoutTagInput[] | ModelVersionTagUncheckedCreateWithoutTagInput[] + connectOrCreate?: ModelVersionTagCreateOrConnectWithoutTagInput | ModelVersionTagCreateOrConnectWithoutTagInput[] + upsert?: ModelVersionTagUpsertWithWhereUniqueWithoutTagInput | ModelVersionTagUpsertWithWhereUniqueWithoutTagInput[] + createMany?: ModelVersionTagCreateManyTagInputEnvelope + set?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + disconnect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + delete?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + update?: ModelVersionTagUpdateWithWhereUniqueWithoutTagInput | ModelVersionTagUpdateWithWhereUniqueWithoutTagInput[] + updateMany?: ModelVersionTagUpdateManyWithWhereWithoutTagInput | ModelVersionTagUpdateManyWithWhereWithoutTagInput[] + deleteMany?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] } - export type ModelDraftUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | ModelDraftCreateWithoutUserInput[] | ModelDraftUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelDraftCreateOrConnectWithoutUserInput | ModelDraftCreateOrConnectWithoutUserInput[] - createMany?: ModelDraftCreateManyUserInputEnvelope - connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + export type ModelVersionTagUncheckedUpdateManyWithoutTagNestedInput = { + create?: XOR | ModelVersionTagCreateWithoutTagInput[] | ModelVersionTagUncheckedCreateWithoutTagInput[] + connectOrCreate?: ModelVersionTagCreateOrConnectWithoutTagInput | ModelVersionTagCreateOrConnectWithoutTagInput[] + upsert?: ModelVersionTagUpsertWithWhereUniqueWithoutTagInput | ModelVersionTagUpsertWithWhereUniqueWithoutTagInput[] + createMany?: ModelVersionTagCreateManyTagInputEnvelope + set?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + disconnect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + delete?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + update?: ModelVersionTagUpdateWithWhereUniqueWithoutTagInput | ModelVersionTagUpdateWithWhereUniqueWithoutTagInput[] + updateMany?: ModelVersionTagUpdateManyWithWhereWithoutTagInput | ModelVersionTagUpdateManyWithWhereWithoutTagInput[] + deleteMany?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] } - export type ModelCommentUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | ModelCommentCreateWithoutUserInput[] | ModelCommentUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutUserInput | ModelCommentCreateOrConnectWithoutUserInput[] - createMany?: ModelCommentCreateManyUserInputEnvelope - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + export type ModelCreateNestedOneWithoutAuthorsInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutAuthorsInput + connect?: ModelWhereUniqueInput } - export type ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | ModelCommentLikeCreateWithoutUserInput[] | ModelCommentLikeUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutUserInput | ModelCommentLikeCreateOrConnectWithoutUserInput[] - createMany?: ModelCommentLikeCreateManyUserInputEnvelope - connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + export type UserCreateNestedOneWithoutAuthoredModelsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutAuthoredModelsInput + connect?: UserWhereUniqueInput } - export type PasskeyUncheckedCreateNestedManyWithoutUserInput = { - create?: XOR | PasskeyCreateWithoutUserInput[] | PasskeyUncheckedCreateWithoutUserInput[] - connectOrCreate?: PasskeyCreateOrConnectWithoutUserInput | PasskeyCreateOrConnectWithoutUserInput[] - createMany?: PasskeyCreateManyUserInputEnvelope - connect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] + export type EnumAuthorRoleFieldUpdateOperationsInput = { + set?: $Enums.AuthorRole } - export type StringFieldUpdateOperationsInput = { - set?: string + export type ModelUpdateOneRequiredWithoutAuthorsNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutAuthorsInput + upsert?: ModelUpsertWithoutAuthorsInput + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutAuthorsInput> } - export type NullableStringFieldUpdateOperationsInput = { - set?: string | null + export type UserUpdateOneRequiredWithoutAuthoredModelsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutAuthoredModelsInput + upsert?: UserUpsertWithoutAuthoredModelsInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutAuthoredModelsInput> } - export type BoolFieldUpdateOperationsInput = { - set?: boolean + export type ModelCreateNestedOneWithoutPermissionsInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutPermissionsInput + connect?: ModelWhereUniqueInput } - export type DateTimeFieldUpdateOperationsInput = { - set?: Date | string + export type UserCreateNestedOneWithoutGrantedPermissionsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutGrantedPermissionsInput + connect?: UserWhereUniqueInput } - export type EnumSystemRoleFieldUpdateOperationsInput = { - set?: $Enums.SystemRole + export type EnumPermissionLevelFieldUpdateOperationsInput = { + set?: $Enums.PermissionLevel } - export type EnumUserKindFieldUpdateOperationsInput = { - set?: $Enums.UserKind + export type ModelUpdateOneRequiredWithoutPermissionsNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutPermissionsInput + upsert?: ModelUpsertWithoutPermissionsInput + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutPermissionsInput> } - export type NullableDateTimeFieldUpdateOperationsInput = { - set?: Date | string | null + export type UserUpdateOneWithoutGrantedPermissionsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutGrantedPermissionsInput + upsert?: UserUpsertWithoutGrantedPermissionsInput + disconnect?: UserWhereInput | boolean + delete?: UserWhereInput | boolean + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutGrantedPermissionsInput> } - export type NullableBoolFieldUpdateOperationsInput = { - set?: boolean | null + export type ModelCreateNestedOneWithoutLikesInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutLikesInput + connect?: ModelWhereUniqueInput } - export type NullableIntFieldUpdateOperationsInput = { - set?: number | null - increment?: number - decrement?: number - multiply?: number - divide?: number + export type UserCreateNestedOneWithoutModelLikesInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutModelLikesInput + connect?: UserWhereUniqueInput } - export type AccountUpdateManyWithoutUserNestedInput = { - create?: XOR | AccountCreateWithoutUserInput[] | AccountUncheckedCreateWithoutUserInput[] - connectOrCreate?: AccountCreateOrConnectWithoutUserInput | AccountCreateOrConnectWithoutUserInput[] - upsert?: AccountUpsertWithWhereUniqueWithoutUserInput | AccountUpsertWithWhereUniqueWithoutUserInput[] - createMany?: AccountCreateManyUserInputEnvelope - set?: AccountWhereUniqueInput | AccountWhereUniqueInput[] - disconnect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] - delete?: AccountWhereUniqueInput | AccountWhereUniqueInput[] - connect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] - update?: AccountUpdateWithWhereUniqueWithoutUserInput | AccountUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: AccountUpdateManyWithWhereWithoutUserInput | AccountUpdateManyWithWhereWithoutUserInput[] - deleteMany?: AccountScalarWhereInput | AccountScalarWhereInput[] + export type ModelUpdateOneRequiredWithoutLikesNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutLikesInput + upsert?: ModelUpsertWithoutLikesInput + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutLikesInput> } - 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 UserUpdateOneRequiredWithoutModelLikesNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutModelLikesInput + upsert?: UserUpsertWithoutModelLikesInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutModelLikesInput> } - export type VerificationUpdateManyWithoutUserNestedInput = { - create?: XOR | VerificationCreateWithoutUserInput[] | VerificationUncheckedCreateWithoutUserInput[] - connectOrCreate?: VerificationCreateOrConnectWithoutUserInput | VerificationCreateOrConnectWithoutUserInput[] - upsert?: VerificationUpsertWithWhereUniqueWithoutUserInput | VerificationUpsertWithWhereUniqueWithoutUserInput[] - createMany?: VerificationCreateManyUserInputEnvelope - set?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] - disconnect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] - delete?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] - connect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] - update?: VerificationUpdateWithWhereUniqueWithoutUserInput | VerificationUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: VerificationUpdateManyWithWhereWithoutUserInput | VerificationUpdateManyWithWhereWithoutUserInput[] - deleteMany?: VerificationScalarWhereInput | VerificationScalarWhereInput[] + export type ModelCreateNestedOneWithoutInteractionsInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutInteractionsInput + connect?: ModelWhereUniqueInput } - export type ModelAuthorUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelAuthorCreateWithoutUserInput[] | ModelAuthorUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelAuthorCreateOrConnectWithoutUserInput | ModelAuthorCreateOrConnectWithoutUserInput[] - upsert?: ModelAuthorUpsertWithWhereUniqueWithoutUserInput | ModelAuthorUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelAuthorCreateManyUserInputEnvelope - set?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - disconnect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - delete?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - update?: ModelAuthorUpdateWithWhereUniqueWithoutUserInput | ModelAuthorUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelAuthorUpdateManyWithWhereWithoutUserInput | ModelAuthorUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] + export type UserCreateNestedOneWithoutModelInteractionsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutModelInteractionsInput + connect?: UserWhereUniqueInput } - export type ModelPermissionUpdateManyWithoutGranteeUserNestedInput = { - create?: XOR | ModelPermissionCreateWithoutGranteeUserInput[] | ModelPermissionUncheckedCreateWithoutGranteeUserInput[] - connectOrCreate?: ModelPermissionCreateOrConnectWithoutGranteeUserInput | ModelPermissionCreateOrConnectWithoutGranteeUserInput[] - upsert?: ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput | ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput[] - createMany?: ModelPermissionCreateManyGranteeUserInputEnvelope - set?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - disconnect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - delete?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - update?: ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput | ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput[] - updateMany?: ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput | ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput[] - deleteMany?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] + export type EnumModelInteractionKindFieldUpdateOperationsInput = { + set?: $Enums.ModelInteractionKind } - export type EventUpdateManyWithoutActorNestedInput = { - create?: XOR | EventCreateWithoutActorInput[] | EventUncheckedCreateWithoutActorInput[] - connectOrCreate?: EventCreateOrConnectWithoutActorInput | EventCreateOrConnectWithoutActorInput[] - upsert?: EventUpsertWithWhereUniqueWithoutActorInput | EventUpsertWithWhereUniqueWithoutActorInput[] - createMany?: EventCreateManyActorInputEnvelope - set?: EventWhereUniqueInput | EventWhereUniqueInput[] - disconnect?: EventWhereUniqueInput | EventWhereUniqueInput[] - delete?: EventWhereUniqueInput | EventWhereUniqueInput[] - connect?: EventWhereUniqueInput | EventWhereUniqueInput[] - update?: EventUpdateWithWhereUniqueWithoutActorInput | EventUpdateWithWhereUniqueWithoutActorInput[] - updateMany?: EventUpdateManyWithWhereWithoutActorInput | EventUpdateManyWithWhereWithoutActorInput[] - deleteMany?: EventScalarWhereInput | EventScalarWhereInput[] + export type ModelUpdateOneRequiredWithoutInteractionsNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutInteractionsInput + upsert?: ModelUpsertWithoutInteractionsInput + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutInteractionsInput> } - export type ModelLikeUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelLikeCreateWithoutUserInput[] | ModelLikeUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelLikeCreateOrConnectWithoutUserInput | ModelLikeCreateOrConnectWithoutUserInput[] - upsert?: ModelLikeUpsertWithWhereUniqueWithoutUserInput | ModelLikeUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelLikeCreateManyUserInputEnvelope - set?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - disconnect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - delete?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - update?: ModelLikeUpdateWithWhereUniqueWithoutUserInput | ModelLikeUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelLikeUpdateManyWithWhereWithoutUserInput | ModelLikeUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] + export type UserUpdateOneWithoutModelInteractionsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutModelInteractionsInput + upsert?: UserUpsertWithoutModelInteractionsInput + disconnect?: UserWhereInput | boolean + delete?: UserWhereInput | boolean + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutModelInteractionsInput> } - export type ModelInteractionUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelInteractionCreateWithoutUserInput[] | ModelInteractionUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelInteractionCreateOrConnectWithoutUserInput | ModelInteractionCreateOrConnectWithoutUserInput[] - upsert?: ModelInteractionUpsertWithWhereUniqueWithoutUserInput | ModelInteractionUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelInteractionCreateManyUserInputEnvelope - set?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - disconnect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - delete?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - update?: ModelInteractionUpdateWithWhereUniqueWithoutUserInput | ModelInteractionUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelInteractionUpdateManyWithWhereWithoutUserInput | ModelInteractionUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] + export type UserCreateNestedOneWithoutModelDraftsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutModelDraftsInput + connect?: UserWhereUniqueInput } - export type ModelDraftUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelDraftCreateWithoutUserInput[] | ModelDraftUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelDraftCreateOrConnectWithoutUserInput | ModelDraftCreateOrConnectWithoutUserInput[] - upsert?: ModelDraftUpsertWithWhereUniqueWithoutUserInput | ModelDraftUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelDraftCreateManyUserInputEnvelope - set?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - disconnect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - delete?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - update?: ModelDraftUpdateWithWhereUniqueWithoutUserInput | ModelDraftUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelDraftUpdateManyWithWhereWithoutUserInput | ModelDraftUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] + export type ModelCreateNestedOneWithoutDraftsInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutDraftsInput + connect?: ModelWhereUniqueInput } - export type ModelCommentUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelCommentCreateWithoutUserInput[] | ModelCommentUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutUserInput | ModelCommentCreateOrConnectWithoutUserInput[] - upsert?: ModelCommentUpsertWithWhereUniqueWithoutUserInput | ModelCommentUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelCommentCreateManyUserInputEnvelope - set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - update?: ModelCommentUpdateWithWhereUniqueWithoutUserInput | ModelCommentUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelCommentUpdateManyWithWhereWithoutUserInput | ModelCommentUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] + export type UserUpdateOneRequiredWithoutModelDraftsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutModelDraftsInput + upsert?: UserUpsertWithoutModelDraftsInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutModelDraftsInput> } - export type ModelCommentLikeUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelCommentLikeCreateWithoutUserInput[] | ModelCommentLikeUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutUserInput | ModelCommentLikeCreateOrConnectWithoutUserInput[] - upsert?: ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput | ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelCommentLikeCreateManyUserInputEnvelope - set?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - disconnect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - delete?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - update?: ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput | ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelCommentLikeUpdateManyWithWhereWithoutUserInput | ModelCommentLikeUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] + export type ModelUpdateOneWithoutDraftsNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutDraftsInput + upsert?: ModelUpsertWithoutDraftsInput + disconnect?: ModelWhereInput | boolean + delete?: ModelWhereInput | boolean + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutDraftsInput> } - export type PasskeyUpdateManyWithoutUserNestedInput = { - create?: XOR | PasskeyCreateWithoutUserInput[] | PasskeyUncheckedCreateWithoutUserInput[] - connectOrCreate?: PasskeyCreateOrConnectWithoutUserInput | PasskeyCreateOrConnectWithoutUserInput[] - upsert?: PasskeyUpsertWithWhereUniqueWithoutUserInput | PasskeyUpsertWithWhereUniqueWithoutUserInput[] - createMany?: PasskeyCreateManyUserInputEnvelope - set?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] - disconnect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] - delete?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] - connect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] - update?: PasskeyUpdateWithWhereUniqueWithoutUserInput | PasskeyUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: PasskeyUpdateManyWithWhereWithoutUserInput | PasskeyUpdateManyWithWhereWithoutUserInput[] - deleteMany?: PasskeyScalarWhereInput | PasskeyScalarWhereInput[] + export type ModelCreateNestedOneWithoutCommentsInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutCommentsInput + connect?: ModelWhereUniqueInput } - export type AccountUncheckedUpdateManyWithoutUserNestedInput = { - create?: XOR | AccountCreateWithoutUserInput[] | AccountUncheckedCreateWithoutUserInput[] - connectOrCreate?: AccountCreateOrConnectWithoutUserInput | AccountCreateOrConnectWithoutUserInput[] - upsert?: AccountUpsertWithWhereUniqueWithoutUserInput | AccountUpsertWithWhereUniqueWithoutUserInput[] - createMany?: AccountCreateManyUserInputEnvelope - set?: AccountWhereUniqueInput | AccountWhereUniqueInput[] - disconnect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] - delete?: AccountWhereUniqueInput | AccountWhereUniqueInput[] - connect?: AccountWhereUniqueInput | AccountWhereUniqueInput[] - update?: AccountUpdateWithWhereUniqueWithoutUserInput | AccountUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: AccountUpdateManyWithWhereWithoutUserInput | AccountUpdateManyWithWhereWithoutUserInput[] - deleteMany?: AccountScalarWhereInput | AccountScalarWhereInput[] + export type UserCreateNestedOneWithoutCommentsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutCommentsInput + connect?: UserWhereUniqueInput } - 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 ModelCommentCreateNestedOneWithoutRepliesInput = { + create?: XOR + connectOrCreate?: ModelCommentCreateOrConnectWithoutRepliesInput + connect?: ModelCommentWhereUniqueInput } - export type VerificationUncheckedUpdateManyWithoutUserNestedInput = { - create?: XOR | VerificationCreateWithoutUserInput[] | VerificationUncheckedCreateWithoutUserInput[] - connectOrCreate?: VerificationCreateOrConnectWithoutUserInput | VerificationCreateOrConnectWithoutUserInput[] - upsert?: VerificationUpsertWithWhereUniqueWithoutUserInput | VerificationUpsertWithWhereUniqueWithoutUserInput[] - createMany?: VerificationCreateManyUserInputEnvelope - set?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] - disconnect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] - delete?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] - connect?: VerificationWhereUniqueInput | VerificationWhereUniqueInput[] - update?: VerificationUpdateWithWhereUniqueWithoutUserInput | VerificationUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: VerificationUpdateManyWithWhereWithoutUserInput | VerificationUpdateManyWithWhereWithoutUserInput[] - deleteMany?: VerificationScalarWhereInput | VerificationScalarWhereInput[] + export type ModelCommentCreateNestedManyWithoutParentInput = { + create?: XOR | ModelCommentCreateWithoutParentInput[] | ModelCommentUncheckedCreateWithoutParentInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutParentInput | ModelCommentCreateOrConnectWithoutParentInput[] + createMany?: ModelCommentCreateManyParentInputEnvelope + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] } - export type ModelAuthorUncheckedUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelAuthorCreateWithoutUserInput[] | ModelAuthorUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelAuthorCreateOrConnectWithoutUserInput | ModelAuthorCreateOrConnectWithoutUserInput[] - upsert?: ModelAuthorUpsertWithWhereUniqueWithoutUserInput | ModelAuthorUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelAuthorCreateManyUserInputEnvelope - set?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - disconnect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - delete?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - update?: ModelAuthorUpdateWithWhereUniqueWithoutUserInput | ModelAuthorUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelAuthorUpdateManyWithWhereWithoutUserInput | ModelAuthorUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] + export type ModelCommentLikeCreateNestedManyWithoutModelCommentInput = { + create?: XOR | ModelCommentLikeCreateWithoutModelCommentInput[] | ModelCommentLikeUncheckedCreateWithoutModelCommentInput[] + connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutModelCommentInput | ModelCommentLikeCreateOrConnectWithoutModelCommentInput[] + createMany?: ModelCommentLikeCreateManyModelCommentInputEnvelope + connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] } - export type ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput = { - create?: XOR | ModelPermissionCreateWithoutGranteeUserInput[] | ModelPermissionUncheckedCreateWithoutGranteeUserInput[] - connectOrCreate?: ModelPermissionCreateOrConnectWithoutGranteeUserInput | ModelPermissionCreateOrConnectWithoutGranteeUserInput[] - upsert?: ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput | ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput[] - createMany?: ModelPermissionCreateManyGranteeUserInputEnvelope - set?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - disconnect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - delete?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - update?: ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput | ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput[] - updateMany?: ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput | ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput[] - deleteMany?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] + export type ModelCommentUncheckedCreateNestedManyWithoutParentInput = { + create?: XOR | ModelCommentCreateWithoutParentInput[] | ModelCommentUncheckedCreateWithoutParentInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutParentInput | ModelCommentCreateOrConnectWithoutParentInput[] + createMany?: ModelCommentCreateManyParentInputEnvelope + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] } - export type EventUncheckedUpdateManyWithoutActorNestedInput = { - create?: XOR | EventCreateWithoutActorInput[] | EventUncheckedCreateWithoutActorInput[] - connectOrCreate?: EventCreateOrConnectWithoutActorInput | EventCreateOrConnectWithoutActorInput[] - upsert?: EventUpsertWithWhereUniqueWithoutActorInput | EventUpsertWithWhereUniqueWithoutActorInput[] - createMany?: EventCreateManyActorInputEnvelope - set?: EventWhereUniqueInput | EventWhereUniqueInput[] - disconnect?: EventWhereUniqueInput | EventWhereUniqueInput[] - delete?: EventWhereUniqueInput | EventWhereUniqueInput[] - connect?: EventWhereUniqueInput | EventWhereUniqueInput[] - update?: EventUpdateWithWhereUniqueWithoutActorInput | EventUpdateWithWhereUniqueWithoutActorInput[] - updateMany?: EventUpdateManyWithWhereWithoutActorInput | EventUpdateManyWithWhereWithoutActorInput[] - deleteMany?: EventScalarWhereInput | EventScalarWhereInput[] + export type ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput = { + create?: XOR | ModelCommentLikeCreateWithoutModelCommentInput[] | ModelCommentLikeUncheckedCreateWithoutModelCommentInput[] + connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutModelCommentInput | ModelCommentLikeCreateOrConnectWithoutModelCommentInput[] + createMany?: ModelCommentLikeCreateManyModelCommentInputEnvelope + connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] } - export type ModelLikeUncheckedUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelLikeCreateWithoutUserInput[] | ModelLikeUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelLikeCreateOrConnectWithoutUserInput | ModelLikeCreateOrConnectWithoutUserInput[] - upsert?: ModelLikeUpsertWithWhereUniqueWithoutUserInput | ModelLikeUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelLikeCreateManyUserInputEnvelope - set?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - disconnect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - delete?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - update?: ModelLikeUpdateWithWhereUniqueWithoutUserInput | ModelLikeUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelLikeUpdateManyWithWhereWithoutUserInput | ModelLikeUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] + export type ModelUpdateOneRequiredWithoutCommentsNestedInput = { + create?: XOR + connectOrCreate?: ModelCreateOrConnectWithoutCommentsInput + upsert?: ModelUpsertWithoutCommentsInput + connect?: ModelWhereUniqueInput + update?: XOR, ModelUncheckedUpdateWithoutCommentsInput> } - export type ModelInteractionUncheckedUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelInteractionCreateWithoutUserInput[] | ModelInteractionUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelInteractionCreateOrConnectWithoutUserInput | ModelInteractionCreateOrConnectWithoutUserInput[] - upsert?: ModelInteractionUpsertWithWhereUniqueWithoutUserInput | ModelInteractionUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelInteractionCreateManyUserInputEnvelope - set?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - disconnect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - delete?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - update?: ModelInteractionUpdateWithWhereUniqueWithoutUserInput | ModelInteractionUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelInteractionUpdateManyWithWhereWithoutUserInput | ModelInteractionUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] + export type UserUpdateOneWithoutCommentsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutCommentsInput + upsert?: UserUpsertWithoutCommentsInput + disconnect?: UserWhereInput | boolean + delete?: UserWhereInput | boolean + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutCommentsInput> } - export type ModelDraftUncheckedUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelDraftCreateWithoutUserInput[] | ModelDraftUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelDraftCreateOrConnectWithoutUserInput | ModelDraftCreateOrConnectWithoutUserInput[] - upsert?: ModelDraftUpsertWithWhereUniqueWithoutUserInput | ModelDraftUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelDraftCreateManyUserInputEnvelope - set?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - disconnect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - delete?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - update?: ModelDraftUpdateWithWhereUniqueWithoutUserInput | ModelDraftUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelDraftUpdateManyWithWhereWithoutUserInput | ModelDraftUpdateManyWithWhereWithoutUserInput[] - deleteMany?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] + export type ModelCommentUpdateOneWithoutRepliesNestedInput = { + create?: XOR + connectOrCreate?: ModelCommentCreateOrConnectWithoutRepliesInput + upsert?: ModelCommentUpsertWithoutRepliesInput + disconnect?: ModelCommentWhereInput | boolean + delete?: ModelCommentWhereInput | boolean + connect?: ModelCommentWhereUniqueInput + update?: XOR, ModelCommentUncheckedUpdateWithoutRepliesInput> } - export type ModelCommentUncheckedUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelCommentCreateWithoutUserInput[] | ModelCommentUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutUserInput | ModelCommentCreateOrConnectWithoutUserInput[] - upsert?: ModelCommentUpsertWithWhereUniqueWithoutUserInput | ModelCommentUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelCommentCreateManyUserInputEnvelope + export type ModelCommentUpdateManyWithoutParentNestedInput = { + create?: XOR | ModelCommentCreateWithoutParentInput[] | ModelCommentUncheckedCreateWithoutParentInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutParentInput | ModelCommentCreateOrConnectWithoutParentInput[] + upsert?: ModelCommentUpsertWithWhereUniqueWithoutParentInput | ModelCommentUpsertWithWhereUniqueWithoutParentInput[] + createMany?: ModelCommentCreateManyParentInputEnvelope set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - update?: ModelCommentUpdateWithWhereUniqueWithoutUserInput | ModelCommentUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelCommentUpdateManyWithWhereWithoutUserInput | ModelCommentUpdateManyWithWhereWithoutUserInput[] + update?: ModelCommentUpdateWithWhereUniqueWithoutParentInput | ModelCommentUpdateWithWhereUniqueWithoutParentInput[] + updateMany?: ModelCommentUpdateManyWithWhereWithoutParentInput | ModelCommentUpdateManyWithWhereWithoutParentInput[] deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] } - export type ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput = { - create?: XOR | ModelCommentLikeCreateWithoutUserInput[] | ModelCommentLikeUncheckedCreateWithoutUserInput[] - connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutUserInput | ModelCommentLikeCreateOrConnectWithoutUserInput[] - upsert?: ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput | ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput[] - createMany?: ModelCommentLikeCreateManyUserInputEnvelope + export type ModelCommentLikeUpdateManyWithoutModelCommentNestedInput = { + create?: XOR | ModelCommentLikeCreateWithoutModelCommentInput[] | ModelCommentLikeUncheckedCreateWithoutModelCommentInput[] + connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutModelCommentInput | ModelCommentLikeCreateOrConnectWithoutModelCommentInput[] + upsert?: ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput | ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput[] + createMany?: ModelCommentLikeCreateManyModelCommentInputEnvelope set?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] disconnect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] delete?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - update?: ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput | ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: ModelCommentLikeUpdateManyWithWhereWithoutUserInput | ModelCommentLikeUpdateManyWithWhereWithoutUserInput[] + update?: ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput | ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput[] + updateMany?: ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput | ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput[] deleteMany?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] } - export type PasskeyUncheckedUpdateManyWithoutUserNestedInput = { - create?: XOR | PasskeyCreateWithoutUserInput[] | PasskeyUncheckedCreateWithoutUserInput[] - connectOrCreate?: PasskeyCreateOrConnectWithoutUserInput | PasskeyCreateOrConnectWithoutUserInput[] - upsert?: PasskeyUpsertWithWhereUniqueWithoutUserInput | PasskeyUpsertWithWhereUniqueWithoutUserInput[] - createMany?: PasskeyCreateManyUserInputEnvelope - set?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] - disconnect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] - delete?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] - connect?: PasskeyWhereUniqueInput | PasskeyWhereUniqueInput[] - update?: PasskeyUpdateWithWhereUniqueWithoutUserInput | PasskeyUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: PasskeyUpdateManyWithWhereWithoutUserInput | PasskeyUpdateManyWithWhereWithoutUserInput[] - deleteMany?: PasskeyScalarWhereInput | PasskeyScalarWhereInput[] + export type ModelCommentUncheckedUpdateManyWithoutParentNestedInput = { + create?: XOR | ModelCommentCreateWithoutParentInput[] | ModelCommentUncheckedCreateWithoutParentInput[] + connectOrCreate?: ModelCommentCreateOrConnectWithoutParentInput | ModelCommentCreateOrConnectWithoutParentInput[] + upsert?: ModelCommentUpsertWithWhereUniqueWithoutParentInput | ModelCommentUpsertWithWhereUniqueWithoutParentInput[] + createMany?: ModelCommentCreateManyParentInputEnvelope + set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + update?: ModelCommentUpdateWithWhereUniqueWithoutParentInput | ModelCommentUpdateWithWhereUniqueWithoutParentInput[] + updateMany?: ModelCommentUpdateManyWithWhereWithoutParentInput | ModelCommentUpdateManyWithWhereWithoutParentInput[] + deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] } - export type UserCreateNestedOneWithoutAccountsInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutAccountsInput - connect?: UserWhereUniqueInput + export type ModelCommentLikeUncheckedUpdateManyWithoutModelCommentNestedInput = { + create?: XOR | ModelCommentLikeCreateWithoutModelCommentInput[] | ModelCommentLikeUncheckedCreateWithoutModelCommentInput[] + connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutModelCommentInput | ModelCommentLikeCreateOrConnectWithoutModelCommentInput[] + upsert?: ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput | ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput[] + createMany?: ModelCommentLikeCreateManyModelCommentInputEnvelope + set?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + disconnect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + delete?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + update?: ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput | ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput[] + updateMany?: ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput | ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput[] + deleteMany?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] } - export type UserUpdateOneRequiredWithoutAccountsNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutAccountsInput - upsert?: UserUpsertWithoutAccountsInput - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutAccountsInput> + export type ModelCommentCreateNestedOneWithoutLikesInput = { + create?: XOR + connectOrCreate?: ModelCommentCreateOrConnectWithoutLikesInput + connect?: ModelCommentWhereUniqueInput } - export type UserCreateNestedOneWithoutSessionsInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutSessionsInput + export type UserCreateNestedOneWithoutCommentLikesInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutCommentLikesInput connect?: UserWhereUniqueInput } - export type UserUpdateOneRequiredWithoutSessionsNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutSessionsInput - upsert?: UserUpsertWithoutSessionsInput - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutSessionsInput> + export type ModelCommentUpdateOneRequiredWithoutLikesNestedInput = { + create?: XOR + connectOrCreate?: ModelCommentCreateOrConnectWithoutLikesInput + upsert?: ModelCommentUpsertWithoutLikesInput + connect?: ModelCommentWhereUniqueInput + update?: XOR, ModelCommentUncheckedUpdateWithoutLikesInput> } - export type UserCreateNestedOneWithoutVerificationsInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutVerificationsInput + export type UserUpdateOneRequiredWithoutCommentLikesNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutCommentLikesInput + upsert?: UserUpsertWithoutCommentLikesInput connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutCommentLikesInput> } - export type UserUpdateOneWithoutVerificationsNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutVerificationsInput - upsert?: UserUpsertWithoutVerificationsInput - disconnect?: UserWhereInput | boolean - delete?: UserWhereInput | boolean + export type UserCreateNestedOneWithoutEventsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutEventsInput connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutVerificationsInput> } - export type UserCreateNestedOneWithoutPasskeysInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutPasskeysInput - connect?: UserWhereUniqueInput + export type UserNotificationCreateNestedManyWithoutEventInput = { + create?: XOR | UserNotificationCreateWithoutEventInput[] | UserNotificationUncheckedCreateWithoutEventInput[] + connectOrCreate?: UserNotificationCreateOrConnectWithoutEventInput | UserNotificationCreateOrConnectWithoutEventInput[] + createMany?: UserNotificationCreateManyEventInputEnvelope + connect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] } - export type IntFieldUpdateOperationsInput = { - set?: number - increment?: number - decrement?: number - multiply?: number - divide?: number + export type UserNotificationUncheckedCreateNestedManyWithoutEventInput = { + create?: XOR | UserNotificationCreateWithoutEventInput[] | UserNotificationUncheckedCreateWithoutEventInput[] + connectOrCreate?: UserNotificationCreateOrConnectWithoutEventInput | UserNotificationCreateOrConnectWithoutEventInput[] + createMany?: UserNotificationCreateManyEventInputEnvelope + connect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] } - export type UserUpdateOneRequiredWithoutPasskeysNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutPasskeysInput - upsert?: UserUpsertWithoutPasskeysInput + export type UserUpdateOneRequiredWithoutEventsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutEventsInput + upsert?: UserUpsertWithoutEventsInput connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutPasskeysInput> - } - - export type ModelVersionCreateNestedOneWithoutLatestOfModelInput = { - create?: XOR - connectOrCreate?: ModelVersionCreateOrConnectWithoutLatestOfModelInput - connect?: ModelVersionWhereUniqueInput - } - - export type ModelCreateNestedOneWithoutChildModelsInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutChildModelsInput - connect?: ModelWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutEventsInput> } - export type ModelCreateNestedManyWithoutParentModelInput = { - create?: XOR | ModelCreateWithoutParentModelInput[] | ModelUncheckedCreateWithoutParentModelInput[] - connectOrCreate?: ModelCreateOrConnectWithoutParentModelInput | ModelCreateOrConnectWithoutParentModelInput[] - createMany?: ModelCreateManyParentModelInputEnvelope - connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + export type UserNotificationUpdateManyWithoutEventNestedInput = { + create?: XOR | UserNotificationCreateWithoutEventInput[] | UserNotificationUncheckedCreateWithoutEventInput[] + connectOrCreate?: UserNotificationCreateOrConnectWithoutEventInput | UserNotificationCreateOrConnectWithoutEventInput[] + upsert?: UserNotificationUpsertWithWhereUniqueWithoutEventInput | UserNotificationUpsertWithWhereUniqueWithoutEventInput[] + createMany?: UserNotificationCreateManyEventInputEnvelope + set?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + disconnect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + delete?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + connect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + update?: UserNotificationUpdateWithWhereUniqueWithoutEventInput | UserNotificationUpdateWithWhereUniqueWithoutEventInput[] + updateMany?: UserNotificationUpdateManyWithWhereWithoutEventInput | UserNotificationUpdateManyWithWhereWithoutEventInput[] + deleteMany?: UserNotificationScalarWhereInput | UserNotificationScalarWhereInput[] + } + + export type UserNotificationUncheckedUpdateManyWithoutEventNestedInput = { + create?: XOR | UserNotificationCreateWithoutEventInput[] | UserNotificationUncheckedCreateWithoutEventInput[] + connectOrCreate?: UserNotificationCreateOrConnectWithoutEventInput | UserNotificationCreateOrConnectWithoutEventInput[] + upsert?: UserNotificationUpsertWithWhereUniqueWithoutEventInput | UserNotificationUpsertWithWhereUniqueWithoutEventInput[] + createMany?: UserNotificationCreateManyEventInputEnvelope + set?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + disconnect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + delete?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + connect?: UserNotificationWhereUniqueInput | UserNotificationWhereUniqueInput[] + update?: UserNotificationUpdateWithWhereUniqueWithoutEventInput | UserNotificationUpdateWithWhereUniqueWithoutEventInput[] + updateMany?: UserNotificationUpdateManyWithWhereWithoutEventInput | UserNotificationUpdateManyWithWhereWithoutEventInput[] + deleteMany?: UserNotificationScalarWhereInput | UserNotificationScalarWhereInput[] + } + + export type UserCreateNestedOneWithoutNotificationsInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutNotificationsInput + connect?: UserWhereUniqueInput } - export type ModelVersionCreateNestedOneWithoutParentOfModelsInput = { - create?: XOR - connectOrCreate?: ModelVersionCreateOrConnectWithoutParentOfModelsInput - connect?: ModelVersionWhereUniqueInput + export type EventCreateNestedOneWithoutNotificationsInput = { + create?: XOR + connectOrCreate?: EventCreateOrConnectWithoutNotificationsInput + connect?: EventWhereUniqueInput } - export type ModelVersionCreateNestedManyWithoutModelInput = { - create?: XOR | ModelVersionCreateWithoutModelInput[] | ModelVersionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelVersionCreateOrConnectWithoutModelInput | ModelVersionCreateOrConnectWithoutModelInput[] - createMany?: ModelVersionCreateManyModelInputEnvelope - connect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + export type UserUpdateOneRequiredWithoutNotificationsNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutNotificationsInput + upsert?: UserUpsertWithoutNotificationsInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutNotificationsInput> } - export type ModelAuthorCreateNestedManyWithoutModelInput = { - create?: XOR | ModelAuthorCreateWithoutModelInput[] | ModelAuthorUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelAuthorCreateOrConnectWithoutModelInput | ModelAuthorCreateOrConnectWithoutModelInput[] - createMany?: ModelAuthorCreateManyModelInputEnvelope - connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + export type EventUpdateOneRequiredWithoutNotificationsNestedInput = { + create?: XOR + connectOrCreate?: EventCreateOrConnectWithoutNotificationsInput + upsert?: EventUpsertWithoutNotificationsInput + connect?: EventWhereUniqueInput + update?: XOR, EventUncheckedUpdateWithoutNotificationsInput> } - export type ModelPermissionCreateNestedManyWithoutModelInput = { - create?: XOR | ModelPermissionCreateWithoutModelInput[] | ModelPermissionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelPermissionCreateOrConnectWithoutModelInput | ModelPermissionCreateOrConnectWithoutModelInput[] - createMany?: ModelPermissionCreateManyModelInputEnvelope - connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + export type UserCreateNestedOneWithoutNotificationPreferencesInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutNotificationPreferencesInput + connect?: UserWhereUniqueInput } - export type ModelAdditionalFileCreateNestedManyWithoutModelInput = { - create?: XOR | ModelAdditionalFileCreateWithoutModelInput[] | ModelAdditionalFileUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutModelInput | ModelAdditionalFileCreateOrConnectWithoutModelInput[] - createMany?: ModelAdditionalFileCreateManyModelInputEnvelope - connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + export type UserUpdateOneRequiredWithoutNotificationPreferencesNestedInput = { + create?: XOR + connectOrCreate?: UserCreateOrConnectWithoutNotificationPreferencesInput + upsert?: UserUpsertWithoutNotificationPreferencesInput + connect?: UserWhereUniqueInput + update?: XOR, UserUncheckedUpdateWithoutNotificationPreferencesInput> } - export type ModelLikeCreateNestedManyWithoutModelInput = { - create?: XOR | ModelLikeCreateWithoutModelInput[] | ModelLikeUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelLikeCreateOrConnectWithoutModelInput | ModelLikeCreateOrConnectWithoutModelInput[] - createMany?: ModelLikeCreateManyModelInputEnvelope - connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + export type NestedStringFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] | ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> + 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 ModelInteractionCreateNestedManyWithoutModelInput = { - create?: XOR | ModelInteractionCreateWithoutModelInput[] | ModelInteractionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelInteractionCreateOrConnectWithoutModelInput | ModelInteractionCreateOrConnectWithoutModelInput[] - createMany?: ModelInteractionCreateManyModelInputEnvelope - connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + export type NestedStringNullableFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | 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 ModelDraftCreateNestedManyWithoutModelInput = { - create?: XOR | ModelDraftCreateWithoutModelInput[] | ModelDraftUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelDraftCreateOrConnectWithoutModelInput | ModelDraftCreateOrConnectWithoutModelInput[] - createMany?: ModelDraftCreateManyModelInputEnvelope - connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + export type NestedBoolFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolFilter<$PrismaModel> | boolean } - export type ModelCommentCreateNestedManyWithoutModelInput = { - create?: XOR | ModelCommentCreateWithoutModelInput[] | ModelCommentUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutModelInput | ModelCommentCreateOrConnectWithoutModelInput[] - createMany?: ModelCommentCreateManyModelInputEnvelope - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + export type NestedDateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + 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 ModelUncheckedCreateNestedManyWithoutParentModelInput = { - create?: XOR | ModelCreateWithoutParentModelInput[] | ModelUncheckedCreateWithoutParentModelInput[] - connectOrCreate?: ModelCreateOrConnectWithoutParentModelInput | ModelCreateOrConnectWithoutParentModelInput[] - createMany?: ModelCreateManyParentModelInputEnvelope - connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + export type NestedEnumSystemRoleFilter<$PrismaModel = never> = { + equals?: $Enums.SystemRole | EnumSystemRoleFieldRefInput<$PrismaModel> + in?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> + notIn?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> + not?: NestedEnumSystemRoleFilter<$PrismaModel> | $Enums.SystemRole } - export type ModelVersionUncheckedCreateNestedManyWithoutModelInput = { - create?: XOR | ModelVersionCreateWithoutModelInput[] | ModelVersionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelVersionCreateOrConnectWithoutModelInput | ModelVersionCreateOrConnectWithoutModelInput[] - createMany?: ModelVersionCreateManyModelInputEnvelope - connect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] + export type NestedEnumUserKindFilter<$PrismaModel = never> = { + equals?: $Enums.UserKind | EnumUserKindFieldRefInput<$PrismaModel> + in?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> + notIn?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> + not?: NestedEnumUserKindFilter<$PrismaModel> | $Enums.UserKind } - export type ModelAuthorUncheckedCreateNestedManyWithoutModelInput = { - create?: XOR | ModelAuthorCreateWithoutModelInput[] | ModelAuthorUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelAuthorCreateOrConnectWithoutModelInput | ModelAuthorCreateOrConnectWithoutModelInput[] - createMany?: ModelAuthorCreateManyModelInputEnvelope - connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] + export type NestedDateTimeNullableFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null } - export type ModelPermissionUncheckedCreateNestedManyWithoutModelInput = { - create?: XOR | ModelPermissionCreateWithoutModelInput[] | ModelPermissionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelPermissionCreateOrConnectWithoutModelInput | ModelPermissionCreateOrConnectWithoutModelInput[] - createMany?: ModelPermissionCreateManyModelInputEnvelope - connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] + export type NestedBoolNullableFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null + not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null } - export type ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput = { - create?: XOR | ModelAdditionalFileCreateWithoutModelInput[] | ModelAdditionalFileUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutModelInput | ModelAdditionalFileCreateOrConnectWithoutModelInput[] - createMany?: ModelAdditionalFileCreateManyModelInputEnvelope - connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + export type NestedIntNullableFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntNullableFilter<$PrismaModel> | number | null } - export type ModelLikeUncheckedCreateNestedManyWithoutModelInput = { - create?: XOR | ModelLikeCreateWithoutModelInput[] | ModelLikeUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelLikeCreateOrConnectWithoutModelInput | ModelLikeCreateOrConnectWithoutModelInput[] - createMany?: ModelLikeCreateManyModelInputEnvelope - connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] + export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> + in?: string[] | ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> + 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 ModelInteractionUncheckedCreateNestedManyWithoutModelInput = { - create?: XOR | ModelInteractionCreateWithoutModelInput[] | ModelInteractionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelInteractionCreateOrConnectWithoutModelInput | ModelInteractionCreateOrConnectWithoutModelInput[] - createMany?: ModelInteractionCreateManyModelInputEnvelope - connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] + export type NestedIntFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> + in?: number[] | ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntFilter<$PrismaModel> | number } - export type ModelDraftUncheckedCreateNestedManyWithoutModelInput = { - create?: XOR | ModelDraftCreateWithoutModelInput[] | ModelDraftUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelDraftCreateOrConnectWithoutModelInput | ModelDraftCreateOrConnectWithoutModelInput[] - createMany?: ModelDraftCreateManyModelInputEnvelope - connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] + export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | 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 ModelCommentUncheckedCreateNestedManyWithoutModelInput = { - create?: XOR | ModelCommentCreateWithoutModelInput[] | ModelCommentUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutModelInput | ModelCommentCreateOrConnectWithoutModelInput[] - createMany?: ModelCommentCreateManyModelInputEnvelope - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedBoolFilter<$PrismaModel> + _max?: NestedBoolFilter<$PrismaModel> } - export type EnumModelVisibilityFieldUpdateOperationsInput = { - set?: $Enums.ModelVisibility + export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + 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 ModelVersionUpdateOneWithoutLatestOfModelNestedInput = { - create?: XOR - connectOrCreate?: ModelVersionCreateOrConnectWithoutLatestOfModelInput - upsert?: ModelVersionUpsertWithoutLatestOfModelInput - disconnect?: ModelVersionWhereInput | boolean - delete?: ModelVersionWhereInput | boolean - connect?: ModelVersionWhereUniqueInput - update?: XOR, ModelVersionUncheckedUpdateWithoutLatestOfModelInput> + export type NestedEnumSystemRoleWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.SystemRole | EnumSystemRoleFieldRefInput<$PrismaModel> + in?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> + notIn?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> + not?: NestedEnumSystemRoleWithAggregatesFilter<$PrismaModel> | $Enums.SystemRole + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumSystemRoleFilter<$PrismaModel> + _max?: NestedEnumSystemRoleFilter<$PrismaModel> } - export type ModelUpdateOneWithoutChildModelsNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutChildModelsInput - upsert?: ModelUpsertWithoutChildModelsInput - disconnect?: ModelWhereInput | boolean - delete?: ModelWhereInput | boolean - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutChildModelsInput> + export type NestedEnumUserKindWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.UserKind | EnumUserKindFieldRefInput<$PrismaModel> + in?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> + notIn?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> + not?: NestedEnumUserKindWithAggregatesFilter<$PrismaModel> | $Enums.UserKind + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumUserKindFilter<$PrismaModel> + _max?: NestedEnumUserKindFilter<$PrismaModel> } - export type ModelUpdateManyWithoutParentModelNestedInput = { - create?: XOR | ModelCreateWithoutParentModelInput[] | ModelUncheckedCreateWithoutParentModelInput[] - connectOrCreate?: ModelCreateOrConnectWithoutParentModelInput | ModelCreateOrConnectWithoutParentModelInput[] - upsert?: ModelUpsertWithWhereUniqueWithoutParentModelInput | ModelUpsertWithWhereUniqueWithoutParentModelInput[] - createMany?: ModelCreateManyParentModelInputEnvelope - set?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - disconnect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - delete?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - update?: ModelUpdateWithWhereUniqueWithoutParentModelInput | ModelUpdateWithWhereUniqueWithoutParentModelInput[] - updateMany?: ModelUpdateManyWithWhereWithoutParentModelInput | ModelUpdateManyWithWhereWithoutParentModelInput[] - deleteMany?: ModelScalarWhereInput | ModelScalarWhereInput[] + export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedDateTimeNullableFilter<$PrismaModel> + _max?: NestedDateTimeNullableFilter<$PrismaModel> } + export type NestedJsonNullableFilter<$PrismaModel = never> = + | PatchUndefined< + Either>, Exclude>, 'path'>>, + Required> + > + | OptionalFlat>, 'path'>> - export type ModelVersionUpdateOneWithoutParentOfModelsNestedInput = { - create?: XOR - connectOrCreate?: ModelVersionCreateOrConnectWithoutParentOfModelsInput - upsert?: ModelVersionUpsertWithoutParentOfModelsInput - disconnect?: ModelVersionWhereInput | boolean - delete?: ModelVersionWhereInput | boolean - connect?: ModelVersionWhereUniqueInput - update?: XOR, ModelVersionUncheckedUpdateWithoutParentOfModelsInput> + export type NestedJsonNullableFilterBase<$PrismaModel = never> = { + equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + path?: string[] + mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | StringFieldRefInput<$PrismaModel> + string_starts_with?: string | StringFieldRefInput<$PrismaModel> + string_ends_with?: string | StringFieldRefInput<$PrismaModel> + array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter } - export type ModelVersionUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelVersionCreateWithoutModelInput[] | ModelVersionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelVersionCreateOrConnectWithoutModelInput | ModelVersionCreateOrConnectWithoutModelInput[] - upsert?: ModelVersionUpsertWithWhereUniqueWithoutModelInput | ModelVersionUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelVersionCreateManyModelInputEnvelope - set?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] - disconnect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] - delete?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] - connect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] - update?: ModelVersionUpdateWithWhereUniqueWithoutModelInput | ModelVersionUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelVersionUpdateManyWithWhereWithoutModelInput | ModelVersionUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelVersionScalarWhereInput | ModelVersionScalarWhereInput[] + export type NestedBoolNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null + not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null + _count?: NestedIntNullableFilter<$PrismaModel> + _min?: NestedBoolNullableFilter<$PrismaModel> + _max?: NestedBoolNullableFilter<$PrismaModel> } - export type ModelAuthorUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelAuthorCreateWithoutModelInput[] | ModelAuthorUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelAuthorCreateOrConnectWithoutModelInput | ModelAuthorCreateOrConnectWithoutModelInput[] - upsert?: ModelAuthorUpsertWithWhereUniqueWithoutModelInput | ModelAuthorUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelAuthorCreateManyModelInputEnvelope - set?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - disconnect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - delete?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - update?: ModelAuthorUpdateWithWhereUniqueWithoutModelInput | ModelAuthorUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelAuthorUpdateManyWithWhereWithoutModelInput | ModelAuthorUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] + export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> | null + in?: number[] | ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | 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 ModelPermissionUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelPermissionCreateWithoutModelInput[] | ModelPermissionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelPermissionCreateOrConnectWithoutModelInput | ModelPermissionCreateOrConnectWithoutModelInput[] - upsert?: ModelPermissionUpsertWithWhereUniqueWithoutModelInput | ModelPermissionUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelPermissionCreateManyModelInputEnvelope - set?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - disconnect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - delete?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - update?: ModelPermissionUpdateWithWhereUniqueWithoutModelInput | ModelPermissionUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelPermissionUpdateManyWithWhereWithoutModelInput | ModelPermissionUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] + export type NestedFloatNullableFilter<$PrismaModel = never> = { + equals?: number | FloatFieldRefInput<$PrismaModel> | null + in?: number[] | ListFloatFieldRefInput<$PrismaModel> | null + notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> | null + lt?: number | FloatFieldRefInput<$PrismaModel> + lte?: number | FloatFieldRefInput<$PrismaModel> + gt?: number | FloatFieldRefInput<$PrismaModel> + gte?: number | FloatFieldRefInput<$PrismaModel> + not?: NestedFloatNullableFilter<$PrismaModel> | number | null } - export type ModelAdditionalFileUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelAdditionalFileCreateWithoutModelInput[] | ModelAdditionalFileUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutModelInput | ModelAdditionalFileCreateOrConnectWithoutModelInput[] - upsert?: ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput | ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelAdditionalFileCreateManyModelInputEnvelope - set?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - disconnect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - delete?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - update?: ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput | ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelAdditionalFileUpdateManyWithWhereWithoutModelInput | ModelAdditionalFileUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] + export type NestedIntWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | IntFieldRefInput<$PrismaModel> + in?: number[] | ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | ListIntFieldRefInput<$PrismaModel> + lt?: number | IntFieldRefInput<$PrismaModel> + lte?: number | IntFieldRefInput<$PrismaModel> + gt?: number | IntFieldRefInput<$PrismaModel> + gte?: number | IntFieldRefInput<$PrismaModel> + not?: NestedIntWithAggregatesFilter<$PrismaModel> | number + _count?: NestedIntFilter<$PrismaModel> + _avg?: NestedFloatFilter<$PrismaModel> + _sum?: NestedIntFilter<$PrismaModel> + _min?: NestedIntFilter<$PrismaModel> + _max?: NestedIntFilter<$PrismaModel> } - export type ModelLikeUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelLikeCreateWithoutModelInput[] | ModelLikeUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelLikeCreateOrConnectWithoutModelInput | ModelLikeCreateOrConnectWithoutModelInput[] - upsert?: ModelLikeUpsertWithWhereUniqueWithoutModelInput | ModelLikeUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelLikeCreateManyModelInputEnvelope - set?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - disconnect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - delete?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - update?: ModelLikeUpdateWithWhereUniqueWithoutModelInput | ModelLikeUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelLikeUpdateManyWithWhereWithoutModelInput | ModelLikeUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] + export type NestedFloatFilter<$PrismaModel = never> = { + equals?: number | FloatFieldRefInput<$PrismaModel> + in?: number[] | ListFloatFieldRefInput<$PrismaModel> + notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> + lt?: number | FloatFieldRefInput<$PrismaModel> + lte?: number | FloatFieldRefInput<$PrismaModel> + gt?: number | FloatFieldRefInput<$PrismaModel> + gte?: number | FloatFieldRefInput<$PrismaModel> + not?: NestedFloatFilter<$PrismaModel> | number } - export type ModelInteractionUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelInteractionCreateWithoutModelInput[] | ModelInteractionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelInteractionCreateOrConnectWithoutModelInput | ModelInteractionCreateOrConnectWithoutModelInput[] - upsert?: ModelInteractionUpsertWithWhereUniqueWithoutModelInput | ModelInteractionUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelInteractionCreateManyModelInputEnvelope - set?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - disconnect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - delete?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - update?: ModelInteractionUpdateWithWhereUniqueWithoutModelInput | ModelInteractionUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelInteractionUpdateManyWithWhereWithoutModelInput | ModelInteractionUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] + export type NestedEnumModelVisibilityFilter<$PrismaModel = never> = { + equals?: $Enums.ModelVisibility | EnumModelVisibilityFieldRefInput<$PrismaModel> + in?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> + not?: NestedEnumModelVisibilityFilter<$PrismaModel> | $Enums.ModelVisibility } - export type ModelDraftUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelDraftCreateWithoutModelInput[] | ModelDraftUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelDraftCreateOrConnectWithoutModelInput | ModelDraftCreateOrConnectWithoutModelInput[] - upsert?: ModelDraftUpsertWithWhereUniqueWithoutModelInput | ModelDraftUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelDraftCreateManyModelInputEnvelope - set?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - disconnect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - delete?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - update?: ModelDraftUpdateWithWhereUniqueWithoutModelInput | ModelDraftUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelDraftUpdateManyWithWhereWithoutModelInput | ModelDraftUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] + export type NestedEnumModelVisibilityWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.ModelVisibility | EnumModelVisibilityFieldRefInput<$PrismaModel> + in?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> + not?: NestedEnumModelVisibilityWithAggregatesFilter<$PrismaModel> | $Enums.ModelVisibility + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumModelVisibilityFilter<$PrismaModel> + _max?: NestedEnumModelVisibilityFilter<$PrismaModel> } - export type ModelCommentUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelCommentCreateWithoutModelInput[] | ModelCommentUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutModelInput | ModelCommentCreateOrConnectWithoutModelInput[] - upsert?: ModelCommentUpsertWithWhereUniqueWithoutModelInput | ModelCommentUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelCommentCreateManyModelInputEnvelope - set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - update?: ModelCommentUpdateWithWhereUniqueWithoutModelInput | ModelCommentUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelCommentUpdateManyWithWhereWithoutModelInput | ModelCommentUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] + export type NestedEnumModelFileKindFilter<$PrismaModel = never> = { + equals?: $Enums.ModelFileKind | EnumModelFileKindFieldRefInput<$PrismaModel> + in?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> + not?: NestedEnumModelFileKindFilter<$PrismaModel> | $Enums.ModelFileKind } - export type ModelUncheckedUpdateManyWithoutParentModelNestedInput = { - create?: XOR | ModelCreateWithoutParentModelInput[] | ModelUncheckedCreateWithoutParentModelInput[] - connectOrCreate?: ModelCreateOrConnectWithoutParentModelInput | ModelCreateOrConnectWithoutParentModelInput[] - upsert?: ModelUpsertWithWhereUniqueWithoutParentModelInput | ModelUpsertWithWhereUniqueWithoutParentModelInput[] - createMany?: ModelCreateManyParentModelInputEnvelope - set?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - disconnect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - delete?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - update?: ModelUpdateWithWhereUniqueWithoutParentModelInput | ModelUpdateWithWhereUniqueWithoutParentModelInput[] - updateMany?: ModelUpdateManyWithWhereWithoutParentModelInput | ModelUpdateManyWithWhereWithoutParentModelInput[] - deleteMany?: ModelScalarWhereInput | ModelScalarWhereInput[] + export type NestedEnumModelFileKindWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.ModelFileKind | EnumModelFileKindFieldRefInput<$PrismaModel> + in?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> + not?: NestedEnumModelFileKindWithAggregatesFilter<$PrismaModel> | $Enums.ModelFileKind + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumModelFileKindFilter<$PrismaModel> + _max?: NestedEnumModelFileKindFilter<$PrismaModel> } - export type ModelVersionUncheckedUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelVersionCreateWithoutModelInput[] | ModelVersionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelVersionCreateOrConnectWithoutModelInput | ModelVersionCreateOrConnectWithoutModelInput[] - upsert?: ModelVersionUpsertWithWhereUniqueWithoutModelInput | ModelVersionUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelVersionCreateManyModelInputEnvelope - set?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] - disconnect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] - delete?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] - connect?: ModelVersionWhereUniqueInput | ModelVersionWhereUniqueInput[] - update?: ModelVersionUpdateWithWhereUniqueWithoutModelInput | ModelVersionUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelVersionUpdateManyWithWhereWithoutModelInput | ModelVersionUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelVersionScalarWhereInput | ModelVersionScalarWhereInput[] + export type NestedEnumAuthorRoleFilter<$PrismaModel = never> = { + equals?: $Enums.AuthorRole | EnumAuthorRoleFieldRefInput<$PrismaModel> + in?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> + notIn?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> + not?: NestedEnumAuthorRoleFilter<$PrismaModel> | $Enums.AuthorRole } - export type ModelAuthorUncheckedUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelAuthorCreateWithoutModelInput[] | ModelAuthorUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelAuthorCreateOrConnectWithoutModelInput | ModelAuthorCreateOrConnectWithoutModelInput[] - upsert?: ModelAuthorUpsertWithWhereUniqueWithoutModelInput | ModelAuthorUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelAuthorCreateManyModelInputEnvelope - set?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - disconnect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - delete?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - connect?: ModelAuthorWhereUniqueInput | ModelAuthorWhereUniqueInput[] - update?: ModelAuthorUpdateWithWhereUniqueWithoutModelInput | ModelAuthorUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelAuthorUpdateManyWithWhereWithoutModelInput | ModelAuthorUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] + export type NestedEnumAuthorRoleWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.AuthorRole | EnumAuthorRoleFieldRefInput<$PrismaModel> + in?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> + notIn?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> + not?: NestedEnumAuthorRoleWithAggregatesFilter<$PrismaModel> | $Enums.AuthorRole + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumAuthorRoleFilter<$PrismaModel> + _max?: NestedEnumAuthorRoleFilter<$PrismaModel> } - export type ModelPermissionUncheckedUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelPermissionCreateWithoutModelInput[] | ModelPermissionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelPermissionCreateOrConnectWithoutModelInput | ModelPermissionCreateOrConnectWithoutModelInput[] - upsert?: ModelPermissionUpsertWithWhereUniqueWithoutModelInput | ModelPermissionUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelPermissionCreateManyModelInputEnvelope - set?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - disconnect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - delete?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - connect?: ModelPermissionWhereUniqueInput | ModelPermissionWhereUniqueInput[] - update?: ModelPermissionUpdateWithWhereUniqueWithoutModelInput | ModelPermissionUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelPermissionUpdateManyWithWhereWithoutModelInput | ModelPermissionUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] + export type NestedEnumPermissionLevelFilter<$PrismaModel = never> = { + equals?: $Enums.PermissionLevel | EnumPermissionLevelFieldRefInput<$PrismaModel> + in?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> + notIn?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> + not?: NestedEnumPermissionLevelFilter<$PrismaModel> | $Enums.PermissionLevel } - export type ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelAdditionalFileCreateWithoutModelInput[] | ModelAdditionalFileUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutModelInput | ModelAdditionalFileCreateOrConnectWithoutModelInput[] - upsert?: ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput | ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelAdditionalFileCreateManyModelInputEnvelope - set?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - disconnect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - delete?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - update?: ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput | ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelAdditionalFileUpdateManyWithWhereWithoutModelInput | ModelAdditionalFileUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] + export type NestedEnumPermissionLevelWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.PermissionLevel | EnumPermissionLevelFieldRefInput<$PrismaModel> + in?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> + notIn?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> + not?: NestedEnumPermissionLevelWithAggregatesFilter<$PrismaModel> | $Enums.PermissionLevel + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumPermissionLevelFilter<$PrismaModel> + _max?: NestedEnumPermissionLevelFilter<$PrismaModel> } - export type ModelLikeUncheckedUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelLikeCreateWithoutModelInput[] | ModelLikeUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelLikeCreateOrConnectWithoutModelInput | ModelLikeCreateOrConnectWithoutModelInput[] - upsert?: ModelLikeUpsertWithWhereUniqueWithoutModelInput | ModelLikeUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelLikeCreateManyModelInputEnvelope - set?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - disconnect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - delete?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - connect?: ModelLikeWhereUniqueInput | ModelLikeWhereUniqueInput[] - update?: ModelLikeUpdateWithWhereUniqueWithoutModelInput | ModelLikeUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelLikeUpdateManyWithWhereWithoutModelInput | ModelLikeUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] + export type NestedEnumModelInteractionKindFilter<$PrismaModel = never> = { + equals?: $Enums.ModelInteractionKind | EnumModelInteractionKindFieldRefInput<$PrismaModel> + in?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> + not?: NestedEnumModelInteractionKindFilter<$PrismaModel> | $Enums.ModelInteractionKind } - export type ModelInteractionUncheckedUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelInteractionCreateWithoutModelInput[] | ModelInteractionUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelInteractionCreateOrConnectWithoutModelInput | ModelInteractionCreateOrConnectWithoutModelInput[] - upsert?: ModelInteractionUpsertWithWhereUniqueWithoutModelInput | ModelInteractionUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelInteractionCreateManyModelInputEnvelope - set?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - disconnect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - delete?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - connect?: ModelInteractionWhereUniqueInput | ModelInteractionWhereUniqueInput[] - update?: ModelInteractionUpdateWithWhereUniqueWithoutModelInput | ModelInteractionUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelInteractionUpdateManyWithWhereWithoutModelInput | ModelInteractionUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] + export type NestedEnumModelInteractionKindWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.ModelInteractionKind | EnumModelInteractionKindFieldRefInput<$PrismaModel> + in?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> + notIn?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> + not?: NestedEnumModelInteractionKindWithAggregatesFilter<$PrismaModel> | $Enums.ModelInteractionKind + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumModelInteractionKindFilter<$PrismaModel> + _max?: NestedEnumModelInteractionKindFilter<$PrismaModel> } + export type NestedJsonFilter<$PrismaModel = never> = + | PatchUndefined< + Either>, Exclude>, 'path'>>, + Required> + > + | OptionalFlat>, 'path'>> - export type ModelDraftUncheckedUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelDraftCreateWithoutModelInput[] | ModelDraftUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelDraftCreateOrConnectWithoutModelInput | ModelDraftCreateOrConnectWithoutModelInput[] - upsert?: ModelDraftUpsertWithWhereUniqueWithoutModelInput | ModelDraftUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelDraftCreateManyModelInputEnvelope - set?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - disconnect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - delete?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - connect?: ModelDraftWhereUniqueInput | ModelDraftWhereUniqueInput[] - update?: ModelDraftUpdateWithWhereUniqueWithoutModelInput | ModelDraftUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelDraftUpdateManyWithWhereWithoutModelInput | ModelDraftUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] + export type NestedJsonFilterBase<$PrismaModel = never> = { + equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + path?: string[] + mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | StringFieldRefInput<$PrismaModel> + string_starts_with?: string | StringFieldRefInput<$PrismaModel> + string_ends_with?: string | StringFieldRefInput<$PrismaModel> + array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter } - export type ModelCommentUncheckedUpdateManyWithoutModelNestedInput = { - create?: XOR | ModelCommentCreateWithoutModelInput[] | ModelCommentUncheckedCreateWithoutModelInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutModelInput | ModelCommentCreateOrConnectWithoutModelInput[] - upsert?: ModelCommentUpsertWithWhereUniqueWithoutModelInput | ModelCommentUpsertWithWhereUniqueWithoutModelInput[] - createMany?: ModelCommentCreateManyModelInputEnvelope - set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - update?: ModelCommentUpdateWithWhereUniqueWithoutModelInput | ModelCommentUpdateWithWhereUniqueWithoutModelInput[] - updateMany?: ModelCommentUpdateManyWithWhereWithoutModelInput | ModelCommentUpdateManyWithWhereWithoutModelInput[] - deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] + export type AccountCreateWithoutUserInput = { + id?: string + accountId: string + providerId: string + accessToken?: string | null + refreshToken?: string | null + accessTokenExpiresAt?: Date | string | null + refreshTokenExpiresAt?: Date | string | null + scope?: string | null + idToken?: string | null + password?: string | null + createdAt?: Date | string + updatedAt?: Date | string } - export type ModelCreateNestedOneWithoutVersionsInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutVersionsInput - connect?: ModelWhereUniqueInput + export type AccountUncheckedCreateWithoutUserInput = { + id?: string + accountId: string + providerId: string + accessToken?: string | null + refreshToken?: string | null + accessTokenExpiresAt?: Date | string | null + refreshTokenExpiresAt?: Date | string | null + scope?: string | null + idToken?: string | null + password?: string | null + createdAt?: Date | string + updatedAt?: Date | string } - export type ModelCreateNestedOneWithoutLatestVersionInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutLatestVersionInput - connect?: ModelWhereUniqueInput + export type AccountCreateOrConnectWithoutUserInput = { + where: AccountWhereUniqueInput + create: XOR } - export type ModelCreateNestedManyWithoutParentVersionInput = { - create?: XOR | ModelCreateWithoutParentVersionInput[] | ModelUncheckedCreateWithoutParentVersionInput[] - connectOrCreate?: ModelCreateOrConnectWithoutParentVersionInput | ModelCreateOrConnectWithoutParentVersionInput[] - createMany?: ModelCreateManyParentVersionInputEnvelope - connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + export type AccountCreateManyUserInputEnvelope = { + data: AccountCreateManyUserInput | AccountCreateManyUserInput[] + skipDuplicates?: boolean } - export type ModelVersionTagCreateNestedManyWithoutModelVersionInput = { - create?: XOR | ModelVersionTagCreateWithoutModelVersionInput[] | ModelVersionTagUncheckedCreateWithoutModelVersionInput[] - connectOrCreate?: ModelVersionTagCreateOrConnectWithoutModelVersionInput | ModelVersionTagCreateOrConnectWithoutModelVersionInput[] - createMany?: ModelVersionTagCreateManyModelVersionInputEnvelope - connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + export type SessionCreateWithoutUserInput = { + id?: string + expiresAt: Date | string + token: string + ipAddress?: string | null + userAgent?: string | null + createdAt?: Date | string + updatedAt?: Date | string + impersonatedBy?: string | null } - export type ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput = { - create?: XOR | ModelAdditionalFileCreateWithoutTaggedVersionInput[] | ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput[] - connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput | ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput[] - createMany?: ModelAdditionalFileCreateManyTaggedVersionInputEnvelope - connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + export type SessionUncheckedCreateWithoutUserInput = { + id?: string + expiresAt: Date | string + token: string + ipAddress?: string | null + userAgent?: string | null + createdAt?: Date | string + updatedAt?: Date | string + impersonatedBy?: string | null } - export type ModelUncheckedCreateNestedOneWithoutLatestVersionInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutLatestVersionInput - connect?: ModelWhereUniqueInput + export type SessionCreateOrConnectWithoutUserInput = { + where: SessionWhereUniqueInput + create: XOR } - export type ModelUncheckedCreateNestedManyWithoutParentVersionInput = { - create?: XOR | ModelCreateWithoutParentVersionInput[] | ModelUncheckedCreateWithoutParentVersionInput[] - connectOrCreate?: ModelCreateOrConnectWithoutParentVersionInput | ModelCreateOrConnectWithoutParentVersionInput[] - createMany?: ModelCreateManyParentVersionInputEnvelope - connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] + export type SessionCreateManyUserInputEnvelope = { + data: SessionCreateManyUserInput | SessionCreateManyUserInput[] + skipDuplicates?: boolean } - export type ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput = { - create?: XOR | ModelVersionTagCreateWithoutModelVersionInput[] | ModelVersionTagUncheckedCreateWithoutModelVersionInput[] - connectOrCreate?: ModelVersionTagCreateOrConnectWithoutModelVersionInput | ModelVersionTagCreateOrConnectWithoutModelVersionInput[] - createMany?: ModelVersionTagCreateManyModelVersionInputEnvelope - connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + export type VerificationCreateWithoutUserInput = { + id?: string + identifier: string + value: string + expiresAt: Date | string + createdAt?: Date | string | null + updatedAt?: Date | string | null } - export type ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput = { - create?: XOR | ModelAdditionalFileCreateWithoutTaggedVersionInput[] | ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput[] - connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput | ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput[] - createMany?: ModelAdditionalFileCreateManyTaggedVersionInputEnvelope - connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] + export type VerificationUncheckedCreateWithoutUserInput = { + id?: string + identifier: string + value: string + expiresAt: Date | string + createdAt?: Date | string | null + updatedAt?: Date | string | null } - export type ModelUpdateOneRequiredWithoutVersionsNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutVersionsInput - upsert?: ModelUpsertWithoutVersionsInput - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutVersionsInput> + export type VerificationCreateOrConnectWithoutUserInput = { + where: VerificationWhereUniqueInput + create: XOR } - export type ModelUpdateOneWithoutLatestVersionNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutLatestVersionInput - upsert?: ModelUpsertWithoutLatestVersionInput - disconnect?: ModelWhereInput | boolean - delete?: ModelWhereInput | boolean - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutLatestVersionInput> + export type VerificationCreateManyUserInputEnvelope = { + data: VerificationCreateManyUserInput | VerificationCreateManyUserInput[] + skipDuplicates?: boolean } - export type ModelUpdateManyWithoutParentVersionNestedInput = { - create?: XOR | ModelCreateWithoutParentVersionInput[] | ModelUncheckedCreateWithoutParentVersionInput[] - connectOrCreate?: ModelCreateOrConnectWithoutParentVersionInput | ModelCreateOrConnectWithoutParentVersionInput[] - upsert?: ModelUpsertWithWhereUniqueWithoutParentVersionInput | ModelUpsertWithWhereUniqueWithoutParentVersionInput[] - createMany?: ModelCreateManyParentVersionInputEnvelope - set?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - disconnect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - delete?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - update?: ModelUpdateWithWhereUniqueWithoutParentVersionInput | ModelUpdateWithWhereUniqueWithoutParentVersionInput[] - updateMany?: ModelUpdateManyWithWhereWithoutParentVersionInput | ModelUpdateManyWithWhereWithoutParentVersionInput[] - deleteMany?: ModelScalarWhereInput | ModelScalarWhereInput[] + export type ModelAuthorCreateWithoutUserInput = { + role: $Enums.AuthorRole + createdAt?: Date | string + model: ModelCreateNestedOneWithoutAuthorsInput } - export type ModelVersionTagUpdateManyWithoutModelVersionNestedInput = { - create?: XOR | ModelVersionTagCreateWithoutModelVersionInput[] | ModelVersionTagUncheckedCreateWithoutModelVersionInput[] - connectOrCreate?: ModelVersionTagCreateOrConnectWithoutModelVersionInput | ModelVersionTagCreateOrConnectWithoutModelVersionInput[] - upsert?: ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput | ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput[] - createMany?: ModelVersionTagCreateManyModelVersionInputEnvelope - set?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - disconnect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - delete?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - update?: ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput | ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput[] - updateMany?: ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput | ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput[] - deleteMany?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] + export type ModelAuthorUncheckedCreateWithoutUserInput = { + modelId: string + role: $Enums.AuthorRole + createdAt?: Date | string } - export type ModelAdditionalFileUpdateManyWithoutTaggedVersionNestedInput = { - create?: XOR | ModelAdditionalFileCreateWithoutTaggedVersionInput[] | ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput[] - connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput | ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput[] - upsert?: ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput | ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput[] - createMany?: ModelAdditionalFileCreateManyTaggedVersionInputEnvelope - set?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - disconnect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - delete?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - update?: ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput | ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput[] - updateMany?: ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput | ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput[] - deleteMany?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] + export type ModelAuthorCreateOrConnectWithoutUserInput = { + where: ModelAuthorWhereUniqueInput + create: XOR } - export type ModelUncheckedUpdateOneWithoutLatestVersionNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutLatestVersionInput - upsert?: ModelUpsertWithoutLatestVersionInput - disconnect?: ModelWhereInput | boolean - delete?: ModelWhereInput | boolean - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutLatestVersionInput> + export type ModelAuthorCreateManyUserInputEnvelope = { + data: ModelAuthorCreateManyUserInput | ModelAuthorCreateManyUserInput[] + skipDuplicates?: boolean } - export type ModelUncheckedUpdateManyWithoutParentVersionNestedInput = { - create?: XOR | ModelCreateWithoutParentVersionInput[] | ModelUncheckedCreateWithoutParentVersionInput[] - connectOrCreate?: ModelCreateOrConnectWithoutParentVersionInput | ModelCreateOrConnectWithoutParentVersionInput[] - upsert?: ModelUpsertWithWhereUniqueWithoutParentVersionInput | ModelUpsertWithWhereUniqueWithoutParentVersionInput[] - createMany?: ModelCreateManyParentVersionInputEnvelope - set?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - disconnect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - delete?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - connect?: ModelWhereUniqueInput | ModelWhereUniqueInput[] - update?: ModelUpdateWithWhereUniqueWithoutParentVersionInput | ModelUpdateWithWhereUniqueWithoutParentVersionInput[] - updateMany?: ModelUpdateManyWithWhereWithoutParentVersionInput | ModelUpdateManyWithWhereWithoutParentVersionInput[] - deleteMany?: ModelScalarWhereInput | ModelScalarWhereInput[] + export type ModelPermissionCreateWithoutGranteeUserInput = { + id?: string + permissionLevel: $Enums.PermissionLevel + createdAt?: Date | string + model: ModelCreateNestedOneWithoutPermissionsInput } - export type ModelVersionTagUncheckedUpdateManyWithoutModelVersionNestedInput = { - create?: XOR | ModelVersionTagCreateWithoutModelVersionInput[] | ModelVersionTagUncheckedCreateWithoutModelVersionInput[] - connectOrCreate?: ModelVersionTagCreateOrConnectWithoutModelVersionInput | ModelVersionTagCreateOrConnectWithoutModelVersionInput[] - upsert?: ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput | ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput[] - createMany?: ModelVersionTagCreateManyModelVersionInputEnvelope - set?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - disconnect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - delete?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - update?: ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput | ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput[] - updateMany?: ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput | ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput[] - deleteMany?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] + export type ModelPermissionUncheckedCreateWithoutGranteeUserInput = { + id?: string + modelId: string + permissionLevel: $Enums.PermissionLevel + createdAt?: Date | string } - export type ModelAdditionalFileUncheckedUpdateManyWithoutTaggedVersionNestedInput = { - create?: XOR | ModelAdditionalFileCreateWithoutTaggedVersionInput[] | ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput[] - connectOrCreate?: ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput | ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput[] - upsert?: ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput | ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput[] - createMany?: ModelAdditionalFileCreateManyTaggedVersionInputEnvelope - set?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - disconnect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - delete?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - connect?: ModelAdditionalFileWhereUniqueInput | ModelAdditionalFileWhereUniqueInput[] - update?: ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput | ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput[] - updateMany?: ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput | ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput[] - deleteMany?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] + export type ModelPermissionCreateOrConnectWithoutGranteeUserInput = { + where: ModelPermissionWhereUniqueInput + create: XOR } - export type ModelVersionCreateNestedOneWithoutTagsInput = { - create?: XOR - connectOrCreate?: ModelVersionCreateOrConnectWithoutTagsInput - connect?: ModelVersionWhereUniqueInput + export type ModelPermissionCreateManyGranteeUserInputEnvelope = { + data: ModelPermissionCreateManyGranteeUserInput | ModelPermissionCreateManyGranteeUserInput[] + skipDuplicates?: boolean } - export type TagCreateNestedOneWithoutModelVersionsInput = { - create?: XOR - connectOrCreate?: TagCreateOrConnectWithoutModelVersionsInput - connect?: TagWhereUniqueInput + export type EventCreateWithoutActorInput = { + id?: string + type: string + resourceType: string + resourceId: string + payload: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + processedAt?: Date | string | null + attempts?: number + lastError?: string | null + notifications?: UserNotificationCreateNestedManyWithoutEventInput } - export type ModelVersionUpdateOneRequiredWithoutTagsNestedInput = { - create?: XOR - connectOrCreate?: ModelVersionCreateOrConnectWithoutTagsInput - upsert?: ModelVersionUpsertWithoutTagsInput - connect?: ModelVersionWhereUniqueInput - update?: XOR, ModelVersionUncheckedUpdateWithoutTagsInput> + export type EventUncheckedCreateWithoutActorInput = { + id?: string + type: string + resourceType: string + resourceId: string + payload: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + processedAt?: Date | string | null + attempts?: number + lastError?: string | null + notifications?: UserNotificationUncheckedCreateNestedManyWithoutEventInput } - export type TagUpdateOneRequiredWithoutModelVersionsNestedInput = { - create?: XOR - connectOrCreate?: TagCreateOrConnectWithoutModelVersionsInput - upsert?: TagUpsertWithoutModelVersionsInput - connect?: TagWhereUniqueInput - update?: XOR, TagUncheckedUpdateWithoutModelVersionsInput> + export type EventCreateOrConnectWithoutActorInput = { + where: EventWhereUniqueInput + create: XOR } - export type ModelCreateNestedOneWithoutAdditionalFilesInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutAdditionalFilesInput - connect?: ModelWhereUniqueInput + export type EventCreateManyActorInputEnvelope = { + data: EventCreateManyActorInput | EventCreateManyActorInput[] + skipDuplicates?: boolean } - export type ModelVersionCreateNestedOneWithoutTaggedAdditionalFilesInput = { - create?: XOR - connectOrCreate?: ModelVersionCreateOrConnectWithoutTaggedAdditionalFilesInput - connect?: ModelVersionWhereUniqueInput + export type ModelLikeCreateWithoutUserInput = { + createdAt?: Date | string + model: ModelCreateNestedOneWithoutLikesInput } - export type EnumModelFileKindFieldUpdateOperationsInput = { - set?: $Enums.ModelFileKind + export type ModelLikeUncheckedCreateWithoutUserInput = { + modelId: string + createdAt?: Date | string } - export type ModelUpdateOneRequiredWithoutAdditionalFilesNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutAdditionalFilesInput - upsert?: ModelUpsertWithoutAdditionalFilesInput - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutAdditionalFilesInput> + export type ModelLikeCreateOrConnectWithoutUserInput = { + where: ModelLikeWhereUniqueInput + create: XOR } - export type ModelVersionUpdateOneRequiredWithoutTaggedAdditionalFilesNestedInput = { - create?: XOR - connectOrCreate?: ModelVersionCreateOrConnectWithoutTaggedAdditionalFilesInput - upsert?: ModelVersionUpsertWithoutTaggedAdditionalFilesInput - connect?: ModelVersionWhereUniqueInput - update?: XOR, ModelVersionUncheckedUpdateWithoutTaggedAdditionalFilesInput> + export type ModelLikeCreateManyUserInputEnvelope = { + data: ModelLikeCreateManyUserInput | ModelLikeCreateManyUserInput[] + skipDuplicates?: boolean } - export type ModelVersionTagCreateNestedManyWithoutTagInput = { - create?: XOR | ModelVersionTagCreateWithoutTagInput[] | ModelVersionTagUncheckedCreateWithoutTagInput[] - connectOrCreate?: ModelVersionTagCreateOrConnectWithoutTagInput | ModelVersionTagCreateOrConnectWithoutTagInput[] - createMany?: ModelVersionTagCreateManyTagInputEnvelope - connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + export type ModelInteractionCreateWithoutUserInput = { + id?: string + versionNumber?: number | null + kind: $Enums.ModelInteractionKind + sessionId?: string | null + ipHash?: string | null + userAgent?: string | null + referer?: string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: string | null + createdAt?: Date | string + model: ModelCreateNestedOneWithoutInteractionsInput } - export type ModelVersionTagUncheckedCreateNestedManyWithoutTagInput = { - create?: XOR | ModelVersionTagCreateWithoutTagInput[] | ModelVersionTagUncheckedCreateWithoutTagInput[] - connectOrCreate?: ModelVersionTagCreateOrConnectWithoutTagInput | ModelVersionTagCreateOrConnectWithoutTagInput[] - createMany?: ModelVersionTagCreateManyTagInputEnvelope - connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] + export type ModelInteractionUncheckedCreateWithoutUserInput = { + id?: string + modelId: string + versionNumber?: number | null + kind: $Enums.ModelInteractionKind + sessionId?: string | null + ipHash?: string | null + userAgent?: string | null + referer?: string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: string | null + createdAt?: Date | string } - export type ModelVersionTagUpdateManyWithoutTagNestedInput = { - create?: XOR | ModelVersionTagCreateWithoutTagInput[] | ModelVersionTagUncheckedCreateWithoutTagInput[] - connectOrCreate?: ModelVersionTagCreateOrConnectWithoutTagInput | ModelVersionTagCreateOrConnectWithoutTagInput[] - upsert?: ModelVersionTagUpsertWithWhereUniqueWithoutTagInput | ModelVersionTagUpsertWithWhereUniqueWithoutTagInput[] - createMany?: ModelVersionTagCreateManyTagInputEnvelope - set?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - disconnect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - delete?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - update?: ModelVersionTagUpdateWithWhereUniqueWithoutTagInput | ModelVersionTagUpdateWithWhereUniqueWithoutTagInput[] - updateMany?: ModelVersionTagUpdateManyWithWhereWithoutTagInput | ModelVersionTagUpdateManyWithWhereWithoutTagInput[] - deleteMany?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] + export type ModelInteractionCreateOrConnectWithoutUserInput = { + where: ModelInteractionWhereUniqueInput + create: XOR } - export type ModelVersionTagUncheckedUpdateManyWithoutTagNestedInput = { - create?: XOR | ModelVersionTagCreateWithoutTagInput[] | ModelVersionTagUncheckedCreateWithoutTagInput[] - connectOrCreate?: ModelVersionTagCreateOrConnectWithoutTagInput | ModelVersionTagCreateOrConnectWithoutTagInput[] - upsert?: ModelVersionTagUpsertWithWhereUniqueWithoutTagInput | ModelVersionTagUpsertWithWhereUniqueWithoutTagInput[] - createMany?: ModelVersionTagCreateManyTagInputEnvelope - set?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - disconnect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - delete?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - connect?: ModelVersionTagWhereUniqueInput | ModelVersionTagWhereUniqueInput[] - update?: ModelVersionTagUpdateWithWhereUniqueWithoutTagInput | ModelVersionTagUpdateWithWhereUniqueWithoutTagInput[] - updateMany?: ModelVersionTagUpdateManyWithWhereWithoutTagInput | ModelVersionTagUpdateManyWithWhereWithoutTagInput[] - deleteMany?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] + export type ModelInteractionCreateManyUserInputEnvelope = { + data: ModelInteractionCreateManyUserInput | ModelInteractionCreateManyUserInput[] + skipDuplicates?: boolean } - export type ModelCreateNestedOneWithoutAuthorsInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutAuthorsInput - connect?: ModelWhereUniqueInput + export type ModelDraftCreateWithoutUserInput = { + id?: string + schemaVersion: number + data: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + updatedAt?: Date | string + model?: ModelCreateNestedOneWithoutDraftsInput } - export type UserCreateNestedOneWithoutAuthoredModelsInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutAuthoredModelsInput - connect?: UserWhereUniqueInput + export type ModelDraftUncheckedCreateWithoutUserInput = { + id?: string + modelId?: string | null + schemaVersion: number + data: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + updatedAt?: Date | string } - export type EnumAuthorRoleFieldUpdateOperationsInput = { - set?: $Enums.AuthorRole + export type ModelDraftCreateOrConnectWithoutUserInput = { + where: ModelDraftWhereUniqueInput + create: XOR } - export type ModelUpdateOneRequiredWithoutAuthorsNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutAuthorsInput - upsert?: ModelUpsertWithoutAuthorsInput - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutAuthorsInput> + export type ModelDraftCreateManyUserInputEnvelope = { + data: ModelDraftCreateManyUserInput | ModelDraftCreateManyUserInput[] + skipDuplicates?: boolean } - export type UserUpdateOneRequiredWithoutAuthoredModelsNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutAuthoredModelsInput - upsert?: UserUpsertWithoutAuthoredModelsInput - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutAuthoredModelsInput> + export type ModelCommentCreateWithoutUserInput = { + id?: string + legacyId?: number | null + versionNumber?: number | null + content?: string | null + likesCount?: number + createdAt?: Date | string + updatedAt?: Date | string + editedAt?: Date | string | null + deletedAt?: Date | string | null + model: ModelCreateNestedOneWithoutCommentsInput + parent?: ModelCommentCreateNestedOneWithoutRepliesInput + replies?: ModelCommentCreateNestedManyWithoutParentInput + likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput } - export type ModelCreateNestedOneWithoutPermissionsInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutPermissionsInput - connect?: ModelWhereUniqueInput + export type ModelCommentUncheckedCreateWithoutUserInput = { + id?: string + legacyId?: number | null + parentId?: string | null + modelId: string + versionNumber?: number | null + content?: string | null + likesCount?: number + createdAt?: Date | string + updatedAt?: Date | string + editedAt?: Date | string | null + deletedAt?: Date | string | null + replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput + likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput } - export type UserCreateNestedOneWithoutGrantedPermissionsInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutGrantedPermissionsInput - connect?: UserWhereUniqueInput + export type ModelCommentCreateOrConnectWithoutUserInput = { + where: ModelCommentWhereUniqueInput + create: XOR } - export type EnumPermissionLevelFieldUpdateOperationsInput = { - set?: $Enums.PermissionLevel + export type ModelCommentCreateManyUserInputEnvelope = { + data: ModelCommentCreateManyUserInput | ModelCommentCreateManyUserInput[] + skipDuplicates?: boolean } - export type ModelUpdateOneRequiredWithoutPermissionsNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutPermissionsInput - upsert?: ModelUpsertWithoutPermissionsInput - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutPermissionsInput> + export type ModelCommentLikeCreateWithoutUserInput = { + createdAt?: Date | string + modelComment: ModelCommentCreateNestedOneWithoutLikesInput } - export type UserUpdateOneWithoutGrantedPermissionsNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutGrantedPermissionsInput - upsert?: UserUpsertWithoutGrantedPermissionsInput - disconnect?: UserWhereInput | boolean - delete?: UserWhereInput | boolean - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutGrantedPermissionsInput> + export type ModelCommentLikeUncheckedCreateWithoutUserInput = { + modelCommentId: string + createdAt?: Date | string } - export type ModelCreateNestedOneWithoutLikesInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutLikesInput - connect?: ModelWhereUniqueInput + export type ModelCommentLikeCreateOrConnectWithoutUserInput = { + where: ModelCommentLikeWhereUniqueInput + create: XOR } - export type UserCreateNestedOneWithoutModelLikesInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutModelLikesInput - connect?: UserWhereUniqueInput + export type ModelCommentLikeCreateManyUserInputEnvelope = { + data: ModelCommentLikeCreateManyUserInput | ModelCommentLikeCreateManyUserInput[] + skipDuplicates?: boolean } - export type ModelUpdateOneRequiredWithoutLikesNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutLikesInput - upsert?: ModelUpsertWithoutLikesInput - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutLikesInput> + export type UserNotificationCreateWithoutRecipientInput = { + id?: string + category: string + title: string + body: string + url: string + emailSentAt?: Date | string | null + readAt?: Date | string | null + createdAt?: Date | string + event: EventCreateNestedOneWithoutNotificationsInput } - export type UserUpdateOneRequiredWithoutModelLikesNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutModelLikesInput - upsert?: UserUpsertWithoutModelLikesInput - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutModelLikesInput> + export type UserNotificationUncheckedCreateWithoutRecipientInput = { + id?: string + eventId: string + category: string + title: string + body: string + url: string + emailSentAt?: Date | string | null + readAt?: Date | string | null + createdAt?: Date | string } - export type ModelCreateNestedOneWithoutInteractionsInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutInteractionsInput - connect?: ModelWhereUniqueInput + export type UserNotificationCreateOrConnectWithoutRecipientInput = { + where: UserNotificationWhereUniqueInput + create: XOR } - export type UserCreateNestedOneWithoutModelInteractionsInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutModelInteractionsInput - connect?: UserWhereUniqueInput + export type UserNotificationCreateManyRecipientInputEnvelope = { + data: UserNotificationCreateManyRecipientInput | UserNotificationCreateManyRecipientInput[] + skipDuplicates?: boolean } - export type EnumModelInteractionKindFieldUpdateOperationsInput = { - set?: $Enums.ModelInteractionKind + export type UserNotificationPreferenceCreateWithoutUserInput = { + id?: string + category: string + email: boolean + inApp: boolean + updatedAt?: Date | string } - export type ModelUpdateOneRequiredWithoutInteractionsNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutInteractionsInput - upsert?: ModelUpsertWithoutInteractionsInput - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutInteractionsInput> + export type UserNotificationPreferenceUncheckedCreateWithoutUserInput = { + id?: string + category: string + email: boolean + inApp: boolean + updatedAt?: Date | string } - export type UserUpdateOneWithoutModelInteractionsNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutModelInteractionsInput - upsert?: UserUpsertWithoutModelInteractionsInput - disconnect?: UserWhereInput | boolean - delete?: UserWhereInput | boolean - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutModelInteractionsInput> + export type UserNotificationPreferenceCreateOrConnectWithoutUserInput = { + where: UserNotificationPreferenceWhereUniqueInput + create: XOR } - export type UserCreateNestedOneWithoutModelDraftsInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutModelDraftsInput - connect?: UserWhereUniqueInput + export type UserNotificationPreferenceCreateManyUserInputEnvelope = { + data: UserNotificationPreferenceCreateManyUserInput | UserNotificationPreferenceCreateManyUserInput[] + skipDuplicates?: boolean } - export type ModelCreateNestedOneWithoutDraftsInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutDraftsInput - connect?: ModelWhereUniqueInput + export type PasskeyCreateWithoutUserInput = { + id?: string + name?: string | null + publicKey: string + credentialID: string + counter: number + deviceType: string + backedUp: boolean + transports?: string | null + createdAt?: Date | string | null + aaguid?: string | null } - export type UserUpdateOneRequiredWithoutModelDraftsNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutModelDraftsInput - upsert?: UserUpsertWithoutModelDraftsInput - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutModelDraftsInput> + export type PasskeyUncheckedCreateWithoutUserInput = { + id?: string + name?: string | null + publicKey: string + credentialID: string + counter: number + deviceType: string + backedUp: boolean + transports?: string | null + createdAt?: Date | string | null + aaguid?: string | null } - export type ModelUpdateOneWithoutDraftsNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutDraftsInput - upsert?: ModelUpsertWithoutDraftsInput - disconnect?: ModelWhereInput | boolean - delete?: ModelWhereInput | boolean - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutDraftsInput> + export type PasskeyCreateOrConnectWithoutUserInput = { + where: PasskeyWhereUniqueInput + create: XOR } - export type ModelCreateNestedOneWithoutCommentsInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutCommentsInput - connect?: ModelWhereUniqueInput + export type PasskeyCreateManyUserInputEnvelope = { + data: PasskeyCreateManyUserInput | PasskeyCreateManyUserInput[] + skipDuplicates?: boolean } - export type UserCreateNestedOneWithoutCommentsInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutCommentsInput - connect?: UserWhereUniqueInput + export type AccountUpsertWithWhereUniqueWithoutUserInput = { + where: AccountWhereUniqueInput + update: XOR + create: XOR } - export type ModelCommentCreateNestedOneWithoutRepliesInput = { - create?: XOR - connectOrCreate?: ModelCommentCreateOrConnectWithoutRepliesInput - connect?: ModelCommentWhereUniqueInput + export type AccountUpdateWithWhereUniqueWithoutUserInput = { + where: AccountWhereUniqueInput + data: XOR } - export type ModelCommentCreateNestedManyWithoutParentInput = { - create?: XOR | ModelCommentCreateWithoutParentInput[] | ModelCommentUncheckedCreateWithoutParentInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutParentInput | ModelCommentCreateOrConnectWithoutParentInput[] - createMany?: ModelCommentCreateManyParentInputEnvelope - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + export type AccountUpdateManyWithWhereWithoutUserInput = { + where: AccountScalarWhereInput + data: XOR } - export type ModelCommentLikeCreateNestedManyWithoutModelCommentInput = { - create?: XOR | ModelCommentLikeCreateWithoutModelCommentInput[] | ModelCommentLikeUncheckedCreateWithoutModelCommentInput[] - connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutModelCommentInput | ModelCommentLikeCreateOrConnectWithoutModelCommentInput[] - createMany?: ModelCommentLikeCreateManyModelCommentInputEnvelope - connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + export type AccountScalarWhereInput = { + AND?: AccountScalarWhereInput | AccountScalarWhereInput[] + OR?: AccountScalarWhereInput[] + NOT?: AccountScalarWhereInput | AccountScalarWhereInput[] + id?: StringFilter<"Account"> | string + userId?: StringFilter<"Account"> | string + accountId?: StringFilter<"Account"> | string + providerId?: StringFilter<"Account"> | string + accessToken?: StringNullableFilter<"Account"> | string | null + refreshToken?: StringNullableFilter<"Account"> | string | null + accessTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null + refreshTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null + scope?: StringNullableFilter<"Account"> | string | null + idToken?: StringNullableFilter<"Account"> | string | null + password?: StringNullableFilter<"Account"> | string | null + createdAt?: DateTimeFilter<"Account"> | Date | string + updatedAt?: DateTimeFilter<"Account"> | Date | string } - export type ModelCommentUncheckedCreateNestedManyWithoutParentInput = { - create?: XOR | ModelCommentCreateWithoutParentInput[] | ModelCommentUncheckedCreateWithoutParentInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutParentInput | ModelCommentCreateOrConnectWithoutParentInput[] - createMany?: ModelCommentCreateManyParentInputEnvelope - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] + export type SessionUpsertWithWhereUniqueWithoutUserInput = { + where: SessionWhereUniqueInput + update: XOR + create: XOR } - export type ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput = { - create?: XOR | ModelCommentLikeCreateWithoutModelCommentInput[] | ModelCommentLikeUncheckedCreateWithoutModelCommentInput[] - connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutModelCommentInput | ModelCommentLikeCreateOrConnectWithoutModelCommentInput[] - createMany?: ModelCommentLikeCreateManyModelCommentInputEnvelope - connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] + export type SessionUpdateWithWhereUniqueWithoutUserInput = { + where: SessionWhereUniqueInput + data: XOR } - export type ModelUpdateOneRequiredWithoutCommentsNestedInput = { - create?: XOR - connectOrCreate?: ModelCreateOrConnectWithoutCommentsInput - upsert?: ModelUpsertWithoutCommentsInput - connect?: ModelWhereUniqueInput - update?: XOR, ModelUncheckedUpdateWithoutCommentsInput> + export type SessionUpdateManyWithWhereWithoutUserInput = { + where: SessionScalarWhereInput + data: XOR } - export type UserUpdateOneWithoutCommentsNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutCommentsInput - upsert?: UserUpsertWithoutCommentsInput - disconnect?: UserWhereInput | boolean - delete?: UserWhereInput | boolean - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutCommentsInput> + export type SessionScalarWhereInput = { + AND?: SessionScalarWhereInput | SessionScalarWhereInput[] + OR?: SessionScalarWhereInput[] + NOT?: SessionScalarWhereInput | SessionScalarWhereInput[] + id?: StringFilter<"Session"> | string + userId?: StringFilter<"Session"> | string + expiresAt?: DateTimeFilter<"Session"> | Date | string + token?: StringFilter<"Session"> | string + ipAddress?: StringNullableFilter<"Session"> | string | null + userAgent?: StringNullableFilter<"Session"> | string | null + createdAt?: DateTimeFilter<"Session"> | Date | string + updatedAt?: DateTimeFilter<"Session"> | Date | string + impersonatedBy?: StringNullableFilter<"Session"> | string | null } - export type ModelCommentUpdateOneWithoutRepliesNestedInput = { - create?: XOR - connectOrCreate?: ModelCommentCreateOrConnectWithoutRepliesInput - upsert?: ModelCommentUpsertWithoutRepliesInput - disconnect?: ModelCommentWhereInput | boolean - delete?: ModelCommentWhereInput | boolean - connect?: ModelCommentWhereUniqueInput - update?: XOR, ModelCommentUncheckedUpdateWithoutRepliesInput> + export type VerificationUpsertWithWhereUniqueWithoutUserInput = { + where: VerificationWhereUniqueInput + update: XOR + create: XOR } - export type ModelCommentUpdateManyWithoutParentNestedInput = { - create?: XOR | ModelCommentCreateWithoutParentInput[] | ModelCommentUncheckedCreateWithoutParentInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutParentInput | ModelCommentCreateOrConnectWithoutParentInput[] - upsert?: ModelCommentUpsertWithWhereUniqueWithoutParentInput | ModelCommentUpsertWithWhereUniqueWithoutParentInput[] - createMany?: ModelCommentCreateManyParentInputEnvelope - set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - update?: ModelCommentUpdateWithWhereUniqueWithoutParentInput | ModelCommentUpdateWithWhereUniqueWithoutParentInput[] - updateMany?: ModelCommentUpdateManyWithWhereWithoutParentInput | ModelCommentUpdateManyWithWhereWithoutParentInput[] - deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] + export type VerificationUpdateWithWhereUniqueWithoutUserInput = { + where: VerificationWhereUniqueInput + data: XOR } - export type ModelCommentLikeUpdateManyWithoutModelCommentNestedInput = { - create?: XOR | ModelCommentLikeCreateWithoutModelCommentInput[] | ModelCommentLikeUncheckedCreateWithoutModelCommentInput[] - connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutModelCommentInput | ModelCommentLikeCreateOrConnectWithoutModelCommentInput[] - upsert?: ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput | ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput[] - createMany?: ModelCommentLikeCreateManyModelCommentInputEnvelope - set?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - disconnect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - delete?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - update?: ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput | ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput[] - updateMany?: ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput | ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput[] - deleteMany?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] + export type VerificationUpdateManyWithWhereWithoutUserInput = { + where: VerificationScalarWhereInput + data: XOR } - export type ModelCommentUncheckedUpdateManyWithoutParentNestedInput = { - create?: XOR | ModelCommentCreateWithoutParentInput[] | ModelCommentUncheckedCreateWithoutParentInput[] - connectOrCreate?: ModelCommentCreateOrConnectWithoutParentInput | ModelCommentCreateOrConnectWithoutParentInput[] - upsert?: ModelCommentUpsertWithWhereUniqueWithoutParentInput | ModelCommentUpsertWithWhereUniqueWithoutParentInput[] - createMany?: ModelCommentCreateManyParentInputEnvelope - set?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - disconnect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - delete?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - connect?: ModelCommentWhereUniqueInput | ModelCommentWhereUniqueInput[] - update?: ModelCommentUpdateWithWhereUniqueWithoutParentInput | ModelCommentUpdateWithWhereUniqueWithoutParentInput[] - updateMany?: ModelCommentUpdateManyWithWhereWithoutParentInput | ModelCommentUpdateManyWithWhereWithoutParentInput[] - deleteMany?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] + export type VerificationScalarWhereInput = { + AND?: VerificationScalarWhereInput | VerificationScalarWhereInput[] + OR?: VerificationScalarWhereInput[] + NOT?: VerificationScalarWhereInput | VerificationScalarWhereInput[] + id?: StringFilter<"Verification"> | string + identifier?: StringFilter<"Verification"> | string + value?: StringFilter<"Verification"> | string + expiresAt?: DateTimeFilter<"Verification"> | Date | string + createdAt?: DateTimeNullableFilter<"Verification"> | Date | string | null + updatedAt?: DateTimeNullableFilter<"Verification"> | Date | string | null + userId?: StringNullableFilter<"Verification"> | string | null } - export type ModelCommentLikeUncheckedUpdateManyWithoutModelCommentNestedInput = { - create?: XOR | ModelCommentLikeCreateWithoutModelCommentInput[] | ModelCommentLikeUncheckedCreateWithoutModelCommentInput[] - connectOrCreate?: ModelCommentLikeCreateOrConnectWithoutModelCommentInput | ModelCommentLikeCreateOrConnectWithoutModelCommentInput[] - upsert?: ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput | ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput[] - createMany?: ModelCommentLikeCreateManyModelCommentInputEnvelope - set?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - disconnect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - delete?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - connect?: ModelCommentLikeWhereUniqueInput | ModelCommentLikeWhereUniqueInput[] - update?: ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput | ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput[] - updateMany?: ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput | ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput[] - deleteMany?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] + export type ModelAuthorUpsertWithWhereUniqueWithoutUserInput = { + where: ModelAuthorWhereUniqueInput + update: XOR + create: XOR } - export type ModelCommentCreateNestedOneWithoutLikesInput = { - create?: XOR - connectOrCreate?: ModelCommentCreateOrConnectWithoutLikesInput - connect?: ModelCommentWhereUniqueInput + export type ModelAuthorUpdateWithWhereUniqueWithoutUserInput = { + where: ModelAuthorWhereUniqueInput + data: XOR } - export type UserCreateNestedOneWithoutCommentLikesInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutCommentLikesInput - connect?: UserWhereUniqueInput + export type ModelAuthorUpdateManyWithWhereWithoutUserInput = { + where: ModelAuthorScalarWhereInput + data: XOR } - export type ModelCommentUpdateOneRequiredWithoutLikesNestedInput = { - create?: XOR - connectOrCreate?: ModelCommentCreateOrConnectWithoutLikesInput - upsert?: ModelCommentUpsertWithoutLikesInput - connect?: ModelCommentWhereUniqueInput - update?: XOR, ModelCommentUncheckedUpdateWithoutLikesInput> + export type ModelAuthorScalarWhereInput = { + AND?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] + OR?: ModelAuthorScalarWhereInput[] + NOT?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] + modelId?: StringFilter<"ModelAuthor"> | string + userId?: StringFilter<"ModelAuthor"> | string + role?: EnumAuthorRoleFilter<"ModelAuthor"> | $Enums.AuthorRole + createdAt?: DateTimeFilter<"ModelAuthor"> | Date | string } - export type UserUpdateOneRequiredWithoutCommentLikesNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutCommentLikesInput - upsert?: UserUpsertWithoutCommentLikesInput - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutCommentLikesInput> + export type ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput = { + where: ModelPermissionWhereUniqueInput + update: XOR + create: XOR } - export type UserCreateNestedOneWithoutEventsInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutEventsInput - connect?: UserWhereUniqueInput + export type ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput = { + where: ModelPermissionWhereUniqueInput + data: XOR } - export type UserUpdateOneRequiredWithoutEventsNestedInput = { - create?: XOR - connectOrCreate?: UserCreateOrConnectWithoutEventsInput - upsert?: UserUpsertWithoutEventsInput - connect?: UserWhereUniqueInput - update?: XOR, UserUncheckedUpdateWithoutEventsInput> + export type ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput = { + where: ModelPermissionScalarWhereInput + data: XOR } - export type NestedStringFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> - in?: string[] | ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> - 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 ModelPermissionScalarWhereInput = { + AND?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] + OR?: ModelPermissionScalarWhereInput[] + NOT?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] + id?: StringFilter<"ModelPermission"> | string + modelId?: StringFilter<"ModelPermission"> | string + granteeUserId?: StringNullableFilter<"ModelPermission"> | string | null + permissionLevel?: EnumPermissionLevelFilter<"ModelPermission"> | $Enums.PermissionLevel + createdAt?: DateTimeFilter<"ModelPermission"> | Date | string } - export type NestedStringNullableFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> | null - in?: string[] | ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | 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 EventUpsertWithWhereUniqueWithoutActorInput = { + where: EventWhereUniqueInput + update: XOR + create: XOR } - export type NestedBoolFilter<$PrismaModel = never> = { - equals?: boolean | BooleanFieldRefInput<$PrismaModel> - not?: NestedBoolFilter<$PrismaModel> | boolean + export type EventUpdateWithWhereUniqueWithoutActorInput = { + where: EventWhereUniqueInput + data: XOR } - export type NestedDateTimeFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - 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 EventUpdateManyWithWhereWithoutActorInput = { + where: EventScalarWhereInput + data: XOR } - export type NestedEnumSystemRoleFilter<$PrismaModel = never> = { - equals?: $Enums.SystemRole | EnumSystemRoleFieldRefInput<$PrismaModel> - in?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> - notIn?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> - not?: NestedEnumSystemRoleFilter<$PrismaModel> | $Enums.SystemRole + export type EventScalarWhereInput = { + AND?: EventScalarWhereInput | EventScalarWhereInput[] + OR?: EventScalarWhereInput[] + NOT?: EventScalarWhereInput | EventScalarWhereInput[] + id?: StringFilter<"Event"> | string + type?: StringFilter<"Event"> | string + actorId?: StringFilter<"Event"> | string + resourceType?: StringFilter<"Event"> | string + resourceId?: StringFilter<"Event"> | string + payload?: JsonFilter<"Event"> + createdAt?: DateTimeFilter<"Event"> | Date | string + processedAt?: DateTimeNullableFilter<"Event"> | Date | string | null + attempts?: IntFilter<"Event"> | number + lastError?: StringNullableFilter<"Event"> | string | null } - export type NestedEnumUserKindFilter<$PrismaModel = never> = { - equals?: $Enums.UserKind | EnumUserKindFieldRefInput<$PrismaModel> - in?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> - notIn?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> - not?: NestedEnumUserKindFilter<$PrismaModel> | $Enums.UserKind + export type ModelLikeUpsertWithWhereUniqueWithoutUserInput = { + where: ModelLikeWhereUniqueInput + update: XOR + create: XOR } - export type NestedDateTimeNullableFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null - lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null + export type ModelLikeUpdateWithWhereUniqueWithoutUserInput = { + where: ModelLikeWhereUniqueInput + data: XOR } - export type NestedBoolNullableFilter<$PrismaModel = never> = { - equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null - not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null + export type ModelLikeUpdateManyWithWhereWithoutUserInput = { + where: ModelLikeScalarWhereInput + data: XOR } - export type NestedIntNullableFilter<$PrismaModel = never> = { - equals?: number | IntFieldRefInput<$PrismaModel> | null - in?: number[] | ListIntFieldRefInput<$PrismaModel> | null - notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null - lt?: number | IntFieldRefInput<$PrismaModel> - lte?: number | IntFieldRefInput<$PrismaModel> - gt?: number | IntFieldRefInput<$PrismaModel> - gte?: number | IntFieldRefInput<$PrismaModel> - not?: NestedIntNullableFilter<$PrismaModel> | number | null + export type ModelLikeScalarWhereInput = { + AND?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] + OR?: ModelLikeScalarWhereInput[] + NOT?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] + modelId?: StringFilter<"ModelLike"> | string + userId?: StringFilter<"ModelLike"> | string + createdAt?: DateTimeFilter<"ModelLike"> | Date | string } - export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> - in?: string[] | ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> - 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 ModelInteractionUpsertWithWhereUniqueWithoutUserInput = { + where: ModelInteractionWhereUniqueInput + update: XOR + create: XOR } - export type NestedIntFilter<$PrismaModel = never> = { - equals?: number | IntFieldRefInput<$PrismaModel> - in?: number[] | ListIntFieldRefInput<$PrismaModel> - notIn?: number[] | ListIntFieldRefInput<$PrismaModel> - lt?: number | IntFieldRefInput<$PrismaModel> - lte?: number | IntFieldRefInput<$PrismaModel> - gt?: number | IntFieldRefInput<$PrismaModel> - gte?: number | IntFieldRefInput<$PrismaModel> - not?: NestedIntFilter<$PrismaModel> | number + export type ModelInteractionUpdateWithWhereUniqueWithoutUserInput = { + where: ModelInteractionWhereUniqueInput + data: XOR } - export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> | null - in?: string[] | ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | 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 ModelInteractionUpdateManyWithWhereWithoutUserInput = { + where: ModelInteractionScalarWhereInput + data: XOR } - export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = { - equals?: boolean | BooleanFieldRefInput<$PrismaModel> - not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedBoolFilter<$PrismaModel> - _max?: NestedBoolFilter<$PrismaModel> + export type ModelInteractionScalarWhereInput = { + AND?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] + OR?: ModelInteractionScalarWhereInput[] + NOT?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] + id?: StringFilter<"ModelInteraction"> | string + modelId?: StringFilter<"ModelInteraction"> | string + versionNumber?: IntNullableFilter<"ModelInteraction"> | number | null + kind?: EnumModelInteractionKindFilter<"ModelInteraction"> | $Enums.ModelInteractionKind + userId?: StringNullableFilter<"ModelInteraction"> | string | null + sessionId?: StringNullableFilter<"ModelInteraction"> | string | null + ipHash?: StringNullableFilter<"ModelInteraction"> | string | null + userAgent?: StringNullableFilter<"ModelInteraction"> | string | null + referer?: StringNullableFilter<"ModelInteraction"> | string | null + geo?: JsonNullableFilter<"ModelInteraction"> + cookie?: StringNullableFilter<"ModelInteraction"> | string | null + createdAt?: DateTimeFilter<"ModelInteraction"> | Date | string } - export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - 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 ModelDraftUpsertWithWhereUniqueWithoutUserInput = { + where: ModelDraftWhereUniqueInput + update: XOR + create: XOR + } + + export type ModelDraftUpdateWithWhereUniqueWithoutUserInput = { + where: ModelDraftWhereUniqueInput + data: XOR } - export type NestedEnumSystemRoleWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.SystemRole | EnumSystemRoleFieldRefInput<$PrismaModel> - in?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> - notIn?: $Enums.SystemRole[] | ListEnumSystemRoleFieldRefInput<$PrismaModel> - not?: NestedEnumSystemRoleWithAggregatesFilter<$PrismaModel> | $Enums.SystemRole - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumSystemRoleFilter<$PrismaModel> - _max?: NestedEnumSystemRoleFilter<$PrismaModel> + export type ModelDraftUpdateManyWithWhereWithoutUserInput = { + where: ModelDraftScalarWhereInput + data: XOR } - export type NestedEnumUserKindWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.UserKind | EnumUserKindFieldRefInput<$PrismaModel> - in?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> - notIn?: $Enums.UserKind[] | ListEnumUserKindFieldRefInput<$PrismaModel> - not?: NestedEnumUserKindWithAggregatesFilter<$PrismaModel> | $Enums.UserKind - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumUserKindFilter<$PrismaModel> - _max?: NestedEnumUserKindFilter<$PrismaModel> + export type ModelDraftScalarWhereInput = { + AND?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] + OR?: ModelDraftScalarWhereInput[] + NOT?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] + id?: StringFilter<"ModelDraft"> | string + userId?: StringFilter<"ModelDraft"> | string + modelId?: StringNullableFilter<"ModelDraft"> | string | null + schemaVersion?: IntFilter<"ModelDraft"> | number + data?: JsonFilter<"ModelDraft"> + createdAt?: DateTimeFilter<"ModelDraft"> | Date | string + updatedAt?: DateTimeFilter<"ModelDraft"> | Date | string } - export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null - lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null - _count?: NestedIntNullableFilter<$PrismaModel> - _min?: NestedDateTimeNullableFilter<$PrismaModel> - _max?: NestedDateTimeNullableFilter<$PrismaModel> + export type ModelCommentUpsertWithWhereUniqueWithoutUserInput = { + where: ModelCommentWhereUniqueInput + update: XOR + create: XOR } - export type NestedJsonNullableFilter<$PrismaModel = never> = - | PatchUndefined< - Either>, Exclude>, 'path'>>, - Required> - > - | OptionalFlat>, 'path'>> - export type NestedJsonNullableFilterBase<$PrismaModel = never> = { - equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - path?: string[] - mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | StringFieldRefInput<$PrismaModel> - string_starts_with?: string | StringFieldRefInput<$PrismaModel> - string_ends_with?: string | StringFieldRefInput<$PrismaModel> - array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + export type ModelCommentUpdateWithWhereUniqueWithoutUserInput = { + where: ModelCommentWhereUniqueInput + data: XOR } - export type NestedBoolNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null - not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null - _count?: NestedIntNullableFilter<$PrismaModel> - _min?: NestedBoolNullableFilter<$PrismaModel> - _max?: NestedBoolNullableFilter<$PrismaModel> + export type ModelCommentUpdateManyWithWhereWithoutUserInput = { + where: ModelCommentScalarWhereInput + data: XOR } - export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: number | IntFieldRefInput<$PrismaModel> | null - in?: number[] | ListIntFieldRefInput<$PrismaModel> | null - notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | 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 ModelCommentScalarWhereInput = { + AND?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] + OR?: ModelCommentScalarWhereInput[] + NOT?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] + id?: StringFilter<"ModelComment"> | string + legacyId?: IntNullableFilter<"ModelComment"> | number | null + parentId?: StringNullableFilter<"ModelComment"> | string | null + userId?: StringNullableFilter<"ModelComment"> | string | null + modelId?: StringFilter<"ModelComment"> | string + versionNumber?: IntNullableFilter<"ModelComment"> | number | null + content?: StringNullableFilter<"ModelComment"> | string | null + likesCount?: IntFilter<"ModelComment"> | number + createdAt?: DateTimeFilter<"ModelComment"> | Date | string + updatedAt?: DateTimeFilter<"ModelComment"> | Date | string + editedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null + deletedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null } - export type NestedFloatNullableFilter<$PrismaModel = never> = { - equals?: number | FloatFieldRefInput<$PrismaModel> | null - in?: number[] | ListFloatFieldRefInput<$PrismaModel> | null - notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> | null - lt?: number | FloatFieldRefInput<$PrismaModel> - lte?: number | FloatFieldRefInput<$PrismaModel> - gt?: number | FloatFieldRefInput<$PrismaModel> - gte?: number | FloatFieldRefInput<$PrismaModel> - not?: NestedFloatNullableFilter<$PrismaModel> | number | null + export type ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput = { + where: ModelCommentLikeWhereUniqueInput + update: XOR + create: XOR } - export type NestedIntWithAggregatesFilter<$PrismaModel = never> = { - equals?: number | IntFieldRefInput<$PrismaModel> - in?: number[] | ListIntFieldRefInput<$PrismaModel> - notIn?: number[] | ListIntFieldRefInput<$PrismaModel> - lt?: number | IntFieldRefInput<$PrismaModel> - lte?: number | IntFieldRefInput<$PrismaModel> - gt?: number | IntFieldRefInput<$PrismaModel> - gte?: number | IntFieldRefInput<$PrismaModel> - not?: NestedIntWithAggregatesFilter<$PrismaModel> | number - _count?: NestedIntFilter<$PrismaModel> - _avg?: NestedFloatFilter<$PrismaModel> - _sum?: NestedIntFilter<$PrismaModel> - _min?: NestedIntFilter<$PrismaModel> - _max?: NestedIntFilter<$PrismaModel> + export type ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput = { + where: ModelCommentLikeWhereUniqueInput + data: XOR } - export type NestedFloatFilter<$PrismaModel = never> = { - equals?: number | FloatFieldRefInput<$PrismaModel> - in?: number[] | ListFloatFieldRefInput<$PrismaModel> - notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> - lt?: number | FloatFieldRefInput<$PrismaModel> - lte?: number | FloatFieldRefInput<$PrismaModel> - gt?: number | FloatFieldRefInput<$PrismaModel> - gte?: number | FloatFieldRefInput<$PrismaModel> - not?: NestedFloatFilter<$PrismaModel> | number + export type ModelCommentLikeUpdateManyWithWhereWithoutUserInput = { + where: ModelCommentLikeScalarWhereInput + data: XOR } - export type NestedEnumModelVisibilityFilter<$PrismaModel = never> = { - equals?: $Enums.ModelVisibility | EnumModelVisibilityFieldRefInput<$PrismaModel> - in?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> - not?: NestedEnumModelVisibilityFilter<$PrismaModel> | $Enums.ModelVisibility + export type ModelCommentLikeScalarWhereInput = { + AND?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] + OR?: ModelCommentLikeScalarWhereInput[] + NOT?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] + modelCommentId?: StringFilter<"ModelCommentLike"> | string + userId?: StringFilter<"ModelCommentLike"> | string + createdAt?: DateTimeFilter<"ModelCommentLike"> | Date | string } - export type NestedEnumModelVisibilityWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.ModelVisibility | EnumModelVisibilityFieldRefInput<$PrismaModel> - in?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelVisibility[] | ListEnumModelVisibilityFieldRefInput<$PrismaModel> - not?: NestedEnumModelVisibilityWithAggregatesFilter<$PrismaModel> | $Enums.ModelVisibility - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumModelVisibilityFilter<$PrismaModel> - _max?: NestedEnumModelVisibilityFilter<$PrismaModel> + export type UserNotificationUpsertWithWhereUniqueWithoutRecipientInput = { + where: UserNotificationWhereUniqueInput + update: XOR + create: XOR } - export type NestedEnumModelFileKindFilter<$PrismaModel = never> = { - equals?: $Enums.ModelFileKind | EnumModelFileKindFieldRefInput<$PrismaModel> - in?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> - not?: NestedEnumModelFileKindFilter<$PrismaModel> | $Enums.ModelFileKind + export type UserNotificationUpdateWithWhereUniqueWithoutRecipientInput = { + where: UserNotificationWhereUniqueInput + data: XOR } - export type NestedEnumModelFileKindWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.ModelFileKind | EnumModelFileKindFieldRefInput<$PrismaModel> - in?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelFileKind[] | ListEnumModelFileKindFieldRefInput<$PrismaModel> - not?: NestedEnumModelFileKindWithAggregatesFilter<$PrismaModel> | $Enums.ModelFileKind - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumModelFileKindFilter<$PrismaModel> - _max?: NestedEnumModelFileKindFilter<$PrismaModel> + export type UserNotificationUpdateManyWithWhereWithoutRecipientInput = { + where: UserNotificationScalarWhereInput + data: XOR } - export type NestedEnumAuthorRoleFilter<$PrismaModel = never> = { - equals?: $Enums.AuthorRole | EnumAuthorRoleFieldRefInput<$PrismaModel> - in?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> - notIn?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> - not?: NestedEnumAuthorRoleFilter<$PrismaModel> | $Enums.AuthorRole + export type UserNotificationScalarWhereInput = { + AND?: UserNotificationScalarWhereInput | UserNotificationScalarWhereInput[] + OR?: UserNotificationScalarWhereInput[] + NOT?: UserNotificationScalarWhereInput | UserNotificationScalarWhereInput[] + id?: StringFilter<"UserNotification"> | string + recipientId?: StringFilter<"UserNotification"> | string + eventId?: StringFilter<"UserNotification"> | string + category?: StringFilter<"UserNotification"> | string + title?: StringFilter<"UserNotification"> | string + body?: StringFilter<"UserNotification"> | string + url?: StringFilter<"UserNotification"> | string + emailSentAt?: DateTimeNullableFilter<"UserNotification"> | Date | string | null + readAt?: DateTimeNullableFilter<"UserNotification"> | Date | string | null + createdAt?: DateTimeFilter<"UserNotification"> | Date | string } - export type NestedEnumAuthorRoleWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.AuthorRole | EnumAuthorRoleFieldRefInput<$PrismaModel> - in?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> - notIn?: $Enums.AuthorRole[] | ListEnumAuthorRoleFieldRefInput<$PrismaModel> - not?: NestedEnumAuthorRoleWithAggregatesFilter<$PrismaModel> | $Enums.AuthorRole - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumAuthorRoleFilter<$PrismaModel> - _max?: NestedEnumAuthorRoleFilter<$PrismaModel> + export type UserNotificationPreferenceUpsertWithWhereUniqueWithoutUserInput = { + where: UserNotificationPreferenceWhereUniqueInput + update: XOR + create: XOR } - export type NestedEnumPermissionLevelFilter<$PrismaModel = never> = { - equals?: $Enums.PermissionLevel | EnumPermissionLevelFieldRefInput<$PrismaModel> - in?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> - notIn?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> - not?: NestedEnumPermissionLevelFilter<$PrismaModel> | $Enums.PermissionLevel + export type UserNotificationPreferenceUpdateWithWhereUniqueWithoutUserInput = { + where: UserNotificationPreferenceWhereUniqueInput + data: XOR } - export type NestedEnumPermissionLevelWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.PermissionLevel | EnumPermissionLevelFieldRefInput<$PrismaModel> - in?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> - notIn?: $Enums.PermissionLevel[] | ListEnumPermissionLevelFieldRefInput<$PrismaModel> - not?: NestedEnumPermissionLevelWithAggregatesFilter<$PrismaModel> | $Enums.PermissionLevel - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumPermissionLevelFilter<$PrismaModel> - _max?: NestedEnumPermissionLevelFilter<$PrismaModel> + export type UserNotificationPreferenceUpdateManyWithWhereWithoutUserInput = { + where: UserNotificationPreferenceScalarWhereInput + data: XOR } - export type NestedEnumModelInteractionKindFilter<$PrismaModel = never> = { - equals?: $Enums.ModelInteractionKind | EnumModelInteractionKindFieldRefInput<$PrismaModel> - in?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> - not?: NestedEnumModelInteractionKindFilter<$PrismaModel> | $Enums.ModelInteractionKind + export type UserNotificationPreferenceScalarWhereInput = { + AND?: UserNotificationPreferenceScalarWhereInput | UserNotificationPreferenceScalarWhereInput[] + OR?: UserNotificationPreferenceScalarWhereInput[] + NOT?: UserNotificationPreferenceScalarWhereInput | UserNotificationPreferenceScalarWhereInput[] + id?: StringFilter<"UserNotificationPreference"> | string + userId?: StringFilter<"UserNotificationPreference"> | string + category?: StringFilter<"UserNotificationPreference"> | string + email?: BoolFilter<"UserNotificationPreference"> | boolean + inApp?: BoolFilter<"UserNotificationPreference"> | boolean + updatedAt?: DateTimeFilter<"UserNotificationPreference"> | Date | string } - export type NestedEnumModelInteractionKindWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.ModelInteractionKind | EnumModelInteractionKindFieldRefInput<$PrismaModel> - in?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> - notIn?: $Enums.ModelInteractionKind[] | ListEnumModelInteractionKindFieldRefInput<$PrismaModel> - not?: NestedEnumModelInteractionKindWithAggregatesFilter<$PrismaModel> | $Enums.ModelInteractionKind - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedEnumModelInteractionKindFilter<$PrismaModel> - _max?: NestedEnumModelInteractionKindFilter<$PrismaModel> + export type PasskeyUpsertWithWhereUniqueWithoutUserInput = { + where: PasskeyWhereUniqueInput + update: XOR + create: XOR } - export type NestedJsonFilter<$PrismaModel = never> = - | PatchUndefined< - Either>, Exclude>, 'path'>>, - Required> - > - | OptionalFlat>, 'path'>> - export type NestedJsonFilterBase<$PrismaModel = never> = { - equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - path?: string[] - mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | StringFieldRefInput<$PrismaModel> - string_starts_with?: string | StringFieldRefInput<$PrismaModel> - string_ends_with?: string | StringFieldRefInput<$PrismaModel> - array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + export type PasskeyUpdateWithWhereUniqueWithoutUserInput = { + where: PasskeyWhereUniqueInput + data: XOR } - export type AccountCreateWithoutUserInput = { + export type PasskeyUpdateManyWithWhereWithoutUserInput = { + where: PasskeyScalarWhereInput + data: XOR + } + + export type PasskeyScalarWhereInput = { + AND?: PasskeyScalarWhereInput | PasskeyScalarWhereInput[] + OR?: PasskeyScalarWhereInput[] + NOT?: PasskeyScalarWhereInput | PasskeyScalarWhereInput[] + id?: StringFilter<"Passkey"> | string + name?: StringNullableFilter<"Passkey"> | string | null + publicKey?: StringFilter<"Passkey"> | string + userId?: StringFilter<"Passkey"> | string + credentialID?: StringFilter<"Passkey"> | string + counter?: IntFilter<"Passkey"> | number + deviceType?: StringFilter<"Passkey"> | string + backedUp?: BoolFilter<"Passkey"> | boolean + transports?: StringNullableFilter<"Passkey"> | string | null + createdAt?: DateTimeNullableFilter<"Passkey"> | Date | string | null + aaguid?: StringNullableFilter<"Passkey"> | string | null + } + + export type UserCreateWithoutAccountsInput = { id?: string - accountId: string - providerId: string - accessToken?: string | null - refreshToken?: string | null - accessTokenExpiresAt?: Date | string | null - refreshTokenExpiresAt?: Date | string | null - scope?: string | null - idToken?: string | null - password?: string | null + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + sessions?: SessionCreateNestedManyWithoutUserInput + verifications?: VerificationCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput + events?: EventCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput + comments?: ModelCommentCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput + passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type AccountUncheckedCreateWithoutUserInput = { + export type UserUncheckedCreateWithoutAccountsInput = { id?: string - accountId: string - providerId: string - accessToken?: string | null - refreshToken?: string | null - accessTokenExpiresAt?: Date | string | null - refreshTokenExpiresAt?: Date | string | null - scope?: string | null - idToken?: string | null - password?: string | null + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + sessions?: SessionUncheckedCreateNestedManyWithoutUserInput + verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput + events?: EventUncheckedCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput + passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type AccountCreateOrConnectWithoutUserInput = { - where: AccountWhereUniqueInput - create: XOR + export type UserCreateOrConnectWithoutAccountsInput = { + where: UserWhereUniqueInput + create: XOR } - export type AccountCreateManyUserInputEnvelope = { - data: AccountCreateManyUserInput | AccountCreateManyUserInput[] - skipDuplicates?: boolean + export type UserUpsertWithoutAccountsInput = { + update: XOR + create: XOR + where?: UserWhereInput } - export type SessionCreateWithoutUserInput = { + export type UserUpdateToOneWithWhereWithoutAccountsInput = { + where?: UserWhereInput + data: XOR + } + + export type UserUpdateWithoutAccountsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + sessions?: SessionUpdateManyWithoutUserNestedInput + verifications?: VerificationUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput + events?: EventUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput + comments?: ModelCommentUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUpdateManyWithoutUserNestedInput + } + + export type UserUncheckedUpdateWithoutAccountsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput + verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput + events?: EventUncheckedUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput + } + + export type UserCreateWithoutSessionsInput = { id?: string - expiresAt: Date | string - token: string - ipAddress?: string | null - userAgent?: string | null + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string updatedAt?: Date | string - impersonatedBy?: string | null + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountCreateNestedManyWithoutUserInput + verifications?: VerificationCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput + events?: EventCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput + comments?: ModelCommentCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput + passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type SessionUncheckedCreateWithoutUserInput = { + export type UserUncheckedCreateWithoutSessionsInput = { id?: string - expiresAt: Date | string - token: string - ipAddress?: string | null - userAgent?: string | null + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string updatedAt?: Date | string - impersonatedBy?: string | null - } - - export type SessionCreateOrConnectWithoutUserInput = { - where: SessionWhereUniqueInput - create: XOR + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountUncheckedCreateNestedManyWithoutUserInput + verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput + events?: EventUncheckedCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput + passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type SessionCreateManyUserInputEnvelope = { - data: SessionCreateManyUserInput | SessionCreateManyUserInput[] - skipDuplicates?: boolean + export type UserCreateOrConnectWithoutSessionsInput = { + where: UserWhereUniqueInput + create: XOR } - export type VerificationCreateWithoutUserInput = { - id?: string - identifier: string - value: string - expiresAt: Date | string - createdAt?: Date | string | null - updatedAt?: Date | string | null + export type UserUpsertWithoutSessionsInput = { + update: XOR + create: XOR + where?: UserWhereInput } - export type VerificationUncheckedCreateWithoutUserInput = { - id?: string - identifier: string - value: string - expiresAt: Date | string - createdAt?: Date | string | null - updatedAt?: Date | string | null + export type UserUpdateToOneWithWhereWithoutSessionsInput = { + where?: UserWhereInput + data: XOR } - export type VerificationCreateOrConnectWithoutUserInput = { - where: VerificationWhereUniqueInput - create: XOR + export type UserUpdateWithoutSessionsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUpdateManyWithoutUserNestedInput + verifications?: VerificationUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput + events?: EventUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput + comments?: ModelCommentUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type VerificationCreateManyUserInputEnvelope = { - data: VerificationCreateManyUserInput | VerificationCreateManyUserInput[] - skipDuplicates?: boolean + export type UserUncheckedUpdateWithoutSessionsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput + verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput + events?: EventUncheckedUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type ModelAuthorCreateWithoutUserInput = { - role: $Enums.AuthorRole + export type UserCreateWithoutVerificationsInput = { + id?: string + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string - model: ModelCreateNestedOneWithoutAuthorsInput + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountCreateNestedManyWithoutUserInput + sessions?: SessionCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput + events?: EventCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput + comments?: ModelCommentCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput + passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type ModelAuthorUncheckedCreateWithoutUserInput = { - modelId: string - role: $Enums.AuthorRole + export type UserUncheckedCreateWithoutVerificationsInput = { + id?: string + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountUncheckedCreateNestedManyWithoutUserInput + sessions?: SessionUncheckedCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput + events?: EventUncheckedCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput + passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type ModelAuthorCreateOrConnectWithoutUserInput = { - where: ModelAuthorWhereUniqueInput - create: XOR - } - - export type ModelAuthorCreateManyUserInputEnvelope = { - data: ModelAuthorCreateManyUserInput | ModelAuthorCreateManyUserInput[] - skipDuplicates?: boolean + export type UserCreateOrConnectWithoutVerificationsInput = { + where: UserWhereUniqueInput + create: XOR } - export type ModelPermissionCreateWithoutGranteeUserInput = { - id?: string - permissionLevel: $Enums.PermissionLevel - createdAt?: Date | string - model: ModelCreateNestedOneWithoutPermissionsInput + export type UserUpsertWithoutVerificationsInput = { + update: XOR + create: XOR + where?: UserWhereInput } - export type ModelPermissionUncheckedCreateWithoutGranteeUserInput = { - id?: string - modelId: string - permissionLevel: $Enums.PermissionLevel - createdAt?: Date | string + export type UserUpdateToOneWithWhereWithoutVerificationsInput = { + where?: UserWhereInput + data: XOR } - export type ModelPermissionCreateOrConnectWithoutGranteeUserInput = { - where: ModelPermissionWhereUniqueInput - create: XOR + export type UserUpdateWithoutVerificationsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUpdateManyWithoutUserNestedInput + sessions?: SessionUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput + events?: EventUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput + comments?: ModelCommentUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type ModelPermissionCreateManyGranteeUserInputEnvelope = { - data: ModelPermissionCreateManyGranteeUserInput | ModelPermissionCreateManyGranteeUserInput[] - skipDuplicates?: boolean + export type UserUncheckedUpdateWithoutVerificationsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput + sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput + events?: EventUncheckedUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type EventCreateWithoutActorInput = { + export type UserCreateWithoutPasskeysInput = { id?: string - type: string - resourceType: string - resourceId: string - payload: JsonNullValueInput | InputJsonValue + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string - processedAt?: Date | string | null + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountCreateNestedManyWithoutUserInput + sessions?: SessionCreateNestedManyWithoutUserInput + verifications?: VerificationCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput + events?: EventCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput + comments?: ModelCommentCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput } - export type EventUncheckedCreateWithoutActorInput = { + export type UserUncheckedCreateWithoutPasskeysInput = { id?: string - type: string - resourceType: string - resourceId: string - payload: JsonNullValueInput | InputJsonValue + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string - processedAt?: Date | string | null - } - - export type EventCreateOrConnectWithoutActorInput = { - where: EventWhereUniqueInput - create: XOR + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountUncheckedCreateNestedManyWithoutUserInput + sessions?: SessionUncheckedCreateNestedManyWithoutUserInput + verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput + events?: EventUncheckedCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput } - export type EventCreateManyActorInputEnvelope = { - data: EventCreateManyActorInput | EventCreateManyActorInput[] - skipDuplicates?: boolean + export type UserCreateOrConnectWithoutPasskeysInput = { + where: UserWhereUniqueInput + create: XOR } - export type ModelLikeCreateWithoutUserInput = { - createdAt?: Date | string - model: ModelCreateNestedOneWithoutLikesInput + export type UserUpsertWithoutPasskeysInput = { + update: XOR + create: XOR + where?: UserWhereInput } - export type ModelLikeUncheckedCreateWithoutUserInput = { - modelId: string - createdAt?: Date | string + export type UserUpdateToOneWithWhereWithoutPasskeysInput = { + where?: UserWhereInput + data: XOR } - export type ModelLikeCreateOrConnectWithoutUserInput = { - where: ModelLikeWhereUniqueInput - create: XOR + export type UserUpdateWithoutPasskeysInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUpdateManyWithoutUserNestedInput + sessions?: SessionUpdateManyWithoutUserNestedInput + verifications?: VerificationUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput + events?: EventUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput + comments?: ModelCommentUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput } - export type ModelLikeCreateManyUserInputEnvelope = { - data: ModelLikeCreateManyUserInput | ModelLikeCreateManyUserInput[] - skipDuplicates?: boolean + export type UserUncheckedUpdateWithoutPasskeysInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput + sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput + verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput + events?: EventUncheckedUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput } - export type ModelInteractionCreateWithoutUserInput = { - id?: string - versionNumber?: number | null - kind: $Enums.ModelInteractionKind - sessionId?: string | null - ipHash?: string | null - userAgent?: string | null - referer?: string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: string | null + export type ModelVersionCreateWithoutLatestOfModelInput = { + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null createdAt?: Date | string - model: ModelCreateNestedOneWithoutInteractionsInput + finalizedAt?: Date | string | null + model: ModelCreateNestedOneWithoutVersionsInput + parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput + tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput + taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput } - export type ModelInteractionUncheckedCreateWithoutUserInput = { - id?: string + export type ModelVersionUncheckedCreateWithoutLatestOfModelInput = { modelId: string - versionNumber?: number | null - kind: $Enums.ModelInteractionKind - sessionId?: string | null - ipHash?: string | null - userAgent?: string | null - referer?: string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: string | null - createdAt?: Date | string - } - - export type ModelInteractionCreateOrConnectWithoutUserInput = { - where: ModelInteractionWhereUniqueInput - create: XOR + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput + tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput + taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput } - export type ModelInteractionCreateManyUserInputEnvelope = { - data: ModelInteractionCreateManyUserInput | ModelInteractionCreateManyUserInput[] - skipDuplicates?: boolean + export type ModelVersionCreateOrConnectWithoutLatestOfModelInput = { + where: ModelVersionWhereUniqueInput + create: XOR } - export type ModelDraftCreateWithoutUserInput = { - id?: string - schemaVersion: number - data: JsonNullValueInput | InputJsonValue + export type ModelCreateWithoutChildModelsInput = { + legacyId?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number createdAt?: Date | string updatedAt?: Date | string - model?: ModelCreateNestedOneWithoutDraftsInput + deletedAt?: Date | string | null + latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput + parentModel?: ModelCreateNestedOneWithoutChildModelsInput + parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput + versions?: ModelVersionCreateNestedManyWithoutModelInput + authors?: ModelAuthorCreateNestedManyWithoutModelInput + permissions?: ModelPermissionCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput + likes?: ModelLikeCreateNestedManyWithoutModelInput + interactions?: ModelInteractionCreateNestedManyWithoutModelInput + drafts?: ModelDraftCreateNestedManyWithoutModelInput + comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelDraftUncheckedCreateWithoutUserInput = { + export type ModelUncheckedCreateWithoutChildModelsInput = { id?: string - modelId?: string | null - schemaVersion: number - data: JsonNullValueInput | InputJsonValue + legacyId?: number | null + latestVersionNumber?: number | null + parentModelId?: string | null + parentVersionNumber?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number createdAt?: Date | string updatedAt?: Date | string + deletedAt?: Date | string | null + versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput + authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput + permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput + likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput + interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput + drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelDraftCreateOrConnectWithoutUserInput = { - where: ModelDraftWhereUniqueInput - create: XOR - } - - export type ModelDraftCreateManyUserInputEnvelope = { - data: ModelDraftCreateManyUserInput | ModelDraftCreateManyUserInput[] - skipDuplicates?: boolean + export type ModelCreateOrConnectWithoutChildModelsInput = { + where: ModelWhereUniqueInput + create: XOR } - export type ModelCommentCreateWithoutUserInput = { - id?: string + export type ModelCreateWithoutParentModelInput = { legacyId?: number | null - versionNumber?: number | null - content?: string | null - likesCount?: number + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number createdAt?: Date | string updatedAt?: Date | string - editedAt?: Date | string | null deletedAt?: Date | string | null - model: ModelCreateNestedOneWithoutCommentsInput - parent?: ModelCommentCreateNestedOneWithoutRepliesInput - replies?: ModelCommentCreateNestedManyWithoutParentInput - likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput + latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput + childModels?: ModelCreateNestedManyWithoutParentModelInput + parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput + versions?: ModelVersionCreateNestedManyWithoutModelInput + authors?: ModelAuthorCreateNestedManyWithoutModelInput + permissions?: ModelPermissionCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput + likes?: ModelLikeCreateNestedManyWithoutModelInput + interactions?: ModelInteractionCreateNestedManyWithoutModelInput + drafts?: ModelDraftCreateNestedManyWithoutModelInput + comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelCommentUncheckedCreateWithoutUserInput = { + export type ModelUncheckedCreateWithoutParentModelInput = { id?: string legacyId?: number | null - parentId?: string | null - modelId: string - versionNumber?: number | null - content?: string | null - likesCount?: number + latestVersionNumber?: number | null + parentVersionNumber?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number createdAt?: Date | string updatedAt?: Date | string - editedAt?: Date | string | null deletedAt?: Date | string | null - replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput - likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput + childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput + versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput + authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput + permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput + likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput + interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput + drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelCommentCreateOrConnectWithoutUserInput = { - where: ModelCommentWhereUniqueInput - create: XOR + export type ModelCreateOrConnectWithoutParentModelInput = { + where: ModelWhereUniqueInput + create: XOR } - export type ModelCommentCreateManyUserInputEnvelope = { - data: ModelCommentCreateManyUserInput | ModelCommentCreateManyUserInput[] + export type ModelCreateManyParentModelInputEnvelope = { + data: ModelCreateManyParentModelInput | ModelCreateManyParentModelInput[] skipDuplicates?: boolean } - export type ModelCommentLikeCreateWithoutUserInput = { + export type ModelVersionCreateWithoutParentOfModelsInput = { + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null createdAt?: Date | string - modelComment: ModelCommentCreateNestedOneWithoutLikesInput + finalizedAt?: Date | string | null + model: ModelCreateNestedOneWithoutVersionsInput + latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput + tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput + taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput } - export type ModelCommentLikeUncheckedCreateWithoutUserInput = { - modelCommentId: string + export type ModelVersionUncheckedCreateWithoutParentOfModelsInput = { + modelId: string + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null createdAt?: Date | string + finalizedAt?: Date | string | null + latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput + tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput + taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput } - export type ModelCommentLikeCreateOrConnectWithoutUserInput = { - where: ModelCommentLikeWhereUniqueInput - create: XOR - } - - export type ModelCommentLikeCreateManyUserInputEnvelope = { - data: ModelCommentLikeCreateManyUserInput | ModelCommentLikeCreateManyUserInput[] - skipDuplicates?: boolean + export type ModelVersionCreateOrConnectWithoutParentOfModelsInput = { + where: ModelVersionWhereUniqueInput + create: XOR } - export type PasskeyCreateWithoutUserInput = { - id?: string - name?: string | null - publicKey: string - credentialID: string - counter: number - deviceType: string - backedUp: boolean - transports?: string | null - createdAt?: Date | string | null - aaguid?: string | null + export type ModelVersionCreateWithoutModelInput = { + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput + parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput + tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput + taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput } - export type PasskeyUncheckedCreateWithoutUserInput = { - id?: string - name?: string | null - publicKey: string - credentialID: string - counter: number - deviceType: string - backedUp: boolean - transports?: string | null - createdAt?: Date | string | null - aaguid?: string | null + export type ModelVersionUncheckedCreateWithoutModelInput = { + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput + parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput + tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput + taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput } - export type PasskeyCreateOrConnectWithoutUserInput = { - where: PasskeyWhereUniqueInput - create: XOR + export type ModelVersionCreateOrConnectWithoutModelInput = { + where: ModelVersionWhereUniqueInput + create: XOR } - export type PasskeyCreateManyUserInputEnvelope = { - data: PasskeyCreateManyUserInput | PasskeyCreateManyUserInput[] + export type ModelVersionCreateManyModelInputEnvelope = { + data: ModelVersionCreateManyModelInput | ModelVersionCreateManyModelInput[] skipDuplicates?: boolean } - export type AccountUpsertWithWhereUniqueWithoutUserInput = { - where: AccountWhereUniqueInput - update: XOR - create: XOR - } - - export type AccountUpdateWithWhereUniqueWithoutUserInput = { - where: AccountWhereUniqueInput - data: XOR - } - - export type AccountUpdateManyWithWhereWithoutUserInput = { - where: AccountScalarWhereInput - data: XOR - } - - export type AccountScalarWhereInput = { - AND?: AccountScalarWhereInput | AccountScalarWhereInput[] - OR?: AccountScalarWhereInput[] - NOT?: AccountScalarWhereInput | AccountScalarWhereInput[] - id?: StringFilter<"Account"> | string - userId?: StringFilter<"Account"> | string - accountId?: StringFilter<"Account"> | string - providerId?: StringFilter<"Account"> | string - accessToken?: StringNullableFilter<"Account"> | string | null - refreshToken?: StringNullableFilter<"Account"> | string | null - accessTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null - refreshTokenExpiresAt?: DateTimeNullableFilter<"Account"> | Date | string | null - scope?: StringNullableFilter<"Account"> | string | null - idToken?: StringNullableFilter<"Account"> | string | null - password?: StringNullableFilter<"Account"> | string | null - createdAt?: DateTimeFilter<"Account"> | Date | string - updatedAt?: DateTimeFilter<"Account"> | Date | string - } - - 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 - token?: StringFilter<"Session"> | string - ipAddress?: StringNullableFilter<"Session"> | string | null - userAgent?: StringNullableFilter<"Session"> | string | null - createdAt?: DateTimeFilter<"Session"> | Date | string - updatedAt?: DateTimeFilter<"Session"> | Date | string - impersonatedBy?: StringNullableFilter<"Session"> | string | null - } - - export type VerificationUpsertWithWhereUniqueWithoutUserInput = { - where: VerificationWhereUniqueInput - update: XOR - create: XOR - } - - export type VerificationUpdateWithWhereUniqueWithoutUserInput = { - where: VerificationWhereUniqueInput - data: XOR - } - - export type VerificationUpdateManyWithWhereWithoutUserInput = { - where: VerificationScalarWhereInput - data: XOR - } - - export type VerificationScalarWhereInput = { - AND?: VerificationScalarWhereInput | VerificationScalarWhereInput[] - OR?: VerificationScalarWhereInput[] - NOT?: VerificationScalarWhereInput | VerificationScalarWhereInput[] - id?: StringFilter<"Verification"> | string - identifier?: StringFilter<"Verification"> | string - value?: StringFilter<"Verification"> | string - expiresAt?: DateTimeFilter<"Verification"> | Date | string - createdAt?: DateTimeNullableFilter<"Verification"> | Date | string | null - updatedAt?: DateTimeNullableFilter<"Verification"> | Date | string | null - userId?: StringNullableFilter<"Verification"> | string | null + export type ModelAuthorCreateWithoutModelInput = { + role: $Enums.AuthorRole + createdAt?: Date | string + user: UserCreateNestedOneWithoutAuthoredModelsInput } - export type ModelAuthorUpsertWithWhereUniqueWithoutUserInput = { - where: ModelAuthorWhereUniqueInput - update: XOR - create: XOR + export type ModelAuthorUncheckedCreateWithoutModelInput = { + userId: string + role: $Enums.AuthorRole + createdAt?: Date | string } - export type ModelAuthorUpdateWithWhereUniqueWithoutUserInput = { + export type ModelAuthorCreateOrConnectWithoutModelInput = { where: ModelAuthorWhereUniqueInput - data: XOR + create: XOR } - export type ModelAuthorUpdateManyWithWhereWithoutUserInput = { - where: ModelAuthorScalarWhereInput - data: XOR + export type ModelAuthorCreateManyModelInputEnvelope = { + data: ModelAuthorCreateManyModelInput | ModelAuthorCreateManyModelInput[] + skipDuplicates?: boolean } - export type ModelAuthorScalarWhereInput = { - AND?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] - OR?: ModelAuthorScalarWhereInput[] - NOT?: ModelAuthorScalarWhereInput | ModelAuthorScalarWhereInput[] - modelId?: StringFilter<"ModelAuthor"> | string - userId?: StringFilter<"ModelAuthor"> | string - role?: EnumAuthorRoleFilter<"ModelAuthor"> | $Enums.AuthorRole - createdAt?: DateTimeFilter<"ModelAuthor"> | Date | string + export type ModelPermissionCreateWithoutModelInput = { + id?: string + permissionLevel: $Enums.PermissionLevel + createdAt?: Date | string + granteeUser?: UserCreateNestedOneWithoutGrantedPermissionsInput } - export type ModelPermissionUpsertWithWhereUniqueWithoutGranteeUserInput = { - where: ModelPermissionWhereUniqueInput - update: XOR - create: XOR + export type ModelPermissionUncheckedCreateWithoutModelInput = { + id?: string + granteeUserId?: string | null + permissionLevel: $Enums.PermissionLevel + createdAt?: Date | string } - export type ModelPermissionUpdateWithWhereUniqueWithoutGranteeUserInput = { + export type ModelPermissionCreateOrConnectWithoutModelInput = { where: ModelPermissionWhereUniqueInput - data: XOR - } - - export type ModelPermissionUpdateManyWithWhereWithoutGranteeUserInput = { - where: ModelPermissionScalarWhereInput - data: XOR - } - - export type ModelPermissionScalarWhereInput = { - AND?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] - OR?: ModelPermissionScalarWhereInput[] - NOT?: ModelPermissionScalarWhereInput | ModelPermissionScalarWhereInput[] - id?: StringFilter<"ModelPermission"> | string - modelId?: StringFilter<"ModelPermission"> | string - granteeUserId?: StringNullableFilter<"ModelPermission"> | string | null - permissionLevel?: EnumPermissionLevelFilter<"ModelPermission"> | $Enums.PermissionLevel - createdAt?: DateTimeFilter<"ModelPermission"> | Date | string - } - - export type EventUpsertWithWhereUniqueWithoutActorInput = { - where: EventWhereUniqueInput - update: XOR - create: XOR - } - - export type EventUpdateWithWhereUniqueWithoutActorInput = { - where: EventWhereUniqueInput - data: XOR - } - - export type EventUpdateManyWithWhereWithoutActorInput = { - where: EventScalarWhereInput - data: XOR - } - - export type EventScalarWhereInput = { - AND?: EventScalarWhereInput | EventScalarWhereInput[] - OR?: EventScalarWhereInput[] - NOT?: EventScalarWhereInput | EventScalarWhereInput[] - id?: StringFilter<"Event"> | string - type?: StringFilter<"Event"> | string - actorId?: StringFilter<"Event"> | string - resourceType?: StringFilter<"Event"> | string - resourceId?: StringFilter<"Event"> | string - payload?: JsonFilter<"Event"> - createdAt?: DateTimeFilter<"Event"> | Date | string - processedAt?: DateTimeNullableFilter<"Event"> | Date | string | null - } - - export type ModelLikeUpsertWithWhereUniqueWithoutUserInput = { - where: ModelLikeWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelLikeUpdateWithWhereUniqueWithoutUserInput = { - where: ModelLikeWhereUniqueInput - data: XOR - } - - export type ModelLikeUpdateManyWithWhereWithoutUserInput = { - where: ModelLikeScalarWhereInput - data: XOR - } - - export type ModelLikeScalarWhereInput = { - AND?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] - OR?: ModelLikeScalarWhereInput[] - NOT?: ModelLikeScalarWhereInput | ModelLikeScalarWhereInput[] - modelId?: StringFilter<"ModelLike"> | string - userId?: StringFilter<"ModelLike"> | string - createdAt?: DateTimeFilter<"ModelLike"> | Date | string - } - - export type ModelInteractionUpsertWithWhereUniqueWithoutUserInput = { - where: ModelInteractionWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelInteractionUpdateWithWhereUniqueWithoutUserInput = { - where: ModelInteractionWhereUniqueInput - data: XOR - } - - export type ModelInteractionUpdateManyWithWhereWithoutUserInput = { - where: ModelInteractionScalarWhereInput - data: XOR + create: XOR } - export type ModelInteractionScalarWhereInput = { - AND?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] - OR?: ModelInteractionScalarWhereInput[] - NOT?: ModelInteractionScalarWhereInput | ModelInteractionScalarWhereInput[] - id?: StringFilter<"ModelInteraction"> | string - modelId?: StringFilter<"ModelInteraction"> | string - versionNumber?: IntNullableFilter<"ModelInteraction"> | number | null - kind?: EnumModelInteractionKindFilter<"ModelInteraction"> | $Enums.ModelInteractionKind - userId?: StringNullableFilter<"ModelInteraction"> | string | null - sessionId?: StringNullableFilter<"ModelInteraction"> | string | null - ipHash?: StringNullableFilter<"ModelInteraction"> | string | null - userAgent?: StringNullableFilter<"ModelInteraction"> | string | null - referer?: StringNullableFilter<"ModelInteraction"> | string | null - geo?: JsonNullableFilter<"ModelInteraction"> - cookie?: StringNullableFilter<"ModelInteraction"> | string | null - createdAt?: DateTimeFilter<"ModelInteraction"> | Date | string + export type ModelPermissionCreateManyModelInputEnvelope = { + data: ModelPermissionCreateManyModelInput | ModelPermissionCreateManyModelInput[] + skipDuplicates?: boolean } - export type ModelDraftUpsertWithWhereUniqueWithoutUserInput = { - where: ModelDraftWhereUniqueInput - update: XOR - create: XOR + export type ModelAdditionalFileCreateWithoutModelInput = { + id?: string + fileKey: string + kind?: $Enums.ModelFileKind + createdAt?: Date | string + taggedVersion: ModelVersionCreateNestedOneWithoutTaggedAdditionalFilesInput } - export type ModelDraftUpdateWithWhereUniqueWithoutUserInput = { - where: ModelDraftWhereUniqueInput - data: XOR + export type ModelAdditionalFileUncheckedCreateWithoutModelInput = { + id?: string + taggedVersionNumber: number + fileKey: string + kind?: $Enums.ModelFileKind + createdAt?: Date | string } - export type ModelDraftUpdateManyWithWhereWithoutUserInput = { - where: ModelDraftScalarWhereInput - data: XOR + export type ModelAdditionalFileCreateOrConnectWithoutModelInput = { + where: ModelAdditionalFileWhereUniqueInput + create: XOR } - export type ModelDraftScalarWhereInput = { - AND?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] - OR?: ModelDraftScalarWhereInput[] - NOT?: ModelDraftScalarWhereInput | ModelDraftScalarWhereInput[] - id?: StringFilter<"ModelDraft"> | string - userId?: StringFilter<"ModelDraft"> | string - modelId?: StringNullableFilter<"ModelDraft"> | string | null - schemaVersion?: IntFilter<"ModelDraft"> | number - data?: JsonFilter<"ModelDraft"> - createdAt?: DateTimeFilter<"ModelDraft"> | Date | string - updatedAt?: DateTimeFilter<"ModelDraft"> | Date | string + export type ModelAdditionalFileCreateManyModelInputEnvelope = { + data: ModelAdditionalFileCreateManyModelInput | ModelAdditionalFileCreateManyModelInput[] + skipDuplicates?: boolean } - export type ModelCommentUpsertWithWhereUniqueWithoutUserInput = { - where: ModelCommentWhereUniqueInput - update: XOR - create: XOR + export type ModelLikeCreateWithoutModelInput = { + createdAt?: Date | string + user: UserCreateNestedOneWithoutModelLikesInput } - export type ModelCommentUpdateWithWhereUniqueWithoutUserInput = { - where: ModelCommentWhereUniqueInput - data: XOR + export type ModelLikeUncheckedCreateWithoutModelInput = { + userId: string + createdAt?: Date | string } - export type ModelCommentUpdateManyWithWhereWithoutUserInput = { - where: ModelCommentScalarWhereInput - data: XOR + export type ModelLikeCreateOrConnectWithoutModelInput = { + where: ModelLikeWhereUniqueInput + create: XOR } - export type ModelCommentScalarWhereInput = { - AND?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] - OR?: ModelCommentScalarWhereInput[] - NOT?: ModelCommentScalarWhereInput | ModelCommentScalarWhereInput[] - id?: StringFilter<"ModelComment"> | string - legacyId?: IntNullableFilter<"ModelComment"> | number | null - parentId?: StringNullableFilter<"ModelComment"> | string | null - userId?: StringNullableFilter<"ModelComment"> | string | null - modelId?: StringFilter<"ModelComment"> | string - versionNumber?: IntNullableFilter<"ModelComment"> | number | null - content?: StringNullableFilter<"ModelComment"> | string | null - likesCount?: IntFilter<"ModelComment"> | number - createdAt?: DateTimeFilter<"ModelComment"> | Date | string - updatedAt?: DateTimeFilter<"ModelComment"> | Date | string - editedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null - deletedAt?: DateTimeNullableFilter<"ModelComment"> | Date | string | null + export type ModelLikeCreateManyModelInputEnvelope = { + data: ModelLikeCreateManyModelInput | ModelLikeCreateManyModelInput[] + skipDuplicates?: boolean } - export type ModelCommentLikeUpsertWithWhereUniqueWithoutUserInput = { - where: ModelCommentLikeWhereUniqueInput - update: XOR - create: XOR + export type ModelInteractionCreateWithoutModelInput = { + id?: string + versionNumber?: number | null + kind: $Enums.ModelInteractionKind + sessionId?: string | null + ipHash?: string | null + userAgent?: string | null + referer?: string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: string | null + createdAt?: Date | string + user?: UserCreateNestedOneWithoutModelInteractionsInput } - export type ModelCommentLikeUpdateWithWhereUniqueWithoutUserInput = { - where: ModelCommentLikeWhereUniqueInput - data: XOR + export type ModelInteractionUncheckedCreateWithoutModelInput = { + id?: string + versionNumber?: number | null + kind: $Enums.ModelInteractionKind + userId?: string | null + sessionId?: string | null + ipHash?: string | null + userAgent?: string | null + referer?: string | null + geo?: NullableJsonNullValueInput | InputJsonValue + cookie?: string | null + createdAt?: Date | string } - export type ModelCommentLikeUpdateManyWithWhereWithoutUserInput = { - where: ModelCommentLikeScalarWhereInput - data: XOR + export type ModelInteractionCreateOrConnectWithoutModelInput = { + where: ModelInteractionWhereUniqueInput + create: XOR } - export type ModelCommentLikeScalarWhereInput = { - AND?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] - OR?: ModelCommentLikeScalarWhereInput[] - NOT?: ModelCommentLikeScalarWhereInput | ModelCommentLikeScalarWhereInput[] - modelCommentId?: StringFilter<"ModelCommentLike"> | string - userId?: StringFilter<"ModelCommentLike"> | string - createdAt?: DateTimeFilter<"ModelCommentLike"> | Date | string + export type ModelInteractionCreateManyModelInputEnvelope = { + data: ModelInteractionCreateManyModelInput | ModelInteractionCreateManyModelInput[] + skipDuplicates?: boolean } - export type PasskeyUpsertWithWhereUniqueWithoutUserInput = { - where: PasskeyWhereUniqueInput - update: XOR - create: XOR + export type ModelDraftCreateWithoutModelInput = { + id?: string + schemaVersion: number + data: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + updatedAt?: Date | string + user: UserCreateNestedOneWithoutModelDraftsInput } - export type PasskeyUpdateWithWhereUniqueWithoutUserInput = { - where: PasskeyWhereUniqueInput - data: XOR + export type ModelDraftUncheckedCreateWithoutModelInput = { + id?: string + userId: string + schemaVersion: number + data: JsonNullValueInput | InputJsonValue + createdAt?: Date | string + updatedAt?: Date | string } - export type PasskeyUpdateManyWithWhereWithoutUserInput = { - where: PasskeyScalarWhereInput - data: XOR + export type ModelDraftCreateOrConnectWithoutModelInput = { + where: ModelDraftWhereUniqueInput + create: XOR } - export type PasskeyScalarWhereInput = { - AND?: PasskeyScalarWhereInput | PasskeyScalarWhereInput[] - OR?: PasskeyScalarWhereInput[] - NOT?: PasskeyScalarWhereInput | PasskeyScalarWhereInput[] - id?: StringFilter<"Passkey"> | string - name?: StringNullableFilter<"Passkey"> | string | null - publicKey?: StringFilter<"Passkey"> | string - userId?: StringFilter<"Passkey"> | string - credentialID?: StringFilter<"Passkey"> | string - counter?: IntFilter<"Passkey"> | number - deviceType?: StringFilter<"Passkey"> | string - backedUp?: BoolFilter<"Passkey"> | boolean - transports?: StringNullableFilter<"Passkey"> | string | null - createdAt?: DateTimeNullableFilter<"Passkey"> | Date | string | null - aaguid?: StringNullableFilter<"Passkey"> | string | null + export type ModelDraftCreateManyModelInputEnvelope = { + data: ModelDraftCreateManyModelInput | ModelDraftCreateManyModelInput[] + skipDuplicates?: boolean } - export type UserCreateWithoutAccountsInput = { + export type ModelCommentCreateWithoutModelInput = { id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null + legacyId?: number | null + versionNumber?: number | null + content?: string | null + likesCount?: number createdAt?: Date | string updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean + editedAt?: Date | string | null deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - sessions?: SessionCreateNestedManyWithoutUserInput - verifications?: VerificationCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput - events?: EventCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput - comments?: ModelCommentCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput - passkeys?: PasskeyCreateNestedManyWithoutUserInput + user?: UserCreateNestedOneWithoutCommentsInput + parent?: ModelCommentCreateNestedOneWithoutRepliesInput + replies?: ModelCommentCreateNestedManyWithoutParentInput + likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput } - export type UserUncheckedCreateWithoutAccountsInput = { + export type ModelCommentUncheckedCreateWithoutModelInput = { id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null + legacyId?: number | null + parentId?: string | null + userId?: string | null + versionNumber?: number | null + content?: string | null + likesCount?: number createdAt?: Date | string updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean + editedAt?: Date | string | null deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - sessions?: SessionUncheckedCreateNestedManyWithoutUserInput - verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput - events?: EventUncheckedCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput - passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput + replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput + likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput } - export type UserCreateOrConnectWithoutAccountsInput = { - where: UserWhereUniqueInput - create: XOR + export type ModelCommentCreateOrConnectWithoutModelInput = { + where: ModelCommentWhereUniqueInput + create: XOR } - export type UserUpsertWithoutAccountsInput = { - update: XOR - create: XOR - where?: UserWhereInput + export type ModelCommentCreateManyModelInputEnvelope = { + data: ModelCommentCreateManyModelInput | ModelCommentCreateManyModelInput[] + skipDuplicates?: boolean } - export type UserUpdateToOneWithWhereWithoutAccountsInput = { - where?: UserWhereInput - data: XOR + export type ModelVersionUpsertWithoutLatestOfModelInput = { + update: XOR + create: XOR + where?: ModelVersionWhereInput } - export type UserUpdateWithoutAccountsInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null + export type ModelVersionUpdateToOneWithWhereWithoutLatestOfModelInput = { + where?: ModelVersionWhereInput + data: XOR + } + + export type ModelVersionUpdateWithoutLatestOfModelInput = { + versionNumber?: IntFieldUpdateOperationsInput | number + title?: StringFieldUpdateOperationsInput | string + description?: NullableStringFieldUpdateOperationsInput | string | null + changeSummary?: NullableStringFieldUpdateOperationsInput | string | null + previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null + netlogoFileKey?: StringFieldUpdateOperationsInput | string + netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null + infoTab?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + model?: ModelUpdateOneRequiredWithoutVersionsNestedInput + parentOfModels?: ModelUpdateManyWithoutParentVersionNestedInput + tags?: ModelVersionTagUpdateManyWithoutModelVersionNestedInput + taggedAdditionalFiles?: ModelAdditionalFileUpdateManyWithoutTaggedVersionNestedInput + } + + export type ModelVersionUncheckedUpdateWithoutLatestOfModelInput = { + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: IntFieldUpdateOperationsInput | number + title?: StringFieldUpdateOperationsInput | string + description?: NullableStringFieldUpdateOperationsInput | string | null + changeSummary?: NullableStringFieldUpdateOperationsInput | string | null + previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null + netlogoFileKey?: StringFieldUpdateOperationsInput | string + netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null + infoTab?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + parentOfModels?: ModelUncheckedUpdateManyWithoutParentVersionNestedInput + tags?: ModelVersionTagUncheckedUpdateManyWithoutModelVersionNestedInput + taggedAdditionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutTaggedVersionNestedInput + } + + export type ModelUpsertWithoutChildModelsInput = { + update: XOR + create: XOR + where?: ModelWhereInput + } + + export type ModelUpdateToOneWithWhereWithoutChildModelsInput = { + where?: ModelWhereInput + data: XOR + } + + export type ModelUpdateWithoutChildModelsInput = { + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - sessions?: SessionUpdateManyWithoutUserNestedInput - verifications?: VerificationUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput - events?: EventUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput - comments?: ModelCommentUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUpdateManyWithoutUserNestedInput + latestVersion?: ModelVersionUpdateOneWithoutLatestOfModelNestedInput + parentModel?: ModelUpdateOneWithoutChildModelsNestedInput + parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput + versions?: ModelVersionUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput + likes?: ModelLikeUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUpdateManyWithoutModelNestedInput + drafts?: ModelDraftUpdateManyWithoutModelNestedInput + comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type UserUncheckedUpdateWithoutAccountsInput = { + export type ModelUncheckedUpdateWithoutChildModelsInput = { id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + parentModelId?: NullableStringFieldUpdateOperationsInput | string | null + parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput - verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput - events?: EventUncheckedUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput + versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput + likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput + drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput } - export type UserCreateWithoutSessionsInput = { - id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null - createdAt?: Date | string - updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean - deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountCreateNestedManyWithoutUserInput - verifications?: VerificationCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput - events?: EventCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput - comments?: ModelCommentCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput - passkeys?: PasskeyCreateNestedManyWithoutUserInput + export type ModelUpsertWithWhereUniqueWithoutParentModelInput = { + where: ModelWhereUniqueInput + update: XOR + create: XOR + } + + export type ModelUpdateWithWhereUniqueWithoutParentModelInput = { + where: ModelWhereUniqueInput + data: XOR + } + + export type ModelUpdateManyWithWhereWithoutParentModelInput = { + where: ModelScalarWhereInput + data: XOR + } + + export type ModelScalarWhereInput = { + AND?: ModelScalarWhereInput | ModelScalarWhereInput[] + OR?: ModelScalarWhereInput[] + NOT?: ModelScalarWhereInput | ModelScalarWhereInput[] + id?: StringFilter<"Model"> | string + legacyId?: IntNullableFilter<"Model"> | number | null + latestVersionNumber?: IntNullableFilter<"Model"> | number | null + parentModelId?: StringNullableFilter<"Model"> | string | null + parentVersionNumber?: IntNullableFilter<"Model"> | number | null + visibility?: EnumModelVisibilityFilter<"Model"> | $Enums.ModelVisibility + isEndorsed?: BoolFilter<"Model"> | boolean + isLibraryModel?: BoolFilter<"Model"> | boolean + viewCount?: IntFilter<"Model"> | number + runCount?: IntFilter<"Model"> | number + downloadCount?: IntFilter<"Model"> | number + shareCount?: IntFilter<"Model"> | number + createdAt?: DateTimeFilter<"Model"> | Date | string + updatedAt?: DateTimeFilter<"Model"> | Date | string + deletedAt?: DateTimeNullableFilter<"Model"> | Date | string | null + } + + export type ModelVersionUpsertWithoutParentOfModelsInput = { + update: XOR + create: XOR + where?: ModelVersionWhereInput + } + + export type ModelVersionUpdateToOneWithWhereWithoutParentOfModelsInput = { + where?: ModelVersionWhereInput + data: XOR + } + + export type ModelVersionUpdateWithoutParentOfModelsInput = { + versionNumber?: IntFieldUpdateOperationsInput | number + title?: StringFieldUpdateOperationsInput | string + description?: NullableStringFieldUpdateOperationsInput | string | null + changeSummary?: NullableStringFieldUpdateOperationsInput | string | null + previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null + netlogoFileKey?: StringFieldUpdateOperationsInput | string + netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null + infoTab?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + model?: ModelUpdateOneRequiredWithoutVersionsNestedInput + latestOfModel?: ModelUpdateOneWithoutLatestVersionNestedInput + tags?: ModelVersionTagUpdateManyWithoutModelVersionNestedInput + taggedAdditionalFiles?: ModelAdditionalFileUpdateManyWithoutTaggedVersionNestedInput + } + + export type ModelVersionUncheckedUpdateWithoutParentOfModelsInput = { + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: IntFieldUpdateOperationsInput | number + title?: StringFieldUpdateOperationsInput | string + description?: NullableStringFieldUpdateOperationsInput | string | null + changeSummary?: NullableStringFieldUpdateOperationsInput | string | null + previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null + netlogoFileKey?: StringFieldUpdateOperationsInput | string + netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null + infoTab?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + latestOfModel?: ModelUncheckedUpdateOneWithoutLatestVersionNestedInput + tags?: ModelVersionTagUncheckedUpdateManyWithoutModelVersionNestedInput + taggedAdditionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutTaggedVersionNestedInput } - export type UserUncheckedCreateWithoutSessionsInput = { - id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null - createdAt?: Date | string - updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean - deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountUncheckedCreateNestedManyWithoutUserInput - verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput - events?: EventUncheckedCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput - passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput + export type ModelVersionUpsertWithWhereUniqueWithoutModelInput = { + where: ModelVersionWhereUniqueInput + update: XOR + create: XOR } - export type UserCreateOrConnectWithoutSessionsInput = { - where: UserWhereUniqueInput - create: XOR + export type ModelVersionUpdateWithWhereUniqueWithoutModelInput = { + where: ModelVersionWhereUniqueInput + data: XOR } - export type UserUpsertWithoutSessionsInput = { - update: XOR - create: XOR - where?: UserWhereInput + export type ModelVersionUpdateManyWithWhereWithoutModelInput = { + where: ModelVersionScalarWhereInput + data: XOR } - export type UserUpdateToOneWithWhereWithoutSessionsInput = { - where?: UserWhereInput - data: XOR + export type ModelVersionScalarWhereInput = { + AND?: ModelVersionScalarWhereInput | ModelVersionScalarWhereInput[] + OR?: ModelVersionScalarWhereInput[] + NOT?: ModelVersionScalarWhereInput | ModelVersionScalarWhereInput[] + modelId?: StringFilter<"ModelVersion"> | string + versionNumber?: IntFilter<"ModelVersion"> | number + title?: StringFilter<"ModelVersion"> | string + description?: StringNullableFilter<"ModelVersion"> | string | null + changeSummary?: StringNullableFilter<"ModelVersion"> | string | null + previewImageFileKey?: StringNullableFilter<"ModelVersion"> | string | null + netlogoFileKey?: StringFilter<"ModelVersion"> | string + netlogoVersion?: StringNullableFilter<"ModelVersion"> | string | null + infoTab?: StringNullableFilter<"ModelVersion"> | string | null + createdAt?: DateTimeFilter<"ModelVersion"> | Date | string + finalizedAt?: DateTimeNullableFilter<"ModelVersion"> | Date | string | null } - export type UserUpdateWithoutSessionsInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUpdateManyWithoutUserNestedInput - verifications?: VerificationUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput - events?: EventUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput - comments?: ModelCommentUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUpdateManyWithoutUserNestedInput + export type ModelAuthorUpsertWithWhereUniqueWithoutModelInput = { + where: ModelAuthorWhereUniqueInput + update: XOR + create: XOR } - export type UserUncheckedUpdateWithoutSessionsInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput - verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput - events?: EventUncheckedUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput + export type ModelAuthorUpdateWithWhereUniqueWithoutModelInput = { + where: ModelAuthorWhereUniqueInput + data: XOR } - export type UserCreateWithoutVerificationsInput = { - id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null - createdAt?: Date | string - updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean - deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountCreateNestedManyWithoutUserInput - sessions?: SessionCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput - events?: EventCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput - comments?: ModelCommentCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput - passkeys?: PasskeyCreateNestedManyWithoutUserInput + export type ModelAuthorUpdateManyWithWhereWithoutModelInput = { + where: ModelAuthorScalarWhereInput + data: XOR } - export type UserUncheckedCreateWithoutVerificationsInput = { - id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null - createdAt?: Date | string - updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean - deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountUncheckedCreateNestedManyWithoutUserInput - sessions?: SessionUncheckedCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput - events?: EventUncheckedCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput - passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput + export type ModelPermissionUpsertWithWhereUniqueWithoutModelInput = { + where: ModelPermissionWhereUniqueInput + update: XOR + create: XOR } - export type UserCreateOrConnectWithoutVerificationsInput = { - where: UserWhereUniqueInput - create: XOR + export type ModelPermissionUpdateWithWhereUniqueWithoutModelInput = { + where: ModelPermissionWhereUniqueInput + data: XOR } - export type UserUpsertWithoutVerificationsInput = { - update: XOR - create: XOR - where?: UserWhereInput + export type ModelPermissionUpdateManyWithWhereWithoutModelInput = { + where: ModelPermissionScalarWhereInput + data: XOR } - export type UserUpdateToOneWithWhereWithoutVerificationsInput = { - where?: UserWhereInput - data: XOR + export type ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput = { + where: ModelAdditionalFileWhereUniqueInput + update: XOR + create: XOR } - export type UserUpdateWithoutVerificationsInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUpdateManyWithoutUserNestedInput - sessions?: SessionUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput - events?: EventUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput - comments?: ModelCommentUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUpdateManyWithoutUserNestedInput + export type ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput = { + where: ModelAdditionalFileWhereUniqueInput + data: XOR } - export type UserUncheckedUpdateWithoutVerificationsInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput - sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput - events?: EventUncheckedUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput + export type ModelAdditionalFileUpdateManyWithWhereWithoutModelInput = { + where: ModelAdditionalFileScalarWhereInput + data: XOR } - export type UserCreateWithoutPasskeysInput = { - id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null - createdAt?: Date | string - updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean - deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountCreateNestedManyWithoutUserInput - sessions?: SessionCreateNestedManyWithoutUserInput - verifications?: VerificationCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput - events?: EventCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput - comments?: ModelCommentCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + export type ModelAdditionalFileScalarWhereInput = { + AND?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] + OR?: ModelAdditionalFileScalarWhereInput[] + NOT?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] + id?: StringFilter<"ModelAdditionalFile"> | string + modelId?: StringFilter<"ModelAdditionalFile"> | string + taggedVersionNumber?: IntFilter<"ModelAdditionalFile"> | number + fileKey?: StringFilter<"ModelAdditionalFile"> | string + kind?: EnumModelFileKindFilter<"ModelAdditionalFile"> | $Enums.ModelFileKind + createdAt?: DateTimeFilter<"ModelAdditionalFile"> | Date | string } - export type UserUncheckedCreateWithoutPasskeysInput = { - id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null - createdAt?: Date | string - updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean - deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountUncheckedCreateNestedManyWithoutUserInput - sessions?: SessionUncheckedCreateNestedManyWithoutUserInput - verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput - events?: EventUncheckedCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + export type ModelLikeUpsertWithWhereUniqueWithoutModelInput = { + where: ModelLikeWhereUniqueInput + update: XOR + create: XOR } - export type UserCreateOrConnectWithoutPasskeysInput = { - where: UserWhereUniqueInput - create: XOR + export type ModelLikeUpdateWithWhereUniqueWithoutModelInput = { + where: ModelLikeWhereUniqueInput + data: XOR } - export type UserUpsertWithoutPasskeysInput = { - update: XOR - create: XOR - where?: UserWhereInput + export type ModelLikeUpdateManyWithWhereWithoutModelInput = { + where: ModelLikeScalarWhereInput + data: XOR } - export type UserUpdateToOneWithWhereWithoutPasskeysInput = { - where?: UserWhereInput - data: XOR + export type ModelInteractionUpsertWithWhereUniqueWithoutModelInput = { + where: ModelInteractionWhereUniqueInput + update: XOR + create: XOR } - export type UserUpdateWithoutPasskeysInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUpdateManyWithoutUserNestedInput - sessions?: SessionUpdateManyWithoutUserNestedInput - verifications?: VerificationUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput - events?: EventUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput - comments?: ModelCommentUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + export type ModelInteractionUpdateWithWhereUniqueWithoutModelInput = { + where: ModelInteractionWhereUniqueInput + data: XOR } - export type UserUncheckedUpdateWithoutPasskeysInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput - sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput - verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput - events?: EventUncheckedUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + export type ModelInteractionUpdateManyWithWhereWithoutModelInput = { + where: ModelInteractionScalarWhereInput + data: XOR } - export type ModelVersionCreateWithoutLatestOfModelInput = { - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null - createdAt?: Date | string - finalizedAt?: Date | string | null - model: ModelCreateNestedOneWithoutVersionsInput - parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput - tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput - taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput + export type ModelDraftUpsertWithWhereUniqueWithoutModelInput = { + where: ModelDraftWhereUniqueInput + update: XOR + create: XOR + } + + export type ModelDraftUpdateWithWhereUniqueWithoutModelInput = { + where: ModelDraftWhereUniqueInput + data: XOR } - export type ModelVersionUncheckedCreateWithoutLatestOfModelInput = { - modelId: string - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null - createdAt?: Date | string - finalizedAt?: Date | string | null - parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput - tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput - taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput + export type ModelDraftUpdateManyWithWhereWithoutModelInput = { + where: ModelDraftScalarWhereInput + data: XOR } - export type ModelVersionCreateOrConnectWithoutLatestOfModelInput = { - where: ModelVersionWhereUniqueInput - create: XOR + export type ModelCommentUpsertWithWhereUniqueWithoutModelInput = { + where: ModelCommentWhereUniqueInput + update: XOR + create: XOR } - export type ModelCreateWithoutChildModelsInput = { + export type ModelCommentUpdateWithWhereUniqueWithoutModelInput = { + where: ModelCommentWhereUniqueInput + data: XOR + } + + export type ModelCommentUpdateManyWithWhereWithoutModelInput = { + where: ModelCommentScalarWhereInput + data: XOR + } + + export type ModelCreateWithoutVersionsInput = { legacyId?: number | null visibility?: $Enums.ModelVisibility isEndorsed?: boolean @@ -32587,8 +36739,8 @@ export namespace Prisma { deletedAt?: Date | string | null latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput parentModel?: ModelCreateNestedOneWithoutChildModelsInput + childModels?: ModelCreateNestedManyWithoutParentModelInput parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput - versions?: ModelVersionCreateNestedManyWithoutModelInput authors?: ModelAuthorCreateNestedManyWithoutModelInput permissions?: ModelPermissionCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput @@ -32598,7 +36750,7 @@ export namespace Prisma { comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelUncheckedCreateWithoutChildModelsInput = { + export type ModelUncheckedCreateWithoutVersionsInput = { id?: string legacyId?: number | null latestVersionNumber?: number | null @@ -32614,7 +36766,7 @@ export namespace Prisma { createdAt?: Date | string updatedAt?: Date | string deletedAt?: Date | string | null - versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput + childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput @@ -32624,12 +36776,12 @@ export namespace Prisma { comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelCreateOrConnectWithoutChildModelsInput = { + export type ModelCreateOrConnectWithoutVersionsInput = { where: ModelWhereUniqueInput - create: XOR + create: XOR } - export type ModelCreateWithoutParentModelInput = { + export type ModelCreateWithoutLatestVersionInput = { legacyId?: number | null visibility?: $Enums.ModelVisibility isEndorsed?: boolean @@ -32641,7 +36793,7 @@ export namespace Prisma { createdAt?: Date | string updatedAt?: Date | string deletedAt?: Date | string | null - latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput + parentModel?: ModelCreateNestedOneWithoutChildModelsInput childModels?: ModelCreateNestedManyWithoutParentModelInput parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput versions?: ModelVersionCreateNestedManyWithoutModelInput @@ -32654,10 +36806,9 @@ export namespace Prisma { comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelUncheckedCreateWithoutParentModelInput = { - id?: string + export type ModelUncheckedCreateWithoutLatestVersionInput = { legacyId?: number | null - latestVersionNumber?: number | null + parentModelId?: string | null parentVersionNumber?: number | null visibility?: $Enums.ModelVisibility isEndorsed?: boolean @@ -32680,311 +36831,369 @@ export namespace Prisma { comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelCreateOrConnectWithoutParentModelInput = { + export type ModelCreateOrConnectWithoutLatestVersionInput = { where: ModelWhereUniqueInput - create: XOR + create: XOR } - export type ModelCreateManyParentModelInputEnvelope = { - data: ModelCreateManyParentModelInput | ModelCreateManyParentModelInput[] - skipDuplicates?: boolean + export type ModelCreateWithoutParentVersionInput = { + legacyId?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number + createdAt?: Date | string + updatedAt?: Date | string + deletedAt?: Date | string | null + latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput + parentModel?: ModelCreateNestedOneWithoutChildModelsInput + childModels?: ModelCreateNestedManyWithoutParentModelInput + versions?: ModelVersionCreateNestedManyWithoutModelInput + authors?: ModelAuthorCreateNestedManyWithoutModelInput + permissions?: ModelPermissionCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput + likes?: ModelLikeCreateNestedManyWithoutModelInput + interactions?: ModelInteractionCreateNestedManyWithoutModelInput + drafts?: ModelDraftCreateNestedManyWithoutModelInput + comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelVersionCreateWithoutParentOfModelsInput = { - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null + export type ModelUncheckedCreateWithoutParentVersionInput = { + id?: string + legacyId?: number | null + latestVersionNumber?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number createdAt?: Date | string - finalizedAt?: Date | string | null - model: ModelCreateNestedOneWithoutVersionsInput - latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput - tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput - taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput + updatedAt?: Date | string + deletedAt?: Date | string | null + childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput + versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput + authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput + permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput + likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput + interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput + drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelVersionUncheckedCreateWithoutParentOfModelsInput = { - modelId: string - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null - createdAt?: Date | string - finalizedAt?: Date | string | null - latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput - tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput - taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput + export type ModelCreateOrConnectWithoutParentVersionInput = { + where: ModelWhereUniqueInput + create: XOR } - export type ModelVersionCreateOrConnectWithoutParentOfModelsInput = { - where: ModelVersionWhereUniqueInput - create: XOR + export type ModelCreateManyParentVersionInputEnvelope = { + data: ModelCreateManyParentVersionInput | ModelCreateManyParentVersionInput[] + skipDuplicates?: boolean } - export type ModelVersionCreateWithoutModelInput = { - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null + export type ModelVersionTagCreateWithoutModelVersionInput = { createdAt?: Date | string - finalizedAt?: Date | string | null - latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput - parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput - tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput - taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput + tag: TagCreateNestedOneWithoutModelVersionsInput } - export type ModelVersionUncheckedCreateWithoutModelInput = { - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null + export type ModelVersionTagUncheckedCreateWithoutModelVersionInput = { + tagId: string createdAt?: Date | string - finalizedAt?: Date | string | null - latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput - parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput - tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput - taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput } - export type ModelVersionCreateOrConnectWithoutModelInput = { - where: ModelVersionWhereUniqueInput - create: XOR + export type ModelVersionTagCreateOrConnectWithoutModelVersionInput = { + where: ModelVersionTagWhereUniqueInput + create: XOR } - export type ModelVersionCreateManyModelInputEnvelope = { - data: ModelVersionCreateManyModelInput | ModelVersionCreateManyModelInput[] + export type ModelVersionTagCreateManyModelVersionInputEnvelope = { + data: ModelVersionTagCreateManyModelVersionInput | ModelVersionTagCreateManyModelVersionInput[] skipDuplicates?: boolean } - export type ModelAuthorCreateWithoutModelInput = { - role: $Enums.AuthorRole + export type ModelAdditionalFileCreateWithoutTaggedVersionInput = { + id?: string + fileKey: string + kind?: $Enums.ModelFileKind createdAt?: Date | string - user: UserCreateNestedOneWithoutAuthoredModelsInput + model: ModelCreateNestedOneWithoutAdditionalFilesInput } - export type ModelAuthorUncheckedCreateWithoutModelInput = { - userId: string - role: $Enums.AuthorRole + export type ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput = { + id?: string + fileKey: string + kind?: $Enums.ModelFileKind createdAt?: Date | string } - export type ModelAuthorCreateOrConnectWithoutModelInput = { - where: ModelAuthorWhereUniqueInput - create: XOR + export type ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput = { + where: ModelAdditionalFileWhereUniqueInput + create: XOR } - export type ModelAuthorCreateManyModelInputEnvelope = { - data: ModelAuthorCreateManyModelInput | ModelAuthorCreateManyModelInput[] + export type ModelAdditionalFileCreateManyTaggedVersionInputEnvelope = { + data: ModelAdditionalFileCreateManyTaggedVersionInput | ModelAdditionalFileCreateManyTaggedVersionInput[] skipDuplicates?: boolean } - export type ModelPermissionCreateWithoutModelInput = { - id?: string - permissionLevel: $Enums.PermissionLevel - createdAt?: Date | string - granteeUser?: UserCreateNestedOneWithoutGrantedPermissionsInput + export type ModelUpsertWithoutVersionsInput = { + update: XOR + create: XOR + where?: ModelWhereInput } - export type ModelPermissionUncheckedCreateWithoutModelInput = { - id?: string - granteeUserId?: string | null - permissionLevel: $Enums.PermissionLevel - createdAt?: Date | string + export type ModelUpdateToOneWithWhereWithoutVersionsInput = { + where?: ModelWhereInput + data: XOR } - export type ModelPermissionCreateOrConnectWithoutModelInput = { - where: ModelPermissionWhereUniqueInput - create: XOR + export type ModelUpdateWithoutVersionsInput = { + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + latestVersion?: ModelVersionUpdateOneWithoutLatestOfModelNestedInput + parentModel?: ModelUpdateOneWithoutChildModelsNestedInput + childModels?: ModelUpdateManyWithoutParentModelNestedInput + parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput + authors?: ModelAuthorUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput + likes?: ModelLikeUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUpdateManyWithoutModelNestedInput + drafts?: ModelDraftUpdateManyWithoutModelNestedInput + comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type ModelPermissionCreateManyModelInputEnvelope = { - data: ModelPermissionCreateManyModelInput | ModelPermissionCreateManyModelInput[] - skipDuplicates?: boolean + export type ModelUncheckedUpdateWithoutVersionsInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + parentModelId?: NullableStringFieldUpdateOperationsInput | string | null + parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput + authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput + likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput + drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput } - export type ModelAdditionalFileCreateWithoutModelInput = { - id?: string - fileKey: string - kind?: $Enums.ModelFileKind - createdAt?: Date | string - taggedVersion: ModelVersionCreateNestedOneWithoutTaggedAdditionalFilesInput + export type ModelUpsertWithoutLatestVersionInput = { + update: XOR + create: XOR + where?: ModelWhereInput } - export type ModelAdditionalFileUncheckedCreateWithoutModelInput = { - id?: string - taggedVersionNumber: number - fileKey: string - kind?: $Enums.ModelFileKind - createdAt?: Date | string + export type ModelUpdateToOneWithWhereWithoutLatestVersionInput = { + where?: ModelWhereInput + data: XOR } - export type ModelAdditionalFileCreateOrConnectWithoutModelInput = { - where: ModelAdditionalFileWhereUniqueInput - create: XOR + export type ModelUpdateWithoutLatestVersionInput = { + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + parentModel?: ModelUpdateOneWithoutChildModelsNestedInput + childModels?: ModelUpdateManyWithoutParentModelNestedInput + parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput + versions?: ModelVersionUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput + likes?: ModelLikeUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUpdateManyWithoutModelNestedInput + drafts?: ModelDraftUpdateManyWithoutModelNestedInput + comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type ModelAdditionalFileCreateManyModelInputEnvelope = { - data: ModelAdditionalFileCreateManyModelInput | ModelAdditionalFileCreateManyModelInput[] - skipDuplicates?: boolean + export type ModelUncheckedUpdateWithoutLatestVersionInput = { + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + parentModelId?: NullableStringFieldUpdateOperationsInput | string | null + parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput + versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput + likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput + drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput } - export type ModelLikeCreateWithoutModelInput = { - createdAt?: Date | string - user: UserCreateNestedOneWithoutModelLikesInput + export type ModelUpsertWithWhereUniqueWithoutParentVersionInput = { + where: ModelWhereUniqueInput + update: XOR + create: XOR } - export type ModelLikeUncheckedCreateWithoutModelInput = { - userId: string - createdAt?: Date | string + export type ModelUpdateWithWhereUniqueWithoutParentVersionInput = { + where: ModelWhereUniqueInput + data: XOR } - export type ModelLikeCreateOrConnectWithoutModelInput = { - where: ModelLikeWhereUniqueInput - create: XOR + export type ModelUpdateManyWithWhereWithoutParentVersionInput = { + where: ModelScalarWhereInput + data: XOR } - export type ModelLikeCreateManyModelInputEnvelope = { - data: ModelLikeCreateManyModelInput | ModelLikeCreateManyModelInput[] - skipDuplicates?: boolean + export type ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput = { + where: ModelVersionTagWhereUniqueInput + update: XOR + create: XOR } - export type ModelInteractionCreateWithoutModelInput = { - id?: string - versionNumber?: number | null - kind: $Enums.ModelInteractionKind - sessionId?: string | null - ipHash?: string | null - userAgent?: string | null - referer?: string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: string | null - createdAt?: Date | string - user?: UserCreateNestedOneWithoutModelInteractionsInput + export type ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput = { + where: ModelVersionTagWhereUniqueInput + data: XOR } - export type ModelInteractionUncheckedCreateWithoutModelInput = { - id?: string - versionNumber?: number | null - kind: $Enums.ModelInteractionKind - userId?: string | null - sessionId?: string | null - ipHash?: string | null - userAgent?: string | null - referer?: string | null - geo?: NullableJsonNullValueInput | InputJsonValue - cookie?: string | null - createdAt?: Date | string + export type ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput = { + where: ModelVersionTagScalarWhereInput + data: XOR } - export type ModelInteractionCreateOrConnectWithoutModelInput = { - where: ModelInteractionWhereUniqueInput - create: XOR + export type ModelVersionTagScalarWhereInput = { + AND?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] + OR?: ModelVersionTagScalarWhereInput[] + NOT?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] + modelId?: StringFilter<"ModelVersionTag"> | string + versionNumber?: IntFilter<"ModelVersionTag"> | number + tagId?: StringFilter<"ModelVersionTag"> | string + createdAt?: DateTimeFilter<"ModelVersionTag"> | Date | string } - export type ModelInteractionCreateManyModelInputEnvelope = { - data: ModelInteractionCreateManyModelInput | ModelInteractionCreateManyModelInput[] - skipDuplicates?: boolean + export type ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput = { + where: ModelAdditionalFileWhereUniqueInput + update: XOR + create: XOR } - export type ModelDraftCreateWithoutModelInput = { - id?: string - schemaVersion: number - data: JsonNullValueInput | InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - user: UserCreateNestedOneWithoutModelDraftsInput + export type ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput = { + where: ModelAdditionalFileWhereUniqueInput + data: XOR } - export type ModelDraftUncheckedCreateWithoutModelInput = { - id?: string - userId: string - schemaVersion: number - data: JsonNullValueInput | InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string + export type ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput = { + where: ModelAdditionalFileScalarWhereInput + data: XOR } - export type ModelDraftCreateOrConnectWithoutModelInput = { - where: ModelDraftWhereUniqueInput - create: XOR + export type ModelVersionCreateWithoutTagsInput = { + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + model: ModelCreateNestedOneWithoutVersionsInput + latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput + parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput + taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput } - export type ModelDraftCreateManyModelInputEnvelope = { - data: ModelDraftCreateManyModelInput | ModelDraftCreateManyModelInput[] - skipDuplicates?: boolean + export type ModelVersionUncheckedCreateWithoutTagsInput = { + modelId: string + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput + parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput + taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput } - export type ModelCommentCreateWithoutModelInput = { - id?: string - legacyId?: number | null - versionNumber?: number | null - content?: string | null - likesCount?: number - createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - user?: UserCreateNestedOneWithoutCommentsInput - parent?: ModelCommentCreateNestedOneWithoutRepliesInput - replies?: ModelCommentCreateNestedManyWithoutParentInput - likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput + export type ModelVersionCreateOrConnectWithoutTagsInput = { + where: ModelVersionWhereUniqueInput + create: XOR } - export type ModelCommentUncheckedCreateWithoutModelInput = { + export type TagCreateWithoutModelVersionsInput = { id?: string legacyId?: number | null - parentId?: string | null - userId?: string | null - versionNumber?: number | null - content?: string | null - likesCount?: number + name: string + displayName?: string | null createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput - likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput } - export type ModelCommentCreateOrConnectWithoutModelInput = { - where: ModelCommentWhereUniqueInput - create: XOR + export type TagUncheckedCreateWithoutModelVersionsInput = { + id?: string + legacyId?: number | null + name: string + displayName?: string | null + createdAt?: Date | string } - export type ModelCommentCreateManyModelInputEnvelope = { - data: ModelCommentCreateManyModelInput | ModelCommentCreateManyModelInput[] - skipDuplicates?: boolean + export type TagCreateOrConnectWithoutModelVersionsInput = { + where: TagWhereUniqueInput + create: XOR } - export type ModelVersionUpsertWithoutLatestOfModelInput = { - update: XOR - create: XOR + export type ModelVersionUpsertWithoutTagsInput = { + update: XOR + create: XOR where?: ModelVersionWhereInput } - export type ModelVersionUpdateToOneWithWhereWithoutLatestOfModelInput = { + export type ModelVersionUpdateToOneWithWhereWithoutTagsInput = { where?: ModelVersionWhereInput - data: XOR + data: XOR } - export type ModelVersionUpdateWithoutLatestOfModelInput = { + export type ModelVersionUpdateWithoutTagsInput = { versionNumber?: IntFieldUpdateOperationsInput | number title?: StringFieldUpdateOperationsInput | string description?: NullableStringFieldUpdateOperationsInput | string | null @@ -32996,12 +37205,12 @@ export namespace Prisma { createdAt?: DateTimeFieldUpdateOperationsInput | Date | string finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null model?: ModelUpdateOneRequiredWithoutVersionsNestedInput + latestOfModel?: ModelUpdateOneWithoutLatestVersionNestedInput parentOfModels?: ModelUpdateManyWithoutParentVersionNestedInput - tags?: ModelVersionTagUpdateManyWithoutModelVersionNestedInput taggedAdditionalFiles?: ModelAdditionalFileUpdateManyWithoutTaggedVersionNestedInput } - export type ModelVersionUncheckedUpdateWithoutLatestOfModelInput = { + export type ModelVersionUncheckedUpdateWithoutTagsInput = { modelId?: StringFieldUpdateOperationsInput | string versionNumber?: IntFieldUpdateOperationsInput | number title?: StringFieldUpdateOperationsInput | string @@ -33013,23 +37222,145 @@ export namespace Prisma { infoTab?: NullableStringFieldUpdateOperationsInput | string | null createdAt?: DateTimeFieldUpdateOperationsInput | Date | string finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + latestOfModel?: ModelUncheckedUpdateOneWithoutLatestVersionNestedInput parentOfModels?: ModelUncheckedUpdateManyWithoutParentVersionNestedInput - tags?: ModelVersionTagUncheckedUpdateManyWithoutModelVersionNestedInput taggedAdditionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutTaggedVersionNestedInput } - export type ModelUpsertWithoutChildModelsInput = { - update: XOR - create: XOR + export type TagUpsertWithoutModelVersionsInput = { + update: XOR + create: XOR + where?: TagWhereInput + } + + export type TagUpdateToOneWithWhereWithoutModelVersionsInput = { + where?: TagWhereInput + data: XOR + } + + export type TagUpdateWithoutModelVersionsInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + name?: StringFieldUpdateOperationsInput | string + displayName?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type TagUncheckedUpdateWithoutModelVersionsInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + name?: StringFieldUpdateOperationsInput | string + displayName?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type ModelCreateWithoutAdditionalFilesInput = { + legacyId?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number + createdAt?: Date | string + updatedAt?: Date | string + deletedAt?: Date | string | null + latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput + parentModel?: ModelCreateNestedOneWithoutChildModelsInput + childModels?: ModelCreateNestedManyWithoutParentModelInput + parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput + versions?: ModelVersionCreateNestedManyWithoutModelInput + authors?: ModelAuthorCreateNestedManyWithoutModelInput + permissions?: ModelPermissionCreateNestedManyWithoutModelInput + likes?: ModelLikeCreateNestedManyWithoutModelInput + interactions?: ModelInteractionCreateNestedManyWithoutModelInput + drafts?: ModelDraftCreateNestedManyWithoutModelInput + comments?: ModelCommentCreateNestedManyWithoutModelInput + } + + export type ModelUncheckedCreateWithoutAdditionalFilesInput = { + id?: string + legacyId?: number | null + latestVersionNumber?: number | null + parentModelId?: string | null + parentVersionNumber?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number + createdAt?: Date | string + updatedAt?: Date | string + deletedAt?: Date | string | null + childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput + versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput + authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput + permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput + likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput + interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput + drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput + } + + export type ModelCreateOrConnectWithoutAdditionalFilesInput = { + where: ModelWhereUniqueInput + create: XOR + } + + export type ModelVersionCreateWithoutTaggedAdditionalFilesInput = { + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + model: ModelCreateNestedOneWithoutVersionsInput + latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput + parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput + tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput + } + + export type ModelVersionUncheckedCreateWithoutTaggedAdditionalFilesInput = { + modelId: string + versionNumber: number + title: string + description?: string | null + changeSummary?: string | null + previewImageFileKey?: string | null + netlogoFileKey: string + netlogoVersion?: string | null + infoTab?: string | null + createdAt?: Date | string + finalizedAt?: Date | string | null + latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput + parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput + tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput + } + + export type ModelVersionCreateOrConnectWithoutTaggedAdditionalFilesInput = { + where: ModelVersionWhereUniqueInput + create: XOR + } + + export type ModelUpsertWithoutAdditionalFilesInput = { + update: XOR + create: XOR where?: ModelWhereInput } - export type ModelUpdateToOneWithWhereWithoutChildModelsInput = { + export type ModelUpdateToOneWithWhereWithoutAdditionalFilesInput = { where?: ModelWhereInput - data: XOR + data: XOR } - export type ModelUpdateWithoutChildModelsInput = { + export type ModelUpdateWithoutAdditionalFilesInput = { legacyId?: NullableIntFieldUpdateOperationsInput | number | null visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility isEndorsed?: BoolFieldUpdateOperationsInput | boolean @@ -33043,18 +37374,18 @@ export namespace Prisma { deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null latestVersion?: ModelVersionUpdateOneWithoutLatestOfModelNestedInput parentModel?: ModelUpdateOneWithoutChildModelsNestedInput + childModels?: ModelUpdateManyWithoutParentModelNestedInput parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput versions?: ModelVersionUpdateManyWithoutModelNestedInput authors?: ModelAuthorUpdateManyWithoutModelNestedInput permissions?: ModelPermissionUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput likes?: ModelLikeUpdateManyWithoutModelNestedInput interactions?: ModelInteractionUpdateManyWithoutModelNestedInput drafts?: ModelDraftUpdateManyWithoutModelNestedInput comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type ModelUncheckedUpdateWithoutChildModelsInput = { + export type ModelUncheckedUpdateWithoutAdditionalFilesInput = { id?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null @@ -33070,65 +37401,28 @@ export namespace Prisma { createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput } - export type ModelUpsertWithWhereUniqueWithoutParentModelInput = { - where: ModelWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelUpdateWithWhereUniqueWithoutParentModelInput = { - where: ModelWhereUniqueInput - data: XOR - } - - export type ModelUpdateManyWithWhereWithoutParentModelInput = { - where: ModelScalarWhereInput - data: XOR - } - - export type ModelScalarWhereInput = { - AND?: ModelScalarWhereInput | ModelScalarWhereInput[] - OR?: ModelScalarWhereInput[] - NOT?: ModelScalarWhereInput | ModelScalarWhereInput[] - id?: StringFilter<"Model"> | string - legacyId?: IntNullableFilter<"Model"> | number | null - latestVersionNumber?: IntNullableFilter<"Model"> | number | null - parentModelId?: StringNullableFilter<"Model"> | string | null - parentVersionNumber?: IntNullableFilter<"Model"> | number | null - visibility?: EnumModelVisibilityFilter<"Model"> | $Enums.ModelVisibility - isEndorsed?: BoolFilter<"Model"> | boolean - isLibraryModel?: BoolFilter<"Model"> | boolean - viewCount?: IntFilter<"Model"> | number - runCount?: IntFilter<"Model"> | number - downloadCount?: IntFilter<"Model"> | number - shareCount?: IntFilter<"Model"> | number - createdAt?: DateTimeFilter<"Model"> | Date | string - updatedAt?: DateTimeFilter<"Model"> | Date | string - deletedAt?: DateTimeNullableFilter<"Model"> | Date | string | null - } - - export type ModelVersionUpsertWithoutParentOfModelsInput = { - update: XOR - create: XOR + export type ModelVersionUpsertWithoutTaggedAdditionalFilesInput = { + update: XOR + create: XOR where?: ModelVersionWhereInput } - export type ModelVersionUpdateToOneWithWhereWithoutParentOfModelsInput = { + export type ModelVersionUpdateToOneWithWhereWithoutTaggedAdditionalFilesInput = { where?: ModelVersionWhereInput - data: XOR + data: XOR } - export type ModelVersionUpdateWithoutParentOfModelsInput = { + export type ModelVersionUpdateWithoutTaggedAdditionalFilesInput = { versionNumber?: IntFieldUpdateOperationsInput | number title?: StringFieldUpdateOperationsInput | string description?: NullableStringFieldUpdateOperationsInput | string | null @@ -33141,11 +37435,11 @@ export namespace Prisma { finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null model?: ModelUpdateOneRequiredWithoutVersionsNestedInput latestOfModel?: ModelUpdateOneWithoutLatestVersionNestedInput + parentOfModels?: ModelUpdateManyWithoutParentVersionNestedInput tags?: ModelVersionTagUpdateManyWithoutModelVersionNestedInput - taggedAdditionalFiles?: ModelAdditionalFileUpdateManyWithoutTaggedVersionNestedInput } - export type ModelVersionUncheckedUpdateWithoutParentOfModelsInput = { + export type ModelVersionUncheckedUpdateWithoutTaggedAdditionalFilesInput = { modelId?: StringFieldUpdateOperationsInput | string versionNumber?: IntFieldUpdateOperationsInput | number title?: StringFieldUpdateOperationsInput | string @@ -33158,279 +37452,48 @@ export namespace Prisma { createdAt?: DateTimeFieldUpdateOperationsInput | Date | string finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null latestOfModel?: ModelUncheckedUpdateOneWithoutLatestVersionNestedInput + parentOfModels?: ModelUncheckedUpdateManyWithoutParentVersionNestedInput tags?: ModelVersionTagUncheckedUpdateManyWithoutModelVersionNestedInput - taggedAdditionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutTaggedVersionNestedInput - } - - export type ModelVersionUpsertWithWhereUniqueWithoutModelInput = { - where: ModelVersionWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelVersionUpdateWithWhereUniqueWithoutModelInput = { - where: ModelVersionWhereUniqueInput - data: XOR - } - - export type ModelVersionUpdateManyWithWhereWithoutModelInput = { - where: ModelVersionScalarWhereInput - data: XOR - } - - export type ModelVersionScalarWhereInput = { - AND?: ModelVersionScalarWhereInput | ModelVersionScalarWhereInput[] - OR?: ModelVersionScalarWhereInput[] - NOT?: ModelVersionScalarWhereInput | ModelVersionScalarWhereInput[] - modelId?: StringFilter<"ModelVersion"> | string - versionNumber?: IntFilter<"ModelVersion"> | number - title?: StringFilter<"ModelVersion"> | string - description?: StringNullableFilter<"ModelVersion"> | string | null - changeSummary?: StringNullableFilter<"ModelVersion"> | string | null - previewImageFileKey?: StringNullableFilter<"ModelVersion"> | string | null - netlogoFileKey?: StringFilter<"ModelVersion"> | string - netlogoVersion?: StringNullableFilter<"ModelVersion"> | string | null - infoTab?: StringNullableFilter<"ModelVersion"> | string | null - createdAt?: DateTimeFilter<"ModelVersion"> | Date | string - finalizedAt?: DateTimeNullableFilter<"ModelVersion"> | Date | string | null - } - - export type ModelAuthorUpsertWithWhereUniqueWithoutModelInput = { - where: ModelAuthorWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelAuthorUpdateWithWhereUniqueWithoutModelInput = { - where: ModelAuthorWhereUniqueInput - data: XOR - } - - export type ModelAuthorUpdateManyWithWhereWithoutModelInput = { - where: ModelAuthorScalarWhereInput - data: XOR - } - - export type ModelPermissionUpsertWithWhereUniqueWithoutModelInput = { - where: ModelPermissionWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelPermissionUpdateWithWhereUniqueWithoutModelInput = { - where: ModelPermissionWhereUniqueInput - data: XOR - } - - export type ModelPermissionUpdateManyWithWhereWithoutModelInput = { - where: ModelPermissionScalarWhereInput - data: XOR - } - - export type ModelAdditionalFileUpsertWithWhereUniqueWithoutModelInput = { - where: ModelAdditionalFileWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelAdditionalFileUpdateWithWhereUniqueWithoutModelInput = { - where: ModelAdditionalFileWhereUniqueInput - data: XOR - } - - export type ModelAdditionalFileUpdateManyWithWhereWithoutModelInput = { - where: ModelAdditionalFileScalarWhereInput - data: XOR - } - - export type ModelAdditionalFileScalarWhereInput = { - AND?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] - OR?: ModelAdditionalFileScalarWhereInput[] - NOT?: ModelAdditionalFileScalarWhereInput | ModelAdditionalFileScalarWhereInput[] - id?: StringFilter<"ModelAdditionalFile"> | string - modelId?: StringFilter<"ModelAdditionalFile"> | string - taggedVersionNumber?: IntFilter<"ModelAdditionalFile"> | number - fileKey?: StringFilter<"ModelAdditionalFile"> | string - kind?: EnumModelFileKindFilter<"ModelAdditionalFile"> | $Enums.ModelFileKind - createdAt?: DateTimeFilter<"ModelAdditionalFile"> | Date | string - } - - export type ModelLikeUpsertWithWhereUniqueWithoutModelInput = { - where: ModelLikeWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelLikeUpdateWithWhereUniqueWithoutModelInput = { - where: ModelLikeWhereUniqueInput - data: XOR - } - - export type ModelLikeUpdateManyWithWhereWithoutModelInput = { - where: ModelLikeScalarWhereInput - data: XOR - } - - export type ModelInteractionUpsertWithWhereUniqueWithoutModelInput = { - where: ModelInteractionWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelInteractionUpdateWithWhereUniqueWithoutModelInput = { - where: ModelInteractionWhereUniqueInput - data: XOR - } - - export type ModelInteractionUpdateManyWithWhereWithoutModelInput = { - where: ModelInteractionScalarWhereInput - data: XOR - } - - export type ModelDraftUpsertWithWhereUniqueWithoutModelInput = { - where: ModelDraftWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelDraftUpdateWithWhereUniqueWithoutModelInput = { - where: ModelDraftWhereUniqueInput - data: XOR - } - - export type ModelDraftUpdateManyWithWhereWithoutModelInput = { - where: ModelDraftScalarWhereInput - data: XOR - } - - export type ModelCommentUpsertWithWhereUniqueWithoutModelInput = { - where: ModelCommentWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelCommentUpdateWithWhereUniqueWithoutModelInput = { - where: ModelCommentWhereUniqueInput - data: XOR } - export type ModelCommentUpdateManyWithWhereWithoutModelInput = { - where: ModelCommentScalarWhereInput - data: XOR + export type ModelVersionTagCreateWithoutTagInput = { + createdAt?: Date | string + modelVersion: ModelVersionCreateNestedOneWithoutTagsInput } - export type ModelCreateWithoutVersionsInput = { - legacyId?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number + export type ModelVersionTagUncheckedCreateWithoutTagInput = { + modelId: string + versionNumber: number createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput - parentModel?: ModelCreateNestedOneWithoutChildModelsInput - childModels?: ModelCreateNestedManyWithoutParentModelInput - parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput - authors?: ModelAuthorCreateNestedManyWithoutModelInput - permissions?: ModelPermissionCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput - likes?: ModelLikeCreateNestedManyWithoutModelInput - interactions?: ModelInteractionCreateNestedManyWithoutModelInput - drafts?: ModelDraftCreateNestedManyWithoutModelInput - comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelUncheckedCreateWithoutVersionsInput = { - id?: string - legacyId?: number | null - latestVersionNumber?: number | null - parentModelId?: string | null - parentVersionNumber?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number - createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput - authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput - permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput - likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput - interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput - drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput + export type ModelVersionTagCreateOrConnectWithoutTagInput = { + where: ModelVersionTagWhereUniqueInput + create: XOR } - export type ModelCreateOrConnectWithoutVersionsInput = { - where: ModelWhereUniqueInput - create: XOR + export type ModelVersionTagCreateManyTagInputEnvelope = { + data: ModelVersionTagCreateManyTagInput | ModelVersionTagCreateManyTagInput[] + skipDuplicates?: boolean } - export type ModelCreateWithoutLatestVersionInput = { - legacyId?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number - createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - parentModel?: ModelCreateNestedOneWithoutChildModelsInput - childModels?: ModelCreateNestedManyWithoutParentModelInput - parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput - versions?: ModelVersionCreateNestedManyWithoutModelInput - authors?: ModelAuthorCreateNestedManyWithoutModelInput - permissions?: ModelPermissionCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput - likes?: ModelLikeCreateNestedManyWithoutModelInput - interactions?: ModelInteractionCreateNestedManyWithoutModelInput - drafts?: ModelDraftCreateNestedManyWithoutModelInput - comments?: ModelCommentCreateNestedManyWithoutModelInput + export type ModelVersionTagUpsertWithWhereUniqueWithoutTagInput = { + where: ModelVersionTagWhereUniqueInput + update: XOR + create: XOR } - export type ModelUncheckedCreateWithoutLatestVersionInput = { - legacyId?: number | null - parentModelId?: string | null - parentVersionNumber?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number - createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput - versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput - authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput - permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput - likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput - interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput - drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput + export type ModelVersionTagUpdateWithWhereUniqueWithoutTagInput = { + where: ModelVersionTagWhereUniqueInput + data: XOR } - export type ModelCreateOrConnectWithoutLatestVersionInput = { - where: ModelWhereUniqueInput - create: XOR + export type ModelVersionTagUpdateManyWithWhereWithoutTagInput = { + where: ModelVersionTagScalarWhereInput + data: XOR } - export type ModelCreateWithoutParentVersionInput = { + export type ModelCreateWithoutAuthorsInput = { legacyId?: number | null visibility?: $Enums.ModelVisibility isEndorsed?: boolean @@ -33445,8 +37508,8 @@ export namespace Prisma { latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput parentModel?: ModelCreateNestedOneWithoutChildModelsInput childModels?: ModelCreateNestedManyWithoutParentModelInput + parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput versions?: ModelVersionCreateNestedManyWithoutModelInput - authors?: ModelAuthorCreateNestedManyWithoutModelInput permissions?: ModelPermissionCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput likes?: ModelLikeCreateNestedManyWithoutModelInput @@ -33455,10 +37518,12 @@ export namespace Prisma { comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelUncheckedCreateWithoutParentVersionInput = { + export type ModelUncheckedCreateWithoutAuthorsInput = { id?: string legacyId?: number | null latestVersionNumber?: number | null + parentModelId?: string | null + parentVersionNumber?: number | null visibility?: $Enums.ModelVisibility isEndorsed?: boolean isLibraryModel?: boolean @@ -33471,7 +37536,6 @@ export namespace Prisma { deletedAt?: Date | string | null childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput - authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput @@ -33480,73 +37544,104 @@ export namespace Prisma { comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelCreateOrConnectWithoutParentVersionInput = { + export type ModelCreateOrConnectWithoutAuthorsInput = { where: ModelWhereUniqueInput - create: XOR - } - - export type ModelCreateManyParentVersionInputEnvelope = { - data: ModelCreateManyParentVersionInput | ModelCreateManyParentVersionInput[] - skipDuplicates?: boolean - } - - export type ModelVersionTagCreateWithoutModelVersionInput = { - createdAt?: Date | string - tag: TagCreateNestedOneWithoutModelVersionsInput - } - - export type ModelVersionTagUncheckedCreateWithoutModelVersionInput = { - tagId: string - createdAt?: Date | string - } - - export type ModelVersionTagCreateOrConnectWithoutModelVersionInput = { - where: ModelVersionTagWhereUniqueInput - create: XOR - } - - export type ModelVersionTagCreateManyModelVersionInputEnvelope = { - data: ModelVersionTagCreateManyModelVersionInput | ModelVersionTagCreateManyModelVersionInput[] - skipDuplicates?: boolean + create: XOR } - export type ModelAdditionalFileCreateWithoutTaggedVersionInput = { + export type UserCreateWithoutAuthoredModelsInput = { id?: string - fileKey: string - kind?: $Enums.ModelFileKind + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string - model: ModelCreateNestedOneWithoutAdditionalFilesInput + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountCreateNestedManyWithoutUserInput + sessions?: SessionCreateNestedManyWithoutUserInput + verifications?: VerificationCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput + events?: EventCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput + comments?: ModelCommentCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput + passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type ModelAdditionalFileUncheckedCreateWithoutTaggedVersionInput = { + export type UserUncheckedCreateWithoutAuthoredModelsInput = { id?: string - fileKey: string - kind?: $Enums.ModelFileKind + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountUncheckedCreateNestedManyWithoutUserInput + sessions?: SessionUncheckedCreateNestedManyWithoutUserInput + verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput + events?: EventUncheckedCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput + passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type ModelAdditionalFileCreateOrConnectWithoutTaggedVersionInput = { - where: ModelAdditionalFileWhereUniqueInput - create: XOR - } - - export type ModelAdditionalFileCreateManyTaggedVersionInputEnvelope = { - data: ModelAdditionalFileCreateManyTaggedVersionInput | ModelAdditionalFileCreateManyTaggedVersionInput[] - skipDuplicates?: boolean + export type UserCreateOrConnectWithoutAuthoredModelsInput = { + where: UserWhereUniqueInput + create: XOR } - export type ModelUpsertWithoutVersionsInput = { - update: XOR - create: XOR + export type ModelUpsertWithoutAuthorsInput = { + update: XOR + create: XOR where?: ModelWhereInput } - export type ModelUpdateToOneWithWhereWithoutVersionsInput = { + export type ModelUpdateToOneWithWhereWithoutAuthorsInput = { where?: ModelWhereInput - data: XOR + data: XOR } - export type ModelUpdateWithoutVersionsInput = { + export type ModelUpdateWithoutAuthorsInput = { legacyId?: NullableIntFieldUpdateOperationsInput | number | null visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility isEndorsed?: BoolFieldUpdateOperationsInput | boolean @@ -33562,7 +37657,7 @@ export namespace Prisma { parentModel?: ModelUpdateOneWithoutChildModelsNestedInput childModels?: ModelUpdateManyWithoutParentModelNestedInput parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput - authors?: ModelAuthorUpdateManyWithoutModelNestedInput + versions?: ModelVersionUpdateManyWithoutModelNestedInput permissions?: ModelPermissionUpdateManyWithoutModelNestedInput additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput likes?: ModelLikeUpdateManyWithoutModelNestedInput @@ -33571,7 +37666,7 @@ export namespace Prisma { comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type ModelUncheckedUpdateWithoutVersionsInput = { + export type ModelUncheckedUpdateWithoutAuthorsInput = { id?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null @@ -33588,7 +37683,7 @@ export namespace Prisma { updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput - authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput + versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput @@ -33597,258 +37692,94 @@ export namespace Prisma { comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput } - export type ModelUpsertWithoutLatestVersionInput = { - update: XOR - create: XOR - where?: ModelWhereInput + export type UserUpsertWithoutAuthoredModelsInput = { + update: XOR + create: XOR + where?: UserWhereInput } - export type ModelUpdateToOneWithWhereWithoutLatestVersionInput = { - where?: ModelWhereInput - data: XOR + export type UserUpdateToOneWithWhereWithoutAuthoredModelsInput = { + where?: UserWhereInput + data: XOR } - export type ModelUpdateWithoutLatestVersionInput = { - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number + export type UserUpdateWithoutAuthoredModelsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - parentModel?: ModelUpdateOneWithoutChildModelsNestedInput - childModels?: ModelUpdateManyWithoutParentModelNestedInput - parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput - versions?: ModelVersionUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput - likes?: ModelLikeUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUpdateManyWithoutModelNestedInput - drafts?: ModelDraftUpdateManyWithoutModelNestedInput - comments?: ModelCommentUpdateManyWithoutModelNestedInput - } - - export type ModelUncheckedUpdateWithoutLatestVersionInput = { + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null legacyId?: NullableIntFieldUpdateOperationsInput | number | null - parentModelId?: NullableStringFieldUpdateOperationsInput | string | null - parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput - versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput - likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput - drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput - } - - export type ModelUpsertWithWhereUniqueWithoutParentVersionInput = { - where: ModelWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelUpdateWithWhereUniqueWithoutParentVersionInput = { - where: ModelWhereUniqueInput - data: XOR - } - - export type ModelUpdateManyWithWhereWithoutParentVersionInput = { - where: ModelScalarWhereInput - data: XOR - } - - export type ModelVersionTagUpsertWithWhereUniqueWithoutModelVersionInput = { - where: ModelVersionTagWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelVersionTagUpdateWithWhereUniqueWithoutModelVersionInput = { - where: ModelVersionTagWhereUniqueInput - data: XOR - } - - export type ModelVersionTagUpdateManyWithWhereWithoutModelVersionInput = { - where: ModelVersionTagScalarWhereInput - data: XOR - } - - export type ModelVersionTagScalarWhereInput = { - AND?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] - OR?: ModelVersionTagScalarWhereInput[] - NOT?: ModelVersionTagScalarWhereInput | ModelVersionTagScalarWhereInput[] - modelId?: StringFilter<"ModelVersionTag"> | string - versionNumber?: IntFilter<"ModelVersionTag"> | number - tagId?: StringFilter<"ModelVersionTag"> | string - createdAt?: DateTimeFilter<"ModelVersionTag"> | Date | string - } - - export type ModelAdditionalFileUpsertWithWhereUniqueWithoutTaggedVersionInput = { - where: ModelAdditionalFileWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelAdditionalFileUpdateWithWhereUniqueWithoutTaggedVersionInput = { - where: ModelAdditionalFileWhereUniqueInput - data: XOR - } - - export type ModelAdditionalFileUpdateManyWithWhereWithoutTaggedVersionInput = { - where: ModelAdditionalFileScalarWhereInput - data: XOR - } - - export type ModelVersionCreateWithoutTagsInput = { - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null - createdAt?: Date | string - finalizedAt?: Date | string | null - model: ModelCreateNestedOneWithoutVersionsInput - latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput - parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput - taggedAdditionalFiles?: ModelAdditionalFileCreateNestedManyWithoutTaggedVersionInput - } - - export type ModelVersionUncheckedCreateWithoutTagsInput = { - modelId: string - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null - createdAt?: Date | string - finalizedAt?: Date | string | null - latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput - parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput - taggedAdditionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutTaggedVersionInput - } - - export type ModelVersionCreateOrConnectWithoutTagsInput = { - where: ModelVersionWhereUniqueInput - create: XOR - } - - export type TagCreateWithoutModelVersionsInput = { - id?: string - legacyId?: number | null - name: string - displayName?: string | null - createdAt?: Date | string - } - - export type TagUncheckedCreateWithoutModelVersionsInput = { - id?: string - legacyId?: number | null - name: string - displayName?: string | null - createdAt?: Date | string - } - - export type TagCreateOrConnectWithoutModelVersionsInput = { - where: TagWhereUniqueInput - create: XOR - } - - export type ModelVersionUpsertWithoutTagsInput = { - update: XOR - create: XOR - where?: ModelVersionWhereInput - } - - export type ModelVersionUpdateToOneWithWhereWithoutTagsInput = { - where?: ModelVersionWhereInput - data: XOR - } - - export type ModelVersionUpdateWithoutTagsInput = { - versionNumber?: IntFieldUpdateOperationsInput | number - title?: StringFieldUpdateOperationsInput | string - description?: NullableStringFieldUpdateOperationsInput | string | null - changeSummary?: NullableStringFieldUpdateOperationsInput | string | null - previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null - netlogoFileKey?: StringFieldUpdateOperationsInput | string - netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null - infoTab?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - model?: ModelUpdateOneRequiredWithoutVersionsNestedInput - latestOfModel?: ModelUpdateOneWithoutLatestVersionNestedInput - parentOfModels?: ModelUpdateManyWithoutParentVersionNestedInput - taggedAdditionalFiles?: ModelAdditionalFileUpdateManyWithoutTaggedVersionNestedInput - } - - export type ModelVersionUncheckedUpdateWithoutTagsInput = { - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: IntFieldUpdateOperationsInput | number - title?: StringFieldUpdateOperationsInput | string - description?: NullableStringFieldUpdateOperationsInput | string | null - changeSummary?: NullableStringFieldUpdateOperationsInput | string | null - previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null - netlogoFileKey?: StringFieldUpdateOperationsInput | string - netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null - infoTab?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - latestOfModel?: ModelUncheckedUpdateOneWithoutLatestVersionNestedInput - parentOfModels?: ModelUncheckedUpdateManyWithoutParentVersionNestedInput - taggedAdditionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutTaggedVersionNestedInput - } - - export type TagUpsertWithoutModelVersionsInput = { - update: XOR - create: XOR - where?: TagWhereInput - } - - export type TagUpdateToOneWithWhereWithoutModelVersionsInput = { - where?: TagWhereInput - data: XOR + accounts?: AccountUpdateManyWithoutUserNestedInput + sessions?: SessionUpdateManyWithoutUserNestedInput + verifications?: VerificationUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput + events?: EventUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput + comments?: ModelCommentUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type TagUpdateWithoutModelVersionsInput = { + export type UserUncheckedUpdateWithoutAuthoredModelsInput = { id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - name?: StringFieldUpdateOperationsInput | string - displayName?: NullableStringFieldUpdateOperationsInput | string | null + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - } - - export type TagUncheckedUpdateWithoutModelVersionsInput = { - id?: StringFieldUpdateOperationsInput | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null legacyId?: NullableIntFieldUpdateOperationsInput | number | null - name?: StringFieldUpdateOperationsInput | string - displayName?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput + sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput + verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput + events?: EventUncheckedUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type ModelCreateWithoutAdditionalFilesInput = { + export type ModelCreateWithoutPermissionsInput = { legacyId?: number | null visibility?: $Enums.ModelVisibility isEndorsed?: boolean @@ -33866,14 +37797,14 @@ export namespace Prisma { parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput versions?: ModelVersionCreateNestedManyWithoutModelInput authors?: ModelAuthorCreateNestedManyWithoutModelInput - permissions?: ModelPermissionCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput likes?: ModelLikeCreateNestedManyWithoutModelInput interactions?: ModelInteractionCreateNestedManyWithoutModelInput drafts?: ModelDraftCreateNestedManyWithoutModelInput comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelUncheckedCreateWithoutAdditionalFilesInput = { + export type ModelUncheckedCreateWithoutPermissionsInput = { id?: string legacyId?: number | null latestVersionNumber?: number | null @@ -33892,69 +37823,111 @@ export namespace Prisma { childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput - permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelCreateOrConnectWithoutAdditionalFilesInput = { + export type ModelCreateOrConnectWithoutPermissionsInput = { where: ModelWhereUniqueInput - create: XOR + create: XOR } - export type ModelVersionCreateWithoutTaggedAdditionalFilesInput = { - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null + export type UserCreateWithoutGrantedPermissionsInput = { + id?: string + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string - finalizedAt?: Date | string | null - model: ModelCreateNestedOneWithoutVersionsInput - latestOfModel?: ModelCreateNestedOneWithoutLatestVersionInput - parentOfModels?: ModelCreateNestedManyWithoutParentVersionInput - tags?: ModelVersionTagCreateNestedManyWithoutModelVersionInput + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountCreateNestedManyWithoutUserInput + sessions?: SessionCreateNestedManyWithoutUserInput + verifications?: VerificationCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput + events?: EventCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput + comments?: ModelCommentCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput + passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type ModelVersionUncheckedCreateWithoutTaggedAdditionalFilesInput = { - modelId: string - versionNumber: number - title: string - description?: string | null - changeSummary?: string | null - previewImageFileKey?: string | null - netlogoFileKey: string - netlogoVersion?: string | null - infoTab?: string | null + export type UserUncheckedCreateWithoutGrantedPermissionsInput = { + id?: string + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null createdAt?: Date | string - finalizedAt?: Date | string | null - latestOfModel?: ModelUncheckedCreateNestedOneWithoutLatestVersionInput - parentOfModels?: ModelUncheckedCreateNestedManyWithoutParentVersionInput - tags?: ModelVersionTagUncheckedCreateNestedManyWithoutModelVersionInput + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountUncheckedCreateNestedManyWithoutUserInput + sessions?: SessionUncheckedCreateNestedManyWithoutUserInput + verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput + events?: EventUncheckedCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput + passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type ModelVersionCreateOrConnectWithoutTaggedAdditionalFilesInput = { - where: ModelVersionWhereUniqueInput - create: XOR + export type UserCreateOrConnectWithoutGrantedPermissionsInput = { + where: UserWhereUniqueInput + create: XOR } - export type ModelUpsertWithoutAdditionalFilesInput = { - update: XOR - create: XOR + export type ModelUpsertWithoutPermissionsInput = { + update: XOR + create: XOR where?: ModelWhereInput } - export type ModelUpdateToOneWithWhereWithoutAdditionalFilesInput = { + export type ModelUpdateToOneWithWhereWithoutPermissionsInput = { where?: ModelWhereInput - data: XOR + data: XOR } - export type ModelUpdateWithoutAdditionalFilesInput = { + export type ModelUpdateWithoutPermissionsInput = { legacyId?: NullableIntFieldUpdateOperationsInput | number | null visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility isEndorsed?: BoolFieldUpdateOperationsInput | boolean @@ -33972,14 +37945,14 @@ export namespace Prisma { parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput versions?: ModelVersionUpdateManyWithoutModelNestedInput authors?: ModelAuthorUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput likes?: ModelLikeUpdateManyWithoutModelNestedInput interactions?: ModelInteractionUpdateManyWithoutModelNestedInput drafts?: ModelDraftUpdateManyWithoutModelNestedInput comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type ModelUncheckedUpdateWithoutAdditionalFilesInput = { + export type ModelUncheckedUpdateWithoutPermissionsInput = { id?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null @@ -33998,96 +37971,101 @@ export namespace Prisma { childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput } - export type ModelVersionUpsertWithoutTaggedAdditionalFilesInput = { - update: XOR - create: XOR - where?: ModelVersionWhereInput + export type UserUpsertWithoutGrantedPermissionsInput = { + update: XOR + create: XOR + where?: UserWhereInput } - export type ModelVersionUpdateToOneWithWhereWithoutTaggedAdditionalFilesInput = { - where?: ModelVersionWhereInput - data: XOR + export type UserUpdateToOneWithWhereWithoutGrantedPermissionsInput = { + where?: UserWhereInput + data: XOR } - export type ModelVersionUpdateWithoutTaggedAdditionalFilesInput = { - versionNumber?: IntFieldUpdateOperationsInput | number - title?: StringFieldUpdateOperationsInput | string - description?: NullableStringFieldUpdateOperationsInput | string | null - changeSummary?: NullableStringFieldUpdateOperationsInput | string | null - previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null - netlogoFileKey?: StringFieldUpdateOperationsInput | string - netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null - infoTab?: NullableStringFieldUpdateOperationsInput | string | null + export type UserUpdateWithoutGrantedPermissionsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - model?: ModelUpdateOneRequiredWithoutVersionsNestedInput - latestOfModel?: ModelUpdateOneWithoutLatestVersionNestedInput - parentOfModels?: ModelUpdateManyWithoutParentVersionNestedInput - tags?: ModelVersionTagUpdateManyWithoutModelVersionNestedInput + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUpdateManyWithoutUserNestedInput + sessions?: SessionUpdateManyWithoutUserNestedInput + verifications?: VerificationUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput + events?: EventUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput + comments?: ModelCommentUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type ModelVersionUncheckedUpdateWithoutTaggedAdditionalFilesInput = { - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: IntFieldUpdateOperationsInput | number - title?: StringFieldUpdateOperationsInput | string - description?: NullableStringFieldUpdateOperationsInput | string | null - changeSummary?: NullableStringFieldUpdateOperationsInput | string | null - previewImageFileKey?: NullableStringFieldUpdateOperationsInput | string | null - netlogoFileKey?: StringFieldUpdateOperationsInput | string - netlogoVersion?: NullableStringFieldUpdateOperationsInput | string | null - infoTab?: NullableStringFieldUpdateOperationsInput | string | null + export type UserUncheckedUpdateWithoutGrantedPermissionsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - finalizedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - latestOfModel?: ModelUncheckedUpdateOneWithoutLatestVersionNestedInput - parentOfModels?: ModelUncheckedUpdateManyWithoutParentVersionNestedInput - tags?: ModelVersionTagUncheckedUpdateManyWithoutModelVersionNestedInput - } - - export type ModelVersionTagCreateWithoutTagInput = { - createdAt?: Date | string - modelVersion: ModelVersionCreateNestedOneWithoutTagsInput - } - - export type ModelVersionTagUncheckedCreateWithoutTagInput = { - modelId: string - versionNumber: number - createdAt?: Date | string - } - - export type ModelVersionTagCreateOrConnectWithoutTagInput = { - where: ModelVersionTagWhereUniqueInput - create: XOR - } - - export type ModelVersionTagCreateManyTagInputEnvelope = { - data: ModelVersionTagCreateManyTagInput | ModelVersionTagCreateManyTagInput[] - skipDuplicates?: boolean - } - - export type ModelVersionTagUpsertWithWhereUniqueWithoutTagInput = { - where: ModelVersionTagWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelVersionTagUpdateWithWhereUniqueWithoutTagInput = { - where: ModelVersionTagWhereUniqueInput - data: XOR - } - - export type ModelVersionTagUpdateManyWithWhereWithoutTagInput = { - where: ModelVersionTagScalarWhereInput - data: XOR + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput + sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput + verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput + events?: EventUncheckedUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type ModelCreateWithoutAuthorsInput = { + export type ModelCreateWithoutLikesInput = { legacyId?: number | null visibility?: $Enums.ModelVisibility isEndorsed?: boolean @@ -34104,15 +38082,15 @@ export namespace Prisma { childModels?: ModelCreateNestedManyWithoutParentModelInput parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput versions?: ModelVersionCreateNestedManyWithoutModelInput + authors?: ModelAuthorCreateNestedManyWithoutModelInput permissions?: ModelPermissionCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput - likes?: ModelLikeCreateNestedManyWithoutModelInput interactions?: ModelInteractionCreateNestedManyWithoutModelInput drafts?: ModelDraftCreateNestedManyWithoutModelInput comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelUncheckedCreateWithoutAuthorsInput = { + export type ModelUncheckedCreateWithoutLikesInput = { id?: string legacyId?: number | null latestVersionNumber?: number | null @@ -34130,20 +38108,20 @@ export namespace Prisma { deletedAt?: Date | string | null childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput + authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput - likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelCreateOrConnectWithoutAuthorsInput = { + export type ModelCreateOrConnectWithoutLikesInput = { where: ModelWhereUniqueInput - create: XOR + create: XOR } - export type UserCreateWithoutAuthoredModelsInput = { + export type UserCreateWithoutModelLikesInput = { id?: string name?: string | null email?: string | null @@ -34169,17 +38147,19 @@ export namespace Prisma { accounts?: AccountCreateNestedManyWithoutUserInput sessions?: SessionCreateNestedManyWithoutUserInput verifications?: VerificationCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput events?: EventCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeCreateNestedManyWithoutUserInput modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput comments?: ModelCommentCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type UserUncheckedCreateWithoutAuthoredModelsInput = { + export type UserUncheckedCreateWithoutModelLikesInput = { id?: string name?: string | null email?: string | null @@ -34205,33 +38185,35 @@ export namespace Prisma { accounts?: AccountUncheckedCreateNestedManyWithoutUserInput sessions?: SessionUncheckedCreateNestedManyWithoutUserInput verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput events?: EventUncheckedCreateNestedManyWithoutActorInput - modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type UserCreateOrConnectWithoutAuthoredModelsInput = { + export type UserCreateOrConnectWithoutModelLikesInput = { where: UserWhereUniqueInput - create: XOR + create: XOR } - export type ModelUpsertWithoutAuthorsInput = { - update: XOR - create: XOR + export type ModelUpsertWithoutLikesInput = { + update: XOR + create: XOR where?: ModelWhereInput } - export type ModelUpdateToOneWithWhereWithoutAuthorsInput = { + export type ModelUpdateToOneWithWhereWithoutLikesInput = { where?: ModelWhereInput - data: XOR + data: XOR } - export type ModelUpdateWithoutAuthorsInput = { + export type ModelUpdateWithoutLikesInput = { legacyId?: NullableIntFieldUpdateOperationsInput | number | null visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility isEndorsed?: BoolFieldUpdateOperationsInput | boolean @@ -34248,15 +38230,15 @@ export namespace Prisma { childModels?: ModelUpdateManyWithoutParentModelNestedInput parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput versions?: ModelVersionUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUpdateManyWithoutModelNestedInput permissions?: ModelPermissionUpdateManyWithoutModelNestedInput additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput - likes?: ModelLikeUpdateManyWithoutModelNestedInput interactions?: ModelInteractionUpdateManyWithoutModelNestedInput drafts?: ModelDraftUpdateManyWithoutModelNestedInput comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type ModelUncheckedUpdateWithoutAuthorsInput = { + export type ModelUncheckedUpdateWithoutLikesInput = { id?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null @@ -34274,26 +38256,26 @@ export namespace Prisma { deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput - likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput } - export type UserUpsertWithoutAuthoredModelsInput = { - update: XOR - create: XOR + export type UserUpsertWithoutModelLikesInput = { + update: XOR + create: XOR where?: UserWhereInput } - export type UserUpdateToOneWithWhereWithoutAuthoredModelsInput = { + export type UserUpdateToOneWithWhereWithoutModelLikesInput = { where?: UserWhereInput - data: XOR + data: XOR } - export type UserUpdateWithoutAuthoredModelsInput = { + export type UserUpdateWithoutModelLikesInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -34319,17 +38301,19 @@ export namespace Prisma { accounts?: AccountUpdateManyWithoutUserNestedInput sessions?: SessionUpdateManyWithoutUserNestedInput verifications?: VerificationUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput events?: EventUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput comments?: ModelCommentUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type UserUncheckedUpdateWithoutAuthoredModelsInput = { + export type UserUncheckedUpdateWithoutModelLikesInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -34355,17 +38339,19 @@ export namespace Prisma { accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput events?: EventUncheckedUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type ModelCreateWithoutPermissionsInput = { + export type ModelCreateWithoutInteractionsInput = { legacyId?: number | null visibility?: $Enums.ModelVisibility isEndorsed?: boolean @@ -34383,14 +38369,14 @@ export namespace Prisma { parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput versions?: ModelVersionCreateNestedManyWithoutModelInput authors?: ModelAuthorCreateNestedManyWithoutModelInput + permissions?: ModelPermissionCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput likes?: ModelLikeCreateNestedManyWithoutModelInput - interactions?: ModelInteractionCreateNestedManyWithoutModelInput drafts?: ModelDraftCreateNestedManyWithoutModelInput comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelUncheckedCreateWithoutPermissionsInput = { + export type ModelUncheckedCreateWithoutInteractionsInput = { id?: string legacyId?: number | null latestVersionNumber?: number | null @@ -34409,19 +38395,19 @@ export namespace Prisma { childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput + permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput - interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelCreateOrConnectWithoutPermissionsInput = { + export type ModelCreateOrConnectWithoutInteractionsInput = { where: ModelWhereUniqueInput - create: XOR + create: XOR } - export type UserCreateWithoutGrantedPermissionsInput = { + export type UserCreateWithoutModelInteractionsInput = { id?: string name?: string | null email?: string | null @@ -34448,16 +38434,18 @@ export namespace Prisma { sessions?: SessionCreateNestedManyWithoutUserInput verifications?: VerificationCreateNestedManyWithoutUserInput authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput events?: EventCreateNestedManyWithoutActorInput modelLikes?: ModelLikeCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput comments?: ModelCommentCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type UserUncheckedCreateWithoutGrantedPermissionsInput = { + export type UserUncheckedCreateWithoutModelInteractionsInput = { id?: string name?: string | null email?: string | null @@ -34484,32 +38472,34 @@ export namespace Prisma { sessions?: SessionUncheckedCreateNestedManyWithoutUserInput verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput events?: EventUncheckedCreateNestedManyWithoutActorInput modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type UserCreateOrConnectWithoutGrantedPermissionsInput = { + export type UserCreateOrConnectWithoutModelInteractionsInput = { where: UserWhereUniqueInput - create: XOR + create: XOR } - export type ModelUpsertWithoutPermissionsInput = { - update: XOR - create: XOR + export type ModelUpsertWithoutInteractionsInput = { + update: XOR + create: XOR where?: ModelWhereInput } - export type ModelUpdateToOneWithWhereWithoutPermissionsInput = { + export type ModelUpdateToOneWithWhereWithoutInteractionsInput = { where?: ModelWhereInput - data: XOR + data: XOR } - export type ModelUpdateWithoutPermissionsInput = { + export type ModelUpdateWithoutInteractionsInput = { legacyId?: NullableIntFieldUpdateOperationsInput | number | null visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility isEndorsed?: BoolFieldUpdateOperationsInput | boolean @@ -34527,51 +38517,275 @@ export namespace Prisma { parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput versions?: ModelVersionUpdateManyWithoutModelNestedInput authors?: ModelAuthorUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUpdateManyWithoutModelNestedInput additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput likes?: ModelLikeUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUpdateManyWithoutModelNestedInput drafts?: ModelDraftUpdateManyWithoutModelNestedInput comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type ModelUncheckedUpdateWithoutPermissionsInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - parentModelId?: NullableStringFieldUpdateOperationsInput | string | null - parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput - versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput - likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput - drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput + export type ModelUncheckedUpdateWithoutInteractionsInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + parentModelId?: NullableStringFieldUpdateOperationsInput | string | null + parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput + versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput + likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput + drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput + } + + export type UserUpsertWithoutModelInteractionsInput = { + update: XOR + create: XOR + where?: UserWhereInput + } + + export type UserUpdateToOneWithWhereWithoutModelInteractionsInput = { + where?: UserWhereInput + data: XOR + } + + export type UserUpdateWithoutModelInteractionsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUpdateManyWithoutUserNestedInput + sessions?: SessionUpdateManyWithoutUserNestedInput + verifications?: VerificationUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput + events?: EventUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput + comments?: ModelCommentUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUpdateManyWithoutUserNestedInput + } + + export type UserUncheckedUpdateWithoutModelInteractionsInput = { + id?: StringFieldUpdateOperationsInput | string + name?: NullableStringFieldUpdateOperationsInput | string | null + email?: NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: BoolFieldUpdateOperationsInput | boolean + image?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole + userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind + isProfilePublic?: BoolFieldUpdateOperationsInput | boolean + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bio?: NullableStringFieldUpdateOperationsInput | string | null + country?: NullableStringFieldUpdateOperationsInput | string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + affiliation?: NullableStringFieldUpdateOperationsInput | string | null + role?: NullableStringFieldUpdateOperationsInput | string | null + banned?: NullableBoolFieldUpdateOperationsInput | boolean | null + banReason?: NullableStringFieldUpdateOperationsInput | string | null + banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput + sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput + verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput + authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput + events?: EventUncheckedUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput + commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput + passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput + } + + export type UserCreateWithoutModelDraftsInput = { + id?: string + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null + createdAt?: Date | string + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountCreateNestedManyWithoutUserInput + sessions?: SessionCreateNestedManyWithoutUserInput + verifications?: VerificationCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput + events?: EventCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput + comments?: ModelCommentCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput + passkeys?: PasskeyCreateNestedManyWithoutUserInput + } + + export type UserUncheckedCreateWithoutModelDraftsInput = { + id?: string + name?: string | null + email?: string | null + emailVerified?: boolean + image?: string | null + createdAt?: Date | string + updatedAt?: Date | string + systemRole?: $Enums.SystemRole + userKind?: $Enums.UserKind + isProfilePublic?: boolean + deletedAt?: Date | string | null + bio?: string | null + country?: string | null + socialLinks?: NullableJsonNullValueInput | InputJsonValue + dob?: Date | string | null + affiliation?: string | null + role?: string | null + banned?: boolean | null + banReason?: string | null + banExpires?: Date | string | null + onboardedAt?: Date | string | null + legacyId?: number | null + accounts?: AccountUncheckedCreateNestedManyWithoutUserInput + sessions?: SessionUncheckedCreateNestedManyWithoutUserInput + verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput + authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput + grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput + events?: EventUncheckedCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput + passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput + } + + export type UserCreateOrConnectWithoutModelDraftsInput = { + where: UserWhereUniqueInput + create: XOR + } + + export type ModelCreateWithoutDraftsInput = { + legacyId?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number + createdAt?: Date | string + updatedAt?: Date | string + deletedAt?: Date | string | null + latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput + parentModel?: ModelCreateNestedOneWithoutChildModelsInput + childModels?: ModelCreateNestedManyWithoutParentModelInput + parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput + versions?: ModelVersionCreateNestedManyWithoutModelInput + authors?: ModelAuthorCreateNestedManyWithoutModelInput + permissions?: ModelPermissionCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput + likes?: ModelLikeCreateNestedManyWithoutModelInput + interactions?: ModelInteractionCreateNestedManyWithoutModelInput + comments?: ModelCommentCreateNestedManyWithoutModelInput + } + + export type ModelUncheckedCreateWithoutDraftsInput = { + id?: string + legacyId?: number | null + latestVersionNumber?: number | null + parentModelId?: string | null + parentVersionNumber?: number | null + visibility?: $Enums.ModelVisibility + isEndorsed?: boolean + isLibraryModel?: boolean + viewCount?: number + runCount?: number + downloadCount?: number + shareCount?: number + createdAt?: Date | string + updatedAt?: Date | string + deletedAt?: Date | string | null + childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput + versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput + authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput + permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput + additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput + likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput + interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type UserUpsertWithoutGrantedPermissionsInput = { - update: XOR - create: XOR + export type ModelCreateOrConnectWithoutDraftsInput = { + where: ModelWhereUniqueInput + create: XOR + } + + export type UserUpsertWithoutModelDraftsInput = { + update: XOR + create: XOR where?: UserWhereInput } - export type UserUpdateToOneWithWhereWithoutGrantedPermissionsInput = { + export type UserUpdateToOneWithWhereWithoutModelDraftsInput = { where?: UserWhereInput - data: XOR + data: XOR } - export type UserUpdateWithoutGrantedPermissionsInput = { + export type UserUpdateWithoutModelDraftsInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -34598,16 +38812,18 @@ export namespace Prisma { sessions?: SessionUpdateManyWithoutUserNestedInput verifications?: VerificationUpdateManyWithoutUserNestedInput authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput events?: EventUpdateManyWithoutActorNestedInput modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput comments?: ModelCommentUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type UserUncheckedUpdateWithoutGrantedPermissionsInput = { + export type UserUncheckedUpdateWithoutModelDraftsInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -34634,16 +38850,80 @@ export namespace Prisma { sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput + grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput events?: EventUncheckedUpdateManyWithoutActorNestedInput modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type ModelCreateWithoutLikesInput = { + export type ModelUpsertWithoutDraftsInput = { + update: XOR + create: XOR + where?: ModelWhereInput + } + + export type ModelUpdateToOneWithWhereWithoutDraftsInput = { + where?: ModelWhereInput + data: XOR + } + + export type ModelUpdateWithoutDraftsInput = { + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + latestVersion?: ModelVersionUpdateOneWithoutLatestOfModelNestedInput + parentModel?: ModelUpdateOneWithoutChildModelsNestedInput + childModels?: ModelUpdateManyWithoutParentModelNestedInput + parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput + versions?: ModelVersionUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput + likes?: ModelLikeUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUpdateManyWithoutModelNestedInput + comments?: ModelCommentUpdateManyWithoutModelNestedInput + } + + export type ModelUncheckedUpdateWithoutDraftsInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + parentModelId?: NullableStringFieldUpdateOperationsInput | string | null + parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null + visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility + isEndorsed?: BoolFieldUpdateOperationsInput | boolean + isLibraryModel?: BoolFieldUpdateOperationsInput | boolean + viewCount?: IntFieldUpdateOperationsInput | number + runCount?: IntFieldUpdateOperationsInput | number + downloadCount?: IntFieldUpdateOperationsInput | number + shareCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput + versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput + authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput + permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput + additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput + likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput + interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput + } + + export type ModelCreateWithoutCommentsInput = { legacyId?: number | null visibility?: $Enums.ModelVisibility isEndorsed?: boolean @@ -34663,12 +38943,12 @@ export namespace Prisma { authors?: ModelAuthorCreateNestedManyWithoutModelInput permissions?: ModelPermissionCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput + likes?: ModelLikeCreateNestedManyWithoutModelInput interactions?: ModelInteractionCreateNestedManyWithoutModelInput drafts?: ModelDraftCreateNestedManyWithoutModelInput - comments?: ModelCommentCreateNestedManyWithoutModelInput } - export type ModelUncheckedCreateWithoutLikesInput = { + export type ModelUncheckedCreateWithoutCommentsInput = { id?: string legacyId?: number | null latestVersionNumber?: number | null @@ -34689,17 +38969,17 @@ export namespace Prisma { authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput + likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelCreateOrConnectWithoutLikesInput = { + export type ModelCreateOrConnectWithoutCommentsInput = { where: ModelWhereUniqueInput - create: XOR + create: XOR } - export type UserCreateWithoutModelLikesInput = { + export type UserCreateWithoutCommentsInput = { id?: string name?: string | null email?: string | null @@ -34728,14 +39008,16 @@ export namespace Prisma { authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput events?: EventCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeCreateNestedManyWithoutUserInput modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput - comments?: ModelCommentCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type UserUncheckedCreateWithoutModelLikesInput = { + export type UserUncheckedCreateWithoutCommentsInput = { id?: string name?: string | null email?: string | null @@ -34764,30 +39046,131 @@ export namespace Prisma { authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput events?: EventUncheckedCreateNestedManyWithoutActorInput + modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type UserCreateOrConnectWithoutModelLikesInput = { + export type UserCreateOrConnectWithoutCommentsInput = { where: UserWhereUniqueInput - create: XOR + create: XOR } - export type ModelUpsertWithoutLikesInput = { - update: XOR - create: XOR + export type ModelCommentCreateWithoutRepliesInput = { + id?: string + legacyId?: number | null + versionNumber?: number | null + content?: string | null + likesCount?: number + createdAt?: Date | string + updatedAt?: Date | string + editedAt?: Date | string | null + deletedAt?: Date | string | null + model: ModelCreateNestedOneWithoutCommentsInput + user?: UserCreateNestedOneWithoutCommentsInput + parent?: ModelCommentCreateNestedOneWithoutRepliesInput + likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput + } + + export type ModelCommentUncheckedCreateWithoutRepliesInput = { + id?: string + legacyId?: number | null + parentId?: string | null + userId?: string | null + modelId: string + versionNumber?: number | null + content?: string | null + likesCount?: number + createdAt?: Date | string + updatedAt?: Date | string + editedAt?: Date | string | null + deletedAt?: Date | string | null + likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput + } + + export type ModelCommentCreateOrConnectWithoutRepliesInput = { + where: ModelCommentWhereUniqueInput + create: XOR + } + + export type ModelCommentCreateWithoutParentInput = { + id?: string + legacyId?: number | null + versionNumber?: number | null + content?: string | null + likesCount?: number + createdAt?: Date | string + updatedAt?: Date | string + editedAt?: Date | string | null + deletedAt?: Date | string | null + model: ModelCreateNestedOneWithoutCommentsInput + user?: UserCreateNestedOneWithoutCommentsInput + replies?: ModelCommentCreateNestedManyWithoutParentInput + likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput + } + + export type ModelCommentUncheckedCreateWithoutParentInput = { + id?: string + legacyId?: number | null + userId?: string | null + modelId: string + versionNumber?: number | null + content?: string | null + likesCount?: number + createdAt?: Date | string + updatedAt?: Date | string + editedAt?: Date | string | null + deletedAt?: Date | string | null + replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput + likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput + } + + export type ModelCommentCreateOrConnectWithoutParentInput = { + where: ModelCommentWhereUniqueInput + create: XOR + } + + export type ModelCommentCreateManyParentInputEnvelope = { + data: ModelCommentCreateManyParentInput | ModelCommentCreateManyParentInput[] + skipDuplicates?: boolean + } + + export type ModelCommentLikeCreateWithoutModelCommentInput = { + createdAt?: Date | string + user: UserCreateNestedOneWithoutCommentLikesInput + } + + export type ModelCommentLikeUncheckedCreateWithoutModelCommentInput = { + userId: string + createdAt?: Date | string + } + + export type ModelCommentLikeCreateOrConnectWithoutModelCommentInput = { + where: ModelCommentLikeWhereUniqueInput + create: XOR + } + + export type ModelCommentLikeCreateManyModelCommentInputEnvelope = { + data: ModelCommentLikeCreateManyModelCommentInput | ModelCommentLikeCreateManyModelCommentInput[] + skipDuplicates?: boolean + } + + export type ModelUpsertWithoutCommentsInput = { + update: XOR + create: XOR where?: ModelWhereInput } - export type ModelUpdateToOneWithWhereWithoutLikesInput = { + export type ModelUpdateToOneWithWhereWithoutCommentsInput = { where?: ModelWhereInput - data: XOR + data: XOR } - export type ModelUpdateWithoutLikesInput = { + export type ModelUpdateWithoutCommentsInput = { legacyId?: NullableIntFieldUpdateOperationsInput | number | null visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility isEndorsed?: BoolFieldUpdateOperationsInput | boolean @@ -34807,12 +39190,12 @@ export namespace Prisma { authors?: ModelAuthorUpdateManyWithoutModelNestedInput permissions?: ModelPermissionUpdateManyWithoutModelNestedInput additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput + likes?: ModelLikeUpdateManyWithoutModelNestedInput interactions?: ModelInteractionUpdateManyWithoutModelNestedInput drafts?: ModelDraftUpdateManyWithoutModelNestedInput - comments?: ModelCommentUpdateManyWithoutModelNestedInput } - export type ModelUncheckedUpdateWithoutLikesInput = { + export type ModelUncheckedUpdateWithoutCommentsInput = { id?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null @@ -34833,23 +39216,23 @@ export namespace Prisma { authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput + likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput } - export type UserUpsertWithoutModelLikesInput = { - update: XOR - create: XOR + export type UserUpsertWithoutCommentsInput = { + update: XOR + create: XOR where?: UserWhereInput } - export type UserUpdateToOneWithWhereWithoutModelLikesInput = { + export type UserUpdateToOneWithWhereWithoutCommentsInput = { where?: UserWhereInput - data: XOR + data: XOR } - export type UserUpdateWithoutModelLikesInput = { + export type UserUpdateWithoutCommentsInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -34878,14 +39261,16 @@ export namespace Prisma { authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput events?: EventUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput - comments?: ModelCommentUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type UserUncheckedUpdateWithoutModelLikesInput = { + export type UserUncheckedUpdateWithoutCommentsInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -34914,70 +39299,128 @@ export namespace Prisma { authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput events?: EventUncheckedUpdateManyWithoutActorNestedInput + modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type ModelCreateWithoutInteractionsInput = { + export type ModelCommentUpsertWithoutRepliesInput = { + update: XOR + create: XOR + where?: ModelCommentWhereInput + } + + export type ModelCommentUpdateToOneWithWhereWithoutRepliesInput = { + where?: ModelCommentWhereInput + data: XOR + } + + export type ModelCommentUpdateWithoutRepliesInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + content?: NullableStringFieldUpdateOperationsInput | string | null + likesCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + model?: ModelUpdateOneRequiredWithoutCommentsNestedInput + user?: UserUpdateOneWithoutCommentsNestedInput + parent?: ModelCommentUpdateOneWithoutRepliesNestedInput + likes?: ModelCommentLikeUpdateManyWithoutModelCommentNestedInput + } + + export type ModelCommentUncheckedUpdateWithoutRepliesInput = { + id?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + parentId?: NullableStringFieldUpdateOperationsInput | string | null + userId?: NullableStringFieldUpdateOperationsInput | string | null + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + content?: NullableStringFieldUpdateOperationsInput | string | null + likesCount?: IntFieldUpdateOperationsInput | number + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + likes?: ModelCommentLikeUncheckedUpdateManyWithoutModelCommentNestedInput + } + + export type ModelCommentUpsertWithWhereUniqueWithoutParentInput = { + where: ModelCommentWhereUniqueInput + update: XOR + create: XOR + } + + export type ModelCommentUpdateWithWhereUniqueWithoutParentInput = { + where: ModelCommentWhereUniqueInput + data: XOR + } + + export type ModelCommentUpdateManyWithWhereWithoutParentInput = { + where: ModelCommentScalarWhereInput + data: XOR + } + + export type ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput = { + where: ModelCommentLikeWhereUniqueInput + update: XOR + create: XOR + } + + export type ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput = { + where: ModelCommentLikeWhereUniqueInput + data: XOR + } + + export type ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput = { + where: ModelCommentLikeScalarWhereInput + data: XOR + } + + export type ModelCommentCreateWithoutLikesInput = { + id?: string legacyId?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number + versionNumber?: number | null + content?: string | null + likesCount?: number createdAt?: Date | string updatedAt?: Date | string + editedAt?: Date | string | null deletedAt?: Date | string | null - latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput - parentModel?: ModelCreateNestedOneWithoutChildModelsInput - childModels?: ModelCreateNestedManyWithoutParentModelInput - parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput - versions?: ModelVersionCreateNestedManyWithoutModelInput - authors?: ModelAuthorCreateNestedManyWithoutModelInput - permissions?: ModelPermissionCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput - likes?: ModelLikeCreateNestedManyWithoutModelInput - drafts?: ModelDraftCreateNestedManyWithoutModelInput - comments?: ModelCommentCreateNestedManyWithoutModelInput + model: ModelCreateNestedOneWithoutCommentsInput + user?: UserCreateNestedOneWithoutCommentsInput + parent?: ModelCommentCreateNestedOneWithoutRepliesInput + replies?: ModelCommentCreateNestedManyWithoutParentInput } - export type ModelUncheckedCreateWithoutInteractionsInput = { + export type ModelCommentUncheckedCreateWithoutLikesInput = { id?: string legacyId?: number | null - latestVersionNumber?: number | null - parentModelId?: string | null - parentVersionNumber?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number + parentId?: string | null + userId?: string | null + modelId: string + versionNumber?: number | null + content?: string | null + likesCount?: number createdAt?: Date | string updatedAt?: Date | string + editedAt?: Date | string | null deletedAt?: Date | string | null - childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput - versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput - authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput - permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput - likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput - drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput + replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput } - export type ModelCreateOrConnectWithoutInteractionsInput = { - where: ModelWhereUniqueInput - create: XOR + export type ModelCommentCreateOrConnectWithoutLikesInput = { + where: ModelCommentWhereUniqueInput + create: XOR } - export type UserCreateWithoutModelInteractionsInput = { + export type UserCreateWithoutCommentLikesInput = { id?: string name?: string | null email?: string | null @@ -35007,13 +39450,15 @@ export namespace Prisma { grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput events?: EventCreateNestedManyWithoutActorInput modelLikes?: ModelLikeCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput comments?: ModelCommentCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type UserUncheckedCreateWithoutModelInteractionsInput = { + export type UserUncheckedCreateWithoutCommentLikesInput = { id?: string name?: string | null email?: string | null @@ -35043,91 +39488,74 @@ export namespace Prisma { grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput events?: EventUncheckedCreateNestedManyWithoutActorInput modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput + modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type UserCreateOrConnectWithoutModelInteractionsInput = { + export type UserCreateOrConnectWithoutCommentLikesInput = { where: UserWhereUniqueInput - create: XOR + create: XOR } - export type ModelUpsertWithoutInteractionsInput = { - update: XOR - create: XOR - where?: ModelWhereInput + export type ModelCommentUpsertWithoutLikesInput = { + update: XOR + create: XOR + where?: ModelCommentWhereInput } - export type ModelUpdateToOneWithWhereWithoutInteractionsInput = { - where?: ModelWhereInput - data: XOR + export type ModelCommentUpdateToOneWithWhereWithoutLikesInput = { + where?: ModelCommentWhereInput + data: XOR } - export type ModelUpdateWithoutInteractionsInput = { + export type ModelCommentUpdateWithoutLikesInput = { + id?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + content?: NullableStringFieldUpdateOperationsInput | string | null + likesCount?: IntFieldUpdateOperationsInput | number createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - latestVersion?: ModelVersionUpdateOneWithoutLatestOfModelNestedInput - parentModel?: ModelUpdateOneWithoutChildModelsNestedInput - childModels?: ModelUpdateManyWithoutParentModelNestedInput - parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput - versions?: ModelVersionUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput - likes?: ModelLikeUpdateManyWithoutModelNestedInput - drafts?: ModelDraftUpdateManyWithoutModelNestedInput - comments?: ModelCommentUpdateManyWithoutModelNestedInput + model?: ModelUpdateOneRequiredWithoutCommentsNestedInput + user?: UserUpdateOneWithoutCommentsNestedInput + parent?: ModelCommentUpdateOneWithoutRepliesNestedInput + replies?: ModelCommentUpdateManyWithoutParentNestedInput } - export type ModelUncheckedUpdateWithoutInteractionsInput = { + export type ModelCommentUncheckedUpdateWithoutLikesInput = { id?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null - latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - parentModelId?: NullableStringFieldUpdateOperationsInput | string | null - parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number + parentId?: NullableStringFieldUpdateOperationsInput | string | null + userId?: NullableStringFieldUpdateOperationsInput | string | null + modelId?: StringFieldUpdateOperationsInput | string + versionNumber?: NullableIntFieldUpdateOperationsInput | number | null + content?: NullableStringFieldUpdateOperationsInput | string | null + likesCount?: IntFieldUpdateOperationsInput | number createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput - versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput - likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput - drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput + editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + replies?: ModelCommentUncheckedUpdateManyWithoutParentNestedInput } - export type UserUpsertWithoutModelInteractionsInput = { - update: XOR - create: XOR + export type UserUpsertWithoutCommentLikesInput = { + update: XOR + create: XOR where?: UserWhereInput } - export type UserUpdateToOneWithWhereWithoutModelInteractionsInput = { + export type UserUpdateToOneWithWhereWithoutCommentLikesInput = { where?: UserWhereInput - data: XOR + data: XOR } - export type UserUpdateWithoutModelInteractionsInput = { + export type UserUpdateWithoutCommentLikesInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -35157,13 +39585,15 @@ export namespace Prisma { grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput events?: EventUpdateManyWithoutActorNestedInput modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput comments?: ModelCommentUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type UserUncheckedUpdateWithoutModelInteractionsInput = { + export type UserUncheckedUpdateWithoutCommentLikesInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -35193,13 +39623,15 @@ export namespace Prisma { grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput events?: EventUncheckedUpdateManyWithoutActorNestedInput modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput + modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput - commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type UserCreateWithoutModelDraftsInput = { + export type UserCreateWithoutEventsInput = { id?: string name?: string | null email?: string | null @@ -35227,15 +39659,17 @@ export namespace Prisma { verifications?: VerificationCreateNestedManyWithoutUserInput authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput - events?: EventCreateNestedManyWithoutActorInput modelLikes?: ModelLikeCreateNestedManyWithoutUserInput modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput comments?: ModelCommentCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type UserUncheckedCreateWithoutModelDraftsInput = { + export type UserUncheckedCreateWithoutEventsInput = { id?: string name?: string | null email?: string | null @@ -35263,87 +39697,67 @@ export namespace Prisma { verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput - events?: EventUncheckedCreateNestedManyWithoutActorInput modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput + modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type UserCreateOrConnectWithoutModelDraftsInput = { + export type UserCreateOrConnectWithoutEventsInput = { where: UserWhereUniqueInput - create: XOR + create: XOR } - export type ModelCreateWithoutDraftsInput = { - legacyId?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number + export type UserNotificationCreateWithoutEventInput = { + id?: string + category: string + title: string + body: string + url: string + emailSentAt?: Date | string | null + readAt?: Date | string | null createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput - parentModel?: ModelCreateNestedOneWithoutChildModelsInput - childModels?: ModelCreateNestedManyWithoutParentModelInput - parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput - versions?: ModelVersionCreateNestedManyWithoutModelInput - authors?: ModelAuthorCreateNestedManyWithoutModelInput - permissions?: ModelPermissionCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput - likes?: ModelLikeCreateNestedManyWithoutModelInput - interactions?: ModelInteractionCreateNestedManyWithoutModelInput - comments?: ModelCommentCreateNestedManyWithoutModelInput + recipient: UserCreateNestedOneWithoutNotificationsInput } - export type ModelUncheckedCreateWithoutDraftsInput = { + export type UserNotificationUncheckedCreateWithoutEventInput = { id?: string - legacyId?: number | null - latestVersionNumber?: number | null - parentModelId?: string | null - parentVersionNumber?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number + recipientId: string + category: string + title: string + body: string + url: string + emailSentAt?: Date | string | null + readAt?: Date | string | null createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput - versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput - authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput - permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput - likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput - interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutModelInput } - export type ModelCreateOrConnectWithoutDraftsInput = { - where: ModelWhereUniqueInput - create: XOR + export type UserNotificationCreateOrConnectWithoutEventInput = { + where: UserNotificationWhereUniqueInput + create: XOR } - export type UserUpsertWithoutModelDraftsInput = { - update: XOR - create: XOR + export type UserNotificationCreateManyEventInputEnvelope = { + data: UserNotificationCreateManyEventInput | UserNotificationCreateManyEventInput[] + skipDuplicates?: boolean + } + + export type UserUpsertWithoutEventsInput = { + update: XOR + create: XOR where?: UserWhereInput } - export type UserUpdateToOneWithWhereWithoutModelDraftsInput = { + export type UserUpdateToOneWithWhereWithoutEventsInput = { where?: UserWhereInput - data: XOR + data: XOR } - export type UserUpdateWithoutModelDraftsInput = { + export type UserUpdateWithoutEventsInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -35371,15 +39785,17 @@ export namespace Prisma { verifications?: VerificationUpdateManyWithoutUserNestedInput authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput - events?: EventUpdateManyWithoutActorNestedInput modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput comments?: ModelCommentUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type UserUncheckedUpdateWithoutModelDraftsInput = { + export type UserUncheckedUpdateWithoutEventsInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -35407,133 +39823,33 @@ export namespace Prisma { verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput - events?: EventUncheckedUpdateManyWithoutActorNestedInput modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput + modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type ModelUpsertWithoutDraftsInput = { - update: XOR - create: XOR - where?: ModelWhereInput - } - - export type ModelUpdateToOneWithWhereWithoutDraftsInput = { - where?: ModelWhereInput - data: XOR - } - - export type ModelUpdateWithoutDraftsInput = { - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - latestVersion?: ModelVersionUpdateOneWithoutLatestOfModelNestedInput - parentModel?: ModelUpdateOneWithoutChildModelsNestedInput - childModels?: ModelUpdateManyWithoutParentModelNestedInput - parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput - versions?: ModelVersionUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput - likes?: ModelLikeUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUpdateManyWithoutModelNestedInput - comments?: ModelCommentUpdateManyWithoutModelNestedInput - } - - export type ModelUncheckedUpdateWithoutDraftsInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - parentModelId?: NullableStringFieldUpdateOperationsInput | string | null - parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput - versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput - likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutModelNestedInput - } - - export type ModelCreateWithoutCommentsInput = { - legacyId?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number - createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - latestVersion?: ModelVersionCreateNestedOneWithoutLatestOfModelInput - parentModel?: ModelCreateNestedOneWithoutChildModelsInput - childModels?: ModelCreateNestedManyWithoutParentModelInput - parentVersion?: ModelVersionCreateNestedOneWithoutParentOfModelsInput - versions?: ModelVersionCreateNestedManyWithoutModelInput - authors?: ModelAuthorCreateNestedManyWithoutModelInput - permissions?: ModelPermissionCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileCreateNestedManyWithoutModelInput - likes?: ModelLikeCreateNestedManyWithoutModelInput - interactions?: ModelInteractionCreateNestedManyWithoutModelInput - drafts?: ModelDraftCreateNestedManyWithoutModelInput + export type UserNotificationUpsertWithWhereUniqueWithoutEventInput = { + where: UserNotificationWhereUniqueInput + update: XOR + create: XOR } - export type ModelUncheckedCreateWithoutCommentsInput = { - id?: string - legacyId?: number | null - latestVersionNumber?: number | null - parentModelId?: string | null - parentVersionNumber?: number | null - visibility?: $Enums.ModelVisibility - isEndorsed?: boolean - isLibraryModel?: boolean - viewCount?: number - runCount?: number - downloadCount?: number - shareCount?: number - createdAt?: Date | string - updatedAt?: Date | string - deletedAt?: Date | string | null - childModels?: ModelUncheckedCreateNestedManyWithoutParentModelInput - versions?: ModelVersionUncheckedCreateNestedManyWithoutModelInput - authors?: ModelAuthorUncheckedCreateNestedManyWithoutModelInput - permissions?: ModelPermissionUncheckedCreateNestedManyWithoutModelInput - additionalFiles?: ModelAdditionalFileUncheckedCreateNestedManyWithoutModelInput - likes?: ModelLikeUncheckedCreateNestedManyWithoutModelInput - interactions?: ModelInteractionUncheckedCreateNestedManyWithoutModelInput - drafts?: ModelDraftUncheckedCreateNestedManyWithoutModelInput + export type UserNotificationUpdateWithWhereUniqueWithoutEventInput = { + where: UserNotificationWhereUniqueInput + data: XOR } - export type ModelCreateOrConnectWithoutCommentsInput = { - where: ModelWhereUniqueInput - create: XOR + export type UserNotificationUpdateManyWithWhereWithoutEventInput = { + where: UserNotificationScalarWhereInput + data: XOR } - export type UserCreateWithoutCommentsInput = { + export type UserCreateWithoutNotificationsInput = { id?: string name?: string | null email?: string | null @@ -35565,11 +39881,13 @@ export namespace Prisma { modelLikes?: ModelLikeCreateNestedManyWithoutUserInput modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput + comments?: ModelCommentCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notificationPreferences?: UserNotificationPreferenceCreateNestedManyWithoutUserInput passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type UserUncheckedCreateWithoutCommentsInput = { + export type UserUncheckedCreateWithoutNotificationsInput = { id?: string name?: string | null email?: string | null @@ -35601,188 +39919,60 @@ export namespace Prisma { modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput + comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notificationPreferences?: UserNotificationPreferenceUncheckedCreateNestedManyWithoutUserInput passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type UserCreateOrConnectWithoutCommentsInput = { + export type UserCreateOrConnectWithoutNotificationsInput = { where: UserWhereUniqueInput - create: XOR - } - - export type ModelCommentCreateWithoutRepliesInput = { - id?: string - legacyId?: number | null - versionNumber?: number | null - content?: string | null - likesCount?: number - createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - model: ModelCreateNestedOneWithoutCommentsInput - user?: UserCreateNestedOneWithoutCommentsInput - parent?: ModelCommentCreateNestedOneWithoutRepliesInput - likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput - } - - export type ModelCommentUncheckedCreateWithoutRepliesInput = { - id?: string - legacyId?: number | null - parentId?: string | null - userId?: string | null - modelId: string - versionNumber?: number | null - content?: string | null - likesCount?: number - createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput - } - - export type ModelCommentCreateOrConnectWithoutRepliesInput = { - where: ModelCommentWhereUniqueInput - create: XOR + create: XOR } - export type ModelCommentCreateWithoutParentInput = { + export type EventCreateWithoutNotificationsInput = { id?: string - legacyId?: number | null - versionNumber?: number | null - content?: string | null - likesCount?: number + type: string + resourceType: string + resourceId: string + payload: JsonNullValueInput | InputJsonValue createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - model: ModelCreateNestedOneWithoutCommentsInput - user?: UserCreateNestedOneWithoutCommentsInput - replies?: ModelCommentCreateNestedManyWithoutParentInput - likes?: ModelCommentLikeCreateNestedManyWithoutModelCommentInput + processedAt?: Date | string | null + attempts?: number + lastError?: string | null + actor: UserCreateNestedOneWithoutEventsInput } - export type ModelCommentUncheckedCreateWithoutParentInput = { + export type EventUncheckedCreateWithoutNotificationsInput = { id?: string - legacyId?: number | null - userId?: string | null - modelId: string - versionNumber?: number | null - content?: string | null - likesCount?: number - createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput - likes?: ModelCommentLikeUncheckedCreateNestedManyWithoutModelCommentInput - } - - export type ModelCommentCreateOrConnectWithoutParentInput = { - where: ModelCommentWhereUniqueInput - create: XOR - } - - export type ModelCommentCreateManyParentInputEnvelope = { - data: ModelCommentCreateManyParentInput | ModelCommentCreateManyParentInput[] - skipDuplicates?: boolean - } - - export type ModelCommentLikeCreateWithoutModelCommentInput = { - createdAt?: Date | string - user: UserCreateNestedOneWithoutCommentLikesInput - } - - export type ModelCommentLikeUncheckedCreateWithoutModelCommentInput = { - userId: string + type: string + actorId: string + resourceType: string + resourceId: string + payload: JsonNullValueInput | InputJsonValue createdAt?: Date | string + processedAt?: Date | string | null + attempts?: number + lastError?: string | null } - export type ModelCommentLikeCreateOrConnectWithoutModelCommentInput = { - where: ModelCommentLikeWhereUniqueInput - create: XOR - } - - export type ModelCommentLikeCreateManyModelCommentInputEnvelope = { - data: ModelCommentLikeCreateManyModelCommentInput | ModelCommentLikeCreateManyModelCommentInput[] - skipDuplicates?: boolean - } - - export type ModelUpsertWithoutCommentsInput = { - update: XOR - create: XOR - where?: ModelWhereInput - } - - export type ModelUpdateToOneWithWhereWithoutCommentsInput = { - where?: ModelWhereInput - data: XOR - } - - export type ModelUpdateWithoutCommentsInput = { - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - latestVersion?: ModelVersionUpdateOneWithoutLatestOfModelNestedInput - parentModel?: ModelUpdateOneWithoutChildModelsNestedInput - childModels?: ModelUpdateManyWithoutParentModelNestedInput - parentVersion?: ModelVersionUpdateOneWithoutParentOfModelsNestedInput - versions?: ModelVersionUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUpdateManyWithoutModelNestedInput - likes?: ModelLikeUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUpdateManyWithoutModelNestedInput - drafts?: ModelDraftUpdateManyWithoutModelNestedInput - } - - export type ModelUncheckedUpdateWithoutCommentsInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - latestVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - parentModelId?: NullableStringFieldUpdateOperationsInput | string | null - parentVersionNumber?: NullableIntFieldUpdateOperationsInput | number | null - visibility?: EnumModelVisibilityFieldUpdateOperationsInput | $Enums.ModelVisibility - isEndorsed?: BoolFieldUpdateOperationsInput | boolean - isLibraryModel?: BoolFieldUpdateOperationsInput | boolean - viewCount?: IntFieldUpdateOperationsInput | number - runCount?: IntFieldUpdateOperationsInput | number - downloadCount?: IntFieldUpdateOperationsInput | number - shareCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - childModels?: ModelUncheckedUpdateManyWithoutParentModelNestedInput - versions?: ModelVersionUncheckedUpdateManyWithoutModelNestedInput - authors?: ModelAuthorUncheckedUpdateManyWithoutModelNestedInput - permissions?: ModelPermissionUncheckedUpdateManyWithoutModelNestedInput - additionalFiles?: ModelAdditionalFileUncheckedUpdateManyWithoutModelNestedInput - likes?: ModelLikeUncheckedUpdateManyWithoutModelNestedInput - interactions?: ModelInteractionUncheckedUpdateManyWithoutModelNestedInput - drafts?: ModelDraftUncheckedUpdateManyWithoutModelNestedInput + export type EventCreateOrConnectWithoutNotificationsInput = { + where: EventWhereUniqueInput + create: XOR } - export type UserUpsertWithoutCommentsInput = { - update: XOR - create: XOR + export type UserUpsertWithoutNotificationsInput = { + update: XOR + create: XOR where?: UserWhereInput } - export type UserUpdateToOneWithWhereWithoutCommentsInput = { + export type UserUpdateToOneWithWhereWithoutNotificationsInput = { where?: UserWhereInput - data: XOR + data: XOR } - export type UserUpdateWithoutCommentsInput = { + export type UserUpdateWithoutNotificationsInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -35814,11 +40004,13 @@ export namespace Prisma { modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput + comments?: ModelCommentUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notificationPreferences?: UserNotificationPreferenceUpdateManyWithoutUserNestedInput passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type UserUncheckedUpdateWithoutCommentsInput = { + export type UserUncheckedUpdateWithoutNotificationsInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -35850,123 +40042,50 @@ export namespace Prisma { modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput + comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notificationPreferences?: UserNotificationPreferenceUncheckedUpdateManyWithoutUserNestedInput passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } - export type ModelCommentUpsertWithoutRepliesInput = { - update: XOR - create: XOR - where?: ModelCommentWhereInput + export type EventUpsertWithoutNotificationsInput = { + update: XOR + create: XOR + where?: EventWhereInput } - export type ModelCommentUpdateToOneWithWhereWithoutRepliesInput = { - where?: ModelCommentWhereInput - data: XOR + export type EventUpdateToOneWithWhereWithoutNotificationsInput = { + where?: EventWhereInput + data: XOR } - export type ModelCommentUpdateWithoutRepliesInput = { + export type EventUpdateWithoutNotificationsInput = { id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - content?: NullableStringFieldUpdateOperationsInput | string | null - likesCount?: IntFieldUpdateOperationsInput | number + type?: StringFieldUpdateOperationsInput | string + resourceType?: StringFieldUpdateOperationsInput | string + resourceId?: StringFieldUpdateOperationsInput | string + payload?: JsonNullValueInput | InputJsonValue createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - model?: ModelUpdateOneRequiredWithoutCommentsNestedInput - user?: UserUpdateOneWithoutCommentsNestedInput - parent?: ModelCommentUpdateOneWithoutRepliesNestedInput - likes?: ModelCommentLikeUpdateManyWithoutModelCommentNestedInput + processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + attempts?: IntFieldUpdateOperationsInput | number + lastError?: NullableStringFieldUpdateOperationsInput | string | null + actor?: UserUpdateOneRequiredWithoutEventsNestedInput } - export type ModelCommentUncheckedUpdateWithoutRepliesInput = { + export type EventUncheckedUpdateWithoutNotificationsInput = { id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - parentId?: NullableStringFieldUpdateOperationsInput | string | null - userId?: NullableStringFieldUpdateOperationsInput | string | null - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - content?: NullableStringFieldUpdateOperationsInput | string | null - likesCount?: IntFieldUpdateOperationsInput | number + type?: StringFieldUpdateOperationsInput | string + actorId?: StringFieldUpdateOperationsInput | string + resourceType?: StringFieldUpdateOperationsInput | string + resourceId?: StringFieldUpdateOperationsInput | string + payload?: JsonNullValueInput | InputJsonValue createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - likes?: ModelCommentLikeUncheckedUpdateManyWithoutModelCommentNestedInput - } - - export type ModelCommentUpsertWithWhereUniqueWithoutParentInput = { - where: ModelCommentWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelCommentUpdateWithWhereUniqueWithoutParentInput = { - where: ModelCommentWhereUniqueInput - data: XOR - } - - export type ModelCommentUpdateManyWithWhereWithoutParentInput = { - where: ModelCommentScalarWhereInput - data: XOR - } - - export type ModelCommentLikeUpsertWithWhereUniqueWithoutModelCommentInput = { - where: ModelCommentLikeWhereUniqueInput - update: XOR - create: XOR - } - - export type ModelCommentLikeUpdateWithWhereUniqueWithoutModelCommentInput = { - where: ModelCommentLikeWhereUniqueInput - data: XOR - } - - export type ModelCommentLikeUpdateManyWithWhereWithoutModelCommentInput = { - where: ModelCommentLikeScalarWhereInput - data: XOR - } - - export type ModelCommentCreateWithoutLikesInput = { - id?: string - legacyId?: number | null - versionNumber?: number | null - content?: string | null - likesCount?: number - createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - model: ModelCreateNestedOneWithoutCommentsInput - user?: UserCreateNestedOneWithoutCommentsInput - parent?: ModelCommentCreateNestedOneWithoutRepliesInput - replies?: ModelCommentCreateNestedManyWithoutParentInput - } - - export type ModelCommentUncheckedCreateWithoutLikesInput = { - id?: string - legacyId?: number | null - parentId?: string | null - userId?: string | null - modelId: string - versionNumber?: number | null - content?: string | null - likesCount?: number - createdAt?: Date | string - updatedAt?: Date | string - editedAt?: Date | string | null - deletedAt?: Date | string | null - replies?: ModelCommentUncheckedCreateNestedManyWithoutParentInput - } - - export type ModelCommentCreateOrConnectWithoutLikesInput = { - where: ModelCommentWhereUniqueInput - create: XOR + processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + attempts?: IntFieldUpdateOperationsInput | number + lastError?: NullableStringFieldUpdateOperationsInput | string | null } - export type UserCreateWithoutCommentLikesInput = { + export type UserCreateWithoutNotificationPreferencesInput = { id?: string name?: string | null email?: string | null @@ -35999,10 +40118,12 @@ export namespace Prisma { modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput comments?: ModelCommentCreateNestedManyWithoutUserInput + commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput + notifications?: UserNotificationCreateNestedManyWithoutRecipientInput passkeys?: PasskeyCreateNestedManyWithoutUserInput } - export type UserUncheckedCreateWithoutCommentLikesInput = { + export type UserUncheckedCreateWithoutNotificationPreferencesInput = { id?: string name?: string | null email?: string | null @@ -36035,229 +40156,28 @@ export namespace Prisma { modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput - passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput - } - - export type UserCreateOrConnectWithoutCommentLikesInput = { - where: UserWhereUniqueInput - create: XOR - } - - export type ModelCommentUpsertWithoutLikesInput = { - update: XOR - create: XOR - where?: ModelCommentWhereInput - } - - export type ModelCommentUpdateToOneWithWhereWithoutLikesInput = { - where?: ModelCommentWhereInput - data: XOR - } - - export type ModelCommentUpdateWithoutLikesInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - content?: NullableStringFieldUpdateOperationsInput | string | null - likesCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - model?: ModelUpdateOneRequiredWithoutCommentsNestedInput - user?: UserUpdateOneWithoutCommentsNestedInput - parent?: ModelCommentUpdateOneWithoutRepliesNestedInput - replies?: ModelCommentUpdateManyWithoutParentNestedInput - } - - export type ModelCommentUncheckedUpdateWithoutLikesInput = { - id?: StringFieldUpdateOperationsInput | string - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - parentId?: NullableStringFieldUpdateOperationsInput | string | null - userId?: NullableStringFieldUpdateOperationsInput | string | null - modelId?: StringFieldUpdateOperationsInput | string - versionNumber?: NullableIntFieldUpdateOperationsInput | number | null - content?: NullableStringFieldUpdateOperationsInput | string | null - likesCount?: IntFieldUpdateOperationsInput | number - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - editedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - replies?: ModelCommentUncheckedUpdateManyWithoutParentNestedInput - } - - export type UserUpsertWithoutCommentLikesInput = { - update: XOR - create: XOR - where?: UserWhereInput - } - - export type UserUpdateToOneWithWhereWithoutCommentLikesInput = { - where?: UserWhereInput - data: XOR - } - - export type UserUpdateWithoutCommentLikesInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUpdateManyWithoutUserNestedInput - sessions?: SessionUpdateManyWithoutUserNestedInput - verifications?: VerificationUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput - events?: EventUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput - comments?: ModelCommentUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUpdateManyWithoutUserNestedInput - } - - export type UserUncheckedUpdateWithoutCommentLikesInput = { - id?: StringFieldUpdateOperationsInput | string - name?: NullableStringFieldUpdateOperationsInput | string | null - email?: NullableStringFieldUpdateOperationsInput | string | null - emailVerified?: BoolFieldUpdateOperationsInput | boolean - image?: NullableStringFieldUpdateOperationsInput | string | null - createdAt?: DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string - systemRole?: EnumSystemRoleFieldUpdateOperationsInput | $Enums.SystemRole - userKind?: EnumUserKindFieldUpdateOperationsInput | $Enums.UserKind - isProfilePublic?: BoolFieldUpdateOperationsInput | boolean - deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - bio?: NullableStringFieldUpdateOperationsInput | string | null - country?: NullableStringFieldUpdateOperationsInput | string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - affiliation?: NullableStringFieldUpdateOperationsInput | string | null - role?: NullableStringFieldUpdateOperationsInput | string | null - banned?: NullableBoolFieldUpdateOperationsInput | boolean | null - banReason?: NullableStringFieldUpdateOperationsInput | string | null - banExpires?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - onboardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null - legacyId?: NullableIntFieldUpdateOperationsInput | number | null - accounts?: AccountUncheckedUpdateManyWithoutUserNestedInput - sessions?: SessionUncheckedUpdateManyWithoutUserNestedInput - verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput - authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput - grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput - events?: EventUncheckedUpdateManyWithoutActorNestedInput - modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput - modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput - modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput - comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput - passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput - } - - export type UserCreateWithoutEventsInput = { - id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null - createdAt?: Date | string - updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean - deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountCreateNestedManyWithoutUserInput - sessions?: SessionCreateNestedManyWithoutUserInput - verifications?: VerificationCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionCreateNestedManyWithoutGranteeUserInput - modelLikes?: ModelLikeCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftCreateNestedManyWithoutUserInput - comments?: ModelCommentCreateNestedManyWithoutUserInput - commentLikes?: ModelCommentLikeCreateNestedManyWithoutUserInput - passkeys?: PasskeyCreateNestedManyWithoutUserInput - } - - export type UserUncheckedCreateWithoutEventsInput = { - id?: string - name?: string | null - email?: string | null - emailVerified?: boolean - image?: string | null - createdAt?: Date | string - updatedAt?: Date | string - systemRole?: $Enums.SystemRole - userKind?: $Enums.UserKind - isProfilePublic?: boolean - deletedAt?: Date | string | null - bio?: string | null - country?: string | null - socialLinks?: NullableJsonNullValueInput | InputJsonValue - dob?: Date | string | null - affiliation?: string | null - role?: string | null - banned?: boolean | null - banReason?: string | null - banExpires?: Date | string | null - onboardedAt?: Date | string | null - legacyId?: number | null - accounts?: AccountUncheckedCreateNestedManyWithoutUserInput - sessions?: SessionUncheckedCreateNestedManyWithoutUserInput - verifications?: VerificationUncheckedCreateNestedManyWithoutUserInput - authoredModels?: ModelAuthorUncheckedCreateNestedManyWithoutUserInput - grantedPermissions?: ModelPermissionUncheckedCreateNestedManyWithoutGranteeUserInput - modelLikes?: ModelLikeUncheckedCreateNestedManyWithoutUserInput - modelInteractions?: ModelInteractionUncheckedCreateNestedManyWithoutUserInput - modelDrafts?: ModelDraftUncheckedCreateNestedManyWithoutUserInput - comments?: ModelCommentUncheckedCreateNestedManyWithoutUserInput commentLikes?: ModelCommentLikeUncheckedCreateNestedManyWithoutUserInput + notifications?: UserNotificationUncheckedCreateNestedManyWithoutRecipientInput passkeys?: PasskeyUncheckedCreateNestedManyWithoutUserInput } - export type UserCreateOrConnectWithoutEventsInput = { + export type UserCreateOrConnectWithoutNotificationPreferencesInput = { where: UserWhereUniqueInput - create: XOR + create: XOR } - export type UserUpsertWithoutEventsInput = { - update: XOR - create: XOR + export type UserUpsertWithoutNotificationPreferencesInput = { + update: XOR + create: XOR where?: UserWhereInput } - export type UserUpdateToOneWithWhereWithoutEventsInput = { + export type UserUpdateToOneWithWhereWithoutNotificationPreferencesInput = { where?: UserWhereInput - data: XOR + data: XOR } - export type UserUpdateWithoutEventsInput = { + export type UserUpdateWithoutNotificationPreferencesInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -36285,15 +40205,17 @@ export namespace Prisma { verifications?: VerificationUpdateManyWithoutUserNestedInput authoredModels?: ModelAuthorUpdateManyWithoutUserNestedInput grantedPermissions?: ModelPermissionUpdateManyWithoutGranteeUserNestedInput + events?: EventUpdateManyWithoutActorNestedInput modelLikes?: ModelLikeUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUpdateManyWithoutUserNestedInput comments?: ModelCommentUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUpdateManyWithoutRecipientNestedInput passkeys?: PasskeyUpdateManyWithoutUserNestedInput } - export type UserUncheckedUpdateWithoutEventsInput = { + export type UserUncheckedUpdateWithoutNotificationPreferencesInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null email?: NullableStringFieldUpdateOperationsInput | string | null @@ -36321,11 +40243,13 @@ export namespace Prisma { verifications?: VerificationUncheckedUpdateManyWithoutUserNestedInput authoredModels?: ModelAuthorUncheckedUpdateManyWithoutUserNestedInput grantedPermissions?: ModelPermissionUncheckedUpdateManyWithoutGranteeUserNestedInput + events?: EventUncheckedUpdateManyWithoutActorNestedInput modelLikes?: ModelLikeUncheckedUpdateManyWithoutUserNestedInput modelInteractions?: ModelInteractionUncheckedUpdateManyWithoutUserNestedInput modelDrafts?: ModelDraftUncheckedUpdateManyWithoutUserNestedInput comments?: ModelCommentUncheckedUpdateManyWithoutUserNestedInput commentLikes?: ModelCommentLikeUncheckedUpdateManyWithoutUserNestedInput + notifications?: UserNotificationUncheckedUpdateManyWithoutRecipientNestedInput passkeys?: PasskeyUncheckedUpdateManyWithoutUserNestedInput } @@ -36385,6 +40309,8 @@ export namespace Prisma { payload: JsonNullValueInput | InputJsonValue createdAt?: Date | string processedAt?: Date | string | null + attempts?: number + lastError?: string | null } export type ModelLikeCreateManyUserInput = { @@ -36434,6 +40360,26 @@ export namespace Prisma { createdAt?: Date | string } + export type UserNotificationCreateManyRecipientInput = { + id?: string + eventId: string + category: string + title: string + body: string + url: string + emailSentAt?: Date | string | null + readAt?: Date | string | null + createdAt?: Date | string + } + + export type UserNotificationPreferenceCreateManyUserInput = { + id?: string + category: string + email: boolean + inApp: boolean + updatedAt?: Date | string + } + export type PasskeyCreateManyUserInput = { id?: string name?: string | null @@ -36599,6 +40545,9 @@ export namespace Prisma { payload?: JsonNullValueInput | InputJsonValue createdAt?: DateTimeFieldUpdateOperationsInput | Date | string processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + attempts?: IntFieldUpdateOperationsInput | number + lastError?: NullableStringFieldUpdateOperationsInput | string | null + notifications?: UserNotificationUpdateManyWithoutEventNestedInput } export type EventUncheckedUpdateWithoutActorInput = { @@ -36609,6 +40558,9 @@ export namespace Prisma { payload?: JsonNullValueInput | InputJsonValue createdAt?: DateTimeFieldUpdateOperationsInput | Date | string processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + attempts?: IntFieldUpdateOperationsInput | number + lastError?: NullableStringFieldUpdateOperationsInput | string | null + notifications?: UserNotificationUncheckedUpdateManyWithoutEventNestedInput } export type EventUncheckedUpdateManyWithoutActorInput = { @@ -36619,6 +40571,8 @@ export namespace Prisma { payload?: JsonNullValueInput | InputJsonValue createdAt?: DateTimeFieldUpdateOperationsInput | Date | string processedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + attempts?: IntFieldUpdateOperationsInput | number + lastError?: NullableStringFieldUpdateOperationsInput | string | null } export type ModelLikeUpdateWithoutUserInput = { @@ -36766,6 +40720,66 @@ export namespace Prisma { createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } + export type UserNotificationUpdateWithoutRecipientInput = { + id?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + event?: EventUpdateOneRequiredWithoutNotificationsNestedInput + } + + export type UserNotificationUncheckedUpdateWithoutRecipientInput = { + id?: StringFieldUpdateOperationsInput | string + eventId?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type UserNotificationUncheckedUpdateManyWithoutRecipientInput = { + id?: StringFieldUpdateOperationsInput | string + eventId?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type UserNotificationPreferenceUpdateWithoutUserInput = { + id?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + email?: BoolFieldUpdateOperationsInput | boolean + inApp?: BoolFieldUpdateOperationsInput | boolean + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type UserNotificationPreferenceUncheckedUpdateWithoutUserInput = { + id?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + email?: BoolFieldUpdateOperationsInput | boolean + inApp?: BoolFieldUpdateOperationsInput | boolean + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type UserNotificationPreferenceUncheckedUpdateManyWithoutUserInput = { + id?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + email?: BoolFieldUpdateOperationsInput | boolean + inApp?: BoolFieldUpdateOperationsInput | boolean + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + export type PasskeyUpdateWithoutUserInput = { id?: StringFieldUpdateOperationsInput | string name?: NullableStringFieldUpdateOperationsInput | string | null @@ -37440,6 +41454,54 @@ export namespace Prisma { createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } + export type UserNotificationCreateManyEventInput = { + id?: string + recipientId: string + category: string + title: string + body: string + url: string + emailSentAt?: Date | string | null + readAt?: Date | string | null + createdAt?: Date | string + } + + export type UserNotificationUpdateWithoutEventInput = { + id?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + recipient?: UserUpdateOneRequiredWithoutNotificationsNestedInput + } + + export type UserNotificationUncheckedUpdateWithoutEventInput = { + id?: StringFieldUpdateOperationsInput | string + recipientId?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type UserNotificationUncheckedUpdateManyWithoutEventInput = { + id?: StringFieldUpdateOperationsInput | string + recipientId?: StringFieldUpdateOperationsInput | string + category?: StringFieldUpdateOperationsInput | string + title?: StringFieldUpdateOperationsInput | string + body?: StringFieldUpdateOperationsInput | string + url?: StringFieldUpdateOperationsInput | string + emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + readAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + /** diff --git a/apps/modeling-commons-backend/generated/prisma/index.js b/apps/modeling-commons-backend/generated/prisma/index.js index a174799e..4986a88d 100644 --- a/apps/modeling-commons-backend/generated/prisma/index.js +++ b/apps/modeling-commons-backend/generated/prisma/index.js @@ -301,7 +301,31 @@ exports.Prisma.EventScalarFieldEnum = { resourceId: 'resourceId', payload: 'payload', createdAt: 'createdAt', - processedAt: 'processedAt' + processedAt: 'processedAt', + attempts: 'attempts', + lastError: 'lastError' +}; + +exports.Prisma.UserNotificationScalarFieldEnum = { + id: 'id', + recipientId: 'recipientId', + eventId: 'eventId', + category: 'category', + title: 'title', + body: 'body', + url: 'url', + emailSentAt: 'emailSentAt', + readAt: 'readAt', + createdAt: 'createdAt' +}; + +exports.Prisma.UserNotificationPreferenceScalarFieldEnum = { + id: 'id', + userId: 'userId', + category: 'category', + email: 'email', + inApp: 'inApp', + updatedAt: 'updatedAt' }; exports.Prisma.SortOrder = { @@ -393,7 +417,9 @@ exports.Prisma.ModelName = { ModelDraft: 'ModelDraft', ModelComment: 'ModelComment', ModelCommentLike: 'ModelCommentLike', - Event: 'Event' + Event: 'Event', + UserNotification: 'UserNotification', + UserNotificationPreference: 'UserNotificationPreference' }; /** * Create the Client @@ -403,14 +429,14 @@ const config = { "clientVersion": "7.8.0", "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\n// Enums\n\nenum ModelVisibility {\n public\n private\n unlisted\n}\n\nenum SystemRole {\n admin\n moderator\n user\n}\n\nenum UserKind {\n student\n teacher\n researcher\n other\n}\n\nenum AuthorRole {\n owner\n contributor\n}\n\nenum PermissionLevel {\n read\n write\n admin\n}\n\nenum ModelInteractionKind {\n view\n run\n download\n share\n}\n\nenum ModelFileKind {\n model\n additional\n}\n\n// Better Auth core tables\n\nmodel User {\n id String @id @default(uuid())\n name String?\n email String? @unique\n emailVerified Boolean @default(false)\n image String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n // Extended fields\n systemRole SystemRole @default(user)\n userKind UserKind @default(other)\n isProfilePublic Boolean @default(false)\n deletedAt DateTime?\n\n // User profile fields\n bio String?\n country String?\n socialLinks Json? // e.g. [{ platform: 'twitter', url: '...' }]\n dob DateTime? @db.Date\n affiliation String?\n\n // Better Auth relations\n accounts Account[]\n sessions Session[]\n verifications Verification[]\n\n // Domain relations\n authoredModels ModelAuthor[]\n grantedPermissions ModelPermission[]\n events Event[]\n modelLikes ModelLike[]\n modelInteractions ModelInteraction[]\n modelDrafts ModelDraft[]\n comments ModelComment[]\n commentLikes ModelCommentLike[]\n\n // Better Auth Admin plugin\n role String?\n banned Boolean?\n banReason String?\n banExpires DateTime? @db.Timestamptz(3)\n\n // Application behavior\n onboardedAt DateTime? @db.Timestamptz(3)\n legacyId Int? @unique\n\n // Passkey relations\n passkeys Passkey[]\n}\n\nmodel Account {\n id String @id @default(uuid())\n userId String\n accountId String\n providerId String\n accessToken String?\n refreshToken String?\n accessTokenExpiresAt DateTime? @db.Timestamptz(3)\n refreshTokenExpiresAt DateTime? @db.Timestamptz(3)\n scope String?\n idToken String?\n password String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n}\n\nmodel Session {\n id String @id @default(uuid())\n userId String\n expiresAt DateTime\n token String @unique\n ipAddress String?\n userAgent String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n // Better Auth Admin plugin fields\n impersonatedBy String?\n\n @@index([userId])\n}\n\nmodel Verification {\n id String @id @default(uuid())\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime? @default(now()) @db.Timestamptz(3)\n updatedAt DateTime? @updatedAt @db.Timestamptz(3)\n\n user User? @relation(fields: [userId], references: [id], onDelete: Cascade)\n userId String?\n\n @@index([userId])\n}\n\nmodel Passkey {\n id String @id @default(uuid())\n name String?\n publicKey String\n userId String\n credentialID String\n counter Int\n deviceType String\n backedUp Boolean\n transports String?\n createdAt DateTime? @default(now()) @db.Timestamptz(3)\n aaguid String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\n// Domain models\n\nmodel Model {\n id String @id @default(uuid())\n legacyId Int? @unique\n latestVersionNumber Int?\n parentModelId String?\n parentVersionNumber Int?\n visibility ModelVisibility @default(public)\n isEndorsed Boolean @default(false)\n isLibraryModel Boolean @default(false)\n viewCount Int @default(0)\n runCount Int @default(0)\n downloadCount Int @default(0)\n shareCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n deletedAt DateTime?\n\n latestVersion ModelVersion? @relation(\"LatestVersion\", fields: [id, latestVersionNumber], references: [modelId, versionNumber])\n parentModel Model? @relation(\"ModelParent\", fields: [parentModelId], references: [id])\n childModels Model[] @relation(\"ModelParent\")\n parentVersion ModelVersion? @relation(\"ParentVersion\", fields: [parentModelId, parentVersionNumber], references: [modelId, versionNumber])\n\n versions ModelVersion[] @relation(\"ModelVersions\")\n authors ModelAuthor[]\n permissions ModelPermission[]\n additionalFiles ModelAdditionalFile[]\n likes ModelLike[]\n interactions ModelInteraction[]\n drafts ModelDraft[]\n comments ModelComment[]\n\n @@unique([id, latestVersionNumber])\n @@index([parentModelId])\n @@index([parentModelId, parentVersionNumber])\n @@index([viewCount])\n @@index([runCount])\n @@index([downloadCount])\n}\n\nmodel ModelVersion {\n modelId String\n versionNumber Int\n title String\n description String?\n changeSummary String?\n previewImageFileKey String?\n netlogoFileKey String\n netlogoVersion String?\n infoTab String?\n createdAt DateTime @default(now())\n finalizedAt DateTime?\n\n model Model @relation(\"ModelVersions\", fields: [modelId], references: [id], onDelete: Cascade)\n\n // Reverse relations\n latestOfModel Model? @relation(\"LatestVersion\")\n parentOfModels Model[] @relation(\"ParentVersion\")\n\n tags ModelVersionTag[]\n taggedAdditionalFiles ModelAdditionalFile[]\n\n @@id([modelId, versionNumber])\n @@index([modelId])\n}\n\nmodel ModelVersionTag {\n modelId String\n versionNumber Int\n tagId String\n createdAt DateTime @default(now())\n\n modelVersion ModelVersion @relation(fields: [modelId, versionNumber], references: [modelId, versionNumber], onDelete: Cascade)\n tag Tag @relation(fields: [tagId], references: [id], onDelete: Cascade)\n\n @@id([modelId, versionNumber, tagId])\n @@index([tagId])\n}\n\nmodel ModelAdditionalFile {\n id String @id @default(uuid())\n modelId String\n taggedVersionNumber Int\n fileKey String\n kind ModelFileKind @default(additional)\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n taggedVersion ModelVersion @relation(fields: [modelId, taggedVersionNumber], references: [modelId, versionNumber])\n\n @@index([modelId])\n @@index([modelId, taggedVersionNumber])\n}\n\nmodel Tag {\n id String @id @default(uuid())\n legacyId Int? @unique\n name String @unique\n displayName String?\n createdAt DateTime @default(now())\n\n modelVersions ModelVersionTag[]\n}\n\nmodel ModelAuthor {\n modelId String\n userId String\n role AuthorRole\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelId, userId])\n @@index([userId])\n}\n\nmodel ModelPermission {\n id String @id @default(uuid())\n modelId String\n granteeUserId String?\n permissionLevel PermissionLevel\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n granteeUser User? @relation(fields: [granteeUserId], references: [id], onDelete: Cascade)\n\n @@unique([modelId, granteeUserId])\n @@index([modelId])\n @@index([granteeUserId])\n}\n\nmodel ModelLike {\n modelId String\n userId String\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelId, userId])\n @@index([userId])\n @@index([modelId, createdAt])\n}\n\nmodel ModelInteraction {\n id String @id @default(uuid())\n modelId String\n versionNumber Int?\n kind ModelInteractionKind\n userId String?\n sessionId String?\n ipHash String?\n userAgent String?\n referer String?\n geo Json?\n cookie String?\n\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n\n @@index([modelId, kind, createdAt])\n @@index([modelId, kind, userId])\n @@index([userId, createdAt])\n @@index([createdAt])\n}\n\nmodel ModelDraft {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n modelId String?\n model Model? @relation(fields: [modelId], references: [id], onDelete: Cascade)\n\n schemaVersion Int\n data Json\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@index([modelId])\n}\n\nmodel ModelComment {\n id String @id @default(uuid())\n legacyId Int? @unique\n\n parentId String?\n userId String?\n\n modelId String\n versionNumber Int?\n\n content String? @db.Text\n likesCount Int @default(0)\n\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n editedAt DateTime? @db.Timestamptz(3)\n deletedAt DateTime? @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n parent ModelComment? @relation(\"CommentReplies\", fields: [parentId], references: [id], onDelete: Cascade)\n replies ModelComment[] @relation(\"CommentReplies\")\n\n likes ModelCommentLike[]\n\n @@index([modelId, parentId, createdAt])\n @@index([parentId])\n @@index([userId])\n}\n\nmodel ModelCommentLike {\n modelCommentId String\n userId String\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n modelComment ModelComment @relation(fields: [modelCommentId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelCommentId, userId])\n @@index([userId])\n}\n\nmodel Event {\n id String @id @default(uuid())\n type String\n actorId String\n resourceType String\n resourceId String\n payload Json\n createdAt DateTime @default(now())\n processedAt DateTime?\n\n actor User @relation(fields: [actorId], references: [id])\n\n @@index([actorId])\n @@index([resourceType, resourceId])\n @@index([type])\n @@index([processedAt])\n}\n" + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\n// Enums\n\nenum ModelVisibility {\n public\n private\n unlisted\n}\n\nenum SystemRole {\n admin\n moderator\n user\n}\n\nenum UserKind {\n student\n teacher\n researcher\n other\n}\n\nenum AuthorRole {\n owner\n contributor\n}\n\nenum PermissionLevel {\n read\n write\n admin\n}\n\nenum ModelInteractionKind {\n view\n run\n download\n share\n}\n\nenum ModelFileKind {\n model\n additional\n}\n\n// Better Auth core tables\n\nmodel User {\n id String @id @default(uuid())\n name String?\n email String? @unique\n emailVerified Boolean @default(false)\n image String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n // Extended fields\n systemRole SystemRole @default(user)\n userKind UserKind @default(other)\n isProfilePublic Boolean @default(false)\n deletedAt DateTime?\n\n // User profile fields\n bio String?\n country String?\n socialLinks Json? // e.g. [{ platform: 'twitter', url: '...' }]\n dob DateTime? @db.Date\n affiliation String?\n\n // Better Auth relations\n accounts Account[]\n sessions Session[]\n verifications Verification[]\n\n // Domain relations\n authoredModels ModelAuthor[]\n grantedPermissions ModelPermission[]\n events Event[]\n modelLikes ModelLike[]\n modelInteractions ModelInteraction[]\n modelDrafts ModelDraft[]\n comments ModelComment[]\n commentLikes ModelCommentLike[]\n notifications UserNotification[]\n notificationPreferences UserNotificationPreference[]\n\n // Better Auth Admin plugin\n role String?\n banned Boolean?\n banReason String?\n banExpires DateTime? @db.Timestamptz(3)\n\n // Application behavior\n onboardedAt DateTime? @db.Timestamptz(3)\n legacyId Int? @unique\n\n // Passkey relations\n passkeys Passkey[]\n}\n\nmodel Account {\n id String @id @default(uuid())\n userId String\n accountId String\n providerId String\n accessToken String?\n refreshToken String?\n accessTokenExpiresAt DateTime? @db.Timestamptz(3)\n refreshTokenExpiresAt DateTime? @db.Timestamptz(3)\n scope String?\n idToken String?\n password String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n}\n\nmodel Session {\n id String @id @default(uuid())\n userId String\n expiresAt DateTime\n token String @unique\n ipAddress String?\n userAgent String?\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n // Better Auth Admin plugin fields\n impersonatedBy String?\n\n @@index([userId])\n}\n\nmodel Verification {\n id String @id @default(uuid())\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime? @default(now()) @db.Timestamptz(3)\n updatedAt DateTime? @updatedAt @db.Timestamptz(3)\n\n user User? @relation(fields: [userId], references: [id], onDelete: Cascade)\n userId String?\n\n @@index([userId])\n}\n\nmodel Passkey {\n id String @id @default(uuid())\n name String?\n publicKey String\n userId String\n credentialID String\n counter Int\n deviceType String\n backedUp Boolean\n transports String?\n createdAt DateTime? @default(now()) @db.Timestamptz(3)\n aaguid String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\n// Domain models\n\nmodel Model {\n id String @id @default(uuid())\n legacyId Int? @unique\n latestVersionNumber Int?\n parentModelId String?\n parentVersionNumber Int?\n visibility ModelVisibility @default(public)\n isEndorsed Boolean @default(false)\n isLibraryModel Boolean @default(false)\n viewCount Int @default(0)\n runCount Int @default(0)\n downloadCount Int @default(0)\n shareCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n deletedAt DateTime?\n\n latestVersion ModelVersion? @relation(\"LatestVersion\", fields: [id, latestVersionNumber], references: [modelId, versionNumber])\n parentModel Model? @relation(\"ModelParent\", fields: [parentModelId], references: [id])\n childModels Model[] @relation(\"ModelParent\")\n parentVersion ModelVersion? @relation(\"ParentVersion\", fields: [parentModelId, parentVersionNumber], references: [modelId, versionNumber])\n\n versions ModelVersion[] @relation(\"ModelVersions\")\n authors ModelAuthor[]\n permissions ModelPermission[]\n additionalFiles ModelAdditionalFile[]\n likes ModelLike[]\n interactions ModelInteraction[]\n drafts ModelDraft[]\n comments ModelComment[]\n\n @@unique([id, latestVersionNumber])\n @@index([parentModelId])\n @@index([parentModelId, parentVersionNumber])\n @@index([viewCount])\n @@index([runCount])\n @@index([downloadCount])\n}\n\nmodel ModelVersion {\n modelId String\n versionNumber Int\n title String\n description String?\n changeSummary String?\n previewImageFileKey String?\n netlogoFileKey String\n netlogoVersion String?\n infoTab String?\n createdAt DateTime @default(now())\n finalizedAt DateTime?\n\n model Model @relation(\"ModelVersions\", fields: [modelId], references: [id], onDelete: Cascade)\n\n // Reverse relations\n latestOfModel Model? @relation(\"LatestVersion\")\n parentOfModels Model[] @relation(\"ParentVersion\")\n\n tags ModelVersionTag[]\n taggedAdditionalFiles ModelAdditionalFile[]\n\n @@id([modelId, versionNumber])\n @@index([modelId])\n}\n\nmodel ModelVersionTag {\n modelId String\n versionNumber Int\n tagId String\n createdAt DateTime @default(now())\n\n modelVersion ModelVersion @relation(fields: [modelId, versionNumber], references: [modelId, versionNumber], onDelete: Cascade)\n tag Tag @relation(fields: [tagId], references: [id], onDelete: Cascade)\n\n @@id([modelId, versionNumber, tagId])\n @@index([tagId])\n}\n\nmodel ModelAdditionalFile {\n id String @id @default(uuid())\n modelId String\n taggedVersionNumber Int\n fileKey String\n kind ModelFileKind @default(additional)\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n taggedVersion ModelVersion @relation(fields: [modelId, taggedVersionNumber], references: [modelId, versionNumber])\n\n @@index([modelId])\n @@index([modelId, taggedVersionNumber])\n}\n\nmodel Tag {\n id String @id @default(uuid())\n legacyId Int? @unique\n name String @unique\n displayName String?\n createdAt DateTime @default(now())\n\n modelVersions ModelVersionTag[]\n}\n\nmodel ModelAuthor {\n modelId String\n userId String\n role AuthorRole\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelId, userId])\n @@index([userId])\n}\n\nmodel ModelPermission {\n id String @id @default(uuid())\n modelId String\n granteeUserId String?\n permissionLevel PermissionLevel\n createdAt DateTime @default(now())\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n granteeUser User? @relation(fields: [granteeUserId], references: [id], onDelete: Cascade)\n\n @@unique([modelId, granteeUserId])\n @@index([modelId])\n @@index([granteeUserId])\n}\n\nmodel ModelLike {\n modelId String\n userId String\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelId, userId])\n @@index([userId])\n @@index([modelId, createdAt])\n}\n\nmodel ModelInteraction {\n id String @id @default(uuid())\n modelId String\n versionNumber Int?\n kind ModelInteractionKind\n userId String?\n sessionId String?\n ipHash String?\n userAgent String?\n referer String?\n geo Json?\n cookie String?\n\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n\n @@index([modelId, kind, createdAt])\n @@index([modelId, kind, userId])\n @@index([userId, createdAt])\n @@index([createdAt])\n}\n\nmodel ModelDraft {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n modelId String?\n model Model? @relation(fields: [modelId], references: [id], onDelete: Cascade)\n\n schemaVersion Int\n data Json\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@index([modelId])\n}\n\nmodel ModelComment {\n id String @id @default(uuid())\n legacyId Int? @unique\n\n parentId String?\n userId String?\n\n modelId String\n versionNumber Int?\n\n content String? @db.Text\n likesCount Int @default(0)\n\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n editedAt DateTime? @db.Timestamptz(3)\n deletedAt DateTime? @db.Timestamptz(3)\n\n model Model @relation(fields: [modelId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n parent ModelComment? @relation(\"CommentReplies\", fields: [parentId], references: [id], onDelete: Cascade)\n replies ModelComment[] @relation(\"CommentReplies\")\n\n likes ModelCommentLike[]\n\n @@index([modelId, parentId, createdAt])\n @@index([parentId])\n @@index([userId])\n}\n\nmodel ModelCommentLike {\n modelCommentId String\n userId String\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n modelComment ModelComment @relation(fields: [modelCommentId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([modelCommentId, userId])\n @@index([userId])\n}\n\nmodel Event {\n id String @id @default(uuid())\n type String\n actorId String\n resourceType String\n resourceId String\n payload Json\n createdAt DateTime @default(now())\n processedAt DateTime?\n attempts Int @default(0)\n lastError String? @db.Text\n\n actor User @relation(fields: [actorId], references: [id])\n\n notifications UserNotification[]\n\n @@index([actorId])\n @@index([resourceType, resourceId])\n @@index([type])\n @@index([processedAt])\n}\n\nmodel UserNotification {\n id String @id @default(uuid())\n recipientId String\n eventId String\n category String\n title String\n body String @db.Text\n url String\n emailSentAt DateTime? @db.Timestamptz(3)\n readAt DateTime? @db.Timestamptz(3)\n createdAt DateTime @default(now()) @db.Timestamptz(3)\n\n recipient User @relation(fields: [recipientId], references: [id], onDelete: Cascade)\n event Event @relation(fields: [eventId], references: [id], onDelete: Cascade)\n\n @@unique([eventId, recipientId, category])\n @@index([recipientId, readAt, createdAt])\n}\n\nmodel UserNotificationPreference {\n id String @id @default(uuid())\n userId String\n category String\n email Boolean\n inApp Boolean\n updatedAt DateTime @updatedAt @db.Timestamptz(3)\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([userId, category])\n}\n" } -config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"systemRole\",\"kind\":\"enum\",\"type\":\"SystemRole\"},{\"name\":\"userKind\",\"kind\":\"enum\",\"type\":\"UserKind\"},{\"name\":\"isProfilePublic\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"socialLinks\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"dob\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"affiliation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"verifications\",\"kind\":\"object\",\"type\":\"Verification\",\"relationName\":\"UserToVerification\"},{\"name\":\"authoredModels\",\"kind\":\"object\",\"type\":\"ModelAuthor\",\"relationName\":\"ModelAuthorToUser\"},{\"name\":\"grantedPermissions\",\"kind\":\"object\",\"type\":\"ModelPermission\",\"relationName\":\"ModelPermissionToUser\"},{\"name\":\"events\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToUser\"},{\"name\":\"modelLikes\",\"kind\":\"object\",\"type\":\"ModelLike\",\"relationName\":\"ModelLikeToUser\"},{\"name\":\"modelInteractions\",\"kind\":\"object\",\"type\":\"ModelInteraction\",\"relationName\":\"ModelInteractionToUser\"},{\"name\":\"modelDrafts\",\"kind\":\"object\",\"type\":\"ModelDraft\",\"relationName\":\"ModelDraftToUser\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelCommentToUser\"},{\"name\":\"commentLikes\",\"kind\":\"object\",\"type\":\"ModelCommentLike\",\"relationName\":\"ModelCommentLikeToUser\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"banReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banExpires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"onboardedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"passkeys\",\"kind\":\"object\",\"type\":\"Passkey\",\"relationName\":\"PasskeyToUser\"}],\"dbName\":null},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"},{\"name\":\"impersonatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToVerification\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Passkey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"publicKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"credentialID\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"counter\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deviceType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"backedUp\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"transports\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"aaguid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PasskeyToUser\"}],\"dbName\":null},\"Model\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"latestVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentModelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"visibility\",\"kind\":\"enum\",\"type\":\"ModelVisibility\"},{\"name\":\"isEndorsed\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isLibraryModel\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"viewCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"runCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"downloadCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"shareCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"latestVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"LatestVersion\"},{\"name\":\"parentModel\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelParent\"},{\"name\":\"childModels\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelParent\"},{\"name\":\"parentVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ParentVersion\"},{\"name\":\"versions\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelVersions\"},{\"name\":\"authors\",\"kind\":\"object\",\"type\":\"ModelAuthor\",\"relationName\":\"ModelToModelAuthor\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"ModelPermission\",\"relationName\":\"ModelToModelPermission\"},{\"name\":\"additionalFiles\",\"kind\":\"object\",\"type\":\"ModelAdditionalFile\",\"relationName\":\"ModelToModelAdditionalFile\"},{\"name\":\"likes\",\"kind\":\"object\",\"type\":\"ModelLike\",\"relationName\":\"ModelToModelLike\"},{\"name\":\"interactions\",\"kind\":\"object\",\"type\":\"ModelInteraction\",\"relationName\":\"ModelToModelInteraction\"},{\"name\":\"drafts\",\"kind\":\"object\",\"type\":\"ModelDraft\",\"relationName\":\"ModelToModelDraft\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelToModelComment\"}],\"dbName\":null},\"ModelVersion\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"changeSummary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"previewImageFileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"netlogoFileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"netlogoVersion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"infoTab\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finalizedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelVersions\"},{\"name\":\"latestOfModel\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"LatestVersion\"},{\"name\":\"parentOfModels\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ParentVersion\"},{\"name\":\"tags\",\"kind\":\"object\",\"type\":\"ModelVersionTag\",\"relationName\":\"ModelVersionToModelVersionTag\"},{\"name\":\"taggedAdditionalFiles\",\"kind\":\"object\",\"type\":\"ModelAdditionalFile\",\"relationName\":\"ModelAdditionalFileToModelVersion\"}],\"dbName\":null},\"ModelVersionTag\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tagId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelVersionToModelVersionTag\"},{\"name\":\"tag\",\"kind\":\"object\",\"type\":\"Tag\",\"relationName\":\"ModelVersionTagToTag\"}],\"dbName\":null},\"ModelAdditionalFile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"taggedVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"kind\",\"kind\":\"enum\",\"type\":\"ModelFileKind\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelAdditionalFile\"},{\"name\":\"taggedVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelAdditionalFileToModelVersion\"}],\"dbName\":null},\"Tag\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelVersions\",\"kind\":\"object\",\"type\":\"ModelVersionTag\",\"relationName\":\"ModelVersionTagToTag\"}],\"dbName\":null},\"ModelAuthor\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"AuthorRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelAuthor\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelAuthorToUser\"}],\"dbName\":null},\"ModelPermission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"granteeUserId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissionLevel\",\"kind\":\"enum\",\"type\":\"PermissionLevel\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelPermission\"},{\"name\":\"granteeUser\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelPermissionToUser\"}],\"dbName\":null},\"ModelLike\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelLike\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelLikeToUser\"}],\"dbName\":null},\"ModelInteraction\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"kind\",\"kind\":\"enum\",\"type\":\"ModelInteractionKind\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"referer\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"geo\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"cookie\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelInteraction\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelInteractionToUser\"}],\"dbName\":null},\"ModelDraft\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelDraftToUser\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelDraft\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ModelComment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"likesCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"editedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelComment\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelCommentToUser\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"CommentReplies\"},{\"name\":\"replies\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"CommentReplies\"},{\"name\":\"likes\",\"kind\":\"object\",\"type\":\"ModelCommentLike\",\"relationName\":\"ModelCommentToModelCommentLike\"}],\"dbName\":null},\"ModelCommentLike\":{\"fields\":[{\"name\":\"modelCommentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelComment\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelCommentToModelCommentLike\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelCommentLikeToUser\"}],\"dbName\":null},\"Event\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"actorId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"processedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actor\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EventToUser\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"systemRole\",\"kind\":\"enum\",\"type\":\"SystemRole\"},{\"name\":\"userKind\",\"kind\":\"enum\",\"type\":\"UserKind\"},{\"name\":\"isProfilePublic\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"socialLinks\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"dob\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"affiliation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"verifications\",\"kind\":\"object\",\"type\":\"Verification\",\"relationName\":\"UserToVerification\"},{\"name\":\"authoredModels\",\"kind\":\"object\",\"type\":\"ModelAuthor\",\"relationName\":\"ModelAuthorToUser\"},{\"name\":\"grantedPermissions\",\"kind\":\"object\",\"type\":\"ModelPermission\",\"relationName\":\"ModelPermissionToUser\"},{\"name\":\"events\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToUser\"},{\"name\":\"modelLikes\",\"kind\":\"object\",\"type\":\"ModelLike\",\"relationName\":\"ModelLikeToUser\"},{\"name\":\"modelInteractions\",\"kind\":\"object\",\"type\":\"ModelInteraction\",\"relationName\":\"ModelInteractionToUser\"},{\"name\":\"modelDrafts\",\"kind\":\"object\",\"type\":\"ModelDraft\",\"relationName\":\"ModelDraftToUser\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelCommentToUser\"},{\"name\":\"commentLikes\",\"kind\":\"object\",\"type\":\"ModelCommentLike\",\"relationName\":\"ModelCommentLikeToUser\"},{\"name\":\"notifications\",\"kind\":\"object\",\"type\":\"UserNotification\",\"relationName\":\"UserToUserNotification\"},{\"name\":\"notificationPreferences\",\"kind\":\"object\",\"type\":\"UserNotificationPreference\",\"relationName\":\"UserToUserNotificationPreference\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"banReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banExpires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"onboardedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"passkeys\",\"kind\":\"object\",\"type\":\"Passkey\",\"relationName\":\"PasskeyToUser\"}],\"dbName\":null},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"},{\"name\":\"impersonatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToVerification\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Passkey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"publicKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"credentialID\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"counter\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deviceType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"backedUp\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"transports\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"aaguid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PasskeyToUser\"}],\"dbName\":null},\"Model\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"latestVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentModelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"visibility\",\"kind\":\"enum\",\"type\":\"ModelVisibility\"},{\"name\":\"isEndorsed\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isLibraryModel\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"viewCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"runCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"downloadCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"shareCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"latestVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"LatestVersion\"},{\"name\":\"parentModel\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelParent\"},{\"name\":\"childModels\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelParent\"},{\"name\":\"parentVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ParentVersion\"},{\"name\":\"versions\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelVersions\"},{\"name\":\"authors\",\"kind\":\"object\",\"type\":\"ModelAuthor\",\"relationName\":\"ModelToModelAuthor\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"ModelPermission\",\"relationName\":\"ModelToModelPermission\"},{\"name\":\"additionalFiles\",\"kind\":\"object\",\"type\":\"ModelAdditionalFile\",\"relationName\":\"ModelToModelAdditionalFile\"},{\"name\":\"likes\",\"kind\":\"object\",\"type\":\"ModelLike\",\"relationName\":\"ModelToModelLike\"},{\"name\":\"interactions\",\"kind\":\"object\",\"type\":\"ModelInteraction\",\"relationName\":\"ModelToModelInteraction\"},{\"name\":\"drafts\",\"kind\":\"object\",\"type\":\"ModelDraft\",\"relationName\":\"ModelToModelDraft\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelToModelComment\"}],\"dbName\":null},\"ModelVersion\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"changeSummary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"previewImageFileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"netlogoFileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"netlogoVersion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"infoTab\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finalizedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelVersions\"},{\"name\":\"latestOfModel\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"LatestVersion\"},{\"name\":\"parentOfModels\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ParentVersion\"},{\"name\":\"tags\",\"kind\":\"object\",\"type\":\"ModelVersionTag\",\"relationName\":\"ModelVersionToModelVersionTag\"},{\"name\":\"taggedAdditionalFiles\",\"kind\":\"object\",\"type\":\"ModelAdditionalFile\",\"relationName\":\"ModelAdditionalFileToModelVersion\"}],\"dbName\":null},\"ModelVersionTag\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tagId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelVersionToModelVersionTag\"},{\"name\":\"tag\",\"kind\":\"object\",\"type\":\"Tag\",\"relationName\":\"ModelVersionTagToTag\"}],\"dbName\":null},\"ModelAdditionalFile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"taggedVersionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fileKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"kind\",\"kind\":\"enum\",\"type\":\"ModelFileKind\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelAdditionalFile\"},{\"name\":\"taggedVersion\",\"kind\":\"object\",\"type\":\"ModelVersion\",\"relationName\":\"ModelAdditionalFileToModelVersion\"}],\"dbName\":null},\"Tag\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelVersions\",\"kind\":\"object\",\"type\":\"ModelVersionTag\",\"relationName\":\"ModelVersionTagToTag\"}],\"dbName\":null},\"ModelAuthor\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"AuthorRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelAuthor\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelAuthorToUser\"}],\"dbName\":null},\"ModelPermission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"granteeUserId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissionLevel\",\"kind\":\"enum\",\"type\":\"PermissionLevel\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelPermission\"},{\"name\":\"granteeUser\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelPermissionToUser\"}],\"dbName\":null},\"ModelLike\":{\"fields\":[{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelLike\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelLikeToUser\"}],\"dbName\":null},\"ModelInteraction\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"kind\",\"kind\":\"enum\",\"type\":\"ModelInteractionKind\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"referer\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"geo\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"cookie\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelInteraction\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelInteractionToUser\"}],\"dbName\":null},\"ModelDraft\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelDraftToUser\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelDraft\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ModelComment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modelId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"versionNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"likesCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"editedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"model\",\"kind\":\"object\",\"type\":\"Model\",\"relationName\":\"ModelToModelComment\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelCommentToUser\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"CommentReplies\"},{\"name\":\"replies\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"CommentReplies\"},{\"name\":\"likes\",\"kind\":\"object\",\"type\":\"ModelCommentLike\",\"relationName\":\"ModelCommentToModelCommentLike\"}],\"dbName\":null},\"ModelCommentLike\":{\"fields\":[{\"name\":\"modelCommentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modelComment\",\"kind\":\"object\",\"type\":\"ModelComment\",\"relationName\":\"ModelCommentToModelCommentLike\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ModelCommentLikeToUser\"}],\"dbName\":null},\"Event\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"actorId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"processedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"attempts\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"lastError\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"actor\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EventToUser\"},{\"name\":\"notifications\",\"kind\":\"object\",\"type\":\"UserNotification\",\"relationName\":\"EventToUserNotification\"}],\"dbName\":null},\"UserNotification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"recipientId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"body\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"readAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"recipient\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserNotification\"},{\"name\":\"event\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToUserNotification\"}],\"dbName\":null},\"UserNotificationPreference\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"inApp\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserNotificationPreference\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"sessions\",\"verifications\",\"model\",\"latestOfModel\",\"parentOfModels\",\"modelVersion\",\"modelVersions\",\"_count\",\"tag\",\"tags\",\"taggedVersion\",\"taggedAdditionalFiles\",\"latestVersion\",\"parentModel\",\"childModels\",\"parentVersion\",\"versions\",\"authors\",\"granteeUser\",\"permissions\",\"additionalFiles\",\"likes\",\"interactions\",\"drafts\",\"parent\",\"replies\",\"modelComment\",\"comments\",\"authoredModels\",\"grantedPermissions\",\"actor\",\"events\",\"modelLikes\",\"modelInteractions\",\"modelDrafts\",\"commentLikes\",\"passkeys\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"Passkey.findUnique\",\"Passkey.findUniqueOrThrow\",\"Passkey.findFirst\",\"Passkey.findFirstOrThrow\",\"Passkey.findMany\",\"Passkey.createOne\",\"Passkey.createMany\",\"Passkey.createManyAndReturn\",\"Passkey.updateOne\",\"Passkey.updateMany\",\"Passkey.updateManyAndReturn\",\"Passkey.upsertOne\",\"Passkey.deleteOne\",\"Passkey.deleteMany\",\"Passkey.groupBy\",\"Passkey.aggregate\",\"Model.findUnique\",\"Model.findUniqueOrThrow\",\"Model.findFirst\",\"Model.findFirstOrThrow\",\"Model.findMany\",\"Model.createOne\",\"Model.createMany\",\"Model.createManyAndReturn\",\"Model.updateOne\",\"Model.updateMany\",\"Model.updateManyAndReturn\",\"Model.upsertOne\",\"Model.deleteOne\",\"Model.deleteMany\",\"Model.groupBy\",\"Model.aggregate\",\"ModelVersion.findUnique\",\"ModelVersion.findUniqueOrThrow\",\"ModelVersion.findFirst\",\"ModelVersion.findFirstOrThrow\",\"ModelVersion.findMany\",\"ModelVersion.createOne\",\"ModelVersion.createMany\",\"ModelVersion.createManyAndReturn\",\"ModelVersion.updateOne\",\"ModelVersion.updateMany\",\"ModelVersion.updateManyAndReturn\",\"ModelVersion.upsertOne\",\"ModelVersion.deleteOne\",\"ModelVersion.deleteMany\",\"ModelVersion.groupBy\",\"ModelVersion.aggregate\",\"ModelVersionTag.findUnique\",\"ModelVersionTag.findUniqueOrThrow\",\"ModelVersionTag.findFirst\",\"ModelVersionTag.findFirstOrThrow\",\"ModelVersionTag.findMany\",\"ModelVersionTag.createOne\",\"ModelVersionTag.createMany\",\"ModelVersionTag.createManyAndReturn\",\"ModelVersionTag.updateOne\",\"ModelVersionTag.updateMany\",\"ModelVersionTag.updateManyAndReturn\",\"ModelVersionTag.upsertOne\",\"ModelVersionTag.deleteOne\",\"ModelVersionTag.deleteMany\",\"ModelVersionTag.groupBy\",\"ModelVersionTag.aggregate\",\"ModelAdditionalFile.findUnique\",\"ModelAdditionalFile.findUniqueOrThrow\",\"ModelAdditionalFile.findFirst\",\"ModelAdditionalFile.findFirstOrThrow\",\"ModelAdditionalFile.findMany\",\"ModelAdditionalFile.createOne\",\"ModelAdditionalFile.createMany\",\"ModelAdditionalFile.createManyAndReturn\",\"ModelAdditionalFile.updateOne\",\"ModelAdditionalFile.updateMany\",\"ModelAdditionalFile.updateManyAndReturn\",\"ModelAdditionalFile.upsertOne\",\"ModelAdditionalFile.deleteOne\",\"ModelAdditionalFile.deleteMany\",\"ModelAdditionalFile.groupBy\",\"ModelAdditionalFile.aggregate\",\"Tag.findUnique\",\"Tag.findUniqueOrThrow\",\"Tag.findFirst\",\"Tag.findFirstOrThrow\",\"Tag.findMany\",\"Tag.createOne\",\"Tag.createMany\",\"Tag.createManyAndReturn\",\"Tag.updateOne\",\"Tag.updateMany\",\"Tag.updateManyAndReturn\",\"Tag.upsertOne\",\"Tag.deleteOne\",\"Tag.deleteMany\",\"Tag.groupBy\",\"Tag.aggregate\",\"ModelAuthor.findUnique\",\"ModelAuthor.findUniqueOrThrow\",\"ModelAuthor.findFirst\",\"ModelAuthor.findFirstOrThrow\",\"ModelAuthor.findMany\",\"ModelAuthor.createOne\",\"ModelAuthor.createMany\",\"ModelAuthor.createManyAndReturn\",\"ModelAuthor.updateOne\",\"ModelAuthor.updateMany\",\"ModelAuthor.updateManyAndReturn\",\"ModelAuthor.upsertOne\",\"ModelAuthor.deleteOne\",\"ModelAuthor.deleteMany\",\"ModelAuthor.groupBy\",\"ModelAuthor.aggregate\",\"ModelPermission.findUnique\",\"ModelPermission.findUniqueOrThrow\",\"ModelPermission.findFirst\",\"ModelPermission.findFirstOrThrow\",\"ModelPermission.findMany\",\"ModelPermission.createOne\",\"ModelPermission.createMany\",\"ModelPermission.createManyAndReturn\",\"ModelPermission.updateOne\",\"ModelPermission.updateMany\",\"ModelPermission.updateManyAndReturn\",\"ModelPermission.upsertOne\",\"ModelPermission.deleteOne\",\"ModelPermission.deleteMany\",\"ModelPermission.groupBy\",\"ModelPermission.aggregate\",\"ModelLike.findUnique\",\"ModelLike.findUniqueOrThrow\",\"ModelLike.findFirst\",\"ModelLike.findFirstOrThrow\",\"ModelLike.findMany\",\"ModelLike.createOne\",\"ModelLike.createMany\",\"ModelLike.createManyAndReturn\",\"ModelLike.updateOne\",\"ModelLike.updateMany\",\"ModelLike.updateManyAndReturn\",\"ModelLike.upsertOne\",\"ModelLike.deleteOne\",\"ModelLike.deleteMany\",\"ModelLike.groupBy\",\"ModelLike.aggregate\",\"ModelInteraction.findUnique\",\"ModelInteraction.findUniqueOrThrow\",\"ModelInteraction.findFirst\",\"ModelInteraction.findFirstOrThrow\",\"ModelInteraction.findMany\",\"ModelInteraction.createOne\",\"ModelInteraction.createMany\",\"ModelInteraction.createManyAndReturn\",\"ModelInteraction.updateOne\",\"ModelInteraction.updateMany\",\"ModelInteraction.updateManyAndReturn\",\"ModelInteraction.upsertOne\",\"ModelInteraction.deleteOne\",\"ModelInteraction.deleteMany\",\"ModelInteraction.groupBy\",\"ModelInteraction.aggregate\",\"ModelDraft.findUnique\",\"ModelDraft.findUniqueOrThrow\",\"ModelDraft.findFirst\",\"ModelDraft.findFirstOrThrow\",\"ModelDraft.findMany\",\"ModelDraft.createOne\",\"ModelDraft.createMany\",\"ModelDraft.createManyAndReturn\",\"ModelDraft.updateOne\",\"ModelDraft.updateMany\",\"ModelDraft.updateManyAndReturn\",\"ModelDraft.upsertOne\",\"ModelDraft.deleteOne\",\"ModelDraft.deleteMany\",\"ModelDraft.groupBy\",\"ModelDraft.aggregate\",\"ModelComment.findUnique\",\"ModelComment.findUniqueOrThrow\",\"ModelComment.findFirst\",\"ModelComment.findFirstOrThrow\",\"ModelComment.findMany\",\"ModelComment.createOne\",\"ModelComment.createMany\",\"ModelComment.createManyAndReturn\",\"ModelComment.updateOne\",\"ModelComment.updateMany\",\"ModelComment.updateManyAndReturn\",\"ModelComment.upsertOne\",\"ModelComment.deleteOne\",\"ModelComment.deleteMany\",\"ModelComment.groupBy\",\"ModelComment.aggregate\",\"ModelCommentLike.findUnique\",\"ModelCommentLike.findUniqueOrThrow\",\"ModelCommentLike.findFirst\",\"ModelCommentLike.findFirstOrThrow\",\"ModelCommentLike.findMany\",\"ModelCommentLike.createOne\",\"ModelCommentLike.createMany\",\"ModelCommentLike.createManyAndReturn\",\"ModelCommentLike.updateOne\",\"ModelCommentLike.updateMany\",\"ModelCommentLike.updateManyAndReturn\",\"ModelCommentLike.upsertOne\",\"ModelCommentLike.deleteOne\",\"ModelCommentLike.deleteMany\",\"ModelCommentLike.groupBy\",\"ModelCommentLike.aggregate\",\"Event.findUnique\",\"Event.findUniqueOrThrow\",\"Event.findFirst\",\"Event.findFirstOrThrow\",\"Event.findMany\",\"Event.createOne\",\"Event.createMany\",\"Event.createManyAndReturn\",\"Event.updateOne\",\"Event.updateMany\",\"Event.updateManyAndReturn\",\"Event.upsertOne\",\"Event.deleteOne\",\"Event.deleteMany\",\"Event.groupBy\",\"Event.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"type\",\"actorId\",\"resourceType\",\"resourceId\",\"payload\",\"createdAt\",\"processedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"modelCommentId\",\"userId\",\"legacyId\",\"parentId\",\"modelId\",\"versionNumber\",\"content\",\"likesCount\",\"updatedAt\",\"editedAt\",\"deletedAt\",\"schemaVersion\",\"ModelInteractionKind\",\"kind\",\"sessionId\",\"ipHash\",\"userAgent\",\"referer\",\"geo\",\"cookie\",\"granteeUserId\",\"PermissionLevel\",\"permissionLevel\",\"AuthorRole\",\"role\",\"name\",\"displayName\",\"every\",\"some\",\"none\",\"taggedVersionNumber\",\"fileKey\",\"ModelFileKind\",\"tagId\",\"title\",\"description\",\"changeSummary\",\"previewImageFileKey\",\"netlogoFileKey\",\"netlogoVersion\",\"infoTab\",\"finalizedAt\",\"latestVersionNumber\",\"parentModelId\",\"parentVersionNumber\",\"ModelVisibility\",\"visibility\",\"isEndorsed\",\"isLibraryModel\",\"viewCount\",\"runCount\",\"downloadCount\",\"shareCount\",\"publicKey\",\"credentialID\",\"counter\",\"deviceType\",\"backedUp\",\"transports\",\"aaguid\",\"identifier\",\"value\",\"expiresAt\",\"token\",\"ipAddress\",\"impersonatedBy\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"idToken\",\"password\",\"email\",\"emailVerified\",\"image\",\"SystemRole\",\"systemRole\",\"UserKind\",\"userKind\",\"isProfilePublic\",\"bio\",\"country\",\"socialLinks\",\"dob\",\"affiliation\",\"banned\",\"banReason\",\"banExpires\",\"onboardedAt\",\"modelCommentId_userId\",\"modelId_userId\",\"modelId_granteeUserId\",\"modelId_versionNumber\",\"modelId_versionNumber_tagId\",\"id_latestVersionNumber\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "ygqqAaACJQQAAJUFACAFAACWBQAgBgAAlwUAICAAAO4EACAhAACJBQAgIgAAigUAICQAAJgFACAlAACLBQAgJgAAjAUAICcAAI0FACAoAADvBAAgKQAAmQUAINICAACRBQAw0wIAAA8AENQCAACRBQAw1QIBAAAAAdsCQADDBAAh8AICAAAAAfYCQADDBAAh-AJAAOMEACGGAwEAwgQAIYcDAQDCBAAhuQMBAAAAAboDIADiBAAhuwMBAMIEACG9AwAAkgW9AyK_AwAAkwW_AyLAAyAA4gQAIcEDAQDCBAAhwgMBAMIEACHDAwAA9AQAIMQDQADjBAAhxQMBAMIEACHGAyAAlAUAIccDAQDCBAAhyANAAOMEACHJA0AA4wQAIQEAAAABACARAwAA5AQAINICAACcBQAw0wIAAAMAENQCAACcBQAw1QIBAMAEACHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACGwAwEAwAQAIbEDAQDABAAhsgMBAMIEACGzAwEAwgQAIbQDQADjBAAhtQNAAOMEACG2AwEAwgQAIbcDAQDCBAAhuAMBAMIEACEIAwAAnAkAILIDAACdBQAgswMAAJ0FACC0AwAAnQUAILUDAACdBQAgtgMAAJ0FACC3AwAAnQUAILgDAACdBQAgEQMAAOQEACDSAgAAnAUAMNMCAAADABDUAgAAnAUAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACGwAwEAwAQAIbEDAQDABAAhsgMBAMIEACGzAwEAwgQAIbQDQADjBAAhtQNAAOMEACG2AwEAwgQAIbcDAQDCBAAhuAMBAMIEACEDAAAAAwAgAQAABAAwAgAABQAgDQMAAOQEACDSAgAAmwUAMNMCAAAHABDUAgAAmwUAMNUCAQDABAAh2wJAAMMEACHvAgEAwAQAIfYCQADDBAAh_gIBAMIEACGsA0AAwwQAIa0DAQDABAAhrgMBAMIEACGvAwEAwgQAIQQDAACcCQAg_gIAAJ0FACCuAwAAnQUAIK8DAACdBQAgDQMAAOQEACDSAgAAmwUAMNMCAAAHABDUAgAAmwUAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACH-AgEAwgQAIawDQADDBAAhrQMBAAAAAa4DAQDCBAAhrwMBAMIEACEDAAAABwAgAQAACAAwAgAACQAgCwMAAOwEACDSAgAAmgUAMNMCAAALABDUAgAAmgUAMNUCAQDABAAh2wJAAOMEACHvAgEAwgQAIfYCQADjBAAhqgMBAMAEACGrAwEAwAQAIawDQADDBAAhBAMAAJwJACDbAgAAnQUAIO8CAACdBQAg9gIAAJ0FACALAwAA7AQAINICAACaBQAw0wIAAAsAENQCAACaBQAw1QIBAAAAAdsCQADjBAAh7wIBAMIEACH2AkAA4wQAIaoDAQDABAAhqwMBAMAEACGsA0AAwwQAIQMAAAALACABAAAMADACAAANACAlBAAAlQUAIAUAAJYFACAGAACXBQAgIAAA7gQAICEAAIkFACAiAACKBQAgJAAAmAUAICUAAIsFACAmAACMBQAgJwAAjQUAICgAAO8EACApAACZBQAg0gIAAJEFADDTAgAADwAQ1AIAAJEFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhhgMBAMIEACGHAwEAwgQAIbkDAQDCBAAhugMgAOIEACG7AwEAwgQAIb0DAACSBb0DIr8DAACTBb8DIsADIADiBAAhwQMBAMIEACHCAwEAwgQAIcMDAAD0BAAgxANAAOMEACHFAwEAwgQAIcYDIACUBQAhxwMBAMIEACHIA0AA4wQAIckDQADjBAAhAQAAAA8AIAkDAADkBAAgBwAA6wQAINICAACPBQAw0wIAABEAENQCAACPBQAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhhgMAAJAFhgMiAgMAAJwJACAHAACeCQAgCgMAAOQEACAHAADrBAAg0gIAAI8FADDTAgAAEQAQ1AIAAI8FADDbAkAAwwQAIe8CAQDABAAh8gIBAMAEACGGAwAAkAWGAyLLAwAAjgUAIAMAAAARACABAAASADACAAATACATBwAA6wQAIAgAAPEEACAJAAD8BAAgDgAAxAQAIBAAAP0EACDSAgAA-wQAMNMCAAAVABDUAgAA-wQAMNsCQADDBAAh8gIBAMAEACHzAgIA4QQAIZADAQDABAAhkQMBAMIEACGSAwEAwgQAIZMDAQDCBAAhlAMBAMAEACGVAwEAwgQAIZYDAQDCBAAhlwNAAOMEACEBAAAAFQAgHhEAAIcFACASAADxBAAgEwAA_AQAIBQAAIcFACAVAACIBQAgFgAAiQUAIBgAAIoFACAZAAD9BAAgGgAAiwUAIBsAAIwFACAcAACNBQAgIAAA7gQAINICAACFBQAw0wIAABcAENQCAACFBQAw1QIBAMAEACHbAkAAwwQAIfACAgDBBAAh9gJAAMMEACH4AkAA4wQAIZgDAgDBBAAhmQMBAMIEACGaAwIAwQQAIZwDAACGBZwDIp0DIADiBAAhngMgAOIEACGfAwIA4QQAIaADAgDhBAAhoQMCAOEEACGiAwIA4QQAIQEAAAAXACAREQAAoQkAIBIAAJ4JACATAACfCQAgFAAAoQkAIBUAAKMJACAWAACTCQAgGAAAlAkAIBkAAKAJACAaAACWCQAgGwAAlwkAIBwAAJgJACAgAACZCQAg8AIAAJ0FACD4AgAAnQUAIJgDAACdBQAgmQMAAJ0FACCaAwAAnQUAIB8RAACHBQAgEgAA8QQAIBMAAPwEACAUAACHBQAgFQAAiAUAIBYAAIkFACAYAACKBQAgGQAA_QQAIBoAAIsFACAbAACMBQAgHAAAjQUAICAAAO4EACDSAgAAhQUAMNMCAAAXABDUAgAAhQUAMNUCAQAAAAHbAkAAwwQAIfACAgAAAAH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAhzwMAAIQFACADAAAAFwAgAQAAGQAwAgAAGgAgCQoAAIAFACANAACDBQAg0gIAAIIFADDTAgAAHAAQ1AIAAIIFADDbAkAAwwQAIfICAQDABAAh8wICAOEEACGPAwEAwAQAIQIKAAChCQAgDQAAogkAIAoKAACABQAgDQAAgwUAINICAACCBQAw0wIAABwAENQCAACCBQAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhjwMBAMAEACHOAwAAgQUAIAMAAAAcACABAAAdADACAAAeACADAAAAHAAgAQAAHQAwAgAAHgAgAQAAABwAIAsHAADrBAAgDwAAgAUAINICAAD-BAAw0wIAACIAENQCAAD-BAAw1QIBAMAEACHbAkAAwwQAIfICAQDABAAh-wIAAP8EjwMijAMCAOEEACGNAwEAwAQAIQIHAACeCQAgDwAAoQkAIAsHAADrBAAgDwAAgAUAINICAAD-BAAw0wIAACIAENQCAAD-BAAw1QIBAAAAAdsCQADDBAAh8gIBAMAEACH7AgAA_wSPAyKMAwIA4QQAIY0DAQDABAAhAwAAACIAIAEAACMAMAIAACQAIAEAAAAXACABAAAAHAAgAQAAACIAIAEAAAAXACADAAAAFwAgAQAAGQAwAgAAGgAgAQAAABUAIAsHAACeCQAgCAAAngkAIAkAAJ8JACAOAACWBgAgEAAAoAkAIJEDAACdBQAgkgMAAJ0FACCTAwAAnQUAIJUDAACdBQAglgMAAJ0FACCXAwAAnQUAIBQHAADrBAAgCAAA8QQAIAkAAPwEACAOAADEBAAgEAAA_QQAINICAAD7BAAw0wIAABUAENQCAAD7BAAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhkAMBAMAEACGRAwEAwgQAIZIDAQDCBAAhkwMBAMIEACGUAwEAwAQAIZUDAQDCBAAhlgMBAMIEACGXA0AA4wQAIc0DAAD6BAAgAwAAABUAIAEAACwAMAIAAC0AIAMAAAARACABAAASADACAAATACAKBwAA6wQAIBcAAOwEACDSAgAA-AQAMNMCAAAwABDUAgAA-AQAMNUCAQDABAAh2wJAAMMEACHyAgEAwAQAIYIDAQDCBAAhhAMAAPkEhAMiAwcAAJ4JACAXAACcCQAgggMAAJ0FACALBwAA6wQAIBcAAOwEACDSAgAA-AQAMNMCAAAwABDUAgAA-AQAMNUCAQAAAAHbAkAAwwQAIfICAQDABAAhggMBAMIEACGEAwAA-QSEAyLMAwAA9wQAIAMAAAAwACABAAAxADACAAAyACABAAAADwAgAwAAACIAIAEAACMAMAIAACQAIAgDAADkBAAgBwAA6wQAINICAAD2BAAw0wIAADYAENQCAAD2BAAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhAgMAAJwJACAHAACeCQAgCQMAAOQEACAHAADrBAAg0gIAAPYEADDTAgAANgAQ1AIAAPYEADDbAkAAwwQAIe8CAQDABAAh8gIBAMAEACHLAwAA9QQAIAMAAAA2ACABAAA3ADACAAA4ACARAwAA7AQAIAcAAOsEACDSAgAA8gQAMNMCAAA6ABDUAgAA8gQAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACEKAwAAnAkAIAcAAJ4JACDvAgAAnQUAIPMCAACdBQAg_AIAAJ0FACD9AgAAnQUAIP4CAACdBQAg_wIAAJ0FACCAAwAAnQUAIIEDAACdBQAgEQMAAOwEACAHAADrBAAg0gIAAPIEADDTAgAAOgAQ1AIAAPIEADDVAgEAAAAB2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACEDAAAAOgAgAQAAOwAwAgAAPAAgAQAAAA8AIAwDAADkBAAgBwAA8QQAIC8AAOYEACDSAgAA8AQAMNMCAAA_ABDUAgAA8AQAMNUCAQDABAAh2wJAAMMEACHvAgEAwAQAIfICAQDCBAAh9gJAAMMEACH5AgIA4QQAIQMDAACcCQAgBwAAngkAIPICAACdBQAgDAMAAOQEACAHAADxBAAgLwAA5gQAINICAADwBAAw0wIAAD8AENQCAADwBAAw1QIBAAAAAdsCQADDBAAh7wIBAMAEACHyAgEAwgQAIfYCQADDBAAh-QICAOEEACEDAAAAPwAgAQAAQAAwAgAAQQAgAQAAABcAIBQDAADsBAAgBwAA6wQAIBoAAO8EACAdAADtBAAgHgAA7gQAINICAADqBAAw0wIAAEQAENQCAADqBAAw1QIBAMAEACHbAkAAwwQAIe8CAQDCBAAh8AICAMEEACHxAgEAwgQAIfICAQDABAAh8wICAMEEACH0AgEAwgQAIfUCAgDhBAAh9gJAAMMEACH3AkAA4wQAIfgCQADjBAAhDAMAAJwJACAHAACeCQAgGgAAmgkAIB0AAJ0JACAeAACZCQAg7wIAAJ0FACDwAgAAnQUAIPECAACdBQAg8wIAAJ0FACD0AgAAnQUAIPcCAACdBQAg-AIAAJ0FACAUAwAA7AQAIAcAAOsEACAaAADvBAAgHQAA7QQAIB4AAO4EACDSAgAA6gQAMNMCAABEABDUAgAA6gQAMNUCAQAAAAHbAkAAwwQAIe8CAQDCBAAh8AICAAAAAfECAQDCBAAh8gIBAMAEACHzAgIAwQQAIfQCAQDCBAAh9QICAOEEACH2AkAAwwQAIfcCQADjBAAh-AJAAOMEACEDAAAARAAgAQAARQAwAgAARgAgAQAAAA8AIAEAAABEACADAAAARAAgAQAARQAwAgAARgAgCAMAAOQEACAfAADpBAAg0gIAAOgEADDTAgAASwAQ1AIAAOgEADDbAkAAwwQAIe4CAQDABAAh7wIBAMAEACECAwAAnAkAIB8AAJ0JACAJAwAA5AQAIB8AAOkEACDSAgAA6AQAMNMCAABLABDUAgAA6AQAMNsCQADDBAAh7gIBAMAEACHvAgEAwAQAIcoDAADnBAAgAwAAAEsAIAEAAEwAMAIAAE0AIAEAAABEACABAAAASwAgAQAAABcAIAEAAAAVACABAAAAEQAgAQAAADAAIAEAAAAiACABAAAANgAgAQAAADoAIAEAAAA_ACABAAAARAAgAwAAADAAIAEAADEAMAIAADIAIAwjAADkBAAg0gIAAOUEADDTAgAAWwAQ1AIAAOUEADDVAgEAwAQAIdYCAQDABAAh1wIBAMAEACHYAgEAwAQAIdkCAQDABAAh2gIAAOYEACDbAkAAwwQAIdwCQADjBAAhAiMAAJwJACDcAgAAnQUAIAwjAADkBAAg0gIAAOUEADDTAgAAWwAQ1AIAAOUEADDVAgEAAAAB1gIBAMAEACHXAgEAwAQAIdgCAQDABAAh2QIBAMAEACHaAgAA5gQAINsCQADDBAAh3AJAAOMEACEDAAAAWwAgAQAAXAAwAgAAXQAgAwAAADYAIAEAADcAMAIAADgAIAMAAAA6ACABAAA7ADACAAA8ACADAAAAPwAgAQAAQAAwAgAAQQAgAwAAAEQAIAEAAEUAMAIAAEYAIAMAAABLACABAABMADACAABNACAPAwAA5AQAINICAADgBAAw0wIAAGQAENQCAADgBAAw1QIBAMAEACHbAkAA4wQAIe8CAQDABAAhhwMBAMIEACGjAwEAwAQAIaQDAQDABAAhpQMCAOEEACGmAwEAwAQAIacDIADiBAAhqAMBAMIEACGpAwEAwgQAIQUDAACcCQAg2wIAAJ0FACCHAwAAnQUAIKgDAACdBQAgqQMAAJ0FACAPAwAA5AQAINICAADgBAAw0wIAAGQAENQCAADgBAAw1QIBAAAAAdsCQADjBAAh7wIBAMAEACGHAwEAwgQAIaMDAQDABAAhpAMBAMAEACGlAwIA4QQAIaYDAQDABAAhpwMgAOIEACGoAwEAwgQAIakDAQDCBAAhAwAAAGQAIAEAAGUAMAIAAGYAIAEAAAADACABAAAABwAgAQAAAAsAIAEAAAARACABAAAAMAAgAQAAAFsAIAEAAAA2ACABAAAAOgAgAQAAAD8AIAEAAABEACABAAAASwAgAQAAAGQAIAEAAAABACAbBAAAkAkAIAUAAJEJACAGAACSCQAgIAAAmQkAICEAAJMJACAiAACUCQAgJAAAlQkAICUAAJYJACAmAACXCQAgJwAAmAkAICgAAJoJACApAACbCQAg8AIAAJ0FACD4AgAAnQUAIIYDAACdBQAghwMAAJ0FACC5AwAAnQUAILsDAACdBQAgwQMAAJ0FACDCAwAAnQUAIMMDAACdBQAgxAMAAJ0FACDFAwAAnQUAIMYDAACdBQAgxwMAAJ0FACDIAwAAnQUAIMkDAACdBQAgAwAAAA8AIAEAAHUAMAIAAAEAIAMAAAAPACABAAB1ADACAAABACADAAAADwAgAQAAdQAwAgAAAQAgIgQAAIQJACAFAACFCQAgBgAAhgkAICAAAI0JACAhAACHCQAgIgAAiAkAICQAAIkJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQEvAAB5ACAW1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAS8AAHsAMAEvAAB7ADAiBAAA_QcAIAUAAP4HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhAgAAAAEAIC8AAH4AIBbVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhhgMBALMFACGHAwEAswUAIbkDAQCzBQAhugMgANIGACG7AwEAswUAIb0DAAD6B70DIr8DAAD7B78DIsADIADSBgAhwQMBALMFACHCAwEAswUAIcMDgAAAAAHEA0AAowUAIcUDAQCzBQAhxgMgAPwHACHHAwEAswUAIcgDQACjBQAhyQNAAKMFACECAAAADwAgLwAAgAEAIAIAAAAPACAvAACAAQAgAwAAAAEAIDYAAHkAIDcAAH4AIAEAAAABACABAAAADwAgFAwAAPUHACA8AAD2BwAgPQAA-QcAID4AAPgHACA_AAD3BwAg8AIAAJ0FACD4AgAAnQUAIIYDAACdBQAghwMAAJ0FACC5AwAAnQUAILsDAACdBQAgwQMAAJ0FACDCAwAAnQUAIMMDAACdBQAgxAMAAJ0FACDFAwAAnQUAIMYDAACdBQAgxwMAAJ0FACDIAwAAnQUAIMkDAACdBQAgGdICAADWBAAw0wIAAIcBABDUAgAA1gQAMNUCAQCWBAAh2wJAAJgEACHwAgIApQQAIfYCQACYBAAh-AJAAJkEACGGAwEApgQAIYcDAQCmBAAhuQMBAKYEACG6AyAAzQQAIbsDAQCmBAAhvQMAANcEvQMivwMAANgEvwMiwAMgAM0EACHBAwEApgQAIcIDAQCmBAAhwwMAALEEACDEA0AAmQQAIcUDAQCmBAAhxgMgANkEACHHAwEApgQAIcgDQACZBAAhyQNAAJkEACEDAAAADwAgAQAAhgEAMDsAAIcBACADAAAADwAgAQAAdQAwAgAAAQAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACAOAwAA9AcAINUCAQAAAAHbAkAAAAAB7wIBAAAAAfYCQAAAAAGwAwEAAAABsQMBAAAAAbIDAQAAAAGzAwEAAAABtANAAAAAAbUDQAAAAAG2AwEAAAABtwMBAAAAAbgDAQAAAAEBLwAAjwEAIA3VAgEAAAAB2wJAAAAAAe8CAQAAAAH2AkAAAAABsAMBAAAAAbEDAQAAAAGyAwEAAAABswMBAAAAAbQDQAAAAAG1A0AAAAABtgMBAAAAAbcDAQAAAAG4AwEAAAABAS8AAJEBADABLwAAkQEAMA4DAADzBwAg1QIBAKEFACHbAkAAogUAIe8CAQChBQAh9gJAAKIFACGwAwEAoQUAIbEDAQChBQAhsgMBALMFACGzAwEAswUAIbQDQACjBQAhtQNAAKMFACG2AwEAswUAIbcDAQCzBQAhuAMBALMFACECAAAABQAgLwAAlAEAIA3VAgEAoQUAIdsCQACiBQAh7wIBAKEFACH2AkAAogUAIbADAQChBQAhsQMBAKEFACGyAwEAswUAIbMDAQCzBQAhtANAAKMFACG1A0AAowUAIbYDAQCzBQAhtwMBALMFACG4AwEAswUAIQIAAAADACAvAACWAQAgAgAAAAMAIC8AAJYBACADAAAABQAgNgAAjwEAIDcAAJQBACABAAAABQAgAQAAAAMAIAoMAADwBwAgPgAA8gcAID8AAPEHACCyAwAAnQUAILMDAACdBQAgtAMAAJ0FACC1AwAAnQUAILYDAACdBQAgtwMAAJ0FACC4AwAAnQUAIBDSAgAA1QQAMNMCAACdAQAQ1AIAANUEADDVAgEAlgQAIdsCQACYBAAh7wIBAJYEACH2AkAAmAQAIbADAQCWBAAhsQMBAJYEACGyAwEApgQAIbMDAQCmBAAhtANAAJkEACG1A0AAmQQAIbYDAQCmBAAhtwMBAKYEACG4AwEApgQAIQMAAAADACABAACcAQAwOwAAnQEAIAMAAAADACABAAAEADACAAAFACABAAAACQAgAQAAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAoDAADvBwAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB9gJAAAAAAf4CAQAAAAGsA0AAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABAS8AAKUBACAJ1QIBAAAAAdsCQAAAAAHvAgEAAAAB9gJAAAAAAf4CAQAAAAGsA0AAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABAS8AAKcBADABLwAApwEAMAoDAADuBwAg1QIBAKEFACHbAkAAogUAIe8CAQChBQAh9gJAAKIFACH-AgEAswUAIawDQACiBQAhrQMBAKEFACGuAwEAswUAIa8DAQCzBQAhAgAAAAkAIC8AAKoBACAJ1QIBAKEFACHbAkAAogUAIe8CAQChBQAh9gJAAKIFACH-AgEAswUAIawDQACiBQAhrQMBAKEFACGuAwEAswUAIa8DAQCzBQAhAgAAAAcAIC8AAKwBACACAAAABwAgLwAArAEAIAMAAAAJACA2AAClAQAgNwAAqgEAIAEAAAAJACABAAAABwAgBgwAAOsHACA-AADtBwAgPwAA7AcAIP4CAACdBQAgrgMAAJ0FACCvAwAAnQUAIAzSAgAA1AQAMNMCAACzAQAQ1AIAANQEADDVAgEAlgQAIdsCQACYBAAh7wIBAJYEACH2AkAAmAQAIf4CAQCmBAAhrANAAJgEACGtAwEAlgQAIa4DAQCmBAAhrwMBAKYEACEDAAAABwAgAQAAsgEAMDsAALMBACADAAAABwAgAQAACAAwAgAACQAgAQAAAA0AIAEAAAANACADAAAACwAgAQAADAAwAgAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACAIAwAA6gcAINUCAQAAAAHbAkAAAAAB7wIBAAAAAfYCQAAAAAGqAwEAAAABqwMBAAAAAawDQAAAAAEBLwAAuwEAIAfVAgEAAAAB2wJAAAAAAe8CAQAAAAH2AkAAAAABqgMBAAAAAasDAQAAAAGsA0AAAAABAS8AAL0BADABLwAAvQEAMAEAAAAPACAIAwAA6QcAINUCAQChBQAh2wJAAKMFACHvAgEAswUAIfYCQACjBQAhqgMBAKEFACGrAwEAoQUAIawDQACiBQAhAgAAAA0AIC8AAMEBACAH1QIBAKEFACHbAkAAowUAIe8CAQCzBQAh9gJAAKMFACGqAwEAoQUAIasDAQChBQAhrANAAKIFACECAAAACwAgLwAAwwEAIAIAAAALACAvAADDAQAgAQAAAA8AIAMAAAANACA2AAC7AQAgNwAAwQEAIAEAAAANACABAAAACwAgBgwAAOYHACA-AADoBwAgPwAA5wcAINsCAACdBQAg7wIAAJ0FACD2AgAAnQUAIArSAgAA0wQAMNMCAADLAQAQ1AIAANMEADDVAgEAlgQAIdsCQACZBAAh7wIBAKYEACH2AkAAmQQAIaoDAQCWBAAhqwMBAJYEACGsA0AAmAQAIQMAAAALACABAADKAQAwOwAAywEAIAMAAAALACABAAAMADACAAANACABAAAAZgAgAQAAAGYAIAMAAABkACABAABlADACAABmACADAAAAZAAgAQAAZQAwAgAAZgAgAwAAAGQAIAEAAGUAMAIAAGYAIAwDAADlBwAg1QIBAAAAAdsCQAAAAAHvAgEAAAABhwMBAAAAAaMDAQAAAAGkAwEAAAABpQMCAAAAAaYDAQAAAAGnAyAAAAABqAMBAAAAAakDAQAAAAEBLwAA0wEAIAvVAgEAAAAB2wJAAAAAAe8CAQAAAAGHAwEAAAABowMBAAAAAaQDAQAAAAGlAwIAAAABpgMBAAAAAacDIAAAAAGoAwEAAAABqQMBAAAAAQEvAADVAQAwAS8AANUBADAMAwAA5AcAINUCAQChBQAh2wJAAKMFACHvAgEAoQUAIYcDAQCzBQAhowMBAKEFACGkAwEAoQUAIaUDAgC0BQAhpgMBAKEFACGnAyAA0gYAIagDAQCzBQAhqQMBALMFACECAAAAZgAgLwAA2AEAIAvVAgEAoQUAIdsCQACjBQAh7wIBAKEFACGHAwEAswUAIaMDAQChBQAhpAMBAKEFACGlAwIAtAUAIaYDAQChBQAhpwMgANIGACGoAwEAswUAIakDAQCzBQAhAgAAAGQAIC8AANoBACACAAAAZAAgLwAA2gEAIAMAAABmACA2AADTAQAgNwAA2AEAIAEAAABmACABAAAAZAAgCQwAAN8HACA8AADgBwAgPQAA4wcAID4AAOIHACA_AADhBwAg2wIAAJ0FACCHAwAAnQUAIKgDAACdBQAgqQMAAJ0FACAO0gIAANIEADDTAgAA4QEAENQCAADSBAAw1QIBAJYEACHbAkAAmQQAIe8CAQCWBAAhhwMBAKYEACGjAwEAlgQAIaQDAQCWBAAhpQMCAKcEACGmAwEAlgQAIacDIADNBAAhqAMBAKYEACGpAwEApgQAIQMAAABkACABAADgAQAwOwAA4QEAIAMAAABkACABAABlADACAABmACABAAAAGgAgAQAAABoAIAMAAAAXACABAAAZADACAAAaACADAAAAFwAgAQAAGQAwAgAAGgAgAwAAABcAIAEAABkAMAIAABoAIBsRAADOBwAgEgAAvwcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgHAAAyAcAICAAAMkHACDVAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZgDAgAAAAGZAwEAAAABmgMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAS8AAOkBACAP1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQEvAADrAQAwAS8AAOsBADABAAAAFQAgAQAAABcAIAEAAAAVACAbEQAA1AYAIBIAANUGACATAADWBgAgFAAA1AcAIBUAANcGACAWAADYBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIQIAAAAaACAvAADxAQAgD9UCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACECAAAAFwAgLwAA8wEAIAIAAAAXACAvAADzAQAgAQAAABUAIAEAAAAXACABAAAAFQAgAwAAABoAIDYAAOkBACA3AADxAQAgAQAAABoAIAEAAAAXACAKDAAA2gcAIDwAANsHACA9AADeBwAgPgAA3QcAID8AANwHACDwAgAAnQUAIPgCAACdBQAgmAMAAJ0FACCZAwAAnQUAIJoDAACdBQAgEtICAADLBAAw0wIAAP0BABDUAgAAywQAMNUCAQCWBAAh2wJAAJgEACHwAgIApQQAIfYCQACYBAAh-AJAAJkEACGYAwIApQQAIZkDAQCmBAAhmgMCAKUEACGcAwAAzAScAyKdAyAAzQQAIZ4DIADNBAAhnwMCAKcEACGgAwIApwQAIaEDAgCnBAAhogMCAKcEACEDAAAAFwAgAQAA_AEAMDsAAP0BACADAAAAFwAgAQAAGQAwAgAAGgAgAQAAAC0AIAEAAAAtACADAAAAFQAgAQAALAAwAgAALQAgAwAAABUAIAEAACwAMAIAAC0AIAMAAAAVACABAAAsADACAAAtACAQBwAA2QcAIAgAALkHACAJAAC6BwAgDgAAuwcAIBAAALwHACDbAkAAAAAB8gIBAAAAAfMCAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwEAAAABlwNAAAAAAQEvAACFAgAgC9sCQAAAAAHyAgEAAAAB8wICAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDAQAAAAGXA0AAAAABAS8AAIcCADABLwAAhwIAMBAHAACtBgAgCAAArgYAIAkAAK8GACAOAACwBgAgEAAAsQYAINsCQACiBQAh8gIBAKEFACHzAgIAtAUAIZADAQChBQAhkQMBALMFACGSAwEAswUAIZMDAQCzBQAhlAMBAKEFACGVAwEAswUAIZYDAQCzBQAhlwNAAKMFACECAAAALQAgLwAAigIAIAvbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhAgAAABUAIC8AAIwCACACAAAAFQAgLwAAjAIAIAMAAAAtACA2AACFAgAgNwAAigIAIAEAAAAtACABAAAAFQAgCwwAAKgGACA8AACpBgAgPQAArAYAID4AAKsGACA_AACqBgAgkQMAAJ0FACCSAwAAnQUAIJMDAACdBQAglQMAAJ0FACCWAwAAnQUAIJcDAACdBQAgDtICAADKBAAw0wIAAJMCABDUAgAAygQAMNsCQACYBAAh8gIBAJYEACHzAgIApwQAIZADAQCWBAAhkQMBAKYEACGSAwEApgQAIZMDAQCmBAAhlAMBAJYEACGVAwEApgQAIZYDAQCmBAAhlwNAAJkEACEDAAAAFQAgAQAAkgIAMDsAAJMCACADAAAAFQAgAQAALAAwAgAALQAgAQAAAB4AIAEAAAAeACADAAAAHAAgAQAAHQAwAgAAHgAgAwAAABwAIAEAAB0AMAIAAB4AIAMAAAAcACABAAAdADACAAAeACAGCgAAlAYAIA0AAKcGACDbAkAAAAAB8gIBAAAAAfMCAgAAAAGPAwEAAAABAS8AAJsCACAE2wJAAAAAAfICAQAAAAHzAgIAAAABjwMBAAAAAQEvAACdAgAwAS8AAJ0CADAGCgAAkgYAIA0AAKYGACDbAkAAogUAIfICAQChBQAh8wICALQFACGPAwEAoQUAIQIAAAAeACAvAACgAgAgBNsCQACiBQAh8gIBAKEFACHzAgIAtAUAIY8DAQChBQAhAgAAABwAIC8AAKICACACAAAAHAAgLwAAogIAIAMAAAAeACA2AACbAgAgNwAAoAIAIAEAAAAeACABAAAAHAAgBQwAAKEGACA8AACiBgAgPQAApQYAID4AAKQGACA_AACjBgAgB9ICAADJBAAw0wIAAKkCABDUAgAAyQQAMNsCQACYBAAh8gIBAJYEACHzAgIApwQAIY8DAQCWBAAhAwAAABwAIAEAAKgCADA7AACpAgAgAwAAABwAIAEAAB0AMAIAAB4AIAEAAAAkACABAAAAJAAgAwAAACIAIAEAACMAMAIAACQAIAMAAAAiACABAAAjADACAAAkACADAAAAIgAgAQAAIwAwAgAAJAAgCAcAAJ8GACAPAACgBgAg1QIBAAAAAdsCQAAAAAHyAgEAAAAB-wIAAACPAwKMAwIAAAABjQMBAAAAAQEvAACxAgAgBtUCAQAAAAHbAkAAAAAB8gIBAAAAAfsCAAAAjwMCjAMCAAAAAY0DAQAAAAEBLwAAswIAMAEvAACzAgAwCAcAAJ0GACAPAACeBgAg1QIBAKEFACHbAkAAogUAIfICAQChBQAh-wIAAJwGjwMijAMCALQFACGNAwEAoQUAIQIAAAAkACAvAAC2AgAgBtUCAQChBQAh2wJAAKIFACHyAgEAoQUAIfsCAACcBo8DIowDAgC0BQAhjQMBAKEFACECAAAAIgAgLwAAuAIAIAIAAAAiACAvAAC4AgAgAwAAACQAIDYAALECACA3AAC2AgAgAQAAACQAIAEAAAAiACAFDAAAlwYAIDwAAJgGACA9AACbBgAgPgAAmgYAID8AAJkGACAJ0gIAAMUEADDTAgAAvwIAENQCAADFBAAw1QIBAJYEACHbAkAAmAQAIfICAQCWBAAh-wIAAMYEjwMijAMCAKcEACGNAwEAlgQAIQMAAAAiACABAAC-AgAwOwAAvwIAIAMAAAAiACABAAAjADACAAAkACAJCwAAxAQAINICAAC_BAAw0wIAAMUCABDUAgAAvwQAMNUCAQAAAAHbAkAAwwQAIfACAgAAAAGHAwEAAAABiAMBAMIEACEBAAAAwgIAIAEAAADCAgAgCQsAAMQEACDSAgAAvwQAMNMCAADFAgAQ1AIAAL8EADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACGHAwEAwAQAIYgDAQDCBAAhAwsAAJYGACDwAgAAnQUAIIgDAACdBQAgAwAAAMUCACABAADGAgAwAgAAwgIAIAMAAADFAgAgAQAAxgIAMAIAAMICACADAAAAxQIAIAEAAMYCADACAADCAgAgBgsAAJUGACDVAgEAAAAB2wJAAAAAAfACAgAAAAGHAwEAAAABiAMBAAAAAQEvAADKAgAgBdUCAQAAAAHbAkAAAAAB8AICAAAAAYcDAQAAAAGIAwEAAAABAS8AAMwCADABLwAAzAIAMAYLAACGBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAhhwMBAKEFACGIAwEAswUAIQIAAADCAgAgLwAAzwIAIAXVAgEAoQUAIdsCQACiBQAh8AICALIFACGHAwEAoQUAIYgDAQCzBQAhAgAAAMUCACAvAADRAgAgAgAAAMUCACAvAADRAgAgAwAAAMICACA2AADKAgAgNwAAzwIAIAEAAADCAgAgAQAAAMUCACAHDAAAgQYAIDwAAIIGACA9AACFBgAgPgAAhAYAID8AAIMGACDwAgAAnQUAIIgDAACdBQAgCNICAAC-BAAw0wIAANgCABDUAgAAvgQAMNUCAQCWBAAh2wJAAJgEACHwAgIApQQAIYcDAQCWBAAhiAMBAKYEACEDAAAAxQIAIAEAANcCADA7AADYAgAgAwAAAMUCACABAADGAgAwAgAAwgIAIAEAAAATACABAAAAEwAgAwAAABEAIAEAABIAMAIAABMAIAMAAAARACABAAASADACAAATACADAAAAEQAgAQAAEgAwAgAAEwAgBgMAAIAGACAHAAD_BQAg2wJAAAAAAe8CAQAAAAHyAgEAAAABhgMAAACGAwIBLwAA4AIAIATbAkAAAAAB7wIBAAAAAfICAQAAAAGGAwAAAIYDAgEvAADiAgAwAS8AAOICADAGAwAA_gUAIAcAAP0FACDbAkAAogUAIe8CAQChBQAh8gIBAKEFACGGAwAA_AWGAyICAAAAEwAgLwAA5QIAIATbAkAAogUAIe8CAQChBQAh8gIBAKEFACGGAwAA_AWGAyICAAAAEQAgLwAA5wIAIAIAAAARACAvAADnAgAgAwAAABMAIDYAAOACACA3AADlAgAgAQAAABMAIAEAAAARACADDAAA-QUAID4AAPsFACA_AAD6BQAgB9ICAAC6BAAw0wIAAO4CABDUAgAAugQAMNsCQACYBAAh7wIBAJYEACHyAgEAlgQAIYYDAAC7BIYDIgMAAAARACABAADtAgAwOwAA7gIAIAMAAAARACABAAASADACAAATACABAAAAMgAgAQAAADIAIAMAAAAwACABAAAxADACAAAyACADAAAAMAAgAQAAMQAwAgAAMgAgAwAAADAAIAEAADEAMAIAADIAIAcHAAD3BQAgFwAA-AUAINUCAQAAAAHbAkAAAAAB8gIBAAAAAYIDAQAAAAGEAwAAAIQDAgEvAAD2AgAgBdUCAQAAAAHbAkAAAAAB8gIBAAAAAYIDAQAAAAGEAwAAAIQDAgEvAAD4AgAwAS8AAPgCADABAAAADwAgBwcAAPUFACAXAAD2BQAg1QIBAKEFACHbAkAAogUAIfICAQChBQAhggMBALMFACGEAwAA9AWEAyICAAAAMgAgLwAA_AIAIAXVAgEAoQUAIdsCQACiBQAh8gIBAKEFACGCAwEAswUAIYQDAAD0BYQDIgIAAAAwACAvAAD-AgAgAgAAADAAIC8AAP4CACABAAAADwAgAwAAADIAIDYAAPYCACA3AAD8AgAgAQAAADIAIAEAAAAwACAEDAAA8QUAID4AAPMFACA_AADyBQAgggMAAJ0FACAI0gIAALYEADDTAgAAhgMAENQCAAC2BAAw1QIBAJYEACHbAkAAmAQAIfICAQCWBAAhggMBAKYEACGEAwAAtwSEAyIDAAAAMAAgAQAAhQMAMDsAAIYDACADAAAAMAAgAQAAMQAwAgAAMgAgAQAAADgAIAEAAAA4ACADAAAANgAgAQAANwAwAgAAOAAgAwAAADYAIAEAADcAMAIAADgAIAMAAAA2ACABAAA3ADACAAA4ACAFAwAA8AUAIAcAAO8FACDbAkAAAAAB7wIBAAAAAfICAQAAAAEBLwAAjgMAIAPbAkAAAAAB7wIBAAAAAfICAQAAAAEBLwAAkAMAMAEvAACQAwAwBQMAAO4FACAHAADtBQAg2wJAAKIFACHvAgEAoQUAIfICAQChBQAhAgAAADgAIC8AAJMDACAD2wJAAKIFACHvAgEAoQUAIfICAQChBQAhAgAAADYAIC8AAJUDACACAAAANgAgLwAAlQMAIAMAAAA4ACA2AACOAwAgNwAAkwMAIAEAAAA4ACABAAAANgAgAwwAAOoFACA-AADsBQAgPwAA6wUAIAbSAgAAtQQAMNMCAACcAwAQ1AIAALUEADDbAkAAmAQAIe8CAQCWBAAh8gIBAJYEACEDAAAANgAgAQAAmwMAMDsAAJwDACADAAAANgAgAQAANwAwAgAAOAAgAQAAADwAIAEAAAA8ACADAAAAOgAgAQAAOwAwAgAAPAAgAwAAADoAIAEAADsAMAIAADwAIAMAAAA6ACABAAA7ADACAAA8ACAOAwAA6QUAIAcAAOgFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHyAgEAAAAB8wICAAAAAfsCAAAA-wIC_AIBAAAAAf0CAQAAAAH-AgEAAAAB_wIBAAAAAYADgAAAAAGBAwEAAAABAS8AAKQDACAM1QIBAAAAAdsCQAAAAAHvAgEAAAAB8gIBAAAAAfMCAgAAAAH7AgAAAPsCAvwCAQAAAAH9AgEAAAAB_gIBAAAAAf8CAQAAAAGAA4AAAAABgQMBAAAAAQEvAACmAwAwAS8AAKYDADABAAAADwAgDgMAAOcFACAHAADmBQAg1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8gIBAKEFACHzAgIAsgUAIfsCAADlBfsCIvwCAQCzBQAh_QIBALMFACH-AgEAswUAIf8CAQCzBQAhgAOAAAAAAYEDAQCzBQAhAgAAADwAIC8AAKoDACAM1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8gIBAKEFACHzAgIAsgUAIfsCAADlBfsCIvwCAQCzBQAh_QIBALMFACH-AgEAswUAIf8CAQCzBQAhgAOAAAAAAYEDAQCzBQAhAgAAADoAIC8AAKwDACACAAAAOgAgLwAArAMAIAEAAAAPACADAAAAPAAgNgAApAMAIDcAAKoDACABAAAAPAAgAQAAADoAIA0MAADgBQAgPAAA4QUAID0AAOQFACA-AADjBQAgPwAA4gUAIO8CAACdBQAg8wIAAJ0FACD8AgAAnQUAIP0CAACdBQAg_gIAAJ0FACD_AgAAnQUAIIADAACdBQAggQMAAJ0FACAP0gIAAK8EADDTAgAAtAMAENQCAACvBAAw1QIBAJYEACHbAkAAmAQAIe8CAQCmBAAh8gIBAJYEACHzAgIApQQAIfsCAACwBPsCIvwCAQCmBAAh_QIBAKYEACH-AgEApgQAIf8CAQCmBAAhgAMAALEEACCBAwEApgQAIQMAAAA6ACABAACzAwAwOwAAtAMAIAMAAAA6ACABAAA7ADACAAA8ACABAAAAQQAgAQAAAEEAIAMAAAA_ACABAABAADACAABBACADAAAAPwAgAQAAQAAwAgAAQQAgAwAAAD8AIAEAAEAAMAIAAEEAIAkDAADeBQAgBwAA3wUAIC-AAAAAAdUCAQAAAAHbAkAAAAAB7wIBAAAAAfICAQAAAAH2AkAAAAAB-QICAAAAAQEvAAC8AwAgBy-AAAAAAdUCAQAAAAHbAkAAAAAB7wIBAAAAAfICAQAAAAH2AkAAAAAB-QICAAAAAQEvAAC-AwAwAS8AAL4DADABAAAAFwAgCQMAANwFACAHAADdBQAgL4AAAAAB1QIBAKEFACHbAkAAogUAIe8CAQChBQAh8gIBALMFACH2AkAAogUAIfkCAgC0BQAhAgAAAEEAIC8AAMIDACAHL4AAAAAB1QIBAKEFACHbAkAAogUAIe8CAQChBQAh8gIBALMFACH2AkAAogUAIfkCAgC0BQAhAgAAAD8AIC8AAMQDACACAAAAPwAgLwAAxAMAIAEAAAAXACADAAAAQQAgNgAAvAMAIDcAAMIDACABAAAAQQAgAQAAAD8AIAYMAADXBQAgPAAA2AUAID0AANsFACA-AADaBQAgPwAA2QUAIPICAACdBQAgCi8AAJcEACDSAgAArgQAMNMCAADMAwAQ1AIAAK4EADDVAgEAlgQAIdsCQACYBAAh7wIBAJYEACHyAgEApgQAIfYCQACYBAAh-QICAKcEACEDAAAAPwAgAQAAywMAMDsAAMwDACADAAAAPwAgAQAAQAAwAgAAQQAgAQAAAEYAIAEAAABGACADAAAARAAgAQAARQAwAgAARgAgAwAAAEQAIAEAAEUAMAIAAEYAIAMAAABEACABAABFADACAABGACARAwAA0wUAIAcAANIFACAaAADVBQAgHQAA1gUAIB4AANQFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8QIBAAAAAfICAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAEBLwAA1AMAIAzVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8QIBAAAAAfICAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAEBLwAA1gMAMAEvAADWAwAwAQAAAA8AIAEAAABEACARAwAAtgUAIAcAALUFACAaAAC5BQAgHQAAtwUAIB4AALgFACDVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfECAQCzBQAh8gIBAKEFACHzAgIAsgUAIfQCAQCzBQAh9QICALQFACH2AkAAogUAIfcCQACjBQAh-AJAAKMFACECAAAARgAgLwAA2wMAIAzVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfECAQCzBQAh8gIBAKEFACHzAgIAsgUAIfQCAQCzBQAh9QICALQFACH2AkAAogUAIfcCQACjBQAh-AJAAKMFACECAAAARAAgLwAA3QMAIAIAAABEACAvAADdAwAgAQAAAA8AIAEAAABEACADAAAARgAgNgAA1AMAIDcAANsDACABAAAARgAgAQAAAEQAIAwMAACtBQAgPAAArgUAID0AALEFACA-AACwBQAgPwAArwUAIO8CAACdBQAg8AIAAJ0FACDxAgAAnQUAIPMCAACdBQAg9AIAAJ0FACD3AgAAnQUAIPgCAACdBQAgD9ICAACkBAAw0wIAAOYDABDUAgAApAQAMNUCAQCWBAAh2wJAAJgEACHvAgEApgQAIfACAgClBAAh8QIBAKYEACHyAgEAlgQAIfMCAgClBAAh9AIBAKYEACH1AgIApwQAIfYCQACYBAAh9wJAAJkEACH4AkAAmQQAIQMAAABEACABAADlAwAwOwAA5gMAIAMAAABEACABAABFADACAABGACABAAAATQAgAQAAAE0AIAMAAABLACABAABMADACAABNACADAAAASwAgAQAATAAwAgAATQAgAwAAAEsAIAEAAEwAMAIAAE0AIAUDAACsBQAgHwAAqwUAINsCQAAAAAHuAgEAAAAB7wIBAAAAAQEvAADuAwAgA9sCQAAAAAHuAgEAAAAB7wIBAAAAAQEvAADwAwAwAS8AAPADADAFAwAAqgUAIB8AAKkFACDbAkAAogUAIe4CAQChBQAh7wIBAKEFACECAAAATQAgLwAA8wMAIAPbAkAAogUAIe4CAQChBQAh7wIBAKEFACECAAAASwAgLwAA9QMAIAIAAABLACAvAAD1AwAgAwAAAE0AIDYAAO4DACA3AADzAwAgAQAAAE0AIAEAAABLACADDAAApgUAID4AAKgFACA_AACnBQAgBtICAACjBAAw0wIAAPwDABDUAgAAowQAMNsCQACYBAAh7gIBAJYEACHvAgEAlgQAIQMAAABLACABAAD7AwAwOwAA_AMAIAMAAABLACABAABMADACAABNACABAAAAXQAgAQAAAF0AIAMAAABbACABAABcADACAABdACADAAAAWwAgAQAAXAAwAgAAXQAgAwAAAFsAIAEAAFwAMAIAAF0AIAkjAAClBQAg1QIBAAAAAdYCAQAAAAHXAgEAAAAB2AIBAAAAAdkCAQAAAAHaAoAAAAAB2wJAAAAAAdwCQAAAAAEBLwAAhAQAIAjVAgEAAAAB1gIBAAAAAdcCAQAAAAHYAgEAAAAB2QIBAAAAAdoCgAAAAAHbAkAAAAAB3AJAAAAAAQEvAACGBAAwAS8AAIYEADAJIwAApAUAINUCAQChBQAh1gIBAKEFACHXAgEAoQUAIdgCAQChBQAh2QIBAKEFACHaAoAAAAAB2wJAAKIFACHcAkAAowUAIQIAAABdACAvAACJBAAgCNUCAQChBQAh1gIBAKEFACHXAgEAoQUAIdgCAQChBQAh2QIBAKEFACHaAoAAAAAB2wJAAKIFACHcAkAAowUAIQIAAABbACAvAACLBAAgAgAAAFsAIC8AAIsEACADAAAAXQAgNgAAhAQAIDcAAIkEACABAAAAXQAgAQAAAFsAIAQMAACeBQAgPgAAoAUAID8AAJ8FACDcAgAAnQUAIAvSAgAAlQQAMNMCAACSBAAQ1AIAAJUEADDVAgEAlgQAIdYCAQCWBAAh1wIBAJYEACHYAgEAlgQAIdkCAQCWBAAh2gIAAJcEACDbAkAAmAQAIdwCQACZBAAhAwAAAFsAIAEAAJEEADA7AACSBAAgAwAAAFsAIAEAAFwAMAIAAF0AIAvSAgAAlQQAMNMCAACSBAAQ1AIAAJUEADDVAgEAlgQAIdYCAQCWBAAh1wIBAJYEACHYAgEAlgQAIdkCAQCWBAAh2gIAAJcEACDbAkAAmAQAIdwCQACZBAAhDgwAAJ4EACA-AACiBAAgPwAAogQAIN0CAQAAAAHeAgEAAAAE3wIBAAAABOACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAoQQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQ8MAACeBAAgPgAAoAQAID8AAKAEACDdAoAAAAAB4AKAAAAAAeECgAAAAAHiAoAAAAAB4wKAAAAAAeQCgAAAAAHlAgEAAAAB5gIBAAAAAecCAQAAAAHoAoAAAAAB6QKAAAAAAeoCgAAAAAELDAAAngQAID4AAJ8EACA_AACfBAAg3QJAAAAAAd4CQAAAAATfAkAAAAAE4AJAAAAAAeECQAAAAAHiAkAAAAAB4wJAAAAAAeQCQACdBAAhCwwAAJsEACA-AACcBAAgPwAAnAQAIN0CQAAAAAHeAkAAAAAF3wJAAAAABeACQAAAAAHhAkAAAAAB4gJAAAAAAeMCQAAAAAHkAkAAmgQAIQsMAACbBAAgPgAAnAQAID8AAJwEACDdAkAAAAAB3gJAAAAABd8CQAAAAAXgAkAAAAAB4QJAAAAAAeICQAAAAAHjAkAAAAAB5AJAAJoEACEI3QICAAAAAd4CAgAAAAXfAgIAAAAF4AICAAAAAeECAgAAAAHiAgIAAAAB4wICAAAAAeQCAgCbBAAhCN0CQAAAAAHeAkAAAAAF3wJAAAAABeACQAAAAAHhAkAAAAAB4gJAAAAAAeMCQAAAAAHkAkAAnAQAIQsMAACeBAAgPgAAnwQAID8AAJ8EACDdAkAAAAAB3gJAAAAABN8CQAAAAATgAkAAAAAB4QJAAAAAAeICQAAAAAHjAkAAAAAB5AJAAJ0EACEI3QICAAAAAd4CAgAAAATfAgIAAAAE4AICAAAAAeECAgAAAAHiAgIAAAAB4wICAAAAAeQCAgCeBAAhCN0CQAAAAAHeAkAAAAAE3wJAAAAABOACQAAAAAHhAkAAAAAB4gJAAAAAAeMCQAAAAAHkAkAAnwQAIQzdAoAAAAAB4AKAAAAAAeECgAAAAAHiAoAAAAAB4wKAAAAAAeQCgAAAAAHlAgEAAAAB5gIBAAAAAecCAQAAAAHoAoAAAAAB6QKAAAAAAeoCgAAAAAEODAAAngQAID4AAKIEACA_AACiBAAg3QIBAAAAAd4CAQAAAATfAgEAAAAE4AIBAAAAAeECAQAAAAHiAgEAAAAB4wIBAAAAAeQCAQChBAAh6wIBAAAAAewCAQAAAAHtAgEAAAABC90CAQAAAAHeAgEAAAAE3wIBAAAABOACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAogQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQbSAgAAowQAMNMCAAD8AwAQ1AIAAKMEADDbAkAAmAQAIe4CAQCWBAAh7wIBAJYEACEP0gIAAKQEADDTAgAA5gMAENQCAACkBAAw1QIBAJYEACHbAkAAmAQAIe8CAQCmBAAh8AICAKUEACHxAgEApgQAIfICAQCWBAAh8wICAKUEACH0AgEApgQAIfUCAgCnBAAh9gJAAJgEACH3AkAAmQQAIfgCQACZBAAhDQwAAJsEACA8AACtBAAgPQAAmwQAID4AAJsEACA_AACbBAAg3QICAAAAAd4CAgAAAAXfAgIAAAAF4AICAAAAAeECAgAAAAHiAgIAAAAB4wICAAAAAeQCAgCsBAAhDgwAAJsEACA-AACrBAAgPwAAqwQAIN0CAQAAAAHeAgEAAAAF3wIBAAAABeACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAqgQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQ0MAACeBAAgPAAAqQQAID0AAJ4EACA-AACeBAAgPwAAngQAIN0CAgAAAAHeAgIAAAAE3wICAAAABOACAgAAAAHhAgIAAAAB4gICAAAAAeMCAgAAAAHkAgIAqAQAIQ0MAACeBAAgPAAAqQQAID0AAJ4EACA-AACeBAAgPwAAngQAIN0CAgAAAAHeAgIAAAAE3wICAAAABOACAgAAAAHhAgIAAAAB4gICAAAAAeMCAgAAAAHkAgIAqAQAIQjdAggAAAAB3gIIAAAABN8CCAAAAATgAggAAAAB4QIIAAAAAeICCAAAAAHjAggAAAAB5AIIAKkEACEODAAAmwQAID4AAKsEACA_AACrBAAg3QIBAAAAAd4CAQAAAAXfAgEAAAAF4AIBAAAAAeECAQAAAAHiAgEAAAAB4wIBAAAAAeQCAQCqBAAh6wIBAAAAAewCAQAAAAHtAgEAAAABC90CAQAAAAHeAgEAAAAF3wIBAAAABeACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAqwQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQ0MAACbBAAgPAAArQQAID0AAJsEACA-AACbBAAgPwAAmwQAIN0CAgAAAAHeAgIAAAAF3wICAAAABeACAgAAAAHhAgIAAAAB4gICAAAAAeMCAgAAAAHkAgIArAQAIQjdAggAAAAB3gIIAAAABd8CCAAAAAXgAggAAAAB4QIIAAAAAeICCAAAAAHjAggAAAAB5AIIAK0EACEKLwAAlwQAINICAACuBAAw0wIAAMwDABDUAgAArgQAMNUCAQCWBAAh2wJAAJgEACHvAgEAlgQAIfICAQCmBAAh9gJAAJgEACH5AgIApwQAIQ_SAgAArwQAMNMCAAC0AwAQ1AIAAK8EADDVAgEAlgQAIdsCQACYBAAh7wIBAKYEACHyAgEAlgQAIfMCAgClBAAh-wIAALAE-wIi_AIBAKYEACH9AgEApgQAIf4CAQCmBAAh_wIBAKYEACGAAwAAsQQAIIEDAQCmBAAhBwwAAJ4EACA-AAC0BAAgPwAAtAQAIN0CAAAA-wIC3gIAAAD7AgjfAgAAAPsCCOQCAACzBPsCIg8MAACbBAAgPgAAsgQAID8AALIEACDdAoAAAAAB4AKAAAAAAeECgAAAAAHiAoAAAAAB4wKAAAAAAeQCgAAAAAHlAgEAAAAB5gIBAAAAAecCAQAAAAHoAoAAAAAB6QKAAAAAAeoCgAAAAAEM3QKAAAAAAeACgAAAAAHhAoAAAAAB4gKAAAAAAeMCgAAAAAHkAoAAAAAB5QIBAAAAAeYCAQAAAAHnAgEAAAAB6AKAAAAAAekCgAAAAAHqAoAAAAABBwwAAJ4EACA-AAC0BAAgPwAAtAQAIN0CAAAA-wIC3gIAAAD7AgjfAgAAAPsCCOQCAACzBPsCIgTdAgAAAPsCAt4CAAAA-wII3wIAAAD7AgjkAgAAtAT7AiIG0gIAALUEADDTAgAAnAMAENQCAAC1BAAw2wJAAJgEACHvAgEAlgQAIfICAQCWBAAhCNICAAC2BAAw0wIAAIYDABDUAgAAtgQAMNUCAQCWBAAh2wJAAJgEACHyAgEAlgQAIYIDAQCmBAAhhAMAALcEhAMiBwwAAJ4EACA-AAC5BAAgPwAAuQQAIN0CAAAAhAMC3gIAAACEAwjfAgAAAIQDCOQCAAC4BIQDIgcMAACeBAAgPgAAuQQAID8AALkEACDdAgAAAIQDAt4CAAAAhAMI3wIAAACEAwjkAgAAuASEAyIE3QIAAACEAwLeAgAAAIQDCN8CAAAAhAMI5AIAALkEhAMiB9ICAAC6BAAw0wIAAO4CABDUAgAAugQAMNsCQACYBAAh7wIBAJYEACHyAgEAlgQAIYYDAAC7BIYDIgcMAACeBAAgPgAAvQQAID8AAL0EACDdAgAAAIYDAt4CAAAAhgMI3wIAAACGAwjkAgAAvASGAyIHDAAAngQAID4AAL0EACA_AAC9BAAg3QIAAACGAwLeAgAAAIYDCN8CAAAAhgMI5AIAALwEhgMiBN0CAAAAhgMC3gIAAACGAwjfAgAAAIYDCOQCAAC9BIYDIgjSAgAAvgQAMNMCAADYAgAQ1AIAAL4EADDVAgEAlgQAIdsCQACYBAAh8AICAKUEACGHAwEAlgQAIYgDAQCmBAAhCQsAAMQEACDSAgAAvwQAMNMCAADFAgAQ1AIAAL8EADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACGHAwEAwAQAIYgDAQDCBAAhC90CAQAAAAHeAgEAAAAE3wIBAAAABOACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAogQAIesCAQAAAAHsAgEAAAAB7QIBAAAAAQjdAgIAAAAB3gICAAAABd8CAgAAAAXgAgIAAAAB4QICAAAAAeICAgAAAAHjAgIAAAAB5AICAJsEACEL3QIBAAAAAd4CAQAAAAXfAgEAAAAF4AIBAAAAAeECAQAAAAHiAgEAAAAB4wIBAAAAAeQCAQCrBAAh6wIBAAAAAewCAQAAAAHtAgEAAAABCN0CQAAAAAHeAkAAAAAE3wJAAAAABOACQAAAAAHhAkAAAAAB4gJAAAAAAeMCQAAAAAHkAkAAnwQAIQOJAwAAHAAgigMAABwAIIsDAAAcACAJ0gIAAMUEADDTAgAAvwIAENQCAADFBAAw1QIBAJYEACHbAkAAmAQAIfICAQCWBAAh-wIAAMYEjwMijAMCAKcEACGNAwEAlgQAIQcMAACeBAAgPgAAyAQAID8AAMgEACDdAgAAAI8DAt4CAAAAjwMI3wIAAACPAwjkAgAAxwSPAyIHDAAAngQAID4AAMgEACA_AADIBAAg3QIAAACPAwLeAgAAAI8DCN8CAAAAjwMI5AIAAMcEjwMiBN0CAAAAjwMC3gIAAACPAwjfAgAAAI8DCOQCAADIBI8DIgfSAgAAyQQAMNMCAACpAgAQ1AIAAMkEADDbAkAAmAQAIfICAQCWBAAh8wICAKcEACGPAwEAlgQAIQ7SAgAAygQAMNMCAACTAgAQ1AIAAMoEADDbAkAAmAQAIfICAQCWBAAh8wICAKcEACGQAwEAlgQAIZEDAQCmBAAhkgMBAKYEACGTAwEApgQAIZQDAQCWBAAhlQMBAKYEACGWAwEApgQAIZcDQACZBAAhEtICAADLBAAw0wIAAP0BABDUAgAAywQAMNUCAQCWBAAh2wJAAJgEACHwAgIApQQAIfYCQACYBAAh-AJAAJkEACGYAwIApQQAIZkDAQCmBAAhmgMCAKUEACGcAwAAzAScAyKdAyAAzQQAIZ4DIADNBAAhnwMCAKcEACGgAwIApwQAIaEDAgCnBAAhogMCAKcEACEHDAAAngQAID4AANEEACA_AADRBAAg3QIAAACcAwLeAgAAAJwDCN8CAAAAnAMI5AIAANAEnAMiBQwAAJ4EACA-AADPBAAgPwAAzwQAIN0CIAAAAAHkAiAAzgQAIQUMAACeBAAgPgAAzwQAID8AAM8EACDdAiAAAAAB5AIgAM4EACEC3QIgAAAAAeQCIADPBAAhBwwAAJ4EACA-AADRBAAgPwAA0QQAIN0CAAAAnAMC3gIAAACcAwjfAgAAAJwDCOQCAADQBJwDIgTdAgAAAJwDAt4CAAAAnAMI3wIAAACcAwjkAgAA0QScAyIO0gIAANIEADDTAgAA4QEAENQCAADSBAAw1QIBAJYEACHbAkAAmQQAIe8CAQCWBAAhhwMBAKYEACGjAwEAlgQAIaQDAQCWBAAhpQMCAKcEACGmAwEAlgQAIacDIADNBAAhqAMBAKYEACGpAwEApgQAIQrSAgAA0wQAMNMCAADLAQAQ1AIAANMEADDVAgEAlgQAIdsCQACZBAAh7wIBAKYEACH2AkAAmQQAIaoDAQCWBAAhqwMBAJYEACGsA0AAmAQAIQzSAgAA1AQAMNMCAACzAQAQ1AIAANQEADDVAgEAlgQAIdsCQACYBAAh7wIBAJYEACH2AkAAmAQAIf4CAQCmBAAhrANAAJgEACGtAwEAlgQAIa4DAQCmBAAhrwMBAKYEACEQ0gIAANUEADDTAgAAnQEAENQCAADVBAAw1QIBAJYEACHbAkAAmAQAIe8CAQCWBAAh9gJAAJgEACGwAwEAlgQAIbEDAQCWBAAhsgMBAKYEACGzAwEApgQAIbQDQACZBAAhtQNAAJkEACG2AwEApgQAIbcDAQCmBAAhuAMBAKYEACEZ0gIAANYEADDTAgAAhwEAENQCAADWBAAw1QIBAJYEACHbAkAAmAQAIfACAgClBAAh9gJAAJgEACH4AkAAmQQAIYYDAQCmBAAhhwMBAKYEACG5AwEApgQAIboDIADNBAAhuwMBAKYEACG9AwAA1wS9AyK_AwAA2AS_AyLAAyAAzQQAIcEDAQCmBAAhwgMBAKYEACHDAwAAsQQAIMQDQACZBAAhxQMBAKYEACHGAyAA2QQAIccDAQCmBAAhyANAAJkEACHJA0AAmQQAIQcMAACeBAAgPgAA3wQAID8AAN8EACDdAgAAAL0DAt4CAAAAvQMI3wIAAAC9AwjkAgAA3gS9AyIHDAAAngQAID4AAN0EACA_AADdBAAg3QIAAAC_AwLeAgAAAL8DCN8CAAAAvwMI5AIAANwEvwMiBQwAAJsEACA-AADbBAAgPwAA2wQAIN0CIAAAAAHkAiAA2gQAIQUMAACbBAAgPgAA2wQAID8AANsEACDdAiAAAAAB5AIgANoEACEC3QIgAAAAAeQCIADbBAAhBwwAAJ4EACA-AADdBAAgPwAA3QQAIN0CAAAAvwMC3gIAAAC_AwjfAgAAAL8DCOQCAADcBL8DIgTdAgAAAL8DAt4CAAAAvwMI3wIAAAC_AwjkAgAA3QS_AyIHDAAAngQAID4AAN8EACA_AADfBAAg3QIAAAC9AwLeAgAAAL0DCN8CAAAAvQMI5AIAAN4EvQMiBN0CAAAAvQMC3gIAAAC9AwjfAgAAAL0DCOQCAADfBL0DIg8DAADkBAAg0gIAAOAEADDTAgAAZAAQ1AIAAOAEADDVAgEAwAQAIdsCQADjBAAh7wIBAMAEACGHAwEAwgQAIaMDAQDABAAhpAMBAMAEACGlAwIA4QQAIaYDAQDABAAhpwMgAOIEACGoAwEAwgQAIakDAQDCBAAhCN0CAgAAAAHeAgIAAAAE3wICAAAABOACAgAAAAHhAgIAAAAB4gICAAAAAeMCAgAAAAHkAgIAngQAIQLdAiAAAAAB5AIgAM8EACEI3QJAAAAAAd4CQAAAAAXfAkAAAAAF4AJAAAAAAeECQAAAAAHiAkAAAAAB4wJAAAAAAeQCQACcBAAhJwQAAJUFACAFAACWBQAgBgAAlwUAICAAAO4EACAhAACJBQAgIgAAigUAICQAAJgFACAlAACLBQAgJgAAjAUAICcAAI0FACAoAADvBAAgKQAAmQUAINICAACRBQAw0wIAAA8AENQCAACRBQAw1QIBAMAEACHbAkAAwwQAIfACAgDBBAAh9gJAAMMEACH4AkAA4wQAIYYDAQDCBAAhhwMBAMIEACG5AwEAwgQAIboDIADiBAAhuwMBAMIEACG9AwAAkgW9AyK_AwAAkwW_AyLAAyAA4gQAIcEDAQDCBAAhwgMBAMIEACHDAwAA9AQAIMQDQADjBAAhxQMBAMIEACHGAyAAlAUAIccDAQDCBAAhyANAAOMEACHJA0AA4wQAIdADAAAPACDRAwAADwAgDCMAAOQEACDSAgAA5QQAMNMCAABbABDUAgAA5QQAMNUCAQDABAAh1gIBAMAEACHXAgEAwAQAIdgCAQDABAAh2QIBAMAEACHaAgAA5gQAINsCQADDBAAh3AJAAOMEACEM3QKAAAAAAeACgAAAAAHhAoAAAAAB4gKAAAAAAeMCgAAAAAHkAoAAAAAB5QIBAAAAAeYCAQAAAAHnAgEAAAAB6AKAAAAAAekCgAAAAAHqAoAAAAABAu4CAQAAAAHvAgEAAAABCAMAAOQEACAfAADpBAAg0gIAAOgEADDTAgAASwAQ1AIAAOgEADDbAkAAwwQAIe4CAQDABAAh7wIBAMAEACEWAwAA7AQAIAcAAOsEACAaAADvBAAgHQAA7QQAIB4AAO4EACDSAgAA6gQAMNMCAABEABDUAgAA6gQAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfACAgDBBAAh8QIBAMIEACHyAgEAwAQAIfMCAgDBBAAh9AIBAMIEACH1AgIA4QQAIfYCQADDBAAh9wJAAOMEACH4AkAA4wQAIdADAABEACDRAwAARAAgFAMAAOwEACAHAADrBAAgGgAA7wQAIB0AAO0EACAeAADuBAAg0gIAAOoEADDTAgAARAAQ1AIAAOoEADDVAgEAwAQAIdsCQADDBAAh7wIBAMIEACHwAgIAwQQAIfECAQDCBAAh8gIBAMAEACHzAgIAwQQAIfQCAQDCBAAh9QICAOEEACH2AkAAwwQAIfcCQADjBAAh-AJAAOMEACEgEQAAhwUAIBIAAPEEACATAAD8BAAgFAAAhwUAIBUAAIgFACAWAACJBQAgGAAAigUAIBkAAP0EACAaAACLBQAgGwAAjAUAIBwAAI0FACAgAADuBAAg0gIAAIUFADDTAgAAFwAQ1AIAAIUFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAh0AMAABcAINEDAAAXACAnBAAAlQUAIAUAAJYFACAGAACXBQAgIAAA7gQAICEAAIkFACAiAACKBQAgJAAAmAUAICUAAIsFACAmAACMBQAgJwAAjQUAICgAAO8EACApAACZBQAg0gIAAJEFADDTAgAADwAQ1AIAAJEFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhhgMBAMIEACGHAwEAwgQAIbkDAQDCBAAhugMgAOIEACG7AwEAwgQAIb0DAACSBb0DIr8DAACTBb8DIsADIADiBAAhwQMBAMIEACHCAwEAwgQAIcMDAAD0BAAgxANAAOMEACHFAwEAwgQAIcYDIACUBQAhxwMBAMIEACHIA0AA4wQAIckDQADjBAAh0AMAAA8AINEDAAAPACAWAwAA7AQAIAcAAOsEACAaAADvBAAgHQAA7QQAIB4AAO4EACDSAgAA6gQAMNMCAABEABDUAgAA6gQAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfACAgDBBAAh8QIBAMIEACHyAgEAwAQAIfMCAgDBBAAh9AIBAMIEACH1AgIA4QQAIfYCQADDBAAh9wJAAOMEACH4AkAA4wQAIdADAABEACDRAwAARAAgA4kDAABEACCKAwAARAAgiwMAAEQAIAOJAwAASwAgigMAAEsAIIsDAABLACAMAwAA5AQAIAcAAPEEACAvAADmBAAg0gIAAPAEADDTAgAAPwAQ1AIAAPAEADDVAgEAwAQAIdsCQADDBAAh7wIBAMAEACHyAgEAwgQAIfYCQADDBAAh-QICAOEEACEgEQAAhwUAIBIAAPEEACATAAD8BAAgFAAAhwUAIBUAAIgFACAWAACJBQAgGAAAigUAIBkAAP0EACAaAACLBQAgGwAAjAUAIBwAAI0FACAgAADuBAAg0gIAAIUFADDTAgAAFwAQ1AIAAIUFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAh0AMAABcAINEDAAAXACARAwAA7AQAIAcAAOsEACDSAgAA8gQAMNMCAAA6ABDUAgAA8gQAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACEE3QIAAAD7AgLeAgAAAPsCCN8CAAAA-wII5AIAALQE-wIiDN0CgAAAAAHgAoAAAAAB4QKAAAAAAeICgAAAAAHjAoAAAAAB5AKAAAAAAeUCAQAAAAHmAgEAAAAB5wIBAAAAAegCgAAAAAHpAoAAAAAB6gKAAAAAAQLvAgEAAAAB8gIBAAAAAQgDAADkBAAgBwAA6wQAINICAAD2BAAw0wIAADYAENQCAAD2BAAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhAvICAQAAAAGCAwEAAAABCgcAAOsEACAXAADsBAAg0gIAAPgEADDTAgAAMAAQ1AIAAPgEADDVAgEAwAQAIdsCQADDBAAh8gIBAMAEACGCAwEAwgQAIYQDAAD5BIQDIgTdAgAAAIQDAt4CAAAAhAMI3wIAAACEAwjkAgAAuQSEAyIC8gIBAAAAAfMCAgAAAAETBwAA6wQAIAgAAPEEACAJAAD8BAAgDgAAxAQAIBAAAP0EACDSAgAA-wQAMNMCAAAVABDUAgAA-wQAMNsCQADDBAAh8gIBAMAEACHzAgIA4QQAIZADAQDABAAhkQMBAMIEACGSAwEAwgQAIZMDAQDCBAAhlAMBAMAEACGVAwEAwgQAIZYDAQDCBAAhlwNAAOMEACEDiQMAABcAIIoDAAAXACCLAwAAFwAgA4kDAAAiACCKAwAAIgAgiwMAACIAIAsHAADrBAAgDwAAgAUAINICAAD-BAAw0wIAACIAENQCAAD-BAAw1QIBAMAEACHbAkAAwwQAIfICAQDABAAh-wIAAP8EjwMijAMCAOEEACGNAwEAwAQAIQTdAgAAAI8DAt4CAAAAjwMI3wIAAACPAwjkAgAAyASPAyIVBwAA6wQAIAgAAPEEACAJAAD8BAAgDgAAxAQAIBAAAP0EACDSAgAA-wQAMNMCAAAVABDUAgAA-wQAMNsCQADDBAAh8gIBAMAEACHzAgIA4QQAIZADAQDABAAhkQMBAMIEACGSAwEAwgQAIZMDAQDCBAAhlAMBAMAEACGVAwEAwgQAIZYDAQDCBAAhlwNAAOMEACHQAwAAFQAg0QMAABUAIAPyAgEAAAAB8wICAAAAAY8DAQAAAAEJCgAAgAUAIA0AAIMFACDSAgAAggUAMNMCAAAcABDUAgAAggUAMNsCQADDBAAh8gIBAMAEACHzAgIA4QQAIY8DAQDABAAhCwsAAMQEACDSAgAAvwQAMNMCAADFAgAQ1AIAAL8EADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACGHAwEAwAQAIYgDAQDCBAAh0AMAAMUCACDRAwAAxQIAIALVAgEAAAABmAMCAAAAAR4RAACHBQAgEgAA8QQAIBMAAPwEACAUAACHBQAgFQAAiAUAIBYAAIkFACAYAACKBQAgGQAA_QQAIBoAAIsFACAbAACMBQAgHAAAjQUAICAAAO4EACDSAgAAhQUAMNMCAAAXABDUAgAAhQUAMNUCAQDABAAh2wJAAMMEACHwAgIAwQQAIfYCQADDBAAh-AJAAOMEACGYAwIAwQQAIZkDAQDCBAAhmgMCAMEEACGcAwAAhgWcAyKdAyAA4gQAIZ4DIADiBAAhnwMCAOEEACGgAwIA4QQAIaEDAgDhBAAhogMCAOEEACEE3QIAAACcAwLeAgAAAJwDCN8CAAAAnAMI5AIAANEEnAMiFQcAAOsEACAIAADxBAAgCQAA_AQAIA4AAMQEACAQAAD9BAAg0gIAAPsEADDTAgAAFQAQ1AIAAPsEADDbAkAAwwQAIfICAQDABAAh8wICAOEEACGQAwEAwAQAIZEDAQDCBAAhkgMBAMIEACGTAwEAwgQAIZQDAQDABAAhlQMBAMIEACGWAwEAwgQAIZcDQADjBAAh0AMAABUAINEDAAAVACADiQMAABUAIIoDAAAVACCLAwAAFQAgA4kDAAARACCKAwAAEQAgiwMAABEAIAOJAwAAMAAgigMAADAAIIsDAAAwACADiQMAADYAIIoDAAA2ACCLAwAANgAgA4kDAAA6ACCKAwAAOgAgiwMAADoAIAOJAwAAPwAgigMAAD8AIIsDAAA_ACAC7wIBAAAAAfICAQAAAAEJAwAA5AQAIAcAAOsEACDSAgAAjwUAMNMCAAARABDUAgAAjwUAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIYYDAACQBYYDIgTdAgAAAIYDAt4CAAAAhgMI3wIAAACGAwjkAgAAvQSGAyIlBAAAlQUAIAUAAJYFACAGAACXBQAgIAAA7gQAICEAAIkFACAiAACKBQAgJAAAmAUAICUAAIsFACAmAACMBQAgJwAAjQUAICgAAO8EACApAACZBQAg0gIAAJEFADDTAgAADwAQ1AIAAJEFADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhhgMBAMIEACGHAwEAwgQAIbkDAQDCBAAhugMgAOIEACG7AwEAwgQAIb0DAACSBb0DIr8DAACTBb8DIsADIADiBAAhwQMBAMIEACHCAwEAwgQAIcMDAAD0BAAgxANAAOMEACHFAwEAwgQAIcYDIACUBQAhxwMBAMIEACHIA0AA4wQAIckDQADjBAAhBN0CAAAAvQMC3gIAAAC9AwjfAgAAAL0DCOQCAADfBL0DIgTdAgAAAL8DAt4CAAAAvwMI3wIAAAC_AwjkAgAA3QS_AyIC3QIgAAAAAeQCIADbBAAhA4kDAAADACCKAwAAAwAgiwMAAAMAIAOJAwAABwAgigMAAAcAIIsDAAAHACADiQMAAAsAIIoDAAALACCLAwAACwAgA4kDAABbACCKAwAAWwAgiwMAAFsAIAOJAwAAZAAgigMAAGQAIIsDAABkACALAwAA7AQAINICAACaBQAw0wIAAAsAENQCAACaBQAw1QIBAMAEACHbAkAA4wQAIe8CAQDCBAAh9gJAAOMEACGqAwEAwAQAIasDAQDABAAhrANAAMMEACENAwAA5AQAINICAACbBQAw0wIAAAcAENQCAACbBQAw1QIBAMAEACHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACH-AgEAwgQAIawDQADDBAAhrQMBAMAEACGuAwEAwgQAIa8DAQDCBAAhEQMAAOQEACDSAgAAnAUAMNMCAAADABDUAgAAnAUAMNUCAQDABAAh2wJAAMMEACHvAgEAwAQAIfYCQADDBAAhsAMBAMAEACGxAwEAwAQAIbIDAQDCBAAhswMBAMIEACG0A0AA4wQAIbUDQADjBAAhtgMBAMIEACG3AwEAwgQAIbgDAQDCBAAhAAAAAAHVAwEAAAABAdUDQAAAAAEB1QNAAAAAAQU2AADGCgAgNwAAyQoAINIDAADHCgAg0wMAAMgKACDYAwAAAQAgAzYAAMYKACDSAwAAxwoAINgDAAABACAAAAAFNgAAvgoAIDcAAMQKACDSAwAAvwoAINMDAADDCgAg2AMAAEYAIAU2AAC8CgAgNwAAwQoAINIDAAC9CgAg0wMAAMAKACDYAwAAAQAgAzYAAL4KACDSAwAAvwoAINgDAABGACADNgAAvAoAINIDAAC9CgAg2AMAAAEAIAAAAAAABdUDAgAAAAHbAwIAAAAB3AMCAAAAAd0DAgAAAAHeAwIAAAABAdUDAQAAAAEF1QMCAAAAAdsDAgAAAAHcAwIAAAAB3QMCAAAAAd4DAgAAAAEFNgAArwoAIDcAALoKACDSAwAAsAoAINMDAAC5CgAg2AMAABoAIAc2AACtCgAgNwAAtwoAINIDAACuCgAg0wMAALYKACDWAwAADwAg1wMAAA8AINgDAAABACAHNgAAqwoAIDcAALQKACDSAwAArAoAINMDAACzCgAg1gMAAEQAINcDAABEACDYAwAARgAgCzYAAMYFADA3AADLBQAw0gMAAMcFADDTAwAAyAUAMNQDAADJBQAg1QMAAMoFADDWAwAAygUAMNcDAADKBQAw2AMAAMoFADDZAwAAzAUAMNoDAADNBQAwCzYAALoFADA3AAC_BQAw0gMAALsFADDTAwAAvAUAMNQDAAC9BQAg1QMAAL4FADDWAwAAvgUAMNcDAAC-BQAw2AMAAL4FADDZAwAAwAUAMNoDAADBBQAwAwMAAKwFACDbAkAAAAAB7wIBAAAAAQIAAABNACA2AADFBQAgAwAAAE0AIDYAAMUFACA3AADEBQAgAS8AALIKADAJAwAA5AQAIB8AAOkEACDSAgAA6AQAMNMCAABLABDUAgAA6AQAMNsCQADDBAAh7gIBAMAEACHvAgEAwAQAIcoDAADnBAAgAgAAAE0AIC8AAMQFACACAAAAwgUAIC8AAMMFACAG0gIAAMEFADDTAgAAwgUAENQCAADBBQAw2wJAAMMEACHuAgEAwAQAIe8CAQDABAAhBtICAADBBQAw0wIAAMIFABDUAgAAwQUAMNsCQADDBAAh7gIBAMAEACHvAgEAwAQAIQLbAkAAogUAIe8CAQChBQAhAwMAAKoFACDbAkAAogUAIe8CAQChBQAhAwMAAKwFACDbAkAAAAAB7wIBAAAAAQ8DAADTBQAgBwAA0gUAIBoAANUFACAeAADUBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfICAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAECAAAARgAgNgAA0QUAIAMAAABGACA2AADRBQAgNwAA0AUAIAEvAACxCgAwFAMAAOwEACAHAADrBAAgGgAA7wQAIB0AAO0EACAeAADuBAAg0gIAAOoEADDTAgAARAAQ1AIAAOoEADDVAgEAAAAB2wJAAMMEACHvAgEAwgQAIfACAgAAAAHxAgEAwgQAIfICAQDABAAh8wICAMEEACH0AgEAwgQAIfUCAgDhBAAh9gJAAMMEACH3AkAA4wQAIfgCQADjBAAhAgAAAEYAIC8AANAFACACAAAAzgUAIC8AAM8FACAP0gIAAM0FADDTAgAAzgUAENQCAADNBQAw1QIBAMAEACHbAkAAwwQAIe8CAQDCBAAh8AICAMEEACHxAgEAwgQAIfICAQDABAAh8wICAMEEACH0AgEAwgQAIfUCAgDhBAAh9gJAAMMEACH3AkAA4wQAIfgCQADjBAAhD9ICAADNBQAw0wIAAM4FABDUAgAAzQUAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfACAgDBBAAh8QIBAMIEACHyAgEAwAQAIfMCAgDBBAAh9AIBAMIEACH1AgIA4QQAIfYCQADDBAAh9wJAAOMEACH4AkAA4wQAIQvVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhDwMAALYFACAHAAC1BQAgGgAAuQUAIB4AALgFACDVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhDwMAANMFACAHAADSBQAgGgAA1QUAIB4AANQFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQM2AACvCgAg0gMAALAKACDYAwAAGgAgAzYAAK0KACDSAwAArgoAINgDAAABACAENgAAxgUAMNIDAADHBQAw1AMAAMkFACDYAwAAygUAMAQ2AAC6BQAw0gMAALsFADDUAwAAvQUAINgDAAC-BQAwAzYAAKsKACDSAwAArAoAINgDAABGACAAAAAAAAU2AACjCgAgNwAAqQoAINIDAACkCgAg0wMAAKgKACDYAwAAAQAgBzYAAKEKACA3AACmCgAg0gMAAKIKACDTAwAApQoAINYDAAAXACDXAwAAFwAg2AMAABoAIAM2AACjCgAg0gMAAKQKACDYAwAAAQAgAzYAAKEKACDSAwAAogoAINgDAAAaACAAAAAAAAHVAwAAAPsCAgU2AACZCgAgNwAAnwoAINIDAACaCgAg0wMAAJ4KACDYAwAAGgAgBzYAAJcKACA3AACcCgAg0gMAAJgKACDTAwAAmwoAINYDAAAPACDXAwAADwAg2AMAAAEAIAM2AACZCgAg0gMAAJoKACDYAwAAGgAgAzYAAJcKACDSAwAAmAoAINgDAAABACAAAAAFNgAAjwoAIDcAAJUKACDSAwAAkAoAINMDAACUCgAg2AMAABoAIAU2AACNCgAgNwAAkgoAINIDAACOCgAg0wMAAJEKACDYAwAAAQAgAzYAAI8KACDSAwAAkAoAINgDAAAaACADNgAAjQoAINIDAACOCgAg2AMAAAEAIAAAAAHVAwAAAIQDAgU2AACFCgAgNwAAiwoAINIDAACGCgAg0wMAAIoKACDYAwAAGgAgBzYAAIMKACA3AACICgAg0gMAAIQKACDTAwAAhwoAINYDAAAPACDXAwAADwAg2AMAAAEAIAM2AACFCgAg0gMAAIYKACDYAwAAGgAgAzYAAIMKACDSAwAAhAoAINgDAAABACAAAAAB1QMAAACGAwIFNgAA-wkAIDcAAIEKACDSAwAA_AkAINMDAACACgAg2AMAABoAIAU2AAD5CQAgNwAA_gkAINIDAAD6CQAg0wMAAP0JACDYAwAAAQAgAzYAAPsJACDSAwAA_AkAINgDAAAaACADNgAA-QkAINIDAAD6CQAg2AMAAAEAIAAAAAAACzYAAIcGADA3AACMBgAw0gMAAIgGADDTAwAAiQYAMNQDAACKBgAg1QMAAIsGADDWAwAAiwYAMNcDAACLBgAw2AMAAIsGADDZAwAAjQYAMNoDAACOBgAwBAoAAJQGACDbAkAAAAAB8gIBAAAAAfMCAgAAAAECAAAAHgAgNgAAkwYAIAMAAAAeACA2AACTBgAgNwAAkQYAIAEvAAD4CQAwCgoAAIAFACANAACDBQAg0gIAAIIFADDTAgAAHAAQ1AIAAIIFADDbAkAAwwQAIfICAQDABAAh8wICAOEEACGPAwEAwAQAIc4DAACBBQAgAgAAAB4AIC8AAJEGACACAAAAjwYAIC8AAJAGACAH0gIAAI4GADDTAgAAjwYAENQCAACOBgAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhjwMBAMAEACEH0gIAAI4GADDTAgAAjwYAENQCAACOBgAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhjwMBAMAEACED2wJAAKIFACHyAgEAoQUAIfMCAgC0BQAhBAoAAJIGACDbAkAAogUAIfICAQChBQAh8wICALQFACEFNgAA8wkAIDcAAPYJACDSAwAA9AkAINMDAAD1CQAg2AMAAC0AIAQKAACUBgAg2wJAAAAAAfICAQAAAAHzAgIAAAABAzYAAPMJACDSAwAA9AkAINgDAAAtACAENgAAhwYAMNIDAACIBgAw1AMAAIoGACDYAwAAiwYAMAAAAAAAAAHVAwAAAI8DAgU2AADrCQAgNwAA8QkAINIDAADsCQAg0wMAAPAJACDYAwAAGgAgBTYAAOkJACA3AADuCQAg0gMAAOoJACDTAwAA7QkAINgDAAAtACADNgAA6wkAINIDAADsCQAg2AMAABoAIAM2AADpCQAg0gMAAOoJACDYAwAALQAgAAAAAAAFNgAA5AkAIDcAAOcJACDSAwAA5QkAINMDAADmCQAg2AMAAMICACADNgAA5AkAINIDAADlCQAg2AMAAMICACAAAAAAAAU2AADECQAgNwAA4gkAINIDAADFCQAg0wMAAOEJACDYAwAAGgAgBzYAAL0HACA3AADXBwAg0gMAAL4HACDTAwAA1gcAINYDAAAXACDXAwAAFwAg2AMAABoAIAs2AADHBgAwNwAAzAYAMNIDAADIBgAw0wMAAMkGADDUAwAAygYAINUDAADLBgAw1gMAAMsGADDXAwAAywYAMNgDAADLBgAw2QMAAM0GADDaAwAAzgYAMAs2AAC-BgAwNwAAwgYAMNIDAAC_BgAw0wMAAMAGADDUAwAAwQYAINUDAACLBgAw1gMAAIsGADDXAwAAiwYAMNgDAACLBgAw2QMAAMMGADDaAwAAjgYAMAs2AACyBgAwNwAAtwYAMNIDAACzBgAw0wMAALQGADDUAwAAtQYAINUDAAC2BgAw1gMAALYGADDXAwAAtgYAMNgDAAC2BgAw2QMAALgGADDaAwAAuQYAMAUHAACfBgAg1QIBAAAAAdsCQAAAAAH7AgAAAI8DAo0DAQAAAAECAAAAJAAgNgAAvQYAIAMAAAAkACA2AAC9BgAgNwAAvAYAIAEvAADgCQAwCwcAAOsEACAPAACABQAg0gIAAP4EADDTAgAAIgAQ1AIAAP4EADDVAgEAAAAB2wJAAMMEACHyAgEAwAQAIfsCAAD_BI8DIowDAgDhBAAhjQMBAMAEACECAAAAJAAgLwAAvAYAIAIAAAC6BgAgLwAAuwYAIAnSAgAAuQYAMNMCAAC6BgAQ1AIAALkGADDVAgEAwAQAIdsCQADDBAAh8gIBAMAEACH7AgAA_wSPAyKMAwIA4QQAIY0DAQDABAAhCdICAAC5BgAw0wIAALoGABDUAgAAuQYAMNUCAQDABAAh2wJAAMMEACHyAgEAwAQAIfsCAAD_BI8DIowDAgDhBAAhjQMBAMAEACEE1QIBAKEFACHbAkAAogUAIfsCAACcBo8DIo0DAQChBQAhBQcAAJ0GACDVAgEAoQUAIdsCQACiBQAh-wIAAJwGjwMijQMBAKEFACEFBwAAnwYAINUCAQAAAAHbAkAAAAAB-wIAAACPAwKNAwEAAAABAw0AAKcGACDbAkAAAAABjwMBAAAAAQIAAAAeACA2AADGBgAgAwAAAB4AIDYAAMYGACA3AADFBgAgAS8AAN8JADACAAAAHgAgLwAAxQYAIAIAAACPBgAgLwAAxAYAIALbAkAAogUAIY8DAQChBQAhAw0AAKYGACDbAkAAogUAIY8DAQChBQAhAw0AAKcGACDbAkAAAAABjwMBAAAAARgRAADOBwAgEgAAvwcAIBMAAMAHACAVAADCBwAgFgAAwwcAIBgAAMQHACAZAADFBwAgGgAAxgcAIBsAAMcHACAcAADIBwAgIAAAyQcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAgAAABoAIDYAANUHACADAAAAGgAgNgAA1QcAIDcAANMGACABLwAA3gkAMB8RAACHBQAgEgAA8QQAIBMAAPwEACAUAACHBQAgFQAAiAUAIBYAAIkFACAYAACKBQAgGQAA_QQAIBoAAIsFACAbAACMBQAgHAAAjQUAICAAAO4EACDSAgAAhQUAMNMCAAAXABDUAgAAhQUAMNUCAQAAAAHbAkAAwwQAIfACAgAAAAH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAhzwMAAIQFACACAAAAGgAgLwAA0wYAIAIAAADPBgAgLwAA0AYAIBLSAgAAzgYAMNMCAADPBgAQ1AIAAM4GADDVAgEAwAQAIdsCQADDBAAh8AICAMEEACH2AkAAwwQAIfgCQADjBAAhmAMCAMEEACGZAwEAwgQAIZoDAgDBBAAhnAMAAIYFnAMinQMgAOIEACGeAyAA4gQAIZ8DAgDhBAAhoAMCAOEEACGhAwIA4QQAIaIDAgDhBAAhEtICAADOBgAw0wIAAM8GABDUAgAAzgYAMNUCAQDABAAh2wJAAMMEACHwAgIAwQQAIfYCQADDBAAh-AJAAOMEACGYAwIAwQQAIZkDAQDCBAAhmgMCAMEEACGcAwAAhgWcAyKdAyAA4gQAIZ4DIADiBAAhnwMCAOEEACGgAwIA4QQAIaEDAgDhBAAhogMCAOEEACEN1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhAdUDAAAAnAMCAdUDIAAAAAEYEQAA1AYAIBIAANUGACATAADWBgAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAbAADcBgAgHAAA3QYAICAAAN4GACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEHNgAAywkAIDcAANwJACDSAwAAzAkAINMDAADbCQAg1gMAABUAINcDAAAVACDYAwAALQAgBzYAAM4JACA3AADZCQAg0gMAAM8JACDTAwAA2AkAINYDAAAXACDXAwAAFwAg2AMAABoAIAs2AADKBwAwNwAA0AcAMNIDAADLBwAw0wMAAM8HADDUAwAAzAcAINUDAADLBgAw1gMAAMsGADDXAwAAywYAMNgDAADLBgAw2QMAANEHADDaAwAAzgYAMAs2AACtBwAwNwAAsgcAMNIDAACuBwAw0wMAAK8HADDUAwAAsAcAINUDAACxBwAw1gMAALEHADDXAwAAsQcAMNgDAACxBwAw2QMAALMHADDaAwAAtAcAMAs2AAChBwAwNwAApgcAMNIDAACiBwAw0wMAAKMHADDUAwAApAcAINUDAAClBwAw1gMAAKUHADDXAwAApQcAMNgDAAClBwAw2QMAAKcHADDaAwAAqAcAMAs2AACVBwAwNwAAmgcAMNIDAACWBwAw0wMAAJcHADDUAwAAmAcAINUDAACZBwAw1gMAAJkHADDXAwAAmQcAMNgDAACZBwAw2QMAAJsHADDaAwAAnAcAMAs2AACMBwAwNwAAkAcAMNIDAACNBwAw0wMAAI4HADDUAwAAjwcAINUDAAC2BgAw1gMAALYGADDXAwAAtgYAMNgDAAC2BgAw2QMAAJEHADDaAwAAuQYAMAs2AACABwAwNwAAhQcAMNIDAACBBwAw0wMAAIIHADDUAwAAgwcAINUDAACEBwAw1gMAAIQHADDXAwAAhAcAMNgDAACEBwAw2QMAAIYHADDaAwAAhwcAMAs2AAD0BgAwNwAA-QYAMNIDAAD1BgAw0wMAAPYGADDUAwAA9wYAINUDAAD4BgAw1gMAAPgGADDXAwAA-AYAMNgDAAD4BgAw2QMAAPoGADDaAwAA-wYAMAs2AADoBgAwNwAA7QYAMNIDAADpBgAw0wMAAOoGADDUAwAA6wYAINUDAADsBgAw1gMAAOwGADDXAwAA7AYAMNgDAADsBgAw2QMAAO4GADDaAwAA7wYAMAs2AADfBgAwNwAA4wYAMNIDAADgBgAw0wMAAOEGADDUAwAA4gYAINUDAADKBQAw1gMAAMoFADDXAwAAygUAMNgDAADKBQAw2QMAAOQGADDaAwAAzQUAMA8DAADTBQAgGgAA1QUAIB0AANYFACAeAADUBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfECAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAECAAAARgAgNgAA5wYAIAMAAABGACA2AADnBgAgNwAA5gYAIAEvAADXCQAwAgAAAEYAIC8AAOYGACACAAAAzgUAIC8AAOUGACAL1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8AICALIFACHxAgEAswUAIfMCAgCyBQAh9AIBALMFACH1AgIAtAUAIfYCQACiBQAh9wJAAKMFACH4AkAAowUAIQ8DAAC2BQAgGgAAuQUAIB0AALcFACAeAAC4BQAg1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8AICALIFACHxAgEAswUAIfMCAgCyBQAh9AIBALMFACH1AgIAtAUAIfYCQACiBQAh9wJAAKMFACH4AkAAowUAIQ8DAADTBQAgGgAA1QUAIB0AANYFACAeAADUBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfECAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAEHAwAA3gUAIC-AAAAAAdUCAQAAAAHbAkAAAAAB7wIBAAAAAfYCQAAAAAH5AgIAAAABAgAAAEEAIDYAAPMGACADAAAAQQAgNgAA8wYAIDcAAPIGACABLwAA1gkAMAwDAADkBAAgBwAA8QQAIC8AAOYEACDSAgAA8AQAMNMCAAA_ABDUAgAA8AQAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh8gIBAMIEACH2AkAAwwQAIfkCAgDhBAAhAgAAAEEAIC8AAPIGACACAAAA8AYAIC8AAPEGACAKLwAA5gQAINICAADvBgAw0wIAAPAGABDUAgAA7wYAMNUCAQDABAAh2wJAAMMEACHvAgEAwAQAIfICAQDCBAAh9gJAAMMEACH5AgIA4QQAIQovAADmBAAg0gIAAO8GADDTAgAA8AYAENQCAADvBgAw1QIBAMAEACHbAkAAwwQAIe8CAQDABAAh8gIBAMIEACH2AkAAwwQAIfkCAgDhBAAhBi-AAAAAAdUCAQChBQAh2wJAAKIFACHvAgEAoQUAIfYCQACiBQAh-QICALQFACEHAwAA3AUAIC-AAAAAAdUCAQChBQAh2wJAAKIFACHvAgEAoQUAIfYCQACiBQAh-QICALQFACEHAwAA3gUAIC-AAAAAAdUCAQAAAAHbAkAAAAAB7wIBAAAAAfYCQAAAAAH5AgIAAAABDAMAAOkFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHzAgIAAAAB-wIAAAD7AgL8AgEAAAAB_QIBAAAAAf4CAQAAAAH_AgEAAAABgAOAAAAAAYEDAQAAAAECAAAAPAAgNgAA_wYAIAMAAAA8ACA2AAD_BgAgNwAA_gYAIAEvAADVCQAwEQMAAOwEACAHAADrBAAg0gIAAPIEADDTAgAAOgAQ1AIAAPIEADDVAgEAAAAB2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACECAAAAPAAgLwAA_gYAIAIAAAD8BgAgLwAA_QYAIA_SAgAA-wYAMNMCAAD8BgAQ1AIAAPsGADDVAgEAwAQAIdsCQADDBAAh7wIBAMIEACHyAgEAwAQAIfMCAgDBBAAh-wIAAPME-wIi_AIBAMIEACH9AgEAwgQAIf4CAQDCBAAh_wIBAMIEACGAAwAA9AQAIIEDAQDCBAAhD9ICAAD7BgAw0wIAAPwGABDUAgAA-wYAMNUCAQDABAAh2wJAAMMEACHvAgEAwgQAIfICAQDABAAh8wICAMEEACH7AgAA8wT7AiL8AgEAwgQAIf0CAQDCBAAh_gIBAMIEACH_AgEAwgQAIYADAAD0BAAggQMBAMIEACEL1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8wICALIFACH7AgAA5QX7AiL8AgEAswUAIf0CAQCzBQAh_gIBALMFACH_AgEAswUAIYADgAAAAAGBAwEAswUAIQwDAADnBQAg1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8wICALIFACH7AgAA5QX7AiL8AgEAswUAIf0CAQCzBQAh_gIBALMFACH_AgEAswUAIYADgAAAAAGBAwEAswUAIQwDAADpBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8wICAAAAAfsCAAAA-wIC_AIBAAAAAf0CAQAAAAH-AgEAAAAB_wIBAAAAAYADgAAAAAGBAwEAAAABAwMAAPAFACDbAkAAAAAB7wIBAAAAAQIAAAA4ACA2AACLBwAgAwAAADgAIDYAAIsHACA3AACKBwAgAS8AANQJADAJAwAA5AQAIAcAAOsEACDSAgAA9gQAMNMCAAA2ABDUAgAA9gQAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIcsDAAD1BAAgAgAAADgAIC8AAIoHACACAAAAiAcAIC8AAIkHACAG0gIAAIcHADDTAgAAiAcAENQCAACHBwAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhBtICAACHBwAw0wIAAIgHABDUAgAAhwcAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIQLbAkAAogUAIe8CAQChBQAhAwMAAO4FACDbAkAAogUAIe8CAQChBQAhAwMAAPAFACDbAkAAAAAB7wIBAAAAAQYPAACgBgAg1QIBAAAAAdsCQAAAAAH7AgAAAI8DAowDAgAAAAGNAwEAAAABAgAAACQAIDYAAJQHACADAAAAJAAgNgAAlAcAIDcAAJMHACABLwAA0wkAMAIAAAAkACAvAACTBwAgAgAAALoGACAvAACSBwAgBdUCAQChBQAh2wJAAKIFACH7AgAAnAaPAyKMAwIAtAUAIY0DAQChBQAhBg8AAJ4GACDVAgEAoQUAIdsCQACiBQAh-wIAAJwGjwMijAMCALQFACGNAwEAoQUAIQYPAACgBgAg1QIBAAAAAdsCQAAAAAH7AgAAAI8DAowDAgAAAAGNAwEAAAABBRcAAPgFACDVAgEAAAAB2wJAAAAAAYIDAQAAAAGEAwAAAIQDAgIAAAAyACA2AACgBwAgAwAAADIAIDYAAKAHACA3AACfBwAgAS8AANIJADALBwAA6wQAIBcAAOwEACDSAgAA-AQAMNMCAAAwABDUAgAA-AQAMNUCAQAAAAHbAkAAwwQAIfICAQDABAAhggMBAMIEACGEAwAA-QSEAyLMAwAA9wQAIAIAAAAyACAvAACfBwAgAgAAAJ0HACAvAACeBwAgCNICAACcBwAw0wIAAJ0HABDUAgAAnAcAMNUCAQDABAAh2wJAAMMEACHyAgEAwAQAIYIDAQDCBAAhhAMAAPkEhAMiCNICAACcBwAw0wIAAJ0HABDUAgAAnAcAMNUCAQDABAAh2wJAAMMEACHyAgEAwAQAIYIDAQDCBAAhhAMAAPkEhAMiBNUCAQChBQAh2wJAAKIFACGCAwEAswUAIYQDAAD0BYQDIgUXAAD2BQAg1QIBAKEFACHbAkAAogUAIYIDAQCzBQAhhAMAAPQFhAMiBRcAAPgFACDVAgEAAAAB2wJAAAAAAYIDAQAAAAGEAwAAAIQDAgQDAACABgAg2wJAAAAAAe8CAQAAAAGGAwAAAIYDAgIAAAATACA2AACsBwAgAwAAABMAIDYAAKwHACA3AACrBwAgAS8AANEJADAKAwAA5AQAIAcAAOsEACDSAgAAjwUAMNMCAAARABDUAgAAjwUAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIYYDAACQBYYDIssDAACOBQAgAgAAABMAIC8AAKsHACACAAAAqQcAIC8AAKoHACAH0gIAAKgHADDTAgAAqQcAENQCAACoBwAw2wJAAMMEACHvAgEAwAQAIfICAQDABAAhhgMAAJAFhgMiB9ICAACoBwAw0wIAAKkHABDUAgAAqAcAMNsCQADDBAAh7wIBAMAEACHyAgEAwAQAIYYDAACQBYYDIgPbAkAAogUAIe8CAQChBQAhhgMAAPwFhgMiBAMAAP4FACDbAkAAogUAIe8CAQChBQAhhgMAAPwFhgMiBAMAAIAGACDbAkAAAAAB7wIBAAAAAYYDAAAAhgMCDggAALkHACAJAAC6BwAgDgAAuwcAIBAAALwHACDbAkAAAAAB8wICAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDAQAAAAGXA0AAAAABAgAAAC0AIDYAALgHACADAAAALQAgNgAAuAcAIDcAALcHACABLwAA0AkAMBQHAADrBAAgCAAA8QQAIAkAAPwEACAOAADEBAAgEAAA_QQAINICAAD7BAAw0wIAABUAENQCAAD7BAAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhkAMBAMAEACGRAwEAwgQAIZIDAQDCBAAhkwMBAMIEACGUAwEAwAQAIZUDAQDCBAAhlgMBAMIEACGXA0AA4wQAIc0DAAD6BAAgAgAAAC0AIC8AALcHACACAAAAtQcAIC8AALYHACAO0gIAALQHADDTAgAAtQcAENQCAAC0BwAw2wJAAMMEACHyAgEAwAQAIfMCAgDhBAAhkAMBAMAEACGRAwEAwgQAIZIDAQDCBAAhkwMBAMIEACGUAwEAwAQAIZUDAQDCBAAhlgMBAMIEACGXA0AA4wQAIQ7SAgAAtAcAMNMCAAC1BwAQ1AIAALQHADDbAkAAwwQAIfICAQDABAAh8wICAOEEACGQAwEAwAQAIZEDAQDCBAAhkgMBAMIEACGTAwEAwgQAIZQDAQDABAAhlQMBAMIEACGWAwEAwgQAIZcDQADjBAAhCtsCQACiBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhDggAAK4GACAJAACvBgAgDgAAsAYAIBAAALEGACDbAkAAogUAIfMCAgC0BQAhkAMBAKEFACGRAwEAswUAIZIDAQCzBQAhkwMBALMFACGUAwEAoQUAIZUDAQCzBQAhlgMBALMFACGXA0AAowUAIQ4IAAC5BwAgCQAAugcAIA4AALsHACAQAAC8BwAg2wJAAAAAAfMCAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwEAAAABlwNAAAAAAQM2AAC9BwAg0gMAAL4HACDYAwAAGgAgBDYAAMcGADDSAwAAyAYAMNQDAADKBgAg2AMAAMsGADAENgAAvgYAMNIDAAC_BgAw1AMAAMEGACDYAwAAiwYAMAQ2AACyBgAw0gMAALMGADDUAwAAtQYAINgDAAC2BgAwGBIAAL8HACATAADABwAgFAAAwQcAIBUAAMIHACAWAADDBwAgGAAAxAcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZkDAQAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAAvQcAIAM2AADOCQAg0gMAAM8JACDYAwAAGgAgBDYAAMoHADDSAwAAywcAMNQDAADMBwAg2AMAAMsGADADNgAAxgkAINIDAADHCQAg2AMAAC0AIAQ2AACtBwAw0gMAAK4HADDUAwAAsAcAINgDAACxBwAwBDYAAKEHADDSAwAAogcAMNQDAACkBwAg2AMAAKUHADAENgAAlQcAMNIDAACWBwAw1AMAAJgHACDYAwAAmQcAMAQ2AACMBwAw0gMAAI0HADDUAwAAjwcAINgDAAC2BgAwBDYAAIAHADDSAwAAgQcAMNQDAACDBwAg2AMAAIQHADAENgAA9AYAMNIDAAD1BgAw1AMAAPcGACDYAwAA-AYAMAQ2AADoBgAw0gMAAOkGADDUAwAA6wYAINgDAADsBgAwBDYAAN8GADDSAwAA4AYAMNQDAADiBgAg2AMAAMoFADAZEQAAzgcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgHAAAyAcAICAAAMkHACDVAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZgDAgAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAAzQcAIAEvAADNCQAwGREAAM4HACATAADABwAgFAAAwQcAIBUAAMIHACAWAADDBwAgGAAAxAcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmgMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAzYAAMsJACDSAwAAzAkAINgDAAAtACADAAAAGgAgNgAAzQcAIDcAANMHACACAAAAGgAgLwAA0wcAIAIAAADPBgAgLwAA0gcAIA7VAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRkRAADUBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhBzYAAMYJACA3AADJCQAg0gMAAMcJACDTAwAAyAkAINYDAAAVACDXAwAAFQAg2AMAAC0AIBgRAADOBwAgEgAAvwcAIBMAAMAHACAVAADCBwAgFgAAwwcAIBgAAMQHACAZAADFBwAgGgAAxgcAIBsAAMcHACAcAADIBwAgIAAAyQcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAwAAABcAIDYAAL0HACA3AADYBwAgGgAAABcAIBIAANUGACATAADWBgAgFAAA1AcAIBUAANcGACAWAADYBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAgLwAA2AcAINsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRgSAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAINsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIQM2AADECQAg0gMAAMUJACDYAwAAGgAgAAAAAAAAAAAAAAU2AAC_CQAgNwAAwgkAINIDAADACQAg0wMAAMEJACDYAwAAAQAgAzYAAL8JACDSAwAAwAkAINgDAAABACAAAAAHNgAAugkAIDcAAL0JACDSAwAAuwkAINMDAAC8CQAg1gMAAA8AINcDAAAPACDYAwAAAQAgAzYAALoJACDSAwAAuwkAINgDAAABACAAAAAFNgAAtQkAIDcAALgJACDSAwAAtgkAINMDAAC3CQAg2AMAAAEAIAM2AAC1CQAg0gMAALYJACDYAwAAAQAgAAAABTYAALAJACA3AACzCQAg0gMAALEJACDTAwAAsgkAINgDAAABACADNgAAsAkAINIDAACxCQAg2AMAAAEAIAAAAAAAAdUDAAAAvQMCAdUDAAAAvwMCAdUDIAAAAAELNgAA-AgAMDcAAP0IADDSAwAA-QgAMNMDAAD6CAAw1AMAAPsIACDVAwAA_AgAMNYDAAD8CAAw1wMAAPwIADDYAwAA_AgAMNkDAAD-CAAw2gMAAP8IADALNgAA7AgAMDcAAPEIADDSAwAA7QgAMNMDAADuCAAw1AMAAO8IACDVAwAA8AgAMNYDAADwCAAw1wMAAPAIADDYAwAA8AgAMNkDAADyCAAw2gMAAPMIADALNgAA4AgAMDcAAOUIADDSAwAA4QgAMNMDAADiCAAw1AMAAOMIACDVAwAA5AgAMNYDAADkCAAw1wMAAOQIADDYAwAA5AgAMNkDAADmCAAw2gMAAOcIADALNgAA1wgAMDcAANsIADDSAwAA2AgAMNMDAADZCAAw1AMAANoIACDVAwAApQcAMNYDAAClBwAw1wMAAKUHADDYAwAApQcAMNkDAADcCAAw2gMAAKgHADALNgAAzggAMDcAANIIADDSAwAAzwgAMNMDAADQCAAw1AMAANEIACDVAwAAmQcAMNYDAACZBwAw1wMAAJkHADDYAwAAmQcAMNkDAADTCAAw2gMAAJwHADALNgAAwggAMDcAAMcIADDSAwAAwwgAMNMDAADECAAw1AMAAMUIACDVAwAAxggAMNYDAADGCAAw1wMAAMYIADDYAwAAxggAMNkDAADICAAw2gMAAMkIADALNgAAuQgAMDcAAL0IADDSAwAAuggAMNMDAAC7CAAw1AMAALwIACDVAwAAhAcAMNYDAACEBwAw1wMAAIQHADDYAwAAhAcAMNkDAAC-CAAw2gMAAIcHADALNgAAsAgAMDcAALQIADDSAwAAsQgAMNMDAACyCAAw1AMAALMIACDVAwAA-AYAMNYDAAD4BgAw1wMAAPgGADDYAwAA-AYAMNkDAAC1CAAw2gMAAPsGADALNgAApwgAMDcAAKsIADDSAwAAqAgAMNMDAACpCAAw1AMAAKoIACDVAwAA7AYAMNYDAADsBgAw1wMAAOwGADDYAwAA7AYAMNkDAACsCAAw2gMAAO8GADALNgAAnggAMDcAAKIIADDSAwAAnwgAMNMDAACgCAAw1AMAAKEIACDVAwAAygUAMNYDAADKBQAw1wMAAMoFADDYAwAAygUAMNkDAACjCAAw2gMAAM0FADALNgAAlQgAMDcAAJkIADDSAwAAlggAMNMDAACXCAAw1AMAAJgIACDVAwAAvgUAMNYDAAC-BQAw1wMAAL4FADDYAwAAvgUAMNkDAACaCAAw2gMAAMEFADALNgAAiQgAMDcAAI4IADDSAwAAiggAMNMDAACLCAAw1AMAAIwIACDVAwAAjQgAMNYDAACNCAAw1wMAAI0IADDYAwAAjQgAMNkDAACPCAAw2gMAAJAIADAK1QIBAAAAAdsCQAAAAAGHAwEAAAABowMBAAAAAaQDAQAAAAGlAwIAAAABpgMBAAAAAacDIAAAAAGoAwEAAAABqQMBAAAAAQIAAABmACA2AACUCAAgAwAAAGYAIDYAAJQIACA3AACTCAAgAS8AAK8JADAPAwAA5AQAINICAADgBAAw0wIAAGQAENQCAADgBAAw1QIBAAAAAdsCQADjBAAh7wIBAMAEACGHAwEAwgQAIaMDAQDABAAhpAMBAMAEACGlAwIA4QQAIaYDAQDABAAhpwMgAOIEACGoAwEAwgQAIakDAQDCBAAhAgAAAGYAIC8AAJMIACACAAAAkQgAIC8AAJIIACAO0gIAAJAIADDTAgAAkQgAENQCAACQCAAw1QIBAMAEACHbAkAA4wQAIe8CAQDABAAhhwMBAMIEACGjAwEAwAQAIaQDAQDABAAhpQMCAOEEACGmAwEAwAQAIacDIADiBAAhqAMBAMIEACGpAwEAwgQAIQ7SAgAAkAgAMNMCAACRCAAQ1AIAAJAIADDVAgEAwAQAIdsCQADjBAAh7wIBAMAEACGHAwEAwgQAIaMDAQDABAAhpAMBAMAEACGlAwIA4QQAIaYDAQDABAAhpwMgAOIEACGoAwEAwgQAIakDAQDCBAAhCtUCAQChBQAh2wJAAKMFACGHAwEAswUAIaMDAQChBQAhpAMBAKEFACGlAwIAtAUAIaYDAQChBQAhpwMgANIGACGoAwEAswUAIakDAQCzBQAhCtUCAQChBQAh2wJAAKMFACGHAwEAswUAIaMDAQChBQAhpAMBAKEFACGlAwIAtAUAIaYDAQChBQAhpwMgANIGACGoAwEAswUAIakDAQCzBQAhCtUCAQAAAAHbAkAAAAABhwMBAAAAAaMDAQAAAAGkAwEAAAABpQMCAAAAAaYDAQAAAAGnAyAAAAABqAMBAAAAAakDAQAAAAEDHwAAqwUAINsCQAAAAAHuAgEAAAABAgAAAE0AIDYAAJ0IACADAAAATQAgNgAAnQgAIDcAAJwIACABLwAArgkAMAIAAABNACAvAACcCAAgAgAAAMIFACAvAACbCAAgAtsCQACiBQAh7gIBAKEFACEDHwAAqQUAINsCQACiBQAh7gIBAKEFACEDHwAAqwUAINsCQAAAAAHuAgEAAAABDwcAANIFACAaAADVBQAgHQAA1gUAIB4AANQFACDVAgEAAAAB2wJAAAAAAfACAgAAAAHxAgEAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQIAAABGACA2AACmCAAgAwAAAEYAIDYAAKYIACA3AAClCAAgAS8AAK0JADACAAAARgAgLwAApQgAIAIAAADOBQAgLwAApAgAIAvVAgEAoQUAIdsCQACiBQAh8AICALIFACHxAgEAswUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhDwcAALUFACAaAAC5BQAgHQAAtwUAIB4AALgFACDVAgEAoQUAIdsCQACiBQAh8AICALIFACHxAgEAswUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhDwcAANIFACAaAADVBQAgHQAA1gUAIB4AANQFACDVAgEAAAAB2wJAAAAAAfACAgAAAAHxAgEAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQcHAADfBQAgL4AAAAAB1QIBAAAAAdsCQAAAAAHyAgEAAAAB9gJAAAAAAfkCAgAAAAECAAAAQQAgNgAArwgAIAMAAABBACA2AACvCAAgNwAArggAIAEvAACsCQAwAgAAAEEAIC8AAK4IACACAAAA8AYAIC8AAK0IACAGL4AAAAAB1QIBAKEFACHbAkAAogUAIfICAQCzBQAh9gJAAKIFACH5AgIAtAUAIQcHAADdBQAgL4AAAAAB1QIBAKEFACHbAkAAogUAIfICAQCzBQAh9gJAAKIFACH5AgIAtAUAIQcHAADfBQAgL4AAAAAB1QIBAAAAAdsCQAAAAAHyAgEAAAAB9gJAAAAAAfkCAgAAAAEMBwAA6AUAINUCAQAAAAHbAkAAAAAB8gIBAAAAAfMCAgAAAAH7AgAAAPsCAvwCAQAAAAH9AgEAAAAB_gIBAAAAAf8CAQAAAAGAA4AAAAABgQMBAAAAAQIAAAA8ACA2AAC4CAAgAwAAADwAIDYAALgIACA3AAC3CAAgAS8AAKsJADACAAAAPAAgLwAAtwgAIAIAAAD8BgAgLwAAtggAIAvVAgEAoQUAIdsCQACiBQAh8gIBAKEFACHzAgIAsgUAIfsCAADlBfsCIvwCAQCzBQAh_QIBALMFACH-AgEAswUAIf8CAQCzBQAhgAOAAAAAAYEDAQCzBQAhDAcAAOYFACDVAgEAoQUAIdsCQACiBQAh8gIBAKEFACHzAgIAsgUAIfsCAADlBfsCIvwCAQCzBQAh_QIBALMFACH-AgEAswUAIf8CAQCzBQAhgAOAAAAAAYEDAQCzBQAhDAcAAOgFACDVAgEAAAAB2wJAAAAAAfICAQAAAAHzAgIAAAAB-wIAAAD7AgL8AgEAAAAB_QIBAAAAAf4CAQAAAAH_AgEAAAABgAOAAAAAAYEDAQAAAAEDBwAA7wUAINsCQAAAAAHyAgEAAAABAgAAADgAIDYAAMEIACADAAAAOAAgNgAAwQgAIDcAAMAIACABLwAAqgkAMAIAAAA4ACAvAADACAAgAgAAAIgHACAvAAC_CAAgAtsCQACiBQAh8gIBAKEFACEDBwAA7QUAINsCQACiBQAh8gIBAKEFACEDBwAA7wUAINsCQAAAAAHyAgEAAAABB9UCAQAAAAHWAgEAAAAB2AIBAAAAAdkCAQAAAAHaAoAAAAAB2wJAAAAAAdwCQAAAAAECAAAAXQAgNgAAzQgAIAMAAABdACA2AADNCAAgNwAAzAgAIAEvAACpCQAwDCMAAOQEACDSAgAA5QQAMNMCAABbABDUAgAA5QQAMNUCAQAAAAHWAgEAwAQAIdcCAQDABAAh2AIBAMAEACHZAgEAwAQAIdoCAADmBAAg2wJAAMMEACHcAkAA4wQAIQIAAABdACAvAADMCAAgAgAAAMoIACAvAADLCAAgC9ICAADJCAAw0wIAAMoIABDUAgAAyQgAMNUCAQDABAAh1gIBAMAEACHXAgEAwAQAIdgCAQDABAAh2QIBAMAEACHaAgAA5gQAINsCQADDBAAh3AJAAOMEACEL0gIAAMkIADDTAgAAyggAENQCAADJCAAw1QIBAMAEACHWAgEAwAQAIdcCAQDABAAh2AIBAMAEACHZAgEAwAQAIdoCAADmBAAg2wJAAMMEACHcAkAA4wQAIQfVAgEAoQUAIdYCAQChBQAh2AIBAKEFACHZAgEAoQUAIdoCgAAAAAHbAkAAogUAIdwCQACjBQAhB9UCAQChBQAh1gIBAKEFACHYAgEAoQUAIdkCAQChBQAh2gKAAAAAAdsCQACiBQAh3AJAAKMFACEH1QIBAAAAAdYCAQAAAAHYAgEAAAAB2QIBAAAAAdoCgAAAAAHbAkAAAAAB3AJAAAAAAQUHAAD3BQAg1QIBAAAAAdsCQAAAAAHyAgEAAAABhAMAAACEAwICAAAAMgAgNgAA1ggAIAMAAAAyACA2AADWCAAgNwAA1QgAIAEvAACoCQAwAgAAADIAIC8AANUIACACAAAAnQcAIC8AANQIACAE1QIBAKEFACHbAkAAogUAIfICAQChBQAhhAMAAPQFhAMiBQcAAPUFACDVAgEAoQUAIdsCQACiBQAh8gIBAKEFACGEAwAA9AWEAyIFBwAA9wUAINUCAQAAAAHbAkAAAAAB8gIBAAAAAYQDAAAAhAMCBAcAAP8FACDbAkAAAAAB8gIBAAAAAYYDAAAAhgMCAgAAABMAIDYAAN8IACADAAAAEwAgNgAA3wgAIDcAAN4IACABLwAApwkAMAIAAAATACAvAADeCAAgAgAAAKkHACAvAADdCAAgA9sCQACiBQAh8gIBAKEFACGGAwAA_AWGAyIEBwAA_QUAINsCQACiBQAh8gIBAKEFACGGAwAA_AWGAyIEBwAA_wUAINsCQAAAAAHyAgEAAAABhgMAAACGAwIG1QIBAAAAAdsCQAAAAAH2AkAAAAABqgMBAAAAAasDAQAAAAGsA0AAAAABAgAAAA0AIDYAAOsIACADAAAADQAgNgAA6wgAIDcAAOoIACABLwAApgkAMAsDAADsBAAg0gIAAJoFADDTAgAACwAQ1AIAAJoFADDVAgEAAAAB2wJAAOMEACHvAgEAwgQAIfYCQADjBAAhqgMBAMAEACGrAwEAwAQAIawDQADDBAAhAgAAAA0AIC8AAOoIACACAAAA6AgAIC8AAOkIACAK0gIAAOcIADDTAgAA6AgAENQCAADnCAAw1QIBAMAEACHbAkAA4wQAIe8CAQDCBAAh9gJAAOMEACGqAwEAwAQAIasDAQDABAAhrANAAMMEACEK0gIAAOcIADDTAgAA6AgAENQCAADnCAAw1QIBAMAEACHbAkAA4wQAIe8CAQDCBAAh9gJAAOMEACGqAwEAwAQAIasDAQDABAAhrANAAMMEACEG1QIBAKEFACHbAkAAowUAIfYCQACjBQAhqgMBAKEFACGrAwEAoQUAIawDQACiBQAhBtUCAQChBQAh2wJAAKMFACH2AkAAowUAIaoDAQChBQAhqwMBAKEFACGsA0AAogUAIQbVAgEAAAAB2wJAAAAAAfYCQAAAAAGqAwEAAAABqwMBAAAAAawDQAAAAAEI1QIBAAAAAdsCQAAAAAH2AkAAAAAB_gIBAAAAAawDQAAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAECAAAACQAgNgAA9wgAIAMAAAAJACA2AAD3CAAgNwAA9ggAIAEvAAClCQAwDQMAAOQEACDSAgAAmwUAMNMCAAAHABDUAgAAmwUAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACH-AgEAwgQAIawDQADDBAAhrQMBAAAAAa4DAQDCBAAhrwMBAMIEACECAAAACQAgLwAA9ggAIAIAAAD0CAAgLwAA9QgAIAzSAgAA8wgAMNMCAAD0CAAQ1AIAAPMIADDVAgEAwAQAIdsCQADDBAAh7wIBAMAEACH2AkAAwwQAIf4CAQDCBAAhrANAAMMEACGtAwEAwAQAIa4DAQDCBAAhrwMBAMIEACEM0gIAAPMIADDTAgAA9AgAENQCAADzCAAw1QIBAMAEACHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACH-AgEAwgQAIawDQADDBAAhrQMBAMAEACGuAwEAwgQAIa8DAQDCBAAhCNUCAQChBQAh2wJAAKIFACH2AkAAogUAIf4CAQCzBQAhrANAAKIFACGtAwEAoQUAIa4DAQCzBQAhrwMBALMFACEI1QIBAKEFACHbAkAAogUAIfYCQACiBQAh_gIBALMFACGsA0AAogUAIa0DAQChBQAhrgMBALMFACGvAwEAswUAIQjVAgEAAAAB2wJAAAAAAfYCQAAAAAH-AgEAAAABrANAAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAQzVAgEAAAAB2wJAAAAAAfYCQAAAAAGwAwEAAAABsQMBAAAAAbIDAQAAAAGzAwEAAAABtANAAAAAAbUDQAAAAAG2AwEAAAABtwMBAAAAAbgDAQAAAAECAAAABQAgNgAAgwkAIAMAAAAFACA2AACDCQAgNwAAggkAIAEvAACkCQAwEQMAAOQEACDSAgAAnAUAMNMCAAADABDUAgAAnAUAMNUCAQAAAAHbAkAAwwQAIe8CAQDABAAh9gJAAMMEACGwAwEAwAQAIbEDAQDABAAhsgMBAMIEACGzAwEAwgQAIbQDQADjBAAhtQNAAOMEACG2AwEAwgQAIbcDAQDCBAAhuAMBAMIEACECAAAABQAgLwAAggkAIAIAAACACQAgLwAAgQkAIBDSAgAA_wgAMNMCAACACQAQ1AIAAP8IADDVAgEAwAQAIdsCQADDBAAh7wIBAMAEACH2AkAAwwQAIbADAQDABAAhsQMBAMAEACGyAwEAwgQAIbMDAQDCBAAhtANAAOMEACG1A0AA4wQAIbYDAQDCBAAhtwMBAMIEACG4AwEAwgQAIRDSAgAA_wgAMNMCAACACQAQ1AIAAP8IADDVAgEAwAQAIdsCQADDBAAh7wIBAMAEACH2AkAAwwQAIbADAQDABAAhsQMBAMAEACGyAwEAwgQAIbMDAQDCBAAhtANAAOMEACG1A0AA4wQAIbYDAQDCBAAhtwMBAMIEACG4AwEAwgQAIQzVAgEAoQUAIdsCQACiBQAh9gJAAKIFACGwAwEAoQUAIbEDAQChBQAhsgMBALMFACGzAwEAswUAIbQDQACjBQAhtQNAAKMFACG2AwEAswUAIbcDAQCzBQAhuAMBALMFACEM1QIBAKEFACHbAkAAogUAIfYCQACiBQAhsAMBAKEFACGxAwEAoQUAIbIDAQCzBQAhswMBALMFACG0A0AAowUAIbUDQACjBQAhtgMBALMFACG3AwEAswUAIbgDAQCzBQAhDNUCAQAAAAHbAkAAAAAB9gJAAAAAAbADAQAAAAGxAwEAAAABsgMBAAAAAbMDAQAAAAG0A0AAAAABtQNAAAAAAbYDAQAAAAG3AwEAAAABuAMBAAAAAQQ2AAD4CAAw0gMAAPkIADDUAwAA-wgAINgDAAD8CAAwBDYAAOwIADDSAwAA7QgAMNQDAADvCAAg2AMAAPAIADAENgAA4AgAMNIDAADhCAAw1AMAAOMIACDYAwAA5AgAMAQ2AADXCAAw0gMAANgIADDUAwAA2ggAINgDAAClBwAwBDYAAM4IADDSAwAAzwgAMNQDAADRCAAg2AMAAJkHADAENgAAwggAMNIDAADDCAAw1AMAAMUIACDYAwAAxggAMAQ2AAC5CAAw0gMAALoIADDUAwAAvAgAINgDAACEBwAwBDYAALAIADDSAwAAsQgAMNQDAACzCAAg2AMAAPgGADAENgAApwgAMNIDAACoCAAw1AMAAKoIACDYAwAA7AYAMAQ2AACeCAAw0gMAAJ8IADDUAwAAoQgAINgDAADKBQAwBDYAAJUIADDSAwAAlggAMNQDAACYCAAg2AMAAL4FADAENgAAiQgAMNIDAACKCAAw1AMAAIwIACDYAwAAjQgAMAAAAAAAAAAAAAAAABsEAACQCQAgBQAAkQkAIAYAAJIJACAgAACZCQAgIQAAkwkAICIAAJQJACAkAACVCQAgJQAAlgkAICYAAJcJACAnAACYCQAgKAAAmgkAICkAAJsJACDwAgAAnQUAIPgCAACdBQAghgMAAJ0FACCHAwAAnQUAILkDAACdBQAguwMAAJ0FACDBAwAAnQUAIMIDAACdBQAgwwMAAJ0FACDEAwAAnQUAIMUDAACdBQAgxgMAAJ0FACDHAwAAnQUAIMgDAACdBQAgyQMAAJ0FACAMAwAAnAkAIAcAAJ4JACAaAACaCQAgHQAAnQkAIB4AAJkJACDvAgAAnQUAIPACAACdBQAg8QIAAJ0FACDzAgAAnQUAIPQCAACdBQAg9wIAAJ0FACD4AgAAnQUAIBERAAChCQAgEgAAngkAIBMAAJ8JACAUAAChCQAgFQAAowkAIBYAAJMJACAYAACUCQAgGQAAoAkAIBoAAJYJACAbAACXCQAgHAAAmAkAICAAAJkJACDwAgAAnQUAIPgCAACdBQAgmAMAAJ0FACCZAwAAnQUAIJoDAACdBQAgAAALBwAAngkAIAgAAJ4JACAJAACfCQAgDgAAlgYAIBAAAKAJACCRAwAAnQUAIJIDAACdBQAgkwMAAJ0FACCVAwAAnQUAIJYDAACdBQAglwMAAJ0FACADCwAAlgYAIPACAACdBQAgiAMAAJ0FACAADNUCAQAAAAHbAkAAAAAB9gJAAAAAAbADAQAAAAGxAwEAAAABsgMBAAAAAbMDAQAAAAG0A0AAAAABtQNAAAAAAbYDAQAAAAG3AwEAAAABuAMBAAAAAQjVAgEAAAAB2wJAAAAAAfYCQAAAAAH-AgEAAAABrANAAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAQbVAgEAAAAB2wJAAAAAAfYCQAAAAAGqAwEAAAABqwMBAAAAAawDQAAAAAED2wJAAAAAAfICAQAAAAGGAwAAAIYDAgTVAgEAAAAB2wJAAAAAAfICAQAAAAGEAwAAAIQDAgfVAgEAAAAB1gIBAAAAAdgCAQAAAAHZAgEAAAAB2gKAAAAAAdsCQAAAAAHcAkAAAAABAtsCQAAAAAHyAgEAAAABC9UCAQAAAAHbAkAAAAAB8gIBAAAAAfMCAgAAAAH7AgAAAPsCAvwCAQAAAAH9AgEAAAAB_gIBAAAAAf8CAQAAAAGAA4AAAAABgQMBAAAAAQYvgAAAAAHVAgEAAAAB2wJAAAAAAfICAQAAAAH2AkAAAAAB-QICAAAAAQvVAgEAAAAB2wJAAAAAAfACAgAAAAHxAgEAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQLbAkAAAAAB7gIBAAAAAQrVAgEAAAAB2wJAAAAAAYcDAQAAAAGjAwEAAAABpAMBAAAAAaUDAgAAAAGmAwEAAAABpwMgAAAAAagDAQAAAAGpAwEAAAABIQUAAIUJACAGAACGCQAgIAAAjQkAICEAAIcJACAiAACICQAgJAAAiQkAICUAAIoJACAmAACLCQAgJwAAjAkAICgAAI4JACApAACPCQAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAgAAAAEAIDYAALAJACADAAAADwAgNgAAsAkAIDcAALQJACAjAAAADwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAnAACFCAAgKAAAhwgAICkAAIgIACAvAAC0CQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQUAAP4HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAIQJACAGAACGCQAgIAAAjQkAICEAAIcJACAiAACICQAgJAAAiQkAICUAAIoJACAmAACLCQAgJwAAjAkAICgAAI4JACApAACPCQAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAgAAAAEAIDYAALUJACADAAAADwAgNgAAtQkAIDcAALkJACAjAAAADwAgBAAA_QcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAnAACFCAAgKAAAhwgAICkAAIgIACAvAAC5CQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAP0HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAIQJACAFAACFCQAgIAAAjQkAICEAAIcJACAiAACICQAgJAAAiQkAICUAAIoJACAmAACLCQAgJwAAjAkAICgAAI4JACApAACPCQAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAgAAAAEAIDYAALoJACADAAAADwAgNgAAugkAIDcAAL4JACAjAAAADwAgBAAA_QcAIAUAAP4HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAnAACFCAAgKAAAhwgAICkAAIgIACAvAAC-CQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAP0HACAFAAD-BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAIQJACAFAACFCQAgBgAAhgkAICAAAI0JACAhAACHCQAgIgAAiAkAICQAAIkJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGGAwEAAAABhwMBAAAAAbkDAQAAAAG6AyAAAAABuwMBAAAAAb0DAAAAvQMCvwMAAAC_AwLAAyAAAAABwQMBAAAAAcIDAQAAAAHDA4AAAAABxANAAAAAAcUDAQAAAAHGAyAAAAABxwMBAAAAAcgDQAAAAAHJA0AAAAABAgAAAAEAIDYAAL8JACADAAAADwAgNgAAvwkAIDcAAMMJACAjAAAADwAgBAAA_QcAIAUAAP4HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACAvAADDCQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhIQQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICQAAIIIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIYYDAQCzBQAhhwMBALMFACG5AwEAswUAIboDIADSBgAhuwMBALMFACG9AwAA-ge9AyK_AwAA-we_AyLAAyAA0gYAIcEDAQCzBQAhwgMBALMFACHDA4AAAAABxANAAKMFACHFAwEAswUAIcYDIAD8BwAhxwMBALMFACHIA0AAowUAIckDQACjBQAhGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAWAADDBwAgGAAAxAcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AADECQAgDwcAANkHACAIAAC5BwAgDgAAuwcAIBAAALwHACDbAkAAAAAB8gIBAAAAAfMCAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwEAAAABlwNAAAAAAQIAAAAtACA2AADGCQAgAwAAABUAIDYAAMYJACA3AADKCQAgEQAAABUAIAcAAK0GACAIAACuBgAgDgAAsAYAIBAAALEGACAvAADKCQAg2wJAAKIFACHyAgEAoQUAIfMCAgC0BQAhkAMBAKEFACGRAwEAswUAIZIDAQCzBQAhkwMBALMFACGUAwEAoQUAIZUDAQCzBQAhlgMBALMFACGXA0AAowUAIQ8HAACtBgAgCAAArgYAIA4AALAGACAQAACxBgAg2wJAAKIFACHyAgEAoQUAIfMCAgC0BQAhkAMBAKEFACGRAwEAswUAIZIDAQCzBQAhkwMBALMFACGUAwEAoQUAIZUDAQCzBQAhlgMBALMFACGXA0AAowUAIQ8HAADZBwAgCQAAugcAIA4AALsHACAQAAC8BwAg2wJAAAAAAfICAQAAAAHzAgIAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGVAwEAAAABlgMBAAAAAZcDQAAAAAECAAAALQAgNgAAywkAIA7VAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZgDAgAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAEaEQAAzgcAIBIAAL8HACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgHAAAyAcAICAAAMkHACDVAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAZgDAgAAAAGZAwEAAAABmgMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAgAAABoAIDYAAM4JACAK2wJAAAAAAfMCAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwEAAAABlwNAAAAAAQPbAkAAAAAB7wIBAAAAAYYDAAAAhgMCBNUCAQAAAAHbAkAAAAABggMBAAAAAYQDAAAAhAMCBdUCAQAAAAHbAkAAAAAB-wIAAACPAwKMAwIAAAABjQMBAAAAAQLbAkAAAAAB7wIBAAAAAQvVAgEAAAAB2wJAAAAAAe8CAQAAAAHzAgIAAAAB-wIAAAD7AgL8AgEAAAAB_QIBAAAAAf4CAQAAAAH_AgEAAAABgAOAAAAAAYEDAQAAAAEGL4AAAAAB1QIBAAAAAdsCQAAAAAHvAgEAAAAB9gJAAAAAAfkCAgAAAAEL1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfECAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAEDAAAAFwAgNgAAzgkAIDcAANoJACAcAAAAFwAgEQAA1AYAIBIAANUGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAbAADcBgAgHAAA3QYAICAAAN4GACAvAADaCQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRoRAADUBgAgEgAA1QYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEDAAAAFQAgNgAAywkAIDcAAN0JACARAAAAFQAgBwAArQYAIAkAAK8GACAOAACwBgAgEAAAsQYAIC8AAN0JACDbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhDwcAAK0GACAJAACvBgAgDgAAsAYAIBAAALEGACDbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhDdUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZwDAAAAnAMCnQMgAAAAAZ4DIAAAAAGfAwIAAAABoAMCAAAAAaEDAgAAAAGiAwIAAAABAtsCQAAAAAGPAwEAAAABBNUCAQAAAAHbAkAAAAAB-wIAAACPAwKNAwEAAAABAwAAABcAIDYAAMQJACA3AADjCQAgHAAAABcAIBEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAWAADYBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAgLwAA4wkAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEaEQAA1AYAIBIAANUGACATAADWBgAgFAAA1AcAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAbAADcBgAgHAAA3QYAICAAAN4GACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhBdUCAQAAAAHbAkAAAAAB8AICAAAAAYcDAQAAAAGIAwEAAAABAgAAAMICACA2AADkCQAgAwAAAMUCACA2AADkCQAgNwAA6AkAIAcAAADFAgAgLwAA6AkAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIYcDAQChBQAhiAMBALMFACEF1QIBAKEFACHbAkAAogUAIfACAgCyBQAhhwMBAKEFACGIAwEAswUAIQ8HAADZBwAgCAAAuQcAIAkAALoHACAOAAC7BwAg2wJAAAAAAfICAQAAAAHzAgIAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGVAwEAAAABlgMBAAAAAZcDQAAAAAECAAAALQAgNgAA6QkAIBoRAADOBwAgEgAAvwcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGgAAxgcAIBsAAMcHACAcAADIBwAgIAAAyQcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZkDAQAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAA6wkAIAMAAAAVACA2AADpCQAgNwAA7wkAIBEAAAAVACAHAACtBgAgCAAArgYAIAkAAK8GACAOAACwBgAgLwAA7wkAINsCQACiBQAh8gIBAKEFACHzAgIAtAUAIZADAQChBQAhkQMBALMFACGSAwEAswUAIZMDAQCzBQAhlAMBAKEFACGVAwEAswUAIZYDAQCzBQAhlwNAAKMFACEPBwAArQYAIAgAAK4GACAJAACvBgAgDgAAsAYAINsCQACiBQAh8gIBAKEFACHzAgIAtAUAIZADAQChBQAhkQMBALMFACGSAwEAswUAIZMDAQCzBQAhlAMBAKEFACGVAwEAswUAIZYDAQCzBQAhlwNAAKMFACEDAAAAFwAgNgAA6wkAIDcAAPIJACAcAAAAFwAgEQAA1AYAIBIAANUGACATAADWBgAgFAAA1AcAIBUAANcGACAWAADYBgAgGAAA2QYAIBoAANsGACAbAADcBgAgHAAA3QYAICAAAN4GACAvAADyCQAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRoRAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEPBwAA2QcAIAgAALkHACAJAAC6BwAgEAAAvAcAINsCQAAAAAHyAgEAAAAB8wICAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDAQAAAAGXA0AAAAABAgAAAC0AIDYAAPMJACADAAAAFQAgNgAA8wkAIDcAAPcJACARAAAAFQAgBwAArQYAIAgAAK4GACAJAACvBgAgEAAAsQYAIC8AAPcJACDbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhDwcAAK0GACAIAACuBgAgCQAArwYAIBAAALEGACDbAkAAogUAIfICAQChBQAh8wICALQFACGQAwEAoQUAIZEDAQCzBQAhkgMBALMFACGTAwEAswUAIZQDAQChBQAhlQMBALMFACGWAwEAswUAIZcDQACjBQAhA9sCQAAAAAHyAgEAAAAB8wICAAAAASEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIgAAiAkAICQAAIkJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AAD5CQAgGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAVAADCBwAgGAAAxAcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AAD7CQAgAwAAAA8AIDYAAPkJACA3AAD_CQAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAA_wkAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIgAAgQgAICQAAIIIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AAD7CQAgNwAAggoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAIC8AAIIKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICQAAIkJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AACDCgAgGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAVAADCBwAgFgAAwwcAIBkAAMUHACAaAADGBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AACFCgAgAwAAAA8AIDYAAIMKACA3AACJCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAiQoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICQAAIIIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AACFCgAgNwAAjAoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAgIAAA3gYAIC8AAIwKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBkAANoGACAaAADbBgAgGwAA3AYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AACNCgAgGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAVAADCBwAgFgAAwwcAIBgAAMQHACAZAADFBwAgGwAAxwcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AACPCgAgAwAAAA8AIDYAAI0KACA3AACTCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICQAAIIIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAkwoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AACPCgAgNwAAlgoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBsAANwGACAcAADdBgAgIAAA3gYAIC8AAJYKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGwAA3AYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJQAAigkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AACXCgAgGhEAAM4HACASAAC_BwAgEwAAwAcAIBQAAMEHACAVAADCBwAgFgAAwwcAIBgAAMQHACAZAADFBwAgGgAAxgcAIBwAAMgHACAgAADJBwAg1QIBAAAAAdsCQAAAAAHwAgIAAAAB9gJAAAAAAfgCQAAAAAGYAwIAAAABmQMBAAAAAZoDAgAAAAGcAwAAAJwDAp0DIAAAAAGeAyAAAAABnwMCAAAAAaADAgAAAAGhAwIAAAABogMCAAAAAQIAAAAaACA2AACZCgAgAwAAAA8AIDYAAJcKACA3AACdCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICQAAIIIACAlAACDCAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAnQoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AACZCgAgNwAAoAoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAcAADdBgAgIAAA3gYAIC8AAKAKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBwAAN0GACAgAADeBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAIRoRAADOBwAgEgAAvwcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgIAAAyQcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZkDAQAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAAoQoAICEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJQAAigkAICYAAIsJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AACjCgAgAwAAABcAIDYAAKEKACA3AACnCgAgHAAAABcAIBEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAgAADeBgAgLwAApwoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGYAwIAsgUAIZkDAQCzBQAhmgMCALIFACGcAwAA0QacAyKdAyAA0gYAIZ4DIADSBgAhnwMCALQFACGgAwIAtAUAIaEDAgC0BQAhogMCALQFACEaEQAA1AYAIBIAANUGACATAADWBgAgFAAA1AcAIBUAANcGACAWAADYBgAgGAAA2QYAIBkAANoGACAaAADbBgAgGwAA3AYAICAAAN4GACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhAwAAAA8AIDYAAKMKACA3AACqCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICQAAIIIACAlAACDCAAgJgAAhAgAICgAAIcIACApAACICAAgLwAAqgoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIRADAADTBQAgBwAA0gUAIBoAANUFACAdAADWBQAg1QIBAAAAAdsCQAAAAAHvAgEAAAAB8AICAAAAAfECAQAAAAHyAgEAAAAB8wICAAAAAfQCAQAAAAH1AgIAAAAB9gJAAAAAAfcCQAAAAAH4AkAAAAABAgAAAEYAIDYAAKsKACAhBAAAhAkAIAUAAIUJACAGAACGCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJQAAigkAICYAAIsJACAnAACMCQAgKAAAjgkAICkAAI8JACDVAgEAAAAB2wJAAAAAAfACAgAAAAH2AkAAAAAB-AJAAAAAAYYDAQAAAAGHAwEAAAABuQMBAAAAAboDIAAAAAG7AwEAAAABvQMAAAC9AwK_AwAAAL8DAsADIAAAAAHBAwEAAAABwgMBAAAAAcMDgAAAAAHEA0AAAAABxQMBAAAAAcYDIAAAAAHHAwEAAAAByANAAAAAAckDQAAAAAECAAAAAQAgNgAArQoAIBoRAADOBwAgEgAAvwcAIBMAAMAHACAUAADBBwAgFQAAwgcAIBYAAMMHACAYAADEBwAgGQAAxQcAIBoAAMYHACAbAADHBwAgHAAAyAcAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABmAMCAAAAAZkDAQAAAAGaAwIAAAABnAMAAACcAwKdAyAAAAABngMgAAAAAZ8DAgAAAAGgAwIAAAABoQMCAAAAAaIDAgAAAAECAAAAGgAgNgAArwoAIAvVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8gIBAAAAAfMCAgAAAAH0AgEAAAAB9QICAAAAAfYCQAAAAAH3AkAAAAAB-AJAAAAAAQLbAkAAAAAB7wIBAAAAAQMAAABEACA2AACrCgAgNwAAtQoAIBIAAABEACADAAC2BQAgBwAAtQUAIBoAALkFACAdAAC3BQAgLwAAtQoAINUCAQChBQAh2wJAAKIFACHvAgEAswUAIfACAgCyBQAh8QIBALMFACHyAgEAoQUAIfMCAgCyBQAh9AIBALMFACH1AgIAtAUAIfYCQACiBQAh9wJAAKMFACH4AkAAowUAIRADAAC2BQAgBwAAtQUAIBoAALkFACAdAAC3BQAg1QIBAKEFACHbAkAAogUAIe8CAQCzBQAh8AICALIFACHxAgEAswUAIfICAQChBQAh8wICALIFACH0AgEAswUAIfUCAgC0BQAh9gJAAKIFACH3AkAAowUAIfgCQACjBQAhAwAAAA8AIDYAAK0KACA3AAC4CgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAuAoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAhAACACAAgIgAAgQgAICQAAIIIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQMAAAAXACA2AACvCgAgNwAAuwoAIBwAAAAXACARAADUBgAgEgAA1QYAIBMAANYGACAUAADUBwAgFQAA1wYAIBYAANgGACAYAADZBgAgGQAA2gYAIBoAANsGACAbAADcBgAgHAAA3QYAIC8AALsKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhmAMCALIFACGZAwEAswUAIZoDAgCyBQAhnAMAANEGnAMinQMgANIGACGeAyAA0gYAIZ8DAgC0BQAhoAMCALQFACGhAwIAtAUAIaIDAgC0BQAhGhEAANQGACASAADVBgAgEwAA1gYAIBQAANQHACAVAADXBgAgFgAA2AYAIBgAANkGACAZAADaBgAgGgAA2wYAIBsAANwGACAcAADdBgAg1QIBAKEFACHbAkAAogUAIfACAgCyBQAh9gJAAKIFACH4AkAAowUAIZgDAgCyBQAhmQMBALMFACGaAwIAsgUAIZwDAADRBpwDIp0DIADSBgAhngMgANIGACGfAwIAtAUAIaADAgC0BQAhoQMCALQFACGiAwIAtAUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAkAACJCQAgJQAAigkAICYAAIsJACAnAACMCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AAC8CgAgEAMAANMFACAHAADSBQAgHQAA1gUAIB4AANQFACDVAgEAAAAB2wJAAAAAAe8CAQAAAAHwAgIAAAAB8QIBAAAAAfICAQAAAAHzAgIAAAAB9AIBAAAAAfUCAgAAAAH2AkAAAAAB9wJAAAAAAfgCQAAAAAECAAAARgAgNgAAvgoAIAMAAAAPACA2AAC8CgAgNwAAwgoAICMAAAAPACAEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAkAACCCAAgJQAAgwgAICYAAIQIACAnAACFCAAgKQAAiAgAIC8AAMIKACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhhgMBALMFACGHAwEAswUAIbkDAQCzBQAhugMgANIGACG7AwEAswUAIb0DAAD6B70DIr8DAAD7B78DIsADIADSBgAhwQMBALMFACHCAwEAswUAIcMDgAAAAAHEA0AAowUAIcUDAQCzBQAhxgMgAPwHACHHAwEAswUAIcgDQACjBQAhyQNAAKMFACEhBAAA_QcAIAUAAP4HACAGAAD_BwAgIAAAhggAICEAAIAIACAiAACBCAAgJAAAgggAICUAAIMIACAmAACECAAgJwAAhQgAICkAAIgIACDVAgEAoQUAIdsCQACiBQAh8AICALIFACH2AkAAogUAIfgCQACjBQAhhgMBALMFACGHAwEAswUAIbkDAQCzBQAhugMgANIGACG7AwEAswUAIb0DAAD6B70DIr8DAAD7B78DIsADIADSBgAhwQMBALMFACHCAwEAswUAIcMDgAAAAAHEA0AAowUAIcUDAQCzBQAhxgMgAPwHACHHAwEAswUAIcgDQACjBQAhyQNAAKMFACEDAAAARAAgNgAAvgoAIDcAAMUKACASAAAARAAgAwAAtgUAIAcAALUFACAdAAC3BQAgHgAAuAUAIC8AAMUKACDVAgEAoQUAIdsCQACiBQAh7wIBALMFACHwAgIAsgUAIfECAQCzBQAh8gIBAKEFACHzAgIAsgUAIfQCAQCzBQAh9QICALQFACH2AkAAogUAIfcCQACjBQAh-AJAAKMFACEQAwAAtgUAIAcAALUFACAdAAC3BQAgHgAAuAUAINUCAQChBQAh2wJAAKIFACHvAgEAswUAIfACAgCyBQAh8QIBALMFACHyAgEAoQUAIfMCAgCyBQAh9AIBALMFACH1AgIAtAUAIfYCQACiBQAh9wJAAKMFACH4AkAAowUAISEEAACECQAgBQAAhQkAIAYAAIYJACAgAACNCQAgIQAAhwkAICIAAIgJACAlAACKCQAgJgAAiwkAICcAAIwJACAoAACOCQAgKQAAjwkAINUCAQAAAAHbAkAAAAAB8AICAAAAAfYCQAAAAAH4AkAAAAABhgMBAAAAAYcDAQAAAAG5AwEAAAABugMgAAAAAbsDAQAAAAG9AwAAAL0DAr8DAAAAvwMCwAMgAAAAAcEDAQAAAAHCAwEAAAABwwOAAAAAAcQDQAAAAAHFAwEAAAABxgMgAAAAAccDAQAAAAHIA0AAAAAByQNAAAAAAQIAAAABACA2AADGCgAgAwAAAA8AIDYAAMYKACA3AADKCgAgIwAAAA8AIAQAAP0HACAFAAD-BwAgBgAA_wcAICAAAIYIACAhAACACAAgIgAAgQgAICUAAIMIACAmAACECAAgJwAAhQgAICgAAIcIACApAACICAAgLwAAygoAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAISEEAAD9BwAgBQAA_gcAIAYAAP8HACAgAACGCAAgIQAAgAgAICIAAIEIACAlAACDCAAgJgAAhAgAICcAAIUIACAoAACHCAAgKQAAiAgAINUCAQChBQAh2wJAAKIFACHwAgIAsgUAIfYCQACiBQAh-AJAAKMFACGGAwEAswUAIYcDAQCzBQAhuQMBALMFACG6AyAA0gYAIbsDAQCzBQAhvQMAAPoHvQMivwMAAPsHvwMiwAMgANIGACHBAwEAswUAIcIDAQCzBQAhwwOAAAAAAcQDQACjBQAhxQMBALMFACHGAyAA_AcAIccDAQCzBQAhyANAAKMFACHJA0AAowUAIQ0EBgIFCgMGDgQMABcgYhEhFAUiWg0kXhUlXw4mYA8nYRAoYxIpZxYBAwABAQMAAQEDEAECAwABBwAGDQwAFBEWBxIpBhMqBhQrBxUuBxYvBRgzDRk1Cxo5Dhs9DxxCECBHEQYHAAYIGAYJGwYMAAwOHwgQJQsCCgAHDQAJAgsgCAwACgELIQACBwAGDwAHAwkmAA4nABAoAAIHAAYXNAECAwABBwAGAgM-AQcABgIDAAEHQwYGA0gBBwAGDAATGk4SHUkRHkoRAgMAAR8AEQIaUAAeTwAJE1EAFVIAFlMAGFQAGVUAGlYAG1cAHFgAIFkAASMAAQEDAAEMBGgABWkABmoAIHEAIWsAImwAJG0AJW4AJm8AJ3AAKHIAKXMAAAAABQwAHDwAHT0AHj4AHz8AIAAAAAAABQwAHDwAHT0AHj4AHz8AIAEDAAEBAwABAwwAJT4AJj8AJwAAAAMMACU-ACY_ACcBAwABAQMAAQMMACw-AC0_AC4AAAADDAAsPgAtPwAuAQPAAQEBA8YBAQMMADM-ADQ_ADUAAAADDAAzPgA0PwA1AQMAAQEDAAEFDAA6PAA7PQA8PgA9PwA-AAAAAAAFDAA6PAA7PQA8PgA9PwA-AxHuAQcS7wEGFPABBwMR9gEHEvcBBhT4AQcFDABDPABEPQBFPgBGPwBHAAAAAAAFDABDPABEPQBFPgBGPwBHAQcABgEHAAYFDABMPABNPQBOPgBPPwBQAAAAAAAFDABMPABNPQBOPgBPPwBQAgoABw0ACQIKAAcNAAkFDABVPABWPQBXPgBYPwBZAAAAAAAFDABVPABWPQBXPgBYPwBZAgcABg8ABwIHAAYPAAcFDABePABfPQBgPgBhPwBiAAAAAAAFDABePABfPQBgPgBhPwBiAAAFDABnPABoPQBpPgBqPwBrAAAAAAAFDABnPABoPQBpPgBqPwBrAgMAAQcABgIDAAEHAAYDDABwPgBxPwByAAAAAwwAcD4AcT8AcgIHAAYX-wIBAgcABheBAwEDDAB3PgB4PwB5AAAAAwwAdz4AeD8AeQIDAAEHAAYCAwABBwAGAwwAfj4Afz8AgAEAAAADDAB-PgB_PwCAAQIDqQMBBwAGAgOvAwEHAAYFDACFATwAhgE9AIcBPgCIAT8AiQEAAAAAAAUMAIUBPACGAT0AhwE-AIgBPwCJAQIDAAEHwQMGAgMAAQfHAwYFDACOATwAjwE9AJABPgCRAT8AkgEAAAAAAAUMAI4BPACPAT0AkAE-AJEBPwCSAQMD2QMBBwAGHdoDEQMD4AMBBwAGHeEDEQUMAJcBPACYAT0AmQE-AJoBPwCbAQAAAAAABQwAlwE8AJgBPQCZAT4AmgE_AJsBAgMAAR8AEQIDAAEfABEDDACgAT4AoQE_AKIBAAAAAwwAoAE-AKEBPwCiAQEjAAEBIwABAwwApwE-AKgBPwCpAQAAAAMMAKcBPgCoAT8AqQEqAgErdAEsdgEtdwEueAEwegExfBgyfRkzfwE0gQEYNYIBGjiDAQE5hAEBOoUBGECIARtBiQEhQooBAkOLAQJEjAECRY0BAkaOAQJHkAECSJIBGEmTASJKlQECS5cBGEyYASNNmQECTpoBAk-bARhQngEkUZ8BKFKgAQNToQEDVKIBA1WjAQNWpAEDV6YBA1ioARhZqQEpWqsBA1utARhcrgEqXa8BA16wAQNfsQEYYLQBK2G1AS9itgEEY7cBBGS4AQRluQEEZroBBGe8AQRovgEYab8BMGrCAQRrxAEYbMUBMW3HAQRuyAEEb8kBGHDMATJxzQE2cs4BFnPPARZ00AEWddEBFnbSARZ31AEWeNYBGHnXATd62QEWe9sBGHzcATh93QEWft4BFn_fARiAAeIBOYEB4wE_ggHkAQaDAeUBBoQB5gEGhQHnAQaGAegBBocB6gEGiAHsARiJAe0BQIoB8gEGiwH0ARiMAfUBQY0B-QEGjgH6AQaPAfsBGJAB_gFCkQH_AUiSAYACB5MBgQIHlAGCAgeVAYMCB5YBhAIHlwGGAgeYAYgCGJkBiQJJmgGLAgebAY0CGJwBjgJKnQGPAgeeAZACB58BkQIYoAGUAkuhAZUCUaIBlgIIowGXAgikAZgCCKUBmQIIpgGaAginAZwCCKgBngIYqQGfAlKqAaECCKsBowIYrAGkAlOtAaUCCK4BpgIIrwGnAhiwAaoCVLEBqwJasgGsAguzAa0CC7QBrgILtQGvAgu2AbACC7cBsgILuAG0Ahi5AbUCW7oBtwILuwG5Ahi8AboCXL0BuwILvgG8Agu_Ab0CGMABwAJdwQHBAmPCAcMCCcMBxAIJxAHHAgnFAcgCCcYByQIJxwHLAgnIAc0CGMkBzgJkygHQAgnLAdICGMwB0wJlzQHUAgnOAdUCCc8B1gIY0AHZAmbRAdoCbNIB2wIF0wHcAgXUAd0CBdUB3gIF1gHfAgXXAeECBdgB4wIY2QHkAm3aAeYCBdsB6AIY3AHpAm7dAeoCBd4B6wIF3wHsAhjgAe8Cb-EB8AJz4gHxAg3jAfICDeQB8wIN5QH0Ag3mAfUCDecB9wIN6AH5AhjpAfoCdOoB_QIN6wH_AhjsAYADde0BggMN7gGDAw3vAYQDGPABhwN28QGIA3ryAYkDDvMBigMO9AGLAw71AYwDDvYBjQMO9wGPAw74AZEDGPkBkgN7-gGUAw77AZYDGPwBlwN8_QGYAw7-AZkDDv8BmgMYgAKdA32BAp4DgQGCAp8DD4MCoAMPhAKhAw-FAqIDD4YCowMPhwKlAw-IAqcDGIkCqAOCAYoCqwMPiwKtAxiMAq4DgwGNArADD44CsQMPjwKyAxiQArUDhAGRArYDigGSArcDEJMCuAMQlAK5AxCVAroDEJYCuwMQlwK9AxCYAr8DGJkCwAOLAZoCwwMQmwLFAxicAsYDjAGdAsgDEJ4CyQMQnwLKAxigAs0DjQGhAs4DkwGiAs8DEaMC0AMRpALRAxGlAtIDEaYC0wMRpwLVAxGoAtcDGKkC2AOUAaoC3AMRqwLeAxisAt8DlQGtAuIDEa4C4wMRrwLkAxiwAucDlgGxAugDnAGyAukDErMC6gMStALrAxK1AuwDErYC7QMStwLvAxK4AvEDGLkC8gOdAboC9AMSuwL2Axi8AvcDngG9AvgDEr4C-QMSvwL6AxjAAv0DnwHBAv4DowHCAv8DFcMCgAQVxAKBBBXFAoIEFcYCgwQVxwKFBBXIAocEGMkCiASkAcoCigQVywKMBBjMAo0EpQHNAo4EFc4CjwQVzwKQBBjQApMEpgHRApQEqgE" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"sessions\",\"verifications\",\"model\",\"latestOfModel\",\"parentOfModels\",\"modelVersion\",\"modelVersions\",\"_count\",\"tag\",\"tags\",\"taggedVersion\",\"taggedAdditionalFiles\",\"latestVersion\",\"parentModel\",\"childModels\",\"parentVersion\",\"versions\",\"authors\",\"granteeUser\",\"permissions\",\"additionalFiles\",\"likes\",\"interactions\",\"drafts\",\"parent\",\"replies\",\"modelComment\",\"comments\",\"authoredModels\",\"grantedPermissions\",\"actor\",\"recipient\",\"event\",\"notifications\",\"events\",\"modelLikes\",\"modelInteractions\",\"modelDrafts\",\"commentLikes\",\"notificationPreferences\",\"passkeys\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"Passkey.findUnique\",\"Passkey.findUniqueOrThrow\",\"Passkey.findFirst\",\"Passkey.findFirstOrThrow\",\"Passkey.findMany\",\"Passkey.createOne\",\"Passkey.createMany\",\"Passkey.createManyAndReturn\",\"Passkey.updateOne\",\"Passkey.updateMany\",\"Passkey.updateManyAndReturn\",\"Passkey.upsertOne\",\"Passkey.deleteOne\",\"Passkey.deleteMany\",\"Passkey.groupBy\",\"Passkey.aggregate\",\"Model.findUnique\",\"Model.findUniqueOrThrow\",\"Model.findFirst\",\"Model.findFirstOrThrow\",\"Model.findMany\",\"Model.createOne\",\"Model.createMany\",\"Model.createManyAndReturn\",\"Model.updateOne\",\"Model.updateMany\",\"Model.updateManyAndReturn\",\"Model.upsertOne\",\"Model.deleteOne\",\"Model.deleteMany\",\"Model.groupBy\",\"Model.aggregate\",\"ModelVersion.findUnique\",\"ModelVersion.findUniqueOrThrow\",\"ModelVersion.findFirst\",\"ModelVersion.findFirstOrThrow\",\"ModelVersion.findMany\",\"ModelVersion.createOne\",\"ModelVersion.createMany\",\"ModelVersion.createManyAndReturn\",\"ModelVersion.updateOne\",\"ModelVersion.updateMany\",\"ModelVersion.updateManyAndReturn\",\"ModelVersion.upsertOne\",\"ModelVersion.deleteOne\",\"ModelVersion.deleteMany\",\"ModelVersion.groupBy\",\"ModelVersion.aggregate\",\"ModelVersionTag.findUnique\",\"ModelVersionTag.findUniqueOrThrow\",\"ModelVersionTag.findFirst\",\"ModelVersionTag.findFirstOrThrow\",\"ModelVersionTag.findMany\",\"ModelVersionTag.createOne\",\"ModelVersionTag.createMany\",\"ModelVersionTag.createManyAndReturn\",\"ModelVersionTag.updateOne\",\"ModelVersionTag.updateMany\",\"ModelVersionTag.updateManyAndReturn\",\"ModelVersionTag.upsertOne\",\"ModelVersionTag.deleteOne\",\"ModelVersionTag.deleteMany\",\"ModelVersionTag.groupBy\",\"ModelVersionTag.aggregate\",\"ModelAdditionalFile.findUnique\",\"ModelAdditionalFile.findUniqueOrThrow\",\"ModelAdditionalFile.findFirst\",\"ModelAdditionalFile.findFirstOrThrow\",\"ModelAdditionalFile.findMany\",\"ModelAdditionalFile.createOne\",\"ModelAdditionalFile.createMany\",\"ModelAdditionalFile.createManyAndReturn\",\"ModelAdditionalFile.updateOne\",\"ModelAdditionalFile.updateMany\",\"ModelAdditionalFile.updateManyAndReturn\",\"ModelAdditionalFile.upsertOne\",\"ModelAdditionalFile.deleteOne\",\"ModelAdditionalFile.deleteMany\",\"ModelAdditionalFile.groupBy\",\"ModelAdditionalFile.aggregate\",\"Tag.findUnique\",\"Tag.findUniqueOrThrow\",\"Tag.findFirst\",\"Tag.findFirstOrThrow\",\"Tag.findMany\",\"Tag.createOne\",\"Tag.createMany\",\"Tag.createManyAndReturn\",\"Tag.updateOne\",\"Tag.updateMany\",\"Tag.updateManyAndReturn\",\"Tag.upsertOne\",\"Tag.deleteOne\",\"Tag.deleteMany\",\"Tag.groupBy\",\"Tag.aggregate\",\"ModelAuthor.findUnique\",\"ModelAuthor.findUniqueOrThrow\",\"ModelAuthor.findFirst\",\"ModelAuthor.findFirstOrThrow\",\"ModelAuthor.findMany\",\"ModelAuthor.createOne\",\"ModelAuthor.createMany\",\"ModelAuthor.createManyAndReturn\",\"ModelAuthor.updateOne\",\"ModelAuthor.updateMany\",\"ModelAuthor.updateManyAndReturn\",\"ModelAuthor.upsertOne\",\"ModelAuthor.deleteOne\",\"ModelAuthor.deleteMany\",\"ModelAuthor.groupBy\",\"ModelAuthor.aggregate\",\"ModelPermission.findUnique\",\"ModelPermission.findUniqueOrThrow\",\"ModelPermission.findFirst\",\"ModelPermission.findFirstOrThrow\",\"ModelPermission.findMany\",\"ModelPermission.createOne\",\"ModelPermission.createMany\",\"ModelPermission.createManyAndReturn\",\"ModelPermission.updateOne\",\"ModelPermission.updateMany\",\"ModelPermission.updateManyAndReturn\",\"ModelPermission.upsertOne\",\"ModelPermission.deleteOne\",\"ModelPermission.deleteMany\",\"ModelPermission.groupBy\",\"ModelPermission.aggregate\",\"ModelLike.findUnique\",\"ModelLike.findUniqueOrThrow\",\"ModelLike.findFirst\",\"ModelLike.findFirstOrThrow\",\"ModelLike.findMany\",\"ModelLike.createOne\",\"ModelLike.createMany\",\"ModelLike.createManyAndReturn\",\"ModelLike.updateOne\",\"ModelLike.updateMany\",\"ModelLike.updateManyAndReturn\",\"ModelLike.upsertOne\",\"ModelLike.deleteOne\",\"ModelLike.deleteMany\",\"ModelLike.groupBy\",\"ModelLike.aggregate\",\"ModelInteraction.findUnique\",\"ModelInteraction.findUniqueOrThrow\",\"ModelInteraction.findFirst\",\"ModelInteraction.findFirstOrThrow\",\"ModelInteraction.findMany\",\"ModelInteraction.createOne\",\"ModelInteraction.createMany\",\"ModelInteraction.createManyAndReturn\",\"ModelInteraction.updateOne\",\"ModelInteraction.updateMany\",\"ModelInteraction.updateManyAndReturn\",\"ModelInteraction.upsertOne\",\"ModelInteraction.deleteOne\",\"ModelInteraction.deleteMany\",\"ModelInteraction.groupBy\",\"ModelInteraction.aggregate\",\"ModelDraft.findUnique\",\"ModelDraft.findUniqueOrThrow\",\"ModelDraft.findFirst\",\"ModelDraft.findFirstOrThrow\",\"ModelDraft.findMany\",\"ModelDraft.createOne\",\"ModelDraft.createMany\",\"ModelDraft.createManyAndReturn\",\"ModelDraft.updateOne\",\"ModelDraft.updateMany\",\"ModelDraft.updateManyAndReturn\",\"ModelDraft.upsertOne\",\"ModelDraft.deleteOne\",\"ModelDraft.deleteMany\",\"ModelDraft.groupBy\",\"ModelDraft.aggregate\",\"ModelComment.findUnique\",\"ModelComment.findUniqueOrThrow\",\"ModelComment.findFirst\",\"ModelComment.findFirstOrThrow\",\"ModelComment.findMany\",\"ModelComment.createOne\",\"ModelComment.createMany\",\"ModelComment.createManyAndReturn\",\"ModelComment.updateOne\",\"ModelComment.updateMany\",\"ModelComment.updateManyAndReturn\",\"ModelComment.upsertOne\",\"ModelComment.deleteOne\",\"ModelComment.deleteMany\",\"ModelComment.groupBy\",\"ModelComment.aggregate\",\"ModelCommentLike.findUnique\",\"ModelCommentLike.findUniqueOrThrow\",\"ModelCommentLike.findFirst\",\"ModelCommentLike.findFirstOrThrow\",\"ModelCommentLike.findMany\",\"ModelCommentLike.createOne\",\"ModelCommentLike.createMany\",\"ModelCommentLike.createManyAndReturn\",\"ModelCommentLike.updateOne\",\"ModelCommentLike.updateMany\",\"ModelCommentLike.updateManyAndReturn\",\"ModelCommentLike.upsertOne\",\"ModelCommentLike.deleteOne\",\"ModelCommentLike.deleteMany\",\"ModelCommentLike.groupBy\",\"ModelCommentLike.aggregate\",\"Event.findUnique\",\"Event.findUniqueOrThrow\",\"Event.findFirst\",\"Event.findFirstOrThrow\",\"Event.findMany\",\"Event.createOne\",\"Event.createMany\",\"Event.createManyAndReturn\",\"Event.updateOne\",\"Event.updateMany\",\"Event.updateManyAndReturn\",\"Event.upsertOne\",\"Event.deleteOne\",\"Event.deleteMany\",\"Event.groupBy\",\"Event.aggregate\",\"UserNotification.findUnique\",\"UserNotification.findUniqueOrThrow\",\"UserNotification.findFirst\",\"UserNotification.findFirstOrThrow\",\"UserNotification.findMany\",\"UserNotification.createOne\",\"UserNotification.createMany\",\"UserNotification.createManyAndReturn\",\"UserNotification.updateOne\",\"UserNotification.updateMany\",\"UserNotification.updateManyAndReturn\",\"UserNotification.upsertOne\",\"UserNotification.deleteOne\",\"UserNotification.deleteMany\",\"UserNotification.groupBy\",\"UserNotification.aggregate\",\"UserNotificationPreference.findUnique\",\"UserNotificationPreference.findUniqueOrThrow\",\"UserNotificationPreference.findFirst\",\"UserNotificationPreference.findFirstOrThrow\",\"UserNotificationPreference.findMany\",\"UserNotificationPreference.createOne\",\"UserNotificationPreference.createMany\",\"UserNotificationPreference.createManyAndReturn\",\"UserNotificationPreference.updateOne\",\"UserNotificationPreference.updateMany\",\"UserNotificationPreference.updateManyAndReturn\",\"UserNotificationPreference.upsertOne\",\"UserNotificationPreference.deleteOne\",\"UserNotificationPreference.deleteMany\",\"UserNotificationPreference.groupBy\",\"UserNotificationPreference.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"userId\",\"category\",\"email\",\"inApp\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"recipientId\",\"eventId\",\"title\",\"body\",\"url\",\"emailSentAt\",\"readAt\",\"createdAt\",\"type\",\"actorId\",\"resourceType\",\"resourceId\",\"payload\",\"processedAt\",\"attempts\",\"lastError\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"modelCommentId\",\"legacyId\",\"parentId\",\"modelId\",\"versionNumber\",\"content\",\"likesCount\",\"editedAt\",\"deletedAt\",\"schemaVersion\",\"ModelInteractionKind\",\"kind\",\"sessionId\",\"ipHash\",\"userAgent\",\"referer\",\"geo\",\"cookie\",\"granteeUserId\",\"PermissionLevel\",\"permissionLevel\",\"AuthorRole\",\"role\",\"name\",\"displayName\",\"every\",\"some\",\"none\",\"taggedVersionNumber\",\"fileKey\",\"ModelFileKind\",\"tagId\",\"description\",\"changeSummary\",\"previewImageFileKey\",\"netlogoFileKey\",\"netlogoVersion\",\"infoTab\",\"finalizedAt\",\"latestVersionNumber\",\"parentModelId\",\"parentVersionNumber\",\"ModelVisibility\",\"visibility\",\"isEndorsed\",\"isLibraryModel\",\"viewCount\",\"runCount\",\"downloadCount\",\"shareCount\",\"publicKey\",\"credentialID\",\"counter\",\"deviceType\",\"backedUp\",\"transports\",\"aaguid\",\"identifier\",\"value\",\"expiresAt\",\"token\",\"ipAddress\",\"impersonatedBy\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"idToken\",\"password\",\"emailVerified\",\"image\",\"SystemRole\",\"systemRole\",\"UserKind\",\"userKind\",\"isProfilePublic\",\"bio\",\"country\",\"socialLinks\",\"dob\",\"affiliation\",\"banned\",\"banReason\",\"banExpires\",\"onboardedAt\",\"userId_category\",\"eventId_recipientId_category\",\"modelCommentId_userId\",\"modelId_userId\",\"modelId_granteeUserId\",\"modelId_versionNumber\",\"modelId_versionNumber_tagId\",\"id_latestVersionNumber\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "1Qu9AcACJwQAANUFACAFAADWBQAgBgAA1wUAICAAAK4FACAhAADJBQAgIgAAygUAICYAAKYFACAnAADYBQAgKAAAywUAICkAAMwFACAqAADNBQAgKwAArwUAICwAANkFACAtAADaBQAg9gIAANEFADD3AgAADwAQ-AIAANEFADD5AgEAAAAB_AIBAAAAAf4CQACABQAhkQNAAIAFACGhAwIAAAABqANAAJ0FACG2AwEA_wQAIbcDAQD_BAAh6AMgAJwFACHpAwEA_wQAIesDAADSBesDIu0DAADTBe0DIu4DIACcBQAh7wMBAP8EACHwAwEA_wQAIfEDAAC0BQAg8gNAAJ0FACHzAwEA_wQAIfQDIADUBQAh9QMBAP8EACH2A0AAnQUAIfcDQACdBQAhAQAAAAEAIBEDAACeBQAg9gIAAN0FADD3AgAAAwAQ-AIAAN0FADD5AgEA_QQAIfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAId8DAQD9BAAh4AMBAP0EACHhAwEA_wQAIeIDAQD_BAAh4wNAAJ0FACHkA0AAnQUAIeUDAQD_BAAh5gMBAP8EACHnAwEA_wQAIQgDAACUCgAg4QMAAOYFACDiAwAA5gUAIOMDAADmBQAg5AMAAOYFACDlAwAA5gUAIOYDAADmBQAg5wMAAOYFACARAwAAngUAIPYCAADdBQAw9wIAAAMAEPgCAADdBQAw-QIBAAAAAfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAId8DAQD9BAAh4AMBAP0EACHhAwEA_wQAIeIDAQD_BAAh4wNAAJ0FACHkA0AAnQUAIeUDAQD_BAAh5gMBAP8EACHnAwEA_wQAIQMAAAADACABAAAEADACAAAFACANAwAAngUAIPYCAADcBQAw9wIAAAcAEPgCAADcBQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGuAwEA_wQAIdsDQACABQAh3AMBAP0EACHdAwEA_wQAId4DAQD_BAAhBAMAAJQKACCuAwAA5gUAIN0DAADmBQAg3gMAAOYFACANAwAAngUAIPYCAADcBQAw9wIAAAcAEPgCAADcBQAw-QIBAAAAAfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAIa4DAQD_BAAh2wNAAIAFACHcAwEAAAAB3QMBAP8EACHeAwEA_wQAIQMAAAAHACABAAAIADACAAAJACALAwAArAUAIPYCAADbBQAw9wIAAAsAEPgCAADbBQAw-QIBAP0EACH6AgEA_wQAIf4CQACdBQAhkQNAAJ0FACHZAwEA_QQAIdoDAQD9BAAh2wNAAIAFACEEAwAAlAoAIPoCAADmBQAg_gIAAOYFACCRAwAA5gUAIAsDAACsBQAg9gIAANsFADD3AgAACwAQ-AIAANsFADD5AgEAAAAB-gIBAP8EACH-AkAAnQUAIZEDQACdBQAh2QMBAP0EACHaAwEA_QQAIdsDQACABQAhAwAAAAsAIAEAAAwAMAIAAA0AICcEAADVBQAgBQAA1gUAIAYAANcFACAgAACuBQAgIQAAyQUAICIAAMoFACAmAACmBQAgJwAA2AUAICgAAMsFACApAADMBQAgKgAAzQUAICsAAK8FACAsAADZBQAgLQAA2gUAIPYCAADRBQAw9wIAAA8AEPgCAADRBQAw-QIBAP0EACH8AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIagDQACdBQAhtgMBAP8EACG3AwEA_wQAIegDIACcBQAh6QMBAP8EACHrAwAA0gXrAyLtAwAA0wXtAyLuAyAAnAUAIe8DAQD_BAAh8AMBAP8EACHxAwAAtAUAIPIDQACdBQAh8wMBAP8EACH0AyAA1AUAIfUDAQD_BAAh9gNAAJ0FACH3A0AAnQUAIQEAAAAPACAJAwAAngUAIAcAAKsFACD2AgAAzwUAMPcCAAARABD4AgAAzwUAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbYDAADQBbYDIgIDAACUCgAgBwAAlwoAIAoDAACeBQAgBwAAqwUAIPYCAADPBQAw9wIAABEAEPgCAADPBQAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAhtgMAANAFtgMi-wMAAM4FACADAAAAEQAgAQAAEgAwAgAAEwAgEwcAAKsFACAIAACxBQAgCQAAvAUAIA4AAIEFACAQAAC9BQAg9gIAALsFADD3AgAAFQAQ-AIAALsFADCMAwEA_QQAIZEDQACABQAhowMBAP0EACGkAwIAmwUAIcADAQD_BAAhwQMBAP8EACHCAwEA_wQAIcMDAQD9BAAhxAMBAP8EACHFAwEA_wQAIcYDQACdBQAhAQAAABUAIB4RAADHBQAgEgAAsQUAIBMAALwFACAUAADHBQAgFQAAyAUAIBYAAMkFACAYAADKBQAgGQAAvQUAIBoAAMsFACAbAADMBQAgHAAAzQUAICAAAK4FACD2AgAAxQUAMPcCAAAXABD4AgAAxQUAMPkCAQD9BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhqANAAJ0FACHHAwIA_gQAIcgDAQD_BAAhyQMCAP4EACHLAwAAxgXLAyLMAyAAnAUAIc0DIACcBQAhzgMCAJsFACHPAwIAmwUAIdADAgCbBQAh0QMCAJsFACEBAAAAFwAgEREAAJoKACASAACXCgAgEwAAmAoAIBQAAJoKACAVAACcCgAgFgAAiQoAIBgAAIoKACAZAACZCgAgGgAAjAoAIBsAAI0KACAcAACOCgAgIAAAjwoAIKEDAADmBQAgqAMAAOYFACDHAwAA5gUAIMgDAADmBQAgyQMAAOYFACAfEQAAxwUAIBIAALEFACATAAC8BQAgFAAAxwUAIBUAAMgFACAWAADJBQAgGAAAygUAIBkAAL0FACAaAADLBQAgGwAAzAUAIBwAAM0FACAgAACuBQAg9gIAAMUFADD3AgAAFwAQ-AIAAMUFADD5AgEAAAAB_gJAAIAFACGRA0AAgAUAIaEDAgAAAAGoA0AAnQUAIccDAgD-BAAhyAMBAP8EACHJAwIA_gQAIcsDAADGBcsDIswDIACcBQAhzQMgAJwFACHOAwIAmwUAIc8DAgCbBQAh0AMCAJsFACHRAwIAmwUAIf8DAADEBQAgAwAAABcAIAEAABkAMAIAABoAIAkKAADABQAgDQAAwwUAIPYCAADCBQAw9wIAABwAEPgCAADCBQAwkQNAAIAFACGjAwEA_QQAIaQDAgCbBQAhvwMBAP0EACECCgAAmgoAIA0AAJsKACAKCgAAwAUAIA0AAMMFACD2AgAAwgUAMPcCAAAcABD4AgAAwgUAMJEDQACABQAhowMBAP0EACGkAwIAmwUAIb8DAQD9BAAh_gMAAMEFACADAAAAHAAgAQAAHQAwAgAAHgAgAwAAABwAIAEAAB0AMAIAAB4AIAEAAAAcACALBwAAqwUAIA8AAMAFACD2AgAAvgUAMPcCAAAiABD4AgAAvgUAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIasDAAC_Bb8DIrwDAgCbBQAhvQMBAP0EACECBwAAlwoAIA8AAJoKACALBwAAqwUAIA8AAMAFACD2AgAAvgUAMPcCAAAiABD4AgAAvgUAMPkCAQAAAAGRA0AAgAUAIaMDAQD9BAAhqwMAAL8FvwMivAMCAJsFACG9AwEA_QQAIQMAAAAiACABAAAjADACAAAkACABAAAAFwAgAQAAABwAIAEAAAAiACABAAAAFwAgAwAAABcAIAEAABkAMAIAABoAIAEAAAAVACALBwAAlwoAIAgAAJcKACAJAACYCgAgDgAA9AYAIBAAAJkKACDAAwAA5gUAIMEDAADmBQAgwgMAAOYFACDEAwAA5gUAIMUDAADmBQAgxgMAAOYFACAUBwAAqwUAIAgAALEFACAJAAC8BQAgDgAAgQUAIBAAAL0FACD2AgAAuwUAMPcCAAAVABD4AgAAuwUAMIwDAQD9BAAhkQNAAIAFACGjAwEA_QQAIaQDAgCbBQAhwAMBAP8EACHBAwEA_wQAIcIDAQD_BAAhwwMBAP0EACHEAwEA_wQAIcUDAQD_BAAhxgNAAJ0FACH9AwAAugUAIAMAAAAVACABAAAsADACAAAtACADAAAAEQAgAQAAEgAwAgAAEwAgCgcAAKsFACAXAACsBQAg9gIAALgFADD3AgAAMAAQ-AIAALgFADD5AgEA_QQAIZEDQACABQAhowMBAP0EACGyAwEA_wQAIbQDAAC5BbQDIgMHAACXCgAgFwAAlAoAILIDAADmBQAgCwcAAKsFACAXAACsBQAg9gIAALgFADD3AgAAMAAQ-AIAALgFADD5AgEAAAABkQNAAIAFACGjAwEA_QQAIbIDAQD_BAAhtAMAALkFtAMi_AMAALcFACADAAAAMAAgAQAAMQAwAgAAMgAgAQAAAA8AIAMAAAAiACABAAAjADACAAAkACAIAwAAngUAIAcAAKsFACD2AgAAtgUAMPcCAAA2ABD4AgAAtgUAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIQIDAACUCgAgBwAAlwoAIAkDAACeBQAgBwAAqwUAIPYCAAC2BQAw9wIAADYAEPgCAAC2BQAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAh-wMAALUFACADAAAANgAgAQAANwAwAgAAOAAgEQMAAKwFACAHAACrBQAg9gIAALIFADD3AgAAOgAQ-AIAALIFADD5AgEA_QQAIfoCAQD_BAAhkQNAAIAFACGjAwEA_QQAIaQDAgD-BAAhqwMAALMFqwMirAMBAP8EACGtAwEA_wQAIa4DAQD_BAAhrwMBAP8EACGwAwAAtAUAILEDAQD_BAAhCgMAAJQKACAHAACXCgAg-gIAAOYFACCkAwAA5gUAIKwDAADmBQAgrQMAAOYFACCuAwAA5gUAIK8DAADmBQAgsAMAAOYFACCxAwAA5gUAIBEDAACsBQAgBwAAqwUAIPYCAACyBQAw9wIAADoAEPgCAACyBQAw-QIBAAAAAfoCAQD_BAAhkQNAAIAFACGjAwEA_QQAIaQDAgD-BAAhqwMAALMFqwMirAMBAP8EACGtAwEA_wQAIa4DAQD_BAAhrwMBAP8EACGwAwAAtAUAILEDAQD_BAAhAwAAADoAIAEAADsAMAIAADwAIAEAAAAPACAMAwAAngUAIAcAALEFACAzAAClBQAg9gIAALAFADD3AgAAPwAQ-AIAALAFADD5AgEA_QQAIfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAIaMDAQD_BAAhqQMCAJsFACEDAwAAlAoAIAcAAJcKACCjAwAA5gUAIAwDAACeBQAgBwAAsQUAIDMAAKUFACD2AgAAsAUAMPcCAAA_ABD4AgAAsAUAMPkCAQAAAAH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGjAwEA_wQAIakDAgCbBQAhAwAAAD8AIAEAAEAAMAIAAEEAIAEAAAAXACAUAwAArAUAIAcAAKsFACAaAACvBQAgHQAArQUAIB4AAK4FACD2AgAAqgUAMPcCAABEABD4AgAAqgUAMPkCAQD9BAAh-gIBAP8EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGiAwEA_wQAIaMDAQD9BAAhpAMCAP4EACGlAwEA_wQAIaYDAgCbBQAhpwNAAJ0FACGoA0AAnQUAIQwDAACUCgAgBwAAlwoAIBoAAJAKACAdAACWCgAgHgAAjwoAIPoCAADmBQAgoQMAAOYFACCiAwAA5gUAIKQDAADmBQAgpQMAAOYFACCnAwAA5gUAIKgDAADmBQAgFAMAAKwFACAHAACrBQAgGgAArwUAIB0AAK0FACAeAACuBQAg9gIAAKoFADD3AgAARAAQ-AIAAKoFADD5AgEAAAAB-gIBAP8EACH-AkAAgAUAIZEDQACABQAhoQMCAAAAAaIDAQD_BAAhowMBAP0EACGkAwIA_gQAIaUDAQD_BAAhpgMCAJsFACGnA0AAnQUAIagDQACdBQAhAwAAAEQAIAEAAEUAMAIAAEYAIAEAAAAPACABAAAARAAgAwAAAEQAIAEAAEUAMAIAAEYAIAgDAACeBQAgHwAAqQUAIPYCAACoBQAw9wIAAEsAEPgCAACoBQAw-gIBAP0EACGRA0AAgAUAIaADAQD9BAAhAgMAAJQKACAfAACWCgAgCQMAAJ4FACAfAACpBQAg9gIAAKgFADD3AgAASwAQ-AIAAKgFADD6AgEA_QQAIZEDQACABQAhoAMBAP0EACH6AwAApwUAIAMAAABLACABAABMADACAABNACABAAAARAAgAQAAAEsAIAEAAAAXACABAAAAFQAgAQAAABEAIAEAAAAwACABAAAAIgAgAQAAADYAIAEAAAA6ACABAAAAPwAgAQAAAEQAIAMAAAAwACABAAAxADACAAAyACAPIwAAngUAICYAAKYFACD2AgAApAUAMPcCAABbABD4AgAApAUAMPkCAQD9BAAhkQNAAIAFACGSAwEA_QQAIZMDAQD9BAAhlAMBAP0EACGVAwEA_QQAIZYDAAClBQAglwNAAJ0FACGYAwIAmwUAIZkDAQD_BAAhBCMAAJQKACAmAACRCgAglwMAAOYFACCZAwAA5gUAIA8jAACeBQAgJgAApgUAIPYCAACkBQAw9wIAAFsAEPgCAACkBQAw-QIBAAAAAZEDQACABQAhkgMBAP0EACGTAwEA_QQAIZQDAQD9BAAhlQMBAP0EACGWAwAApQUAIJcDQACdBQAhmAMCAJsFACGZAwEA_wQAIQMAAABbACABAABcADACAABdACAPJAAAngUAICUAAKMFACD2AgAAogUAMPcCAABfABD4AgAAogUAMPkCAQD9BAAh-wIBAP0EACGKAwEA_QQAIYsDAQD9BAAhjAMBAP0EACGNAwEA_QQAIY4DAQD9BAAhjwNAAJ0FACGQA0AAnQUAIZEDQACABQAhBCQAAJQKACAlAACVCgAgjwMAAOYFACCQAwAA5gUAIBAkAACeBQAgJQAAowUAIPYCAACiBQAw9wIAAF8AEPgCAACiBQAw-QIBAAAAAfsCAQD9BAAhigMBAP0EACGLAwEA_QQAIYwDAQD9BAAhjQMBAP0EACGOAwEA_QQAIY8DQACdBQAhkANAAJ0FACGRA0AAgAUAIfkDAAChBQAgAwAAAF8AIAEAAGAAMAIAAGEAIAEAAABfACADAAAANgAgAQAANwAwAgAAOAAgAwAAADoAIAEAADsAMAIAADwAIAMAAAA_ACABAABAADACAABBACADAAAARAAgAQAARQAwAgAARgAgAwAAAEsAIAEAAEwAMAIAAE0AIAMAAABfACABAABgADACAABhACAKAwAAngUAIPYCAACgBQAw9wIAAGoAEPgCAACgBQAw-QIBAP0EACH6AgEA_QQAIfsCAQD9BAAh_AIgAJwFACH9AiAAnAUAIf4CQACABQAhAQMAAJQKACALAwAAngUAIPYCAACgBQAw9wIAAGoAEPgCAACgBQAw-QIBAAAAAfoCAQD9BAAh-wIBAP0EACH8AiAAnAUAIf0CIACcBQAh_gJAAIAFACH4AwAAnwUAIAMAAABqACABAABrADACAABsACAPAwAAngUAIPYCAACaBQAw9wIAAG4AEPgCAACaBQAw-QIBAP0EACH6AgEA_QQAIZEDQACdBQAhtwMBAP8EACHSAwEA_QQAIdMDAQD9BAAh1AMCAJsFACHVAwEA_QQAIdYDIACcBQAh1wMBAP8EACHYAwEA_wQAIQUDAACUCgAgkQMAAOYFACC3AwAA5gUAINcDAADmBQAg2AMAAOYFACAPAwAAngUAIPYCAACaBQAw9wIAAG4AEPgCAACaBQAw-QIBAAAAAfoCAQD9BAAhkQNAAJ0FACG3AwEA_wQAIdIDAQD9BAAh0wMBAP0EACHUAwIAmwUAIdUDAQD9BAAh1gMgAJwFACHXAwEA_wQAIdgDAQD_BAAhAwAAAG4AIAEAAG8AMAIAAHAAIAEAAAADACABAAAABwAgAQAAAAsAIAEAAAARACABAAAAMAAgAQAAAFsAIAEAAAA2ACABAAAAOgAgAQAAAD8AIAEAAABEACABAAAASwAgAQAAAF8AIAEAAABqACABAAAAbgAgAQAAAAEAIB0EAACGCgAgBQAAhwoAIAYAAIgKACAgAACPCgAgIQAAiQoAICIAAIoKACAmAACRCgAgJwAAiwoAICgAAIwKACApAACNCgAgKgAAjgoAICsAAJAKACAsAACSCgAgLQAAkwoAIPwCAADmBQAgoQMAAOYFACCoAwAA5gUAILYDAADmBQAgtwMAAOYFACDpAwAA5gUAIO8DAADmBQAg8AMAAOYFACDxAwAA5gUAIPIDAADmBQAg8wMAAOYFACD0AwAA5gUAIPUDAADmBQAg9gMAAOYFACD3AwAA5gUAIAMAAAAPACABAACBAQAwAgAAAQAgAwAAAA8AIAEAAIEBADACAAABACADAAAADwAgAQAAgQEAMAIAAAEAICQEAAD4CQAgBQAA-QkAIAYAAPoJACAgAACBCgAgIQAA-wkAICIAAPwJACAmAACDCgAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQEzAACFAQAgFvkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQEzAACHAQAwATMAAIcBADAkBAAA2ggAIAUAANsIACAGAADcCAAgIAAA4wgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACECAAAAAQAgMwAAigEAIBb5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACECAAAADwAgMwAAjAEAIAIAAAAPACAzAACMAQAgAwAAAAEAIDoAAIUBACA7AACKAQAgAQAAAAEAIAEAAAAPACAUDAAA0ggAIEAAANMIACBBAADWCAAgQgAA1QgAIEMAANQIACD8AgAA5gUAIKEDAADmBQAgqAMAAOYFACC2AwAA5gUAILcDAADmBQAg6QMAAOYFACDvAwAA5gUAIPADAADmBQAg8QMAAOYFACDyAwAA5gUAIPMDAADmBQAg9AMAAOYFACD1AwAA5gUAIPYDAADmBQAg9wMAAOYFACAZ9gIAAJAFADD3AgAAkwEAEPgCAACQBQAw-QIBAM4EACH8AgEA4AQAIf4CQADQBAAhkQNAANAEACGhAwIA6AQAIagDQADZBAAhtgMBAOAEACG3AwEA4AQAIegDIADPBAAh6QMBAOAEACHrAwAAkQXrAyLtAwAAkgXtAyLuAyAAzwQAIe8DAQDgBAAh8AMBAOAEACHxAwAA7gQAIPIDQADZBAAh8wMBAOAEACH0AyAAkwUAIfUDAQDgBAAh9gNAANkEACH3A0AA2QQAIQMAAAAPACABAACSAQAwPwAAkwEAIAMAAAAPACABAACBAQAwAgAAAQAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACAOAwAA0QgAIPkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAHfAwEAAAAB4AMBAAAAAeEDAQAAAAHiAwEAAAAB4wNAAAAAAeQDQAAAAAHlAwEAAAAB5gMBAAAAAecDAQAAAAEBMwAAmwEAIA35AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAAB3wMBAAAAAeADAQAAAAHhAwEAAAAB4gMBAAAAAeMDQAAAAAHkA0AAAAAB5QMBAAAAAeYDAQAAAAHnAwEAAAABATMAAJ0BADABMwAAnQEAMA4DAADQCAAg-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACHfAwEA4QUAIeADAQDhBQAh4QMBAPUFACHiAwEA9QUAIeMDQADqBQAh5ANAAOoFACHlAwEA9QUAIeYDAQD1BQAh5wMBAPUFACECAAAABQAgMwAAoAEAIA35AgEA4QUAIfoCAQDhBQAh_gJAAOMFACGRA0AA4wUAId8DAQDhBQAh4AMBAOEFACHhAwEA9QUAIeIDAQD1BQAh4wNAAOoFACHkA0AA6gUAIeUDAQD1BQAh5gMBAPUFACHnAwEA9QUAIQIAAAADACAzAACiAQAgAgAAAAMAIDMAAKIBACADAAAABQAgOgAAmwEAIDsAAKABACABAAAABQAgAQAAAAMAIAoMAADNCAAgQgAAzwgAIEMAAM4IACDhAwAA5gUAIOIDAADmBQAg4wMAAOYFACDkAwAA5gUAIOUDAADmBQAg5gMAAOYFACDnAwAA5gUAIBD2AgAAjwUAMPcCAACpAQAQ-AIAAI8FADD5AgEAzgQAIfoCAQDOBAAh_gJAANAEACGRA0AA0AQAId8DAQDOBAAh4AMBAM4EACHhAwEA4AQAIeIDAQDgBAAh4wNAANkEACHkA0AA2QQAIeUDAQDgBAAh5gMBAOAEACHnAwEA4AQAIQMAAAADACABAACoAQAwPwAAqQEAIAMAAAADACABAAAEADACAAAFACABAAAACQAgAQAAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAoDAADMCAAg-QIBAAAAAfoCAQAAAAH-AkAAAAABkQNAAAAAAa4DAQAAAAHbA0AAAAAB3AMBAAAAAd0DAQAAAAHeAwEAAAABATMAALEBACAJ-QIBAAAAAfoCAQAAAAH-AkAAAAABkQNAAAAAAa4DAQAAAAHbA0AAAAAB3AMBAAAAAd0DAQAAAAHeAwEAAAABATMAALMBADABMwAAswEAMAoDAADLCAAg-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACGuAwEA9QUAIdsDQADjBQAh3AMBAOEFACHdAwEA9QUAId4DAQD1BQAhAgAAAAkAIDMAALYBACAJ-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACGuAwEA9QUAIdsDQADjBQAh3AMBAOEFACHdAwEA9QUAId4DAQD1BQAhAgAAAAcAIDMAALgBACACAAAABwAgMwAAuAEAIAMAAAAJACA6AACxAQAgOwAAtgEAIAEAAAAJACABAAAABwAgBgwAAMgIACBCAADKCAAgQwAAyQgAIK4DAADmBQAg3QMAAOYFACDeAwAA5gUAIAz2AgAAjgUAMPcCAAC_AQAQ-AIAAI4FADD5AgEAzgQAIfoCAQDOBAAh_gJAANAEACGRA0AA0AQAIa4DAQDgBAAh2wNAANAEACHcAwEAzgQAId0DAQDgBAAh3gMBAOAEACEDAAAABwAgAQAAvgEAMD8AAL8BACADAAAABwAgAQAACAAwAgAACQAgAQAAAA0AIAEAAAANACADAAAACwAgAQAADAAwAgAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACAIAwAAxwgAIPkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAHZAwEAAAAB2gMBAAAAAdsDQAAAAAEBMwAAxwEAIAf5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAAB2QMBAAAAAdoDAQAAAAHbA0AAAAABATMAAMkBADABMwAAyQEAMAEAAAAPACAIAwAAxggAIPkCAQDhBQAh-gIBAPUFACH-AkAA6gUAIZEDQADqBQAh2QMBAOEFACHaAwEA4QUAIdsDQADjBQAhAgAAAA0AIDMAAM0BACAH-QIBAOEFACH6AgEA9QUAIf4CQADqBQAhkQNAAOoFACHZAwEA4QUAIdoDAQDhBQAh2wNAAOMFACECAAAACwAgMwAAzwEAIAIAAAALACAzAADPAQAgAQAAAA8AIAMAAAANACA6AADHAQAgOwAAzQEAIAEAAAANACABAAAACwAgBgwAAMMIACBCAADFCAAgQwAAxAgAIPoCAADmBQAg_gIAAOYFACCRAwAA5gUAIAr2AgAAjQUAMPcCAADXAQAQ-AIAAI0FADD5AgEAzgQAIfoCAQDgBAAh_gJAANkEACGRA0AA2QQAIdkDAQDOBAAh2gMBAM4EACHbA0AA0AQAIQMAAAALACABAADWAQAwPwAA1wEAIAMAAAALACABAAAMADACAAANACABAAAAcAAgAQAAAHAAIAMAAABuACABAABvADACAABwACADAAAAbgAgAQAAbwAwAgAAcAAgAwAAAG4AIAEAAG8AMAIAAHAAIAwDAADCCAAg-QIBAAAAAfoCAQAAAAGRA0AAAAABtwMBAAAAAdIDAQAAAAHTAwEAAAAB1AMCAAAAAdUDAQAAAAHWAyAAAAAB1wMBAAAAAdgDAQAAAAEBMwAA3wEAIAv5AgEAAAAB-gIBAAAAAZEDQAAAAAG3AwEAAAAB0gMBAAAAAdMDAQAAAAHUAwIAAAAB1QMBAAAAAdYDIAAAAAHXAwEAAAAB2AMBAAAAAQEzAADhAQAwATMAAOEBADAMAwAAwQgAIPkCAQDhBQAh-gIBAOEFACGRA0AA6gUAIbcDAQD1BQAh0gMBAOEFACHTAwEA4QUAIdQDAgD0BQAh1QMBAOEFACHWAyAA4gUAIdcDAQD1BQAh2AMBAPUFACECAAAAcAAgMwAA5AEAIAv5AgEA4QUAIfoCAQDhBQAhkQNAAOoFACG3AwEA9QUAIdIDAQDhBQAh0wMBAOEFACHUAwIA9AUAIdUDAQDhBQAh1gMgAOIFACHXAwEA9QUAIdgDAQD1BQAhAgAAAG4AIDMAAOYBACACAAAAbgAgMwAA5gEAIAMAAABwACA6AADfAQAgOwAA5AEAIAEAAABwACABAAAAbgAgCQwAALwIACBAAAC9CAAgQQAAwAgAIEIAAL8IACBDAAC-CAAgkQMAAOYFACC3AwAA5gUAINcDAADmBQAg2AMAAOYFACAO9gIAAIwFADD3AgAA7QEAEPgCAACMBQAw-QIBAM4EACH6AgEAzgQAIZEDQADZBAAhtwMBAOAEACHSAwEAzgQAIdMDAQDOBAAh1AMCAN8EACHVAwEAzgQAIdYDIADPBAAh1wMBAOAEACHYAwEA4AQAIQMAAABuACABAADsAQAwPwAA7QEAIAMAAABuACABAABvADACAABwACABAAAAGgAgAQAAABoAIAMAAAAXACABAAAZADACAAAaACADAAAAFwAgAQAAGQAwAgAAGgAgAwAAABcAIAEAABkAMAIAABoAIBsRAACrCAAgEgAAnAgAIBMAAJ0IACAUAACeCAAgFQAAnwgAIBYAAKAIACAYAAChCAAgGQAAoggAIBoAAKMIACAbAACkCAAgHAAApQgAICAAAKYIACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHIAwEAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABATMAAPUBACAP-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQEzAAD3AQAwATMAAPcBADABAAAAFQAgAQAAABcAIAEAAAAVACAbEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIQIAAAAaACAzAAD9AQAgD_kCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACECAAAAFwAgMwAA_wEAIAIAAAAXACAzAAD_AQAgAQAAABUAIAEAAAAXACABAAAAFQAgAwAAABoAIDoAAPUBACA7AAD9AQAgAQAAABoAIAEAAAAXACAKDAAAtwgAIEAAALgIACBBAAC7CAAgQgAAuggAIEMAALkIACChAwAA5gUAIKgDAADmBQAgxwMAAOYFACDIAwAA5gUAIMkDAADmBQAgEvYCAACIBQAw9wIAAIkCABD4AgAAiAUAMPkCAQDOBAAh_gJAANAEACGRA0AA0AQAIaEDAgDoBAAhqANAANkEACHHAwIA6AQAIcgDAQDgBAAhyQMCAOgEACHLAwAAiQXLAyLMAyAAzwQAIc0DIADPBAAhzgMCAN8EACHPAwIA3wQAIdADAgDfBAAh0QMCAN8EACEDAAAAFwAgAQAAiAIAMD8AAIkCACADAAAAFwAgAQAAGQAwAgAAGgAgAQAAAC0AIAEAAAAtACADAAAAFQAgAQAALAAwAgAALQAgAwAAABUAIAEAACwAMAIAAC0AIAMAAAAVACABAAAsADACAAAtACAQBwAAtggAIAgAAJYIACAJAACXCAAgDgAAmAgAIBAAAJkIACCMAwEAAAABkQNAAAAAAaMDAQAAAAGkAwIAAAABwAMBAAAAAcEDAQAAAAHCAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgNAAAAAAQEzAACRAgAgC4wDAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAHAAwEAAAABwQMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGA0AAAAABATMAAJMCADABMwAAkwIAMBAHAACLBwAgCAAAjAcAIAkAAI0HACAOAACOBwAgEAAAjwcAIIwDAQDhBQAhkQNAAOMFACGjAwEA4QUAIaQDAgD0BQAhwAMBAPUFACHBAwEA9QUAIcIDAQD1BQAhwwMBAOEFACHEAwEA9QUAIcUDAQD1BQAhxgNAAOoFACECAAAALQAgMwAAlgIAIAuMAwEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIA9AUAIcADAQD1BQAhwQMBAPUFACHCAwEA9QUAIcMDAQDhBQAhxAMBAPUFACHFAwEA9QUAIcYDQADqBQAhAgAAABUAIDMAAJgCACACAAAAFQAgMwAAmAIAIAMAAAAtACA6AACRAgAgOwAAlgIAIAEAAAAtACABAAAAFQAgCwwAAIYHACBAAACHBwAgQQAAigcAIEIAAIkHACBDAACIBwAgwAMAAOYFACDBAwAA5gUAIMIDAADmBQAgxAMAAOYFACDFAwAA5gUAIMYDAADmBQAgDvYCAACHBQAw9wIAAJ8CABD4AgAAhwUAMIwDAQDOBAAhkQNAANAEACGjAwEAzgQAIaQDAgDfBAAhwAMBAOAEACHBAwEA4AQAIcIDAQDgBAAhwwMBAM4EACHEAwEA4AQAIcUDAQDgBAAhxgNAANkEACEDAAAAFQAgAQAAngIAMD8AAJ8CACADAAAAFQAgAQAALAAwAgAALQAgAQAAAB4AIAEAAAAeACADAAAAHAAgAQAAHQAwAgAAHgAgAwAAABwAIAEAAB0AMAIAAB4AIAMAAAAcACABAAAdADACAAAeACAGCgAA8gYAIA0AAIUHACCRA0AAAAABowMBAAAAAaQDAgAAAAG_AwEAAAABATMAAKcCACAEkQNAAAAAAaMDAQAAAAGkAwIAAAABvwMBAAAAAQEzAACpAgAwATMAAKkCADAGCgAA8AYAIA0AAIQHACCRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACG_AwEA4QUAIQIAAAAeACAzAACsAgAgBJEDQADjBQAhowMBAOEFACGkAwIA9AUAIb8DAQDhBQAhAgAAABwAIDMAAK4CACACAAAAHAAgMwAArgIAIAMAAAAeACA6AACnAgAgOwAArAIAIAEAAAAeACABAAAAHAAgBQwAAP8GACBAAACABwAgQQAAgwcAIEIAAIIHACBDAACBBwAgB_YCAACGBQAw9wIAALUCABD4AgAAhgUAMJEDQADQBAAhowMBAM4EACGkAwIA3wQAIb8DAQDOBAAhAwAAABwAIAEAALQCADA_AAC1AgAgAwAAABwAIAEAAB0AMAIAAB4AIAEAAAAkACABAAAAJAAgAwAAACIAIAEAACMAMAIAACQAIAMAAAAiACABAAAjADACAAAkACADAAAAIgAgAQAAIwAwAgAAJAAgCAcAAP0GACAPAAD-BgAg-QIBAAAAAZEDQAAAAAGjAwEAAAABqwMAAAC_AwK8AwIAAAABvQMBAAAAAQEzAAC9AgAgBvkCAQAAAAGRA0AAAAABowMBAAAAAasDAAAAvwMCvAMCAAAAAb0DAQAAAAEBMwAAvwIAMAEzAAC_AgAwCAcAAPsGACAPAAD8BgAg-QIBAOEFACGRA0AA4wUAIaMDAQDhBQAhqwMAAPoGvwMivAMCAPQFACG9AwEA4QUAIQIAAAAkACAzAADCAgAgBvkCAQDhBQAhkQNAAOMFACGjAwEA4QUAIasDAAD6Br8DIrwDAgD0BQAhvQMBAOEFACECAAAAIgAgMwAAxAIAIAIAAAAiACAzAADEAgAgAwAAACQAIDoAAL0CACA7AADCAgAgAQAAACQAIAEAAAAiACAFDAAA9QYAIEAAAPYGACBBAAD5BgAgQgAA-AYAIEMAAPcGACAJ9gIAAIIFADD3AgAAywIAEPgCAACCBQAw-QIBAM4EACGRA0AA0AQAIaMDAQDOBAAhqwMAAIMFvwMivAMCAN8EACG9AwEAzgQAIQMAAAAiACABAADKAgAwPwAAywIAIAMAAAAiACABAAAjADACAAAkACAJCwAAgQUAIPYCAAD8BAAw9wIAANECABD4AgAA_AQAMPkCAQAAAAGRA0AAgAUAIaEDAgAAAAG3AwEAAAABuAMBAP8EACEBAAAAzgIAIAEAAADOAgAgCQsAAIEFACD2AgAA_AQAMPcCAADRAgAQ-AIAAPwEADD5AgEA_QQAIZEDQACABQAhoQMCAP4EACG3AwEA_QQAIbgDAQD_BAAhAwsAAPQGACChAwAA5gUAILgDAADmBQAgAwAAANECACABAADSAgAwAgAAzgIAIAMAAADRAgAgAQAA0gIAMAIAAM4CACADAAAA0QIAIAEAANICADACAADOAgAgBgsAAPMGACD5AgEAAAABkQNAAAAAAaEDAgAAAAG3AwEAAAABuAMBAAAAAQEzAADWAgAgBfkCAQAAAAGRA0AAAAABoQMCAAAAAbcDAQAAAAG4AwEAAAABATMAANgCADABMwAA2AIAMAYLAADkBgAg-QIBAOEFACGRA0AA4wUAIaEDAgCSBgAhtwMBAOEFACG4AwEA9QUAIQIAAADOAgAgMwAA2wIAIAX5AgEA4QUAIZEDQADjBQAhoQMCAJIGACG3AwEA4QUAIbgDAQD1BQAhAgAAANECACAzAADdAgAgAgAAANECACAzAADdAgAgAwAAAM4CACA6AADWAgAgOwAA2wIAIAEAAADOAgAgAQAAANECACAHDAAA3wYAIEAAAOAGACBBAADjBgAgQgAA4gYAIEMAAOEGACChAwAA5gUAILgDAADmBQAgCPYCAAD7BAAw9wIAAOQCABD4AgAA-wQAMPkCAQDOBAAhkQNAANAEACGhAwIA6AQAIbcDAQDOBAAhuAMBAOAEACEDAAAA0QIAIAEAAOMCADA_AADkAgAgAwAAANECACABAADSAgAwAgAAzgIAIAEAAAATACABAAAAEwAgAwAAABEAIAEAABIAMAIAABMAIAMAAAARACABAAASADACAAATACADAAAAEQAgAQAAEgAwAgAAEwAgBgMAAN4GACAHAADdBgAg-gIBAAAAAZEDQAAAAAGjAwEAAAABtgMAAAC2AwIBMwAA7AIAIAT6AgEAAAABkQNAAAAAAaMDAQAAAAG2AwAAALYDAgEzAADuAgAwATMAAO4CADAGAwAA3AYAIAcAANsGACD6AgEA4QUAIZEDQADjBQAhowMBAOEFACG2AwAA2ga2AyICAAAAEwAgMwAA8QIAIAT6AgEA4QUAIZEDQADjBQAhowMBAOEFACG2AwAA2ga2AyICAAAAEQAgMwAA8wIAIAIAAAARACAzAADzAgAgAwAAABMAIDoAAOwCACA7AADxAgAgAQAAABMAIAEAAAARACADDAAA1wYAIEIAANkGACBDAADYBgAgB_YCAAD3BAAw9wIAAPoCABD4AgAA9wQAMPoCAQDOBAAhkQNAANAEACGjAwEAzgQAIbYDAAD4BLYDIgMAAAARACABAAD5AgAwPwAA-gIAIAMAAAARACABAAASADACAAATACABAAAAMgAgAQAAADIAIAMAAAAwACABAAAxADACAAAyACADAAAAMAAgAQAAMQAwAgAAMgAgAwAAADAAIAEAADEAMAIAADIAIAcHAADVBgAgFwAA1gYAIPkCAQAAAAGRA0AAAAABowMBAAAAAbIDAQAAAAG0AwAAALQDAgEzAACCAwAgBfkCAQAAAAGRA0AAAAABowMBAAAAAbIDAQAAAAG0AwAAALQDAgEzAACEAwAwATMAAIQDADABAAAADwAgBwcAANMGACAXAADUBgAg-QIBAOEFACGRA0AA4wUAIaMDAQDhBQAhsgMBAPUFACG0AwAA0ga0AyICAAAAMgAgMwAAiAMAIAX5AgEA4QUAIZEDQADjBQAhowMBAOEFACGyAwEA9QUAIbQDAADSBrQDIgIAAAAwACAzAACKAwAgAgAAADAAIDMAAIoDACABAAAADwAgAwAAADIAIDoAAIIDACA7AACIAwAgAQAAADIAIAEAAAAwACAEDAAAzwYAIEIAANEGACBDAADQBgAgsgMAAOYFACAI9gIAAPMEADD3AgAAkgMAEPgCAADzBAAw-QIBAM4EACGRA0AA0AQAIaMDAQDOBAAhsgMBAOAEACG0AwAA9AS0AyIDAAAAMAAgAQAAkQMAMD8AAJIDACADAAAAMAAgAQAAMQAwAgAAMgAgAQAAADgAIAEAAAA4ACADAAAANgAgAQAANwAwAgAAOAAgAwAAADYAIAEAADcAMAIAADgAIAMAAAA2ACABAAA3ADACAAA4ACAFAwAAzgYAIAcAAM0GACD6AgEAAAABkQNAAAAAAaMDAQAAAAEBMwAAmgMAIAP6AgEAAAABkQNAAAAAAaMDAQAAAAEBMwAAnAMAMAEzAACcAwAwBQMAAMwGACAHAADLBgAg-gIBAOEFACGRA0AA4wUAIaMDAQDhBQAhAgAAADgAIDMAAJ8DACAD-gIBAOEFACGRA0AA4wUAIaMDAQDhBQAhAgAAADYAIDMAAKEDACACAAAANgAgMwAAoQMAIAMAAAA4ACA6AACaAwAgOwAAnwMAIAEAAAA4ACABAAAANgAgAwwAAMgGACBCAADKBgAgQwAAyQYAIAb2AgAA8gQAMPcCAACoAwAQ-AIAAPIEADD6AgEAzgQAIZEDQADQBAAhowMBAM4EACEDAAAANgAgAQAApwMAMD8AAKgDACADAAAANgAgAQAANwAwAgAAOAAgAQAAADwAIAEAAAA8ACADAAAAOgAgAQAAOwAwAgAAPAAgAwAAADoAIAEAADsAMAIAADwAIAMAAAA6ACABAAA7ADACAAA8ACAOAwAAxwYAIAcAAMYGACD5AgEAAAAB-gIBAAAAAZEDQAAAAAGjAwEAAAABpAMCAAAAAasDAAAAqwMCrAMBAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAbADgAAAAAGxAwEAAAABATMAALADACAM-QIBAAAAAfoCAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAGrAwAAAKsDAqwDAQAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAGwA4AAAAABsQMBAAAAAQEzAACyAwAwATMAALIDADABAAAADwAgDgMAAMUGACAHAADEBgAg-QIBAOEFACH6AgEA9QUAIZEDQADjBQAhowMBAOEFACGkAwIAkgYAIasDAADDBqsDIqwDAQD1BQAhrQMBAPUFACGuAwEA9QUAIa8DAQD1BQAhsAOAAAAAAbEDAQD1BQAhAgAAADwAIDMAALYDACAM-QIBAOEFACH6AgEA9QUAIZEDQADjBQAhowMBAOEFACGkAwIAkgYAIasDAADDBqsDIqwDAQD1BQAhrQMBAPUFACGuAwEA9QUAIa8DAQD1BQAhsAOAAAAAAbEDAQD1BQAhAgAAADoAIDMAALgDACACAAAAOgAgMwAAuAMAIAEAAAAPACADAAAAPAAgOgAAsAMAIDsAALYDACABAAAAPAAgAQAAADoAIA0MAAC-BgAgQAAAvwYAIEEAAMIGACBCAADBBgAgQwAAwAYAIPoCAADmBQAgpAMAAOYFACCsAwAA5gUAIK0DAADmBQAgrgMAAOYFACCvAwAA5gUAILADAADmBQAgsQMAAOYFACAP9gIAAOwEADD3AgAAwAMAEPgCAADsBAAw-QIBAM4EACH6AgEA4AQAIZEDQADQBAAhowMBAM4EACGkAwIA6AQAIasDAADtBKsDIqwDAQDgBAAhrQMBAOAEACGuAwEA4AQAIa8DAQDgBAAhsAMAAO4EACCxAwEA4AQAIQMAAAA6ACABAAC_AwAwPwAAwAMAIAMAAAA6ACABAAA7ADACAAA8ACABAAAAQQAgAQAAAEEAIAMAAAA_ACABAABAADACAABBACADAAAAPwAgAQAAQAAwAgAAQQAgAwAAAD8AIAEAAEAAMAIAAEEAIAkDAAC8BgAgBwAAvQYAIDOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGjAwEAAAABqQMCAAAAAQEzAADIAwAgBzOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGjAwEAAAABqQMCAAAAAQEzAADKAwAwATMAAMoDADABAAAAFwAgCQMAALoGACAHAAC7BgAgM4AAAAAB-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACGjAwEA9QUAIakDAgD0BQAhAgAAAEEAIDMAAM4DACAHM4AAAAAB-QIBAOEFACH6AgEA4QUAIf4CQADjBQAhkQNAAOMFACGjAwEA9QUAIakDAgD0BQAhAgAAAD8AIDMAANADACACAAAAPwAgMwAA0AMAIAEAAAAXACADAAAAQQAgOgAAyAMAIDsAAM4DACABAAAAQQAgAQAAAD8AIAYMAAC1BgAgQAAAtgYAIEEAALkGACBCAAC4BgAgQwAAtwYAIKMDAADmBQAgCjMAAN4EACD2AgAA6wQAMPcCAADYAwAQ-AIAAOsEADD5AgEAzgQAIfoCAQDOBAAh_gJAANAEACGRA0AA0AQAIaMDAQDgBAAhqQMCAN8EACEDAAAAPwAgAQAA1wMAMD8AANgDACADAAAAPwAgAQAAQAAwAgAAQQAgAQAAAEYAIAEAAABGACADAAAARAAgAQAARQAwAgAARgAgAwAAAEQAIAEAAEUAMAIAAEYAIAMAAABEACABAABFADACAABGACARAwAAsQYAIAcAALAGACAaAACzBgAgHQAAtAYAIB4AALIGACD5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaIDAQAAAAGjAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAEBMwAA4AMAIAz5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaIDAQAAAAGjAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAEBMwAA4gMAMAEzAADiAwAwAQAAAA8AIAEAAABEACARAwAAlAYAIAcAAJMGACAaAACXBgAgHQAAlQYAIB4AAJYGACD5AgEA4QUAIfoCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhogMBAPUFACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACECAAAARgAgMwAA5wMAIAz5AgEA4QUAIfoCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhogMBAPUFACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACECAAAARAAgMwAA6QMAIAIAAABEACAzAADpAwAgAQAAAA8AIAEAAABEACADAAAARgAgOgAA4AMAIDsAAOcDACABAAAARgAgAQAAAEQAIAwMAACNBgAgQAAAjgYAIEEAAJEGACBCAACQBgAgQwAAjwYAIPoCAADmBQAgoQMAAOYFACCiAwAA5gUAIKQDAADmBQAgpQMAAOYFACCnAwAA5gUAIKgDAADmBQAgD_YCAADnBAAw9wIAAPIDABD4AgAA5wQAMPkCAQDOBAAh-gIBAOAEACH-AkAA0AQAIZEDQADQBAAhoQMCAOgEACGiAwEA4AQAIaMDAQDOBAAhpAMCAOgEACGlAwEA4AQAIaYDAgDfBAAhpwNAANkEACGoA0AA2QQAIQMAAABEACABAADxAwAwPwAA8gMAIAMAAABEACABAABFADACAABGACABAAAATQAgAQAAAE0AIAMAAABLACABAABMADACAABNACADAAAASwAgAQAATAAwAgAATQAgAwAAAEsAIAEAAEwAMAIAAE0AIAUDAACMBgAgHwAAiwYAIPoCAQAAAAGRA0AAAAABoAMBAAAAAQEzAAD6AwAgA_oCAQAAAAGRA0AAAAABoAMBAAAAAQEzAAD8AwAwATMAAPwDADAFAwAAigYAIB8AAIkGACD6AgEA4QUAIZEDQADjBQAhoAMBAOEFACECAAAATQAgMwAA_wMAIAP6AgEA4QUAIZEDQADjBQAhoAMBAOEFACECAAAASwAgMwAAgQQAIAIAAABLACAzAACBBAAgAwAAAE0AIDoAAPoDACA7AAD_AwAgAQAAAE0AIAEAAABLACADDAAAhgYAIEIAAIgGACBDAACHBgAgBvYCAADmBAAw9wIAAIgEABD4AgAA5gQAMPoCAQDOBAAhkQNAANAEACGgAwEAzgQAIQMAAABLACABAACHBAAwPwAAiAQAIAMAAABLACABAABMADACAABNACABAAAAXQAgAQAAAF0AIAMAAABbACABAABcADACAABdACADAAAAWwAgAQAAXAAwAgAAXQAgAwAAAFsAIAEAAFwAMAIAAF0AIAwjAACEBgAgJgAAhQYAIPkCAQAAAAGRA0AAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDgAAAAAGXA0AAAAABmAMCAAAAAZkDAQAAAAEBMwAAkAQAIAr5AgEAAAABkQNAAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWA4AAAAABlwNAAAAAAZgDAgAAAAGZAwEAAAABATMAAJIEADABMwAAkgQAMAwjAAD2BQAgJgAA9wUAIPkCAQDhBQAhkQNAAOMFACGSAwEA4QUAIZMDAQDhBQAhlAMBAOEFACGVAwEA4QUAIZYDgAAAAAGXA0AA6gUAIZgDAgD0BQAhmQMBAPUFACECAAAAXQAgMwAAlQQAIAr5AgEA4QUAIZEDQADjBQAhkgMBAOEFACGTAwEA4QUAIZQDAQDhBQAhlQMBAOEFACGWA4AAAAABlwNAAOoFACGYAwIA9AUAIZkDAQD1BQAhAgAAAFsAIDMAAJcEACACAAAAWwAgMwAAlwQAIAMAAABdACA6AACQBAAgOwAAlQQAIAEAAABdACABAAAAWwAgBwwAAO8FACBAAADwBQAgQQAA8wUAIEIAAPIFACBDAADxBQAglwMAAOYFACCZAwAA5gUAIA32AgAA3QQAMPcCAACeBAAQ-AIAAN0EADD5AgEAzgQAIZEDQADQBAAhkgMBAM4EACGTAwEAzgQAIZQDAQDOBAAhlQMBAM4EACGWAwAA3gQAIJcDQADZBAAhmAMCAN8EACGZAwEA4AQAIQMAAABbACABAACdBAAwPwAAngQAIAMAAABbACABAABcADACAABdACABAAAAYQAgAQAAAGEAIAMAAABfACABAABgADACAABhACADAAAAXwAgAQAAYAAwAgAAYQAgAwAAAF8AIAEAAGAAMAIAAGEAIAwkAADtBQAgJQAA7gUAIPkCAQAAAAH7AgEAAAABigMBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAGPA0AAAAABkANAAAAAAZEDQAAAAAEBMwAApgQAIAr5AgEAAAAB-wIBAAAAAYoDAQAAAAGLAwEAAAABjAMBAAAAAY0DAQAAAAGOAwEAAAABjwNAAAAAAZADQAAAAAGRA0AAAAABATMAAKgEADABMwAAqAQAMAwkAADrBQAgJQAA7AUAIPkCAQDhBQAh-wIBAOEFACGKAwEA4QUAIYsDAQDhBQAhjAMBAOEFACGNAwEA4QUAIY4DAQDhBQAhjwNAAOoFACGQA0AA6gUAIZEDQADjBQAhAgAAAGEAIDMAAKsEACAK-QIBAOEFACH7AgEA4QUAIYoDAQDhBQAhiwMBAOEFACGMAwEA4QUAIY0DAQDhBQAhjgMBAOEFACGPA0AA6gUAIZADQADqBQAhkQNAAOMFACECAAAAXwAgMwAArQQAIAIAAABfACAzAACtBAAgAwAAAGEAIDoAAKYEACA7AACrBAAgAQAAAGEAIAEAAABfACAFDAAA5wUAIEIAAOkFACBDAADoBQAgjwMAAOYFACCQAwAA5gUAIA32AgAA2AQAMPcCAAC0BAAQ-AIAANgEADD5AgEAzgQAIfsCAQDOBAAhigMBAM4EACGLAwEAzgQAIYwDAQDOBAAhjQMBAM4EACGOAwEAzgQAIY8DQADZBAAhkANAANkEACGRA0AA0AQAIQMAAABfACABAACzBAAwPwAAtAQAIAMAAABfACABAABgADACAABhACABAAAAbAAgAQAAAGwAIAMAAABqACABAABrADACAABsACADAAAAagAgAQAAawAwAgAAbAAgAwAAAGoAIAEAAGsAMAIAAGwAIAcDAADlBQAg-QIBAAAAAfoCAQAAAAH7AgEAAAAB_AIgAAAAAf0CIAAAAAH-AkAAAAABATMAALwEACAG-QIBAAAAAfoCAQAAAAH7AgEAAAAB_AIgAAAAAf0CIAAAAAH-AkAAAAABATMAAL4EADABMwAAvgQAMAcDAADkBQAg-QIBAOEFACH6AgEA4QUAIfsCAQDhBQAh_AIgAOIFACH9AiAA4gUAIf4CQADjBQAhAgAAAGwAIDMAAMEEACAG-QIBAOEFACH6AgEA4QUAIfsCAQDhBQAh_AIgAOIFACH9AiAA4gUAIf4CQADjBQAhAgAAAGoAIDMAAMMEACACAAAAagAgMwAAwwQAIAMAAABsACA6AAC8BAAgOwAAwQQAIAEAAABsACABAAAAagAgAwwAAN4FACBCAADgBQAgQwAA3wUAIAn2AgAAzQQAMPcCAADKBAAQ-AIAAM0EADD5AgEAzgQAIfoCAQDOBAAh-wIBAM4EACH8AiAAzwQAIf0CIADPBAAh_gJAANAEACEDAAAAagAgAQAAyQQAMD8AAMoEACADAAAAagAgAQAAawAwAgAAbAAgCfYCAADNBAAw9wIAAMoEABD4AgAAzQQAMPkCAQDOBAAh-gIBAM4EACH7AgEAzgQAIfwCIADPBAAh_QIgAM8EACH-AkAA0AQAIQ4MAADSBAAgQgAA1wQAIEMAANcEACD_AgEAAAABgAMBAAAABIEDAQAAAASCAwEAAAABgwMBAAAAAYQDAQAAAAGFAwEAAAABhgMBANYEACGHAwEAAAABiAMBAAAAAYkDAQAAAAEFDAAA0gQAIEIAANUEACBDAADVBAAg_wIgAAAAAYYDIADUBAAhCwwAANIEACBCAADTBAAgQwAA0wQAIP8CQAAAAAGAA0AAAAAEgQNAAAAABIIDQAAAAAGDA0AAAAABhANAAAAAAYUDQAAAAAGGA0AA0QQAIQsMAADSBAAgQgAA0wQAIEMAANMEACD_AkAAAAABgANAAAAABIEDQAAAAASCA0AAAAABgwNAAAAAAYQDQAAAAAGFA0AAAAABhgNAANEEACEI_wICAAAAAYADAgAAAASBAwIAAAAEggMCAAAAAYMDAgAAAAGEAwIAAAABhQMCAAAAAYYDAgDSBAAhCP8CQAAAAAGAA0AAAAAEgQNAAAAABIIDQAAAAAGDA0AAAAABhANAAAAAAYUDQAAAAAGGA0AA0wQAIQUMAADSBAAgQgAA1QQAIEMAANUEACD_AiAAAAABhgMgANQEACEC_wIgAAAAAYYDIADVBAAhDgwAANIEACBCAADXBAAgQwAA1wQAIP8CAQAAAAGAAwEAAAAEgQMBAAAABIIDAQAAAAGDAwEAAAABhAMBAAAAAYUDAQAAAAGGAwEA1gQAIYcDAQAAAAGIAwEAAAABiQMBAAAAAQv_AgEAAAABgAMBAAAABIEDAQAAAASCAwEAAAABgwMBAAAAAYQDAQAAAAGFAwEAAAABhgMBANcEACGHAwEAAAABiAMBAAAAAYkDAQAAAAEN9gIAANgEADD3AgAAtAQAEPgCAADYBAAw-QIBAM4EACH7AgEAzgQAIYoDAQDOBAAhiwMBAM4EACGMAwEAzgQAIY0DAQDOBAAhjgMBAM4EACGPA0AA2QQAIZADQADZBAAhkQNAANAEACELDAAA2wQAIEIAANwEACBDAADcBAAg_wJAAAAAAYADQAAAAAWBA0AAAAAFggNAAAAAAYMDQAAAAAGEA0AAAAABhQNAAAAAAYYDQADaBAAhCwwAANsEACBCAADcBAAgQwAA3AQAIP8CQAAAAAGAA0AAAAAFgQNAAAAABYIDQAAAAAGDA0AAAAABhANAAAAAAYUDQAAAAAGGA0AA2gQAIQj_AgIAAAABgAMCAAAABYEDAgAAAAWCAwIAAAABgwMCAAAAAYQDAgAAAAGFAwIAAAABhgMCANsEACEI_wJAAAAAAYADQAAAAAWBA0AAAAAFggNAAAAAAYMDQAAAAAGEA0AAAAABhQNAAAAAAYYDQADcBAAhDfYCAADdBAAw9wIAAJ4EABD4AgAA3QQAMPkCAQDOBAAhkQNAANAEACGSAwEAzgQAIZMDAQDOBAAhlAMBAM4EACGVAwEAzgQAIZYDAADeBAAglwNAANkEACGYAwIA3wQAIZkDAQDgBAAhDwwAANIEACBCAADlBAAgQwAA5QQAIP8CgAAAAAGCA4AAAAABgwOAAAAAAYQDgAAAAAGFA4AAAAABhgOAAAAAAZoDAQAAAAGbAwEAAAABnAMBAAAAAZ0DgAAAAAGeA4AAAAABnwOAAAAAAQ0MAADSBAAgQAAA5AQAIEEAANIEACBCAADSBAAgQwAA0gQAIP8CAgAAAAGAAwIAAAAEgQMCAAAABIIDAgAAAAGDAwIAAAABhAMCAAAAAYUDAgAAAAGGAwIA4wQAIQ4MAADbBAAgQgAA4gQAIEMAAOIEACD_AgEAAAABgAMBAAAABYEDAQAAAAWCAwEAAAABgwMBAAAAAYQDAQAAAAGFAwEAAAABhgMBAOEEACGHAwEAAAABiAMBAAAAAYkDAQAAAAEODAAA2wQAIEIAAOIEACBDAADiBAAg_wIBAAAAAYADAQAAAAWBAwEAAAAFggMBAAAAAYMDAQAAAAGEAwEAAAABhQMBAAAAAYYDAQDhBAAhhwMBAAAAAYgDAQAAAAGJAwEAAAABC_8CAQAAAAGAAwEAAAAFgQMBAAAABYIDAQAAAAGDAwEAAAABhAMBAAAAAYUDAQAAAAGGAwEA4gQAIYcDAQAAAAGIAwEAAAABiQMBAAAAAQ0MAADSBAAgQAAA5AQAIEEAANIEACBCAADSBAAgQwAA0gQAIP8CAgAAAAGAAwIAAAAEgQMCAAAABIIDAgAAAAGDAwIAAAABhAMCAAAAAYUDAgAAAAGGAwIA4wQAIQj_AggAAAABgAMIAAAABIEDCAAAAASCAwgAAAABgwMIAAAAAYQDCAAAAAGFAwgAAAABhgMIAOQEACEM_wKAAAAAAYIDgAAAAAGDA4AAAAABhAOAAAAAAYUDgAAAAAGGA4AAAAABmgMBAAAAAZsDAQAAAAGcAwEAAAABnQOAAAAAAZ4DgAAAAAGfA4AAAAABBvYCAADmBAAw9wIAAIgEABD4AgAA5gQAMPoCAQDOBAAhkQNAANAEACGgAwEAzgQAIQ_2AgAA5wQAMPcCAADyAwAQ-AIAAOcEADD5AgEAzgQAIfoCAQDgBAAh_gJAANAEACGRA0AA0AQAIaEDAgDoBAAhogMBAOAEACGjAwEAzgQAIaQDAgDoBAAhpQMBAOAEACGmAwIA3wQAIacDQADZBAAhqANAANkEACENDAAA2wQAIEAAAOoEACBBAADbBAAgQgAA2wQAIEMAANsEACD_AgIAAAABgAMCAAAABYEDAgAAAAWCAwIAAAABgwMCAAAAAYQDAgAAAAGFAwIAAAABhgMCAOkEACENDAAA2wQAIEAAAOoEACBBAADbBAAgQgAA2wQAIEMAANsEACD_AgIAAAABgAMCAAAABYEDAgAAAAWCAwIAAAABgwMCAAAAAYQDAgAAAAGFAwIAAAABhgMCAOkEACEI_wIIAAAAAYADCAAAAAWBAwgAAAAFggMIAAAAAYMDCAAAAAGEAwgAAAABhQMIAAAAAYYDCADqBAAhCjMAAN4EACD2AgAA6wQAMPcCAADYAwAQ-AIAAOsEADD5AgEAzgQAIfoCAQDOBAAh_gJAANAEACGRA0AA0AQAIaMDAQDgBAAhqQMCAN8EACEP9gIAAOwEADD3AgAAwAMAEPgCAADsBAAw-QIBAM4EACH6AgEA4AQAIZEDQADQBAAhowMBAM4EACGkAwIA6AQAIasDAADtBKsDIqwDAQDgBAAhrQMBAOAEACGuAwEA4AQAIa8DAQDgBAAhsAMAAO4EACCxAwEA4AQAIQcMAADSBAAgQgAA8QQAIEMAAPEEACD_AgAAAKsDAoADAAAAqwMIgQMAAACrAwiGAwAA8ASrAyIPDAAA2wQAIEIAAO8EACBDAADvBAAg_wKAAAAAAYIDgAAAAAGDA4AAAAABhAOAAAAAAYUDgAAAAAGGA4AAAAABmgMBAAAAAZsDAQAAAAGcAwEAAAABnQOAAAAAAZ4DgAAAAAGfA4AAAAABDP8CgAAAAAGCA4AAAAABgwOAAAAAAYQDgAAAAAGFA4AAAAABhgOAAAAAAZoDAQAAAAGbAwEAAAABnAMBAAAAAZ0DgAAAAAGeA4AAAAABnwOAAAAAAQcMAADSBAAgQgAA8QQAIEMAAPEEACD_AgAAAKsDAoADAAAAqwMIgQMAAACrAwiGAwAA8ASrAyIE_wIAAACrAwKAAwAAAKsDCIEDAAAAqwMIhgMAAPEEqwMiBvYCAADyBAAw9wIAAKgDABD4AgAA8gQAMPoCAQDOBAAhkQNAANAEACGjAwEAzgQAIQj2AgAA8wQAMPcCAACSAwAQ-AIAAPMEADD5AgEAzgQAIZEDQADQBAAhowMBAM4EACGyAwEA4AQAIbQDAAD0BLQDIgcMAADSBAAgQgAA9gQAIEMAAPYEACD_AgAAALQDAoADAAAAtAMIgQMAAAC0AwiGAwAA9QS0AyIHDAAA0gQAIEIAAPYEACBDAAD2BAAg_wIAAAC0AwKAAwAAALQDCIEDAAAAtAMIhgMAAPUEtAMiBP8CAAAAtAMCgAMAAAC0AwiBAwAAALQDCIYDAAD2BLQDIgf2AgAA9wQAMPcCAAD6AgAQ-AIAAPcEADD6AgEAzgQAIZEDQADQBAAhowMBAM4EACG2AwAA-AS2AyIHDAAA0gQAIEIAAPoEACBDAAD6BAAg_wIAAAC2AwKAAwAAALYDCIEDAAAAtgMIhgMAAPkEtgMiBwwAANIEACBCAAD6BAAgQwAA-gQAIP8CAAAAtgMCgAMAAAC2AwiBAwAAALYDCIYDAAD5BLYDIgT_AgAAALYDAoADAAAAtgMIgQMAAAC2AwiGAwAA-gS2AyII9gIAAPsEADD3AgAA5AIAEPgCAAD7BAAw-QIBAM4EACGRA0AA0AQAIaEDAgDoBAAhtwMBAM4EACG4AwEA4AQAIQkLAACBBQAg9gIAAPwEADD3AgAA0QIAEPgCAAD8BAAw-QIBAP0EACGRA0AAgAUAIaEDAgD-BAAhtwMBAP0EACG4AwEA_wQAIQv_AgEAAAABgAMBAAAABIEDAQAAAASCAwEAAAABgwMBAAAAAYQDAQAAAAGFAwEAAAABhgMBANcEACGHAwEAAAABiAMBAAAAAYkDAQAAAAEI_wICAAAAAYADAgAAAAWBAwIAAAAFggMCAAAAAYMDAgAAAAGEAwIAAAABhQMCAAAAAYYDAgDbBAAhC_8CAQAAAAGAAwEAAAAFgQMBAAAABYIDAQAAAAGDAwEAAAABhAMBAAAAAYUDAQAAAAGGAwEA4gQAIYcDAQAAAAGIAwEAAAABiQMBAAAAAQj_AkAAAAABgANAAAAABIEDQAAAAASCA0AAAAABgwNAAAAAAYQDQAAAAAGFA0AAAAABhgNAANMEACEDuQMAABwAILoDAAAcACC7AwAAHAAgCfYCAACCBQAw9wIAAMsCABD4AgAAggUAMPkCAQDOBAAhkQNAANAEACGjAwEAzgQAIasDAACDBb8DIrwDAgDfBAAhvQMBAM4EACEHDAAA0gQAIEIAAIUFACBDAACFBQAg_wIAAAC_AwKAAwAAAL8DCIEDAAAAvwMIhgMAAIQFvwMiBwwAANIEACBCAACFBQAgQwAAhQUAIP8CAAAAvwMCgAMAAAC_AwiBAwAAAL8DCIYDAACEBb8DIgT_AgAAAL8DAoADAAAAvwMIgQMAAAC_AwiGAwAAhQW_AyIH9gIAAIYFADD3AgAAtQIAEPgCAACGBQAwkQNAANAEACGjAwEAzgQAIaQDAgDfBAAhvwMBAM4EACEO9gIAAIcFADD3AgAAnwIAEPgCAACHBQAwjAMBAM4EACGRA0AA0AQAIaMDAQDOBAAhpAMCAN8EACHAAwEA4AQAIcEDAQDgBAAhwgMBAOAEACHDAwEAzgQAIcQDAQDgBAAhxQMBAOAEACHGA0AA2QQAIRL2AgAAiAUAMPcCAACJAgAQ-AIAAIgFADD5AgEAzgQAIf4CQADQBAAhkQNAANAEACGhAwIA6AQAIagDQADZBAAhxwMCAOgEACHIAwEA4AQAIckDAgDoBAAhywMAAIkFywMizAMgAM8EACHNAyAAzwQAIc4DAgDfBAAhzwMCAN8EACHQAwIA3wQAIdEDAgDfBAAhBwwAANIEACBCAACLBQAgQwAAiwUAIP8CAAAAywMCgAMAAADLAwiBAwAAAMsDCIYDAACKBcsDIgcMAADSBAAgQgAAiwUAIEMAAIsFACD_AgAAAMsDAoADAAAAywMIgQMAAADLAwiGAwAAigXLAyIE_wIAAADLAwKAAwAAAMsDCIEDAAAAywMIhgMAAIsFywMiDvYCAACMBQAw9wIAAO0BABD4AgAAjAUAMPkCAQDOBAAh-gIBAM4EACGRA0AA2QQAIbcDAQDgBAAh0gMBAM4EACHTAwEAzgQAIdQDAgDfBAAh1QMBAM4EACHWAyAAzwQAIdcDAQDgBAAh2AMBAOAEACEK9gIAAI0FADD3AgAA1wEAEPgCAACNBQAw-QIBAM4EACH6AgEA4AQAIf4CQADZBAAhkQNAANkEACHZAwEAzgQAIdoDAQDOBAAh2wNAANAEACEM9gIAAI4FADD3AgAAvwEAEPgCAACOBQAw-QIBAM4EACH6AgEAzgQAIf4CQADQBAAhkQNAANAEACGuAwEA4AQAIdsDQADQBAAh3AMBAM4EACHdAwEA4AQAId4DAQDgBAAhEPYCAACPBQAw9wIAAKkBABD4AgAAjwUAMPkCAQDOBAAh-gIBAM4EACH-AkAA0AQAIZEDQADQBAAh3wMBAM4EACHgAwEAzgQAIeEDAQDgBAAh4gMBAOAEACHjA0AA2QQAIeQDQADZBAAh5QMBAOAEACHmAwEA4AQAIecDAQDgBAAhGfYCAACQBQAw9wIAAJMBABD4AgAAkAUAMPkCAQDOBAAh_AIBAOAEACH-AkAA0AQAIZEDQADQBAAhoQMCAOgEACGoA0AA2QQAIbYDAQDgBAAhtwMBAOAEACHoAyAAzwQAIekDAQDgBAAh6wMAAJEF6wMi7QMAAJIF7QMi7gMgAM8EACHvAwEA4AQAIfADAQDgBAAh8QMAAO4EACDyA0AA2QQAIfMDAQDgBAAh9AMgAJMFACH1AwEA4AQAIfYDQADZBAAh9wNAANkEACEHDAAA0gQAIEIAAJkFACBDAACZBQAg_wIAAADrAwKAAwAAAOsDCIEDAAAA6wMIhgMAAJgF6wMiBwwAANIEACBCAACXBQAgQwAAlwUAIP8CAAAA7QMCgAMAAADtAwiBAwAAAO0DCIYDAACWBe0DIgUMAADbBAAgQgAAlQUAIEMAAJUFACD_AiAAAAABhgMgAJQFACEFDAAA2wQAIEIAAJUFACBDAACVBQAg_wIgAAAAAYYDIACUBQAhAv8CIAAAAAGGAyAAlQUAIQcMAADSBAAgQgAAlwUAIEMAAJcFACD_AgAAAO0DAoADAAAA7QMIgQMAAADtAwiGAwAAlgXtAyIE_wIAAADtAwKAAwAAAO0DCIEDAAAA7QMIhgMAAJcF7QMiBwwAANIEACBCAACZBQAgQwAAmQUAIP8CAAAA6wMCgAMAAADrAwiBAwAAAOsDCIYDAACYBesDIgT_AgAAAOsDAoADAAAA6wMIgQMAAADrAwiGAwAAmQXrAyIPAwAAngUAIPYCAACaBQAw9wIAAG4AEPgCAACaBQAw-QIBAP0EACH6AgEA_QQAIZEDQACdBQAhtwMBAP8EACHSAwEA_QQAIdMDAQD9BAAh1AMCAJsFACHVAwEA_QQAIdYDIACcBQAh1wMBAP8EACHYAwEA_wQAIQj_AgIAAAABgAMCAAAABIEDAgAAAASCAwIAAAABgwMCAAAAAYQDAgAAAAGFAwIAAAABhgMCANIEACEC_wIgAAAAAYYDIADVBAAhCP8CQAAAAAGAA0AAAAAFgQNAAAAABYIDQAAAAAGDA0AAAAABhANAAAAAAYUDQAAAAAGGA0AA3AQAISkEAADVBQAgBQAA1gUAIAYAANcFACAgAACuBQAgIQAAyQUAICIAAMoFACAmAACmBQAgJwAA2AUAICgAAMsFACApAADMBQAgKgAAzQUAICsAAK8FACAsAADZBQAgLQAA2gUAIPYCAADRBQAw9wIAAA8AEPgCAADRBQAw-QIBAP0EACH8AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIagDQACdBQAhtgMBAP8EACG3AwEA_wQAIegDIACcBQAh6QMBAP8EACHrAwAA0gXrAyLtAwAA0wXtAyLuAyAAnAUAIe8DAQD_BAAh8AMBAP8EACHxAwAAtAUAIPIDQACdBQAh8wMBAP8EACH0AyAA1AUAIfUDAQD_BAAh9gNAAJ0FACH3A0AAnQUAIYAEAAAPACCBBAAADwAgAvoCAQAAAAH7AgEAAAABCgMAAJ4FACD2AgAAoAUAMPcCAABqABD4AgAAoAUAMPkCAQD9BAAh-gIBAP0EACH7AgEA_QQAIfwCIACcBQAh_QIgAJwFACH-AkAAgAUAIQP7AgEAAAABigMBAAAAAYsDAQAAAAEPJAAAngUAICUAAKMFACD2AgAAogUAMPcCAABfABD4AgAAogUAMPkCAQD9BAAh-wIBAP0EACGKAwEA_QQAIYsDAQD9BAAhjAMBAP0EACGNAwEA_QQAIY4DAQD9BAAhjwNAAJ0FACGQA0AAnQUAIZEDQACABQAhESMAAJ4FACAmAACmBQAg9gIAAKQFADD3AgAAWwAQ-AIAAKQFADD5AgEA_QQAIZEDQACABQAhkgMBAP0EACGTAwEA_QQAIZQDAQD9BAAhlQMBAP0EACGWAwAApQUAIJcDQACdBQAhmAMCAJsFACGZAwEA_wQAIYAEAABbACCBBAAAWwAgDyMAAJ4FACAmAACmBQAg9gIAAKQFADD3AgAAWwAQ-AIAAKQFADD5AgEA_QQAIZEDQACABQAhkgMBAP0EACGTAwEA_QQAIZQDAQD9BAAhlQMBAP0EACGWAwAApQUAIJcDQACdBQAhmAMCAJsFACGZAwEA_wQAIQz_AoAAAAABggOAAAAAAYMDgAAAAAGEA4AAAAABhQOAAAAAAYYDgAAAAAGaAwEAAAABmwMBAAAAAZwDAQAAAAGdA4AAAAABngOAAAAAAZ8DgAAAAAEDuQMAAF8AILoDAABfACC7AwAAXwAgAvoCAQAAAAGgAwEAAAABCAMAAJ4FACAfAACpBQAg9gIAAKgFADD3AgAASwAQ-AIAAKgFADD6AgEA_QQAIZEDQACABQAhoAMBAP0EACEWAwAArAUAIAcAAKsFACAaAACvBQAgHQAArQUAIB4AAK4FACD2AgAAqgUAMPcCAABEABD4AgAAqgUAMPkCAQD9BAAh-gIBAP8EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGiAwEA_wQAIaMDAQD9BAAhpAMCAP4EACGlAwEA_wQAIaYDAgCbBQAhpwNAAJ0FACGoA0AAnQUAIYAEAABEACCBBAAARAAgFAMAAKwFACAHAACrBQAgGgAArwUAIB0AAK0FACAeAACuBQAg9gIAAKoFADD3AgAARAAQ-AIAAKoFADD5AgEA_QQAIfoCAQD_BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhogMBAP8EACGjAwEA_QQAIaQDAgD-BAAhpQMBAP8EACGmAwIAmwUAIacDQACdBQAhqANAAJ0FACEgEQAAxwUAIBIAALEFACATAAC8BQAgFAAAxwUAIBUAAMgFACAWAADJBQAgGAAAygUAIBkAAL0FACAaAADLBQAgGwAAzAUAIBwAAM0FACAgAACuBQAg9gIAAMUFADD3AgAAFwAQ-AIAAMUFADD5AgEA_QQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIagDQACdBQAhxwMCAP4EACHIAwEA_wQAIckDAgD-BAAhywMAAMYFywMizAMgAJwFACHNAyAAnAUAIc4DAgCbBQAhzwMCAJsFACHQAwIAmwUAIdEDAgCbBQAhgAQAABcAIIEEAAAXACApBAAA1QUAIAUAANYFACAGAADXBQAgIAAArgUAICEAAMkFACAiAADKBQAgJgAApgUAICcAANgFACAoAADLBQAgKQAAzAUAICoAAM0FACArAACvBQAgLAAA2QUAIC0AANoFACD2AgAA0QUAMPcCAAAPABD4AgAA0QUAMPkCAQD9BAAh_AIBAP8EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGoA0AAnQUAIbYDAQD_BAAhtwMBAP8EACHoAyAAnAUAIekDAQD_BAAh6wMAANIF6wMi7QMAANMF7QMi7gMgAJwFACHvAwEA_wQAIfADAQD_BAAh8QMAALQFACDyA0AAnQUAIfMDAQD_BAAh9AMgANQFACH1AwEA_wQAIfYDQACdBQAh9wNAAJ0FACGABAAADwAggQQAAA8AIBYDAACsBQAgBwAAqwUAIBoAAK8FACAdAACtBQAgHgAArgUAIPYCAACqBQAw9wIAAEQAEPgCAACqBQAw-QIBAP0EACH6AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIaIDAQD_BAAhowMBAP0EACGkAwIA_gQAIaUDAQD_BAAhpgMCAJsFACGnA0AAnQUAIagDQACdBQAhgAQAAEQAIIEEAABEACADuQMAAEQAILoDAABEACC7AwAARAAgA7kDAABLACC6AwAASwAguwMAAEsAIAwDAACeBQAgBwAAsQUAIDMAAKUFACD2AgAAsAUAMPcCAAA_ABD4AgAAsAUAMPkCAQD9BAAh-gIBAP0EACH-AkAAgAUAIZEDQACABQAhowMBAP8EACGpAwIAmwUAISARAADHBQAgEgAAsQUAIBMAALwFACAUAADHBQAgFQAAyAUAIBYAAMkFACAYAADKBQAgGQAAvQUAIBoAAMsFACAbAADMBQAgHAAAzQUAICAAAK4FACD2AgAAxQUAMPcCAAAXABD4AgAAxQUAMPkCAQD9BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhqANAAJ0FACHHAwIA_gQAIcgDAQD_BAAhyQMCAP4EACHLAwAAxgXLAyLMAyAAnAUAIc0DIACcBQAhzgMCAJsFACHPAwIAmwUAIdADAgCbBQAh0QMCAJsFACGABAAAFwAggQQAABcAIBEDAACsBQAgBwAAqwUAIPYCAACyBQAw9wIAADoAEPgCAACyBQAw-QIBAP0EACH6AgEA_wQAIZEDQACABQAhowMBAP0EACGkAwIA_gQAIasDAACzBasDIqwDAQD_BAAhrQMBAP8EACGuAwEA_wQAIa8DAQD_BAAhsAMAALQFACCxAwEA_wQAIQT_AgAAAKsDAoADAAAAqwMIgQMAAACrAwiGAwAA8QSrAyIM_wKAAAAAAYIDgAAAAAGDA4AAAAABhAOAAAAAAYUDgAAAAAGGA4AAAAABmgMBAAAAAZsDAQAAAAGcAwEAAAABnQOAAAAAAZ4DgAAAAAGfA4AAAAABAvoCAQAAAAGjAwEAAAABCAMAAJ4FACAHAACrBQAg9gIAALYFADD3AgAANgAQ-AIAALYFADD6AgEA_QQAIZEDQACABQAhowMBAP0EACECowMBAAAAAbIDAQAAAAEKBwAAqwUAIBcAAKwFACD2AgAAuAUAMPcCAAAwABD4AgAAuAUAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbIDAQD_BAAhtAMAALkFtAMiBP8CAAAAtAMCgAMAAAC0AwiBAwAAALQDCIYDAAD2BLQDIgKjAwEAAAABpAMCAAAAARMHAACrBQAgCAAAsQUAIAkAALwFACAOAACBBQAgEAAAvQUAIPYCAAC7BQAw9wIAABUAEPgCAAC7BQAwjAMBAP0EACGRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACHAAwEA_wQAIcEDAQD_BAAhwgMBAP8EACHDAwEA_QQAIcQDAQD_BAAhxQMBAP8EACHGA0AAnQUAIQO5AwAAFwAgugMAABcAILsDAAAXACADuQMAACIAILoDAAAiACC7AwAAIgAgCwcAAKsFACAPAADABQAg9gIAAL4FADD3AgAAIgAQ-AIAAL4FADD5AgEA_QQAIZEDQACABQAhowMBAP0EACGrAwAAvwW_AyK8AwIAmwUAIb0DAQD9BAAhBP8CAAAAvwMCgAMAAAC_AwiBAwAAAL8DCIYDAACFBb8DIhUHAACrBQAgCAAAsQUAIAkAALwFACAOAACBBQAgEAAAvQUAIPYCAAC7BQAw9wIAABUAEPgCAAC7BQAwjAMBAP0EACGRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACHAAwEA_wQAIcEDAQD_BAAhwgMBAP8EACHDAwEA_QQAIcQDAQD_BAAhxQMBAP8EACHGA0AAnQUAIYAEAAAVACCBBAAAFQAgA6MDAQAAAAGkAwIAAAABvwMBAAAAAQkKAADABQAgDQAAwwUAIPYCAADCBQAw9wIAABwAEPgCAADCBQAwkQNAAIAFACGjAwEA_QQAIaQDAgCbBQAhvwMBAP0EACELCwAAgQUAIPYCAAD8BAAw9wIAANECABD4AgAA_AQAMPkCAQD9BAAhkQNAAIAFACGhAwIA_gQAIbcDAQD9BAAhuAMBAP8EACGABAAA0QIAIIEEAADRAgAgAvkCAQAAAAHHAwIAAAABHhEAAMcFACASAACxBQAgEwAAvAUAIBQAAMcFACAVAADIBQAgFgAAyQUAIBgAAMoFACAZAAC9BQAgGgAAywUAIBsAAMwFACAcAADNBQAgIAAArgUAIPYCAADFBQAw9wIAABcAEPgCAADFBQAw-QIBAP0EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGoA0AAnQUAIccDAgD-BAAhyAMBAP8EACHJAwIA_gQAIcsDAADGBcsDIswDIACcBQAhzQMgAJwFACHOAwIAmwUAIc8DAgCbBQAh0AMCAJsFACHRAwIAmwUAIQT_AgAAAMsDAoADAAAAywMIgQMAAADLAwiGAwAAiwXLAyIVBwAAqwUAIAgAALEFACAJAAC8BQAgDgAAgQUAIBAAAL0FACD2AgAAuwUAMPcCAAAVABD4AgAAuwUAMIwDAQD9BAAhkQNAAIAFACGjAwEA_QQAIaQDAgCbBQAhwAMBAP8EACHBAwEA_wQAIcIDAQD_BAAhwwMBAP0EACHEAwEA_wQAIcUDAQD_BAAhxgNAAJ0FACGABAAAFQAggQQAABUAIAO5AwAAFQAgugMAABUAILsDAAAVACADuQMAABEAILoDAAARACC7AwAAEQAgA7kDAAAwACC6AwAAMAAguwMAADAAIAO5AwAANgAgugMAADYAILsDAAA2ACADuQMAADoAILoDAAA6ACC7AwAAOgAgA7kDAAA_ACC6AwAAPwAguwMAAD8AIAL6AgEAAAABowMBAAAAAQkDAACeBQAgBwAAqwUAIPYCAADPBQAw9wIAABEAEPgCAADPBQAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAhtgMAANAFtgMiBP8CAAAAtgMCgAMAAAC2AwiBAwAAALYDCIYDAAD6BLYDIicEAADVBQAgBQAA1gUAIAYAANcFACAgAACuBQAgIQAAyQUAICIAAMoFACAmAACmBQAgJwAA2AUAICgAAMsFACApAADMBQAgKgAAzQUAICsAAK8FACAsAADZBQAgLQAA2gUAIPYCAADRBQAw9wIAAA8AEPgCAADRBQAw-QIBAP0EACH8AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIagDQACdBQAhtgMBAP8EACG3AwEA_wQAIegDIACcBQAh6QMBAP8EACHrAwAA0gXrAyLtAwAA0wXtAyLuAyAAnAUAIe8DAQD_BAAh8AMBAP8EACHxAwAAtAUAIPIDQACdBQAh8wMBAP8EACH0AyAA1AUAIfUDAQD_BAAh9gNAAJ0FACH3A0AAnQUAIQT_AgAAAOsDAoADAAAA6wMIgQMAAADrAwiGAwAAmQXrAyIE_wIAAADtAwKAAwAAAO0DCIEDAAAA7QMIhgMAAJcF7QMiAv8CIAAAAAGGAyAAlQUAIQO5AwAAAwAgugMAAAMAILsDAAADACADuQMAAAcAILoDAAAHACC7AwAABwAgA7kDAAALACC6AwAACwAguwMAAAsAIAO5AwAAWwAgugMAAFsAILsDAABbACADuQMAAGoAILoDAABqACC7AwAAagAgA7kDAABuACC6AwAAbgAguwMAAG4AIAsDAACsBQAg9gIAANsFADD3AgAACwAQ-AIAANsFADD5AgEA_QQAIfoCAQD_BAAh_gJAAJ0FACGRA0AAnQUAIdkDAQD9BAAh2gMBAP0EACHbA0AAgAUAIQ0DAACeBQAg9gIAANwFADD3AgAABwAQ-AIAANwFADD5AgEA_QQAIfoCAQD9BAAh_gJAAIAFACGRA0AAgAUAIa4DAQD_BAAh2wNAAIAFACHcAwEA_QQAId0DAQD_BAAh3gMBAP8EACERAwAAngUAIPYCAADdBQAw9wIAAAMAEPgCAADdBQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACHfAwEA_QQAIeADAQD9BAAh4QMBAP8EACHiAwEA_wQAIeMDQACdBQAh5ANAAJ0FACHlAwEA_wQAIeYDAQD_BAAh5wMBAP8EACEAAAABhQQBAAAAAQGFBCAAAAABAYUEQAAAAAEFOgAA0QsAIDsAANQLACCCBAAA0gsAIIMEAADTCwAgiAQAAAEAIAM6AADRCwAgggQAANILACCIBAAAAQAgAAAAAAGFBEAAAAABBToAAMkLACA7AADPCwAgggQAAMoLACCDBAAAzgsAIIgEAAABACAFOgAAxwsAIDsAAMwLACCCBAAAyAsAIIMEAADLCwAgiAQAAF0AIAM6AADJCwAgggQAAMoLACCIBAAAAQAgAzoAAMcLACCCBAAAyAsAIIgEAABdACAAAAAAAAWFBAIAAAABiwQCAAAAAYwEAgAAAAGNBAIAAAABjgQCAAAAAQGFBAEAAAABBToAAMELACA7AADFCwAgggQAAMILACCDBAAAxAsAIIgEAAABACALOgAA-AUAMDsAAP0FADCCBAAA-QUAMIMEAAD6BQAwhAQAAPsFACCFBAAA_AUAMIYEAAD8BQAwhwQAAPwFADCIBAAA_AUAMIkEAAD-BQAwigQAAP8FADAKJAAA7QUAIPkCAQAAAAH7AgEAAAABigMBAAAAAYwDAQAAAAGNAwEAAAABjgMBAAAAAY8DQAAAAAGQA0AAAAABkQNAAAAAAQIAAABhACA6AACDBgAgAwAAAGEAIDoAAIMGACA7AACCBgAgATMAAMMLADAQJAAAngUAICUAAKMFACD2AgAAogUAMPcCAABfABD4AgAAogUAMPkCAQAAAAH7AgEA_QQAIYoDAQD9BAAhiwMBAP0EACGMAwEA_QQAIY0DAQD9BAAhjgMBAP0EACGPA0AAnQUAIZADQACdBQAhkQNAAIAFACH5AwAAoQUAIAIAAABhACAzAACCBgAgAgAAAIAGACAzAACBBgAgDfYCAAD_BQAw9wIAAIAGABD4AgAA_wUAMPkCAQD9BAAh-wIBAP0EACGKAwEA_QQAIYsDAQD9BAAhjAMBAP0EACGNAwEA_QQAIY4DAQD9BAAhjwNAAJ0FACGQA0AAnQUAIZEDQACABQAhDfYCAAD_BQAw9wIAAIAGABD4AgAA_wUAMPkCAQD9BAAh-wIBAP0EACGKAwEA_QQAIYsDAQD9BAAhjAMBAP0EACGNAwEA_QQAIY4DAQD9BAAhjwNAAJ0FACGQA0AAnQUAIZEDQACABQAhCfkCAQDhBQAh-wIBAOEFACGKAwEA4QUAIYwDAQDhBQAhjQMBAOEFACGOAwEA4QUAIY8DQADqBQAhkANAAOoFACGRA0AA4wUAIQokAADrBQAg-QIBAOEFACH7AgEA4QUAIYoDAQDhBQAhjAMBAOEFACGNAwEA4QUAIY4DAQDhBQAhjwNAAOoFACGQA0AA6gUAIZEDQADjBQAhCiQAAO0FACD5AgEAAAAB-wIBAAAAAYoDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAGPA0AAAAABkANAAAAAAZEDQAAAAAEDOgAAwQsAIIIEAADCCwAgiAQAAAEAIAQ6AAD4BQAwggQAAPkFADCEBAAA-wUAIIgEAAD8BQAwAAAABToAALkLACA7AAC_CwAgggQAALoLACCDBAAAvgsAIIgEAABGACAFOgAAtwsAIDsAALwLACCCBAAAuAsAIIMEAAC7CwAgiAQAAAEAIAM6AAC5CwAgggQAALoLACCIBAAARgAgAzoAALcLACCCBAAAuAsAIIgEAAABACAAAAAAAAWFBAIAAAABiwQCAAAAAYwEAgAAAAGNBAIAAAABjgQCAAAAAQU6AACqCwAgOwAAtQsAIIIEAACrCwAggwQAALQLACCIBAAAGgAgBzoAAKgLACA7AACyCwAgggQAAKkLACCDBAAAsQsAIIYEAAAPACCHBAAADwAgiAQAAAEAIAc6AACmCwAgOwAArwsAIIIEAACnCwAggwQAAK4LACCGBAAARAAghwQAAEQAIIgEAABGACALOgAApAYAMDsAAKkGADCCBAAApQYAMIMEAACmBgAwhAQAAKcGACCFBAAAqAYAMIYEAACoBgAwhwQAAKgGADCIBAAAqAYAMIkEAACqBgAwigQAAKsGADALOgAAmAYAMDsAAJ0GADCCBAAAmQYAMIMEAACaBgAwhAQAAJsGACCFBAAAnAYAMIYEAACcBgAwhwQAAJwGADCIBAAAnAYAMIkEAACeBgAwigQAAJ8GADADAwAAjAYAIPoCAQAAAAGRA0AAAAABAgAAAE0AIDoAAKMGACADAAAATQAgOgAAowYAIDsAAKIGACABMwAArQsAMAkDAACeBQAgHwAAqQUAIPYCAACoBQAw9wIAAEsAEPgCAACoBQAw-gIBAP0EACGRA0AAgAUAIaADAQD9BAAh-gMAAKcFACACAAAATQAgMwAAogYAIAIAAACgBgAgMwAAoQYAIAb2AgAAnwYAMPcCAACgBgAQ-AIAAJ8GADD6AgEA_QQAIZEDQACABQAhoAMBAP0EACEG9gIAAJ8GADD3AgAAoAYAEPgCAACfBgAw-gIBAP0EACGRA0AAgAUAIaADAQD9BAAhAvoCAQDhBQAhkQNAAOMFACEDAwAAigYAIPoCAQDhBQAhkQNAAOMFACEDAwAAjAYAIPoCAQAAAAGRA0AAAAABDwMAALEGACAHAACwBgAgGgAAswYAIB4AALIGACD5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQIAAABGACA6AACvBgAgAwAAAEYAIDoAAK8GACA7AACuBgAgATMAAKwLADAUAwAArAUAIAcAAKsFACAaAACvBQAgHQAArQUAIB4AAK4FACD2AgAAqgUAMPcCAABEABD4AgAAqgUAMPkCAQAAAAH6AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIAAAABogMBAP8EACGjAwEA_QQAIaQDAgD-BAAhpQMBAP8EACGmAwIAmwUAIacDQACdBQAhqANAAJ0FACECAAAARgAgMwAArgYAIAIAAACsBgAgMwAArQYAIA_2AgAAqwYAMPcCAACsBgAQ-AIAAKsGADD5AgEA_QQAIfoCAQD_BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhogMBAP8EACGjAwEA_QQAIaQDAgD-BAAhpQMBAP8EACGmAwIAmwUAIacDQACdBQAhqANAAJ0FACEP9gIAAKsGADD3AgAArAYAEPgCAACrBgAw-QIBAP0EACH6AgEA_wQAIf4CQACABQAhkQNAAIAFACGhAwIA_gQAIaIDAQD_BAAhowMBAP0EACGkAwIA_gQAIaUDAQD_BAAhpgMCAJsFACGnA0AAnQUAIagDQACdBQAhC_kCAQDhBQAh-gIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACEPAwAAlAYAIAcAAJMGACAaAACXBgAgHgAAlgYAIPkCAQDhBQAh-gIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACEPAwAAsQYAIAcAALAGACAaAACzBgAgHgAAsgYAIPkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABowMBAAAAAaQDAgAAAAGlAwEAAAABpgMCAAAAAacDQAAAAAGoA0AAAAABAzoAAKoLACCCBAAAqwsAIIgEAAAaACADOgAAqAsAIIIEAACpCwAgiAQAAAEAIAQ6AACkBgAwggQAAKUGADCEBAAApwYAIIgEAACoBgAwBDoAAJgGADCCBAAAmQYAMIQEAACbBgAgiAQAAJwGADADOgAApgsAIIIEAACnCwAgiAQAAEYAIAAAAAAABToAAJ4LACA7AACkCwAgggQAAJ8LACCDBAAAowsAIIgEAAABACAHOgAAnAsAIDsAAKELACCCBAAAnQsAIIMEAACgCwAghgQAABcAIIcEAAAXACCIBAAAGgAgAzoAAJ4LACCCBAAAnwsAIIgEAAABACADOgAAnAsAIIIEAACdCwAgiAQAABoAIAAAAAAAAYUEAAAAqwMCBToAAJQLACA7AACaCwAgggQAAJULACCDBAAAmQsAIIgEAAAaACAHOgAAkgsAIDsAAJcLACCCBAAAkwsAIIMEAACWCwAghgQAAA8AIIcEAAAPACCIBAAAAQAgAzoAAJQLACCCBAAAlQsAIIgEAAAaACADOgAAkgsAIIIEAACTCwAgiAQAAAEAIAAAAAU6AACKCwAgOwAAkAsAIIIEAACLCwAggwQAAI8LACCIBAAAGgAgBToAAIgLACA7AACNCwAgggQAAIkLACCDBAAAjAsAIIgEAAABACADOgAAigsAIIIEAACLCwAgiAQAABoAIAM6AACICwAgggQAAIkLACCIBAAAAQAgAAAAAYUEAAAAtAMCBToAAIALACA7AACGCwAgggQAAIELACCDBAAAhQsAIIgEAAAaACAHOgAA_goAIDsAAIMLACCCBAAA_woAIIMEAACCCwAghgQAAA8AIIcEAAAPACCIBAAAAQAgAzoAAIALACCCBAAAgQsAIIgEAAAaACADOgAA_goAIIIEAAD_CgAgiAQAAAEAIAAAAAGFBAAAALYDAgU6AAD2CgAgOwAA_AoAIIIEAAD3CgAggwQAAPsKACCIBAAAGgAgBToAAPQKACA7AAD5CgAgggQAAPUKACCDBAAA-AoAIIgEAAABACADOgAA9goAIIIEAAD3CgAgiAQAABoAIAM6AAD0CgAgggQAAPUKACCIBAAAAQAgAAAAAAALOgAA5QYAMDsAAOoGADCCBAAA5gYAMIMEAADnBgAwhAQAAOgGACCFBAAA6QYAMIYEAADpBgAwhwQAAOkGADCIBAAA6QYAMIkEAADrBgAwigQAAOwGADAECgAA8gYAIJEDQAAAAAGjAwEAAAABpAMCAAAAAQIAAAAeACA6AADxBgAgAwAAAB4AIDoAAPEGACA7AADvBgAgATMAAPMKADAKCgAAwAUAIA0AAMMFACD2AgAAwgUAMPcCAAAcABD4AgAAwgUAMJEDQACABQAhowMBAP0EACGkAwIAmwUAIb8DAQD9BAAh_gMAAMEFACACAAAAHgAgMwAA7wYAIAIAAADtBgAgMwAA7gYAIAf2AgAA7AYAMPcCAADtBgAQ-AIAAOwGADCRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACG_AwEA_QQAIQf2AgAA7AYAMPcCAADtBgAQ-AIAAOwGADCRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACG_AwEA_QQAIQORA0AA4wUAIaMDAQDhBQAhpAMCAPQFACEECgAA8AYAIJEDQADjBQAhowMBAOEFACGkAwIA9AUAIQU6AADuCgAgOwAA8QoAIIIEAADvCgAggwQAAPAKACCIBAAALQAgBAoAAPIGACCRA0AAAAABowMBAAAAAaQDAgAAAAEDOgAA7goAIIIEAADvCgAgiAQAAC0AIAQ6AADlBgAwggQAAOYGADCEBAAA6AYAIIgEAADpBgAwAAAAAAAAAYUEAAAAvwMCBToAAOYKACA7AADsCgAgggQAAOcKACCDBAAA6woAIIgEAAAaACAFOgAA5AoAIDsAAOkKACCCBAAA5QoAIIMEAADoCgAgiAQAAC0AIAM6AADmCgAgggQAAOcKACCIBAAAGgAgAzoAAOQKACCCBAAA5QoAIIgEAAAtACAAAAAAAAU6AADfCgAgOwAA4goAIIIEAADgCgAggwQAAOEKACCIBAAAzgIAIAM6AADfCgAgggQAAOAKACCIBAAAzgIAIAAAAAAABToAAL8KACA7AADdCgAgggQAAMAKACCDBAAA3AoAIIgEAAAaACAHOgAAmggAIDsAALQIACCCBAAAmwgAIIMEAACzCAAghgQAABcAIIcEAAAXACCIBAAAGgAgCzoAAKUHADA7AACqBwAwggQAAKYHADCDBAAApwcAMIQEAACoBwAghQQAAKkHADCGBAAAqQcAMIcEAACpBwAwiAQAAKkHADCJBAAAqwcAMIoEAACsBwAwCzoAAJwHADA7AACgBwAwggQAAJ0HADCDBAAAngcAMIQEAACfBwAghQQAAOkGADCGBAAA6QYAMIcEAADpBgAwiAQAAOkGADCJBAAAoQcAMIoEAADsBgAwCzoAAJAHADA7AACVBwAwggQAAJEHADCDBAAAkgcAMIQEAACTBwAghQQAAJQHADCGBAAAlAcAMIcEAACUBwAwiAQAAJQHADCJBAAAlgcAMIoEAACXBwAwBQcAAP0GACD5AgEAAAABkQNAAAAAAasDAAAAvwMCvQMBAAAAAQIAAAAkACA6AACbBwAgAwAAACQAIDoAAJsHACA7AACaBwAgATMAANsKADALBwAAqwUAIA8AAMAFACD2AgAAvgUAMPcCAAAiABD4AgAAvgUAMPkCAQAAAAGRA0AAgAUAIaMDAQD9BAAhqwMAAL8FvwMivAMCAJsFACG9AwEA_QQAIQIAAAAkACAzAACaBwAgAgAAAJgHACAzAACZBwAgCfYCAACXBwAw9wIAAJgHABD4AgAAlwcAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIasDAAC_Bb8DIrwDAgCbBQAhvQMBAP0EACEJ9gIAAJcHADD3AgAAmAcAEPgCAACXBwAw-QIBAP0EACGRA0AAgAUAIaMDAQD9BAAhqwMAAL8FvwMivAMCAJsFACG9AwEA_QQAIQT5AgEA4QUAIZEDQADjBQAhqwMAAPoGvwMivQMBAOEFACEFBwAA-wYAIPkCAQDhBQAhkQNAAOMFACGrAwAA-ga_AyK9AwEA4QUAIQUHAAD9BgAg-QIBAAAAAZEDQAAAAAGrAwAAAL8DAr0DAQAAAAEDDQAAhQcAIJEDQAAAAAG_AwEAAAABAgAAAB4AIDoAAKQHACADAAAAHgAgOgAApAcAIDsAAKMHACABMwAA2goAMAIAAAAeACAzAACjBwAgAgAAAO0GACAzAACiBwAgApEDQADjBQAhvwMBAOEFACEDDQAAhAcAIJEDQADjBQAhvwMBAOEFACEDDQAAhQcAIJEDQAAAAAG_AwEAAAABGBEAAKsIACASAACcCAAgEwAAnQgAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAsggAIAMAAAAaACA6AACyCAAgOwAAsAcAIAEzAADZCgAwHxEAAMcFACASAACxBQAgEwAAvAUAIBQAAMcFACAVAADIBQAgFgAAyQUAIBgAAMoFACAZAAC9BQAgGgAAywUAIBsAAMwFACAcAADNBQAgIAAArgUAIPYCAADFBQAw9wIAABcAEPgCAADFBQAw-QIBAAAAAf4CQACABQAhkQNAAIAFACGhAwIAAAABqANAAJ0FACHHAwIA_gQAIcgDAQD_BAAhyQMCAP4EACHLAwAAxgXLAyLMAyAAnAUAIc0DIACcBQAhzgMCAJsFACHPAwIAmwUAIdADAgCbBQAh0QMCAJsFACH_AwAAxAUAIAIAAAAaACAzAACwBwAgAgAAAK0HACAzAACuBwAgEvYCAACsBwAw9wIAAK0HABD4AgAArAcAMPkCAQD9BAAh_gJAAIAFACGRA0AAgAUAIaEDAgD-BAAhqANAAJ0FACHHAwIA_gQAIcgDAQD_BAAhyQMCAP4EACHLAwAAxgXLAyLMAyAAnAUAIc0DIACcBQAhzgMCAJsFACHPAwIAmwUAIdADAgCbBQAh0QMCAJsFACES9gIAAKwHADD3AgAArQcAEPgCAACsBwAw-QIBAP0EACH-AkAAgAUAIZEDQACABQAhoQMCAP4EACGoA0AAnQUAIccDAgD-BAAhyAMBAP8EACHJAwIA_gQAIcsDAADGBcsDIswDIACcBQAhzQMgAJwFACHOAwIAmwUAIc8DAgCbBQAh0AMCAJsFACHRAwIAmwUAIQ35AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEBhQQAAADLAwIYEQAAsQcAIBIAALIHACATAACzBwAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEHOgAAxgoAIDsAANcKACCCBAAAxwoAIIMEAADWCgAghgQAABUAIIcEAAAVACCIBAAALQAgBzoAAMkKACA7AADUCgAgggQAAMoKACCDBAAA0woAIIYEAAAXACCHBAAAFwAgiAQAABoAIAs6AACnCAAwOwAArQgAMIIEAACoCAAwgwQAAKwIADCEBAAAqQgAIIUEAACpBwAwhgQAAKkHADCHBAAAqQcAMIgEAACpBwAwiQQAAK4IADCKBAAArAcAMAs6AACKCAAwOwAAjwgAMIIEAACLCAAwgwQAAIwIADCEBAAAjQgAIIUEAACOCAAwhgQAAI4IADCHBAAAjggAMIgEAACOCAAwiQQAAJAIADCKBAAAkQgAMAs6AAD-BwAwOwAAgwgAMIIEAAD_BwAwgwQAAIAIADCEBAAAgQgAIIUEAACCCAAwhgQAAIIIADCHBAAAgggAMIgEAACCCAAwiQQAAIQIADCKBAAAhQgAMAs6AADyBwAwOwAA9wcAMIIEAADzBwAwgwQAAPQHADCEBAAA9QcAIIUEAAD2BwAwhgQAAPYHADCHBAAA9gcAMIgEAAD2BwAwiQQAAPgHADCKBAAA-QcAMAs6AADpBwAwOwAA7QcAMIIEAADqBwAwgwQAAOsHADCEBAAA7AcAIIUEAACUBwAwhgQAAJQHADCHBAAAlAcAMIgEAACUBwAwiQQAAO4HADCKBAAAlwcAMAs6AADdBwAwOwAA4gcAMIIEAADeBwAwgwQAAN8HADCEBAAA4AcAIIUEAADhBwAwhgQAAOEHADCHBAAA4QcAMIgEAADhBwAwiQQAAOMHADCKBAAA5AcAMAs6AADRBwAwOwAA1gcAMIIEAADSBwAwgwQAANMHADCEBAAA1AcAIIUEAADVBwAwhgQAANUHADCHBAAA1QcAMIgEAADVBwAwiQQAANcHADCKBAAA2AcAMAs6AADFBwAwOwAAygcAMIIEAADGBwAwgwQAAMcHADCEBAAAyAcAIIUEAADJBwAwhgQAAMkHADCHBAAAyQcAMIgEAADJBwAwiQQAAMsHADCKBAAAzAcAMAs6AAC8BwAwOwAAwAcAMIIEAAC9BwAwgwQAAL4HADCEBAAAvwcAIIUEAACoBgAwhgQAAKgGADCHBAAAqAYAMIgEAACoBgAwiQQAAMEHADCKBAAAqwYAMA8DAACxBgAgGgAAswYAIB0AALQGACAeAACyBgAg-QIBAAAAAfoCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGiAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAECAAAARgAgOgAAxAcAIAMAAABGACA6AADEBwAgOwAAwwcAIAEzAADSCgAwAgAAAEYAIDMAAMMHACACAAAArAYAIDMAAMIHACAL-QIBAOEFACH6AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhpAMCAJIGACGlAwEA9QUAIaYDAgD0BQAhpwNAAOoFACGoA0AA6gUAIQ8DAACUBgAgGgAAlwYAIB0AAJUGACAeAACWBgAg-QIBAOEFACH6AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhpAMCAJIGACGlAwEA9QUAIaYDAgD0BQAhpwNAAOoFACGoA0AA6gUAIQ8DAACxBgAgGgAAswYAIB0AALQGACAeAACyBgAg-QIBAAAAAfoCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGiAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAEHAwAAvAYAIDOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGpAwIAAAABAgAAAEEAIDoAANAHACADAAAAQQAgOgAA0AcAIDsAAM8HACABMwAA0QoAMAwDAACeBQAgBwAAsQUAIDMAAKUFACD2AgAAsAUAMPcCAAA_ABD4AgAAsAUAMPkCAQAAAAH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGjAwEA_wQAIakDAgCbBQAhAgAAAEEAIDMAAM8HACACAAAAzQcAIDMAAM4HACAKMwAApQUAIPYCAADMBwAw9wIAAM0HABD4AgAAzAcAMPkCAQD9BAAh-gIBAP0EACH-AkAAgAUAIZEDQACABQAhowMBAP8EACGpAwIAmwUAIQozAAClBQAg9gIAAMwHADD3AgAAzQcAEPgCAADMBwAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGjAwEA_wQAIakDAgCbBQAhBjOAAAAAAfkCAQDhBQAh-gIBAOEFACH-AkAA4wUAIZEDQADjBQAhqQMCAPQFACEHAwAAugYAIDOAAAAAAfkCAQDhBQAh-gIBAOEFACH-AkAA4wUAIZEDQADjBQAhqQMCAPQFACEHAwAAvAYAIDOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGpAwIAAAABDAMAAMcGACD5AgEAAAAB-gIBAAAAAZEDQAAAAAGkAwIAAAABqwMAAACrAwKsAwEAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABsAOAAAAAAbEDAQAAAAECAAAAPAAgOgAA3AcAIAMAAAA8ACA6AADcBwAgOwAA2wcAIAEzAADQCgAwEQMAAKwFACAHAACrBQAg9gIAALIFADD3AgAAOgAQ-AIAALIFADD5AgEAAAAB-gIBAP8EACGRA0AAgAUAIaMDAQD9BAAhpAMCAP4EACGrAwAAswWrAyKsAwEA_wQAIa0DAQD_BAAhrgMBAP8EACGvAwEA_wQAIbADAAC0BQAgsQMBAP8EACECAAAAPAAgMwAA2wcAIAIAAADZBwAgMwAA2gcAIA_2AgAA2AcAMPcCAADZBwAQ-AIAANgHADD5AgEA_QQAIfoCAQD_BAAhkQNAAIAFACGjAwEA_QQAIaQDAgD-BAAhqwMAALMFqwMirAMBAP8EACGtAwEA_wQAIa4DAQD_BAAhrwMBAP8EACGwAwAAtAUAILEDAQD_BAAhD_YCAADYBwAw9wIAANkHABD4AgAA2AcAMPkCAQD9BAAh-gIBAP8EACGRA0AAgAUAIaMDAQD9BAAhpAMCAP4EACGrAwAAswWrAyKsAwEA_wQAIa0DAQD_BAAhrgMBAP8EACGvAwEA_wQAIbADAAC0BQAgsQMBAP8EACEL-QIBAOEFACH6AgEA9QUAIZEDQADjBQAhpAMCAJIGACGrAwAAwwarAyKsAwEA9QUAIa0DAQD1BQAhrgMBAPUFACGvAwEA9QUAIbADgAAAAAGxAwEA9QUAIQwDAADFBgAg-QIBAOEFACH6AgEA9QUAIZEDQADjBQAhpAMCAJIGACGrAwAAwwarAyKsAwEA9QUAIa0DAQD1BQAhrgMBAPUFACGvAwEA9QUAIbADgAAAAAGxAwEA9QUAIQwDAADHBgAg-QIBAAAAAfoCAQAAAAGRA0AAAAABpAMCAAAAAasDAAAAqwMCrAMBAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAbADgAAAAAGxAwEAAAABAwMAAM4GACD6AgEAAAABkQNAAAAAAQIAAAA4ACA6AADoBwAgAwAAADgAIDoAAOgHACA7AADnBwAgATMAAM8KADAJAwAAngUAIAcAAKsFACD2AgAAtgUAMPcCAAA2ABD4AgAAtgUAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIfsDAAC1BQAgAgAAADgAIDMAAOcHACACAAAA5QcAIDMAAOYHACAG9gIAAOQHADD3AgAA5QcAEPgCAADkBwAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAhBvYCAADkBwAw9wIAAOUHABD4AgAA5AcAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIQL6AgEA4QUAIZEDQADjBQAhAwMAAMwGACD6AgEA4QUAIZEDQADjBQAhAwMAAM4GACD6AgEAAAABkQNAAAAAAQYPAAD-BgAg-QIBAAAAAZEDQAAAAAGrAwAAAL8DArwDAgAAAAG9AwEAAAABAgAAACQAIDoAAPEHACADAAAAJAAgOgAA8QcAIDsAAPAHACABMwAAzgoAMAIAAAAkACAzAADwBwAgAgAAAJgHACAzAADvBwAgBfkCAQDhBQAhkQNAAOMFACGrAwAA-ga_AyK8AwIA9AUAIb0DAQDhBQAhBg8AAPwGACD5AgEA4QUAIZEDQADjBQAhqwMAAPoGvwMivAMCAPQFACG9AwEA4QUAIQYPAAD-BgAg-QIBAAAAAZEDQAAAAAGrAwAAAL8DArwDAgAAAAG9AwEAAAABBRcAANYGACD5AgEAAAABkQNAAAAAAbIDAQAAAAG0AwAAALQDAgIAAAAyACA6AAD9BwAgAwAAADIAIDoAAP0HACA7AAD8BwAgATMAAM0KADALBwAAqwUAIBcAAKwFACD2AgAAuAUAMPcCAAAwABD4AgAAuAUAMPkCAQAAAAGRA0AAgAUAIaMDAQD9BAAhsgMBAP8EACG0AwAAuQW0AyL8AwAAtwUAIAIAAAAyACAzAAD8BwAgAgAAAPoHACAzAAD7BwAgCPYCAAD5BwAw9wIAAPoHABD4AgAA-QcAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbIDAQD_BAAhtAMAALkFtAMiCPYCAAD5BwAw9wIAAPoHABD4AgAA-QcAMPkCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbIDAQD_BAAhtAMAALkFtAMiBPkCAQDhBQAhkQNAAOMFACGyAwEA9QUAIbQDAADSBrQDIgUXAADUBgAg-QIBAOEFACGRA0AA4wUAIbIDAQD1BQAhtAMAANIGtAMiBRcAANYGACD5AgEAAAABkQNAAAAAAbIDAQAAAAG0AwAAALQDAgQDAADeBgAg-gIBAAAAAZEDQAAAAAG2AwAAALYDAgIAAAATACA6AACJCAAgAwAAABMAIDoAAIkIACA7AACICAAgATMAAMwKADAKAwAAngUAIAcAAKsFACD2AgAAzwUAMPcCAAARABD4AgAAzwUAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbYDAADQBbYDIvsDAADOBQAgAgAAABMAIDMAAIgIACACAAAAhggAIDMAAIcIACAH9gIAAIUIADD3AgAAhggAEPgCAACFCAAw-gIBAP0EACGRA0AAgAUAIaMDAQD9BAAhtgMAANAFtgMiB_YCAACFCAAw9wIAAIYIABD4AgAAhQgAMPoCAQD9BAAhkQNAAIAFACGjAwEA_QQAIbYDAADQBbYDIgP6AgEA4QUAIZEDQADjBQAhtgMAANoGtgMiBAMAANwGACD6AgEA4QUAIZEDQADjBQAhtgMAANoGtgMiBAMAAN4GACD6AgEAAAABkQNAAAAAAbYDAAAAtgMCDggAAJYIACAJAACXCAAgDgAAmAgAIBAAAJkIACCMAwEAAAABkQNAAAAAAaQDAgAAAAHAAwEAAAABwQMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGA0AAAAABAgAAAC0AIDoAAJUIACADAAAALQAgOgAAlQgAIDsAAJQIACABMwAAywoAMBQHAACrBQAgCAAAsQUAIAkAALwFACAOAACBBQAgEAAAvQUAIPYCAAC7BQAw9wIAABUAEPgCAAC7BQAwjAMBAP0EACGRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACHAAwEA_wQAIcEDAQD_BAAhwgMBAP8EACHDAwEA_QQAIcQDAQD_BAAhxQMBAP8EACHGA0AAnQUAIf0DAAC6BQAgAgAAAC0AIDMAAJQIACACAAAAkggAIDMAAJMIACAO9gIAAJEIADD3AgAAkggAEPgCAACRCAAwjAMBAP0EACGRA0AAgAUAIaMDAQD9BAAhpAMCAJsFACHAAwEA_wQAIcEDAQD_BAAhwgMBAP8EACHDAwEA_QQAIcQDAQD_BAAhxQMBAP8EACHGA0AAnQUAIQ72AgAAkQgAMPcCAACSCAAQ-AIAAJEIADCMAwEA_QQAIZEDQACABQAhowMBAP0EACGkAwIAmwUAIcADAQD_BAAhwQMBAP8EACHCAwEA_wQAIcMDAQD9BAAhxAMBAP8EACHFAwEA_wQAIcYDQACdBQAhCowDAQDhBQAhkQNAAOMFACGkAwIA9AUAIcADAQD1BQAhwQMBAPUFACHCAwEA9QUAIcMDAQDhBQAhxAMBAPUFACHFAwEA9QUAIcYDQADqBQAhDggAAIwHACAJAACNBwAgDgAAjgcAIBAAAI8HACCMAwEA4QUAIZEDQADjBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQ4IAACWCAAgCQAAlwgAIA4AAJgIACAQAACZCAAgjAMBAAAAAZEDQAAAAAGkAwIAAAABwAMBAAAAAcEDAQAAAAHCAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgNAAAAAAQM6AACaCAAgggQAAJsIACCIBAAAGgAgBDoAAKUHADCCBAAApgcAMIQEAACoBwAgiAQAAKkHADAEOgAAnAcAMIIEAACdBwAwhAQAAJ8HACCIBAAA6QYAMAQ6AACQBwAwggQAAJEHADCEBAAAkwcAIIgEAACUBwAwGBIAAJwIACATAACdCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAcgDAQAAAAHJAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAmggAIAM6AADJCgAgggQAAMoKACCIBAAAGgAgBDoAAKcIADCCBAAAqAgAMIQEAACpCAAgiAQAAKkHADADOgAAwQoAIIIEAADCCgAgiAQAAC0AIAQ6AACKCAAwggQAAIsIADCEBAAAjQgAIIgEAACOCAAwBDoAAP4HADCCBAAA_wcAMIQEAACBCAAgiAQAAIIIADAEOgAA8gcAMIIEAADzBwAwhAQAAPUHACCIBAAA9gcAMAQ6AADpBwAwggQAAOoHADCEBAAA7AcAIIgEAACUBwAwBDoAAN0HADCCBAAA3gcAMIQEAADgBwAgiAQAAOEHADAEOgAA0QcAMIIEAADSBwAwhAQAANQHACCIBAAA1QcAMAQ6AADFBwAwggQAAMYHADCEBAAAyAcAIIgEAADJBwAwBDoAALwHADCCBAAAvQcAMIQEAAC_BwAgiAQAAKgGADAZEQAAqwgAIBMAAJ0IACAUAACeCAAgFQAAnwgAIBYAAKAIACAYAAChCAAgGQAAoggAIBoAAKMIACAbAACkCAAgHAAApQgAICAAAKYIACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHJAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAqggAIAEzAADICgAwGREAAKsIACATAACdCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABAzoAAMYKACCCBAAAxwoAIIgEAAAtACADAAAAGgAgOgAAqggAIDsAALAIACACAAAAGgAgMwAAsAgAIAIAAACtBwAgMwAArwgAIA75AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRkRAACxBwAgEwAAswcAIBQAALEIACAVAAC0BwAgFgAAtQcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhBzoAAMEKACA7AADECgAgggQAAMIKACCDBAAAwwoAIIYEAAAVACCHBAAAFQAgiAQAAC0AIBgRAACrCAAgEgAAnAgAIBMAAJ0IACAVAACfCAAgFgAAoAgAIBgAAKEIACAZAACiCAAgGgAAowgAIBsAAKQIACAcAAClCAAgIAAApggAIPkCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABxwMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABAwAAABcAIDoAAJoIACA7AAC1CAAgGgAAABcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAgMwAAtQgAIP4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRgSAACyBwAgEwAAswcAIBQAALEIACAVAAC0BwAgFgAAtQcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIP4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIQM6AAC_CgAgggQAAMAKACCIBAAAGgAgAAAAAAAAAAAAAAU6AAC6CgAgOwAAvQoAIIIEAAC7CgAggwQAALwKACCIBAAAAQAgAzoAALoKACCCBAAAuwoAIIgEAAABACAAAAAHOgAAtQoAIDsAALgKACCCBAAAtgoAIIMEAAC3CgAghgQAAA8AIIcEAAAPACCIBAAAAQAgAzoAALUKACCCBAAAtgoAIIgEAAABACAAAAAFOgAAsAoAIDsAALMKACCCBAAAsQoAIIMEAACyCgAgiAQAAAEAIAM6AACwCgAgggQAALEKACCIBAAAAQAgAAAABToAAKsKACA7AACuCgAgggQAAKwKACCDBAAArQoAIIgEAAABACADOgAAqwoAIIIEAACsCgAgiAQAAAEAIAAAAAAAAYUEAAAA6wMCAYUEAAAA7QMCAYUEIAAAAAELOgAA7AkAMDsAAPEJADCCBAAA7QkAMIMEAADuCQAwhAQAAO8JACCFBAAA8AkAMIYEAADwCQAwhwQAAPAJADCIBAAA8AkAMIkEAADyCQAwigQAAPMJADALOgAA4AkAMDsAAOUJADCCBAAA4QkAMIMEAADiCQAwhAQAAOMJACCFBAAA5AkAMIYEAADkCQAwhwQAAOQJADCIBAAA5AkAMIkEAADmCQAwigQAAOcJADALOgAA1AkAMDsAANkJADCCBAAA1QkAMIMEAADWCQAwhAQAANcJACCFBAAA2AkAMIYEAADYCQAwhwQAANgJADCIBAAA2AkAMIkEAADaCQAwigQAANsJADALOgAAywkAMDsAAM8JADCCBAAAzAkAMIMEAADNCQAwhAQAAM4JACCFBAAAgggAMIYEAACCCAAwhwQAAIIIADCIBAAAgggAMIkEAADQCQAwigQAAIUIADALOgAAwgkAMDsAAMYJADCCBAAAwwkAMIMEAADECQAwhAQAAMUJACCFBAAA9gcAMIYEAAD2BwAwhwQAAPYHADCIBAAA9gcAMIkEAADHCQAwigQAAPkHADALOgAAtgkAMDsAALsJADCCBAAAtwkAMIMEAAC4CQAwhAQAALkJACCFBAAAugkAMIYEAAC6CQAwhwQAALoJADCIBAAAugkAMIkEAAC8CQAwigQAAL0JADALOgAArQkAMDsAALEJADCCBAAArgkAMIMEAACvCQAwhAQAALAJACCFBAAA4QcAMIYEAADhBwAwhwQAAOEHADCIBAAA4QcAMIkEAACyCQAwigQAAOQHADALOgAApAkAMDsAAKgJADCCBAAApQkAMIMEAACmCQAwhAQAAKcJACCFBAAA1QcAMIYEAADVBwAwhwQAANUHADCIBAAA1QcAMIkEAACpCQAwigQAANgHADALOgAAmwkAMDsAAJ8JADCCBAAAnAkAMIMEAACdCQAwhAQAAJ4JACCFBAAAyQcAMIYEAADJBwAwhwQAAMkHADCIBAAAyQcAMIkEAACgCQAwigQAAMwHADALOgAAkgkAMDsAAJYJADCCBAAAkwkAMIMEAACUCQAwhAQAAJUJACCFBAAAqAYAMIYEAACoBgAwhwQAAKgGADCIBAAAqAYAMIkEAACXCQAwigQAAKsGADALOgAAiQkAMDsAAI0JADCCBAAAigkAMIMEAACLCQAwhAQAAIwJACCFBAAAnAYAMIYEAACcBgAwhwQAAJwGADCIBAAAnAYAMIkEAACOCQAwigQAAJ8GADALOgAAgAkAMDsAAIQJADCCBAAAgQkAMIMEAACCCQAwhAQAAIMJACCFBAAA_AUAMIYEAAD8BQAwhwQAAPwFADCIBAAA_AUAMIkEAACFCQAwigQAAP8FADALOgAA9AgAMDsAAPkIADCCBAAA9QgAMIMEAAD2CAAwhAQAAPcIACCFBAAA-AgAMIYEAAD4CAAwhwQAAPgIADCIBAAA-AgAMIkEAAD6CAAwigQAAPsIADALOgAA6AgAMDsAAO0IADCCBAAA6QgAMIMEAADqCAAwhAQAAOsIACCFBAAA7AgAMIYEAADsCAAwhwQAAOwIADCIBAAA7AgAMIkEAADuCAAwigQAAO8IADAK-QIBAAAAAZEDQAAAAAG3AwEAAAAB0gMBAAAAAdMDAQAAAAHUAwIAAAAB1QMBAAAAAdYDIAAAAAHXAwEAAAAB2AMBAAAAAQIAAABwACA6AADzCAAgAwAAAHAAIDoAAPMIACA7AADyCAAgATMAAKoKADAPAwAAngUAIPYCAACaBQAw9wIAAG4AEPgCAACaBQAw-QIBAAAAAfoCAQD9BAAhkQNAAJ0FACG3AwEA_wQAIdIDAQD9BAAh0wMBAP0EACHUAwIAmwUAIdUDAQD9BAAh1gMgAJwFACHXAwEA_wQAIdgDAQD_BAAhAgAAAHAAIDMAAPIIACACAAAA8AgAIDMAAPEIACAO9gIAAO8IADD3AgAA8AgAEPgCAADvCAAw-QIBAP0EACH6AgEA_QQAIZEDQACdBQAhtwMBAP8EACHSAwEA_QQAIdMDAQD9BAAh1AMCAJsFACHVAwEA_QQAIdYDIACcBQAh1wMBAP8EACHYAwEA_wQAIQ72AgAA7wgAMPcCAADwCAAQ-AIAAO8IADD5AgEA_QQAIfoCAQD9BAAhkQNAAJ0FACG3AwEA_wQAIdIDAQD9BAAh0wMBAP0EACHUAwIAmwUAIdUDAQD9BAAh1gMgAJwFACHXAwEA_wQAIdgDAQD_BAAhCvkCAQDhBQAhkQNAAOoFACG3AwEA9QUAIdIDAQDhBQAh0wMBAOEFACHUAwIA9AUAIdUDAQDhBQAh1gMgAOIFACHXAwEA9QUAIdgDAQD1BQAhCvkCAQDhBQAhkQNAAOoFACG3AwEA9QUAIdIDAQDhBQAh0wMBAOEFACHUAwIA9AUAIdUDAQDhBQAh1gMgAOIFACHXAwEA9QUAIdgDAQD1BQAhCvkCAQAAAAGRA0AAAAABtwMBAAAAAdIDAQAAAAHTAwEAAAAB1AMCAAAAAdUDAQAAAAHWAyAAAAAB1wMBAAAAAdgDAQAAAAEF-QIBAAAAAfsCAQAAAAH8AiAAAAAB_QIgAAAAAf4CQAAAAAECAAAAbAAgOgAA_wgAIAMAAABsACA6AAD_CAAgOwAA_ggAIAEzAACpCgAwCwMAAJ4FACD2AgAAoAUAMPcCAABqABD4AgAAoAUAMPkCAQAAAAH6AgEA_QQAIfsCAQD9BAAh_AIgAJwFACH9AiAAnAUAIf4CQACABQAh-AMAAJ8FACACAAAAbAAgMwAA_ggAIAIAAAD8CAAgMwAA_QgAIAn2AgAA-wgAMPcCAAD8CAAQ-AIAAPsIADD5AgEA_QQAIfoCAQD9BAAh-wIBAP0EACH8AiAAnAUAIf0CIACcBQAh_gJAAIAFACEJ9gIAAPsIADD3AgAA_AgAEPgCAAD7CAAw-QIBAP0EACH6AgEA_QQAIfsCAQD9BAAh_AIgAJwFACH9AiAAnAUAIf4CQACABQAhBfkCAQDhBQAh-wIBAOEFACH8AiAA4gUAIf0CIADiBQAh_gJAAOMFACEF-QIBAOEFACH7AgEA4QUAIfwCIADiBQAh_QIgAOIFACH-AkAA4wUAIQX5AgEAAAAB-wIBAAAAAfwCIAAAAAH9AiAAAAAB_gJAAAAAAQolAADuBQAg-QIBAAAAAfsCAQAAAAGLAwEAAAABjAMBAAAAAY0DAQAAAAGOAwEAAAABjwNAAAAAAZADQAAAAAGRA0AAAAABAgAAAGEAIDoAAIgJACADAAAAYQAgOgAAiAkAIDsAAIcJACABMwAAqAoAMAIAAABhACAzAACHCQAgAgAAAIAGACAzAACGCQAgCfkCAQDhBQAh-wIBAOEFACGLAwEA4QUAIYwDAQDhBQAhjQMBAOEFACGOAwEA4QUAIY8DQADqBQAhkANAAOoFACGRA0AA4wUAIQolAADsBQAg-QIBAOEFACH7AgEA4QUAIYsDAQDhBQAhjAMBAOEFACGNAwEA4QUAIY4DAQDhBQAhjwNAAOoFACGQA0AA6gUAIZEDQADjBQAhCiUAAO4FACD5AgEAAAAB-wIBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAGPA0AAAAABkANAAAAAAZEDQAAAAAEDHwAAiwYAIJEDQAAAAAGgAwEAAAABAgAAAE0AIDoAAJEJACADAAAATQAgOgAAkQkAIDsAAJAJACABMwAApwoAMAIAAABNACAzAACQCQAgAgAAAKAGACAzAACPCQAgApEDQADjBQAhoAMBAOEFACEDHwAAiQYAIJEDQADjBQAhoAMBAOEFACEDHwAAiwYAIJEDQAAAAAGgAwEAAAABDwcAALAGACAaAACzBgAgHQAAtAYAIB4AALIGACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQIAAABGACA6AACaCQAgAwAAAEYAIDoAAJoJACA7AACZCQAgATMAAKYKADACAAAARgAgMwAAmQkAIAIAAACsBgAgMwAAmAkAIAv5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhowMBAOEFACGkAwIAkgYAIaUDAQD1BQAhpgMCAPQFACGnA0AA6gUAIagDQADqBQAhDwcAAJMGACAaAACXBgAgHQAAlQYAIB4AAJYGACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhowMBAOEFACGkAwIAkgYAIaUDAQD1BQAhpgMCAPQFACGnA0AA6gUAIagDQADqBQAhDwcAALAGACAaAACzBgAgHQAAtAYAIB4AALIGACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQcHAAC9BgAgM4AAAAAB-QIBAAAAAf4CQAAAAAGRA0AAAAABowMBAAAAAakDAgAAAAECAAAAQQAgOgAAowkAIAMAAABBACA6AACjCQAgOwAAogkAIAEzAAClCgAwAgAAAEEAIDMAAKIJACACAAAAzQcAIDMAAKEJACAGM4AAAAAB-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhowMBAPUFACGpAwIA9AUAIQcHAAC7BgAgM4AAAAAB-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhowMBAPUFACGpAwIA9AUAIQcHAAC9BgAgM4AAAAAB-QIBAAAAAf4CQAAAAAGRA0AAAAABowMBAAAAAakDAgAAAAEMBwAAxgYAIPkCAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAGrAwAAAKsDAqwDAQAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAGwA4AAAAABsQMBAAAAAQIAAAA8ACA6AACsCQAgAwAAADwAIDoAAKwJACA7AACrCQAgATMAAKQKADACAAAAPAAgMwAAqwkAIAIAAADZBwAgMwAAqgkAIAv5AgEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIAkgYAIasDAADDBqsDIqwDAQD1BQAhrQMBAPUFACGuAwEA9QUAIa8DAQD1BQAhsAOAAAAAAbEDAQD1BQAhDAcAAMQGACD5AgEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIAkgYAIasDAADDBqsDIqwDAQD1BQAhrQMBAPUFACGuAwEA9QUAIa8DAQD1BQAhsAOAAAAAAbEDAQD1BQAhDAcAAMYGACD5AgEAAAABkQNAAAAAAaMDAQAAAAGkAwIAAAABqwMAAACrAwKsAwEAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABsAOAAAAAAbEDAQAAAAEDBwAAzQYAIJEDQAAAAAGjAwEAAAABAgAAADgAIDoAALUJACADAAAAOAAgOgAAtQkAIDsAALQJACABMwAAowoAMAIAAAA4ACAzAAC0CQAgAgAAAOUHACAzAACzCQAgApEDQADjBQAhowMBAOEFACEDBwAAywYAIJEDQADjBQAhowMBAOEFACEDBwAAzQYAIJEDQAAAAAGjAwEAAAABCiYAAIUGACD5AgEAAAABkQNAAAAAAZIDAQAAAAGUAwEAAAABlQMBAAAAAZYDgAAAAAGXA0AAAAABmAMCAAAAAZkDAQAAAAECAAAAXQAgOgAAwQkAIAMAAABdACA6AADBCQAgOwAAwAkAIAEzAACiCgAwDyMAAJ4FACAmAACmBQAg9gIAAKQFADD3AgAAWwAQ-AIAAKQFADD5AgEAAAABkQNAAIAFACGSAwEA_QQAIZMDAQD9BAAhlAMBAP0EACGVAwEA_QQAIZYDAAClBQAglwNAAJ0FACGYAwIAmwUAIZkDAQD_BAAhAgAAAF0AIDMAAMAJACACAAAAvgkAIDMAAL8JACAN9gIAAL0JADD3AgAAvgkAEPgCAAC9CQAw-QIBAP0EACGRA0AAgAUAIZIDAQD9BAAhkwMBAP0EACGUAwEA_QQAIZUDAQD9BAAhlgMAAKUFACCXA0AAnQUAIZgDAgCbBQAhmQMBAP8EACEN9gIAAL0JADD3AgAAvgkAEPgCAAC9CQAw-QIBAP0EACGRA0AAgAUAIZIDAQD9BAAhkwMBAP0EACGUAwEA_QQAIZUDAQD9BAAhlgMAAKUFACCXA0AAnQUAIZgDAgCbBQAhmQMBAP8EACEJ-QIBAOEFACGRA0AA4wUAIZIDAQDhBQAhlAMBAOEFACGVAwEA4QUAIZYDgAAAAAGXA0AA6gUAIZgDAgD0BQAhmQMBAPUFACEKJgAA9wUAIPkCAQDhBQAhkQNAAOMFACGSAwEA4QUAIZQDAQDhBQAhlQMBAOEFACGWA4AAAAABlwNAAOoFACGYAwIA9AUAIZkDAQD1BQAhCiYAAIUGACD5AgEAAAABkQNAAAAAAZIDAQAAAAGUAwEAAAABlQMBAAAAAZYDgAAAAAGXA0AAAAABmAMCAAAAAZkDAQAAAAEFBwAA1QYAIPkCAQAAAAGRA0AAAAABowMBAAAAAbQDAAAAtAMCAgAAADIAIDoAAMoJACADAAAAMgAgOgAAygkAIDsAAMkJACABMwAAoQoAMAIAAAAyACAzAADJCQAgAgAAAPoHACAzAADICQAgBPkCAQDhBQAhkQNAAOMFACGjAwEA4QUAIbQDAADSBrQDIgUHAADTBgAg-QIBAOEFACGRA0AA4wUAIaMDAQDhBQAhtAMAANIGtAMiBQcAANUGACD5AgEAAAABkQNAAAAAAaMDAQAAAAG0AwAAALQDAgQHAADdBgAgkQNAAAAAAaMDAQAAAAG2AwAAALYDAgIAAAATACA6AADTCQAgAwAAABMAIDoAANMJACA7AADSCQAgATMAAKAKADACAAAAEwAgMwAA0gkAIAIAAACGCAAgMwAA0QkAIAORA0AA4wUAIaMDAQDhBQAhtgMAANoGtgMiBAcAANsGACCRA0AA4wUAIaMDAQDhBQAhtgMAANoGtgMiBAcAAN0GACCRA0AAAAABowMBAAAAAbYDAAAAtgMCBvkCAQAAAAH-AkAAAAABkQNAAAAAAdkDAQAAAAHaAwEAAAAB2wNAAAAAAQIAAAANACA6AADfCQAgAwAAAA0AIDoAAN8JACA7AADeCQAgATMAAJ8KADALAwAArAUAIPYCAADbBQAw9wIAAAsAEPgCAADbBQAw-QIBAAAAAfoCAQD_BAAh_gJAAJ0FACGRA0AAnQUAIdkDAQD9BAAh2gMBAP0EACHbA0AAgAUAIQIAAAANACAzAADeCQAgAgAAANwJACAzAADdCQAgCvYCAADbCQAw9wIAANwJABD4AgAA2wkAMPkCAQD9BAAh-gIBAP8EACH-AkAAnQUAIZEDQACdBQAh2QMBAP0EACHaAwEA_QQAIdsDQACABQAhCvYCAADbCQAw9wIAANwJABD4AgAA2wkAMPkCAQD9BAAh-gIBAP8EACH-AkAAnQUAIZEDQACdBQAh2QMBAP0EACHaAwEA_QQAIdsDQACABQAhBvkCAQDhBQAh_gJAAOoFACGRA0AA6gUAIdkDAQDhBQAh2gMBAOEFACHbA0AA4wUAIQb5AgEA4QUAIf4CQADqBQAhkQNAAOoFACHZAwEA4QUAIdoDAQDhBQAh2wNAAOMFACEG-QIBAAAAAf4CQAAAAAGRA0AAAAAB2QMBAAAAAdoDAQAAAAHbA0AAAAABCPkCAQAAAAH-AkAAAAABkQNAAAAAAa4DAQAAAAHbA0AAAAAB3AMBAAAAAd0DAQAAAAHeAwEAAAABAgAAAAkAIDoAAOsJACADAAAACQAgOgAA6wkAIDsAAOoJACABMwAAngoAMA0DAACeBQAg9gIAANwFADD3AgAABwAQ-AIAANwFADD5AgEAAAAB-gIBAP0EACH-AkAAgAUAIZEDQACABQAhrgMBAP8EACHbA0AAgAUAIdwDAQAAAAHdAwEA_wQAId4DAQD_BAAhAgAAAAkAIDMAAOoJACACAAAA6AkAIDMAAOkJACAM9gIAAOcJADD3AgAA6AkAEPgCAADnCQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACGuAwEA_wQAIdsDQACABQAh3AMBAP0EACHdAwEA_wQAId4DAQD_BAAhDPYCAADnCQAw9wIAAOgJABD4AgAA5wkAMPkCAQD9BAAh-gIBAP0EACH-AkAAgAUAIZEDQACABQAhrgMBAP8EACHbA0AAgAUAIdwDAQD9BAAh3QMBAP8EACHeAwEA_wQAIQj5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGuAwEA9QUAIdsDQADjBQAh3AMBAOEFACHdAwEA9QUAId4DAQD1BQAhCPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIa4DAQD1BQAh2wNAAOMFACHcAwEA4QUAId0DAQD1BQAh3gMBAPUFACEI-QIBAAAAAf4CQAAAAAGRA0AAAAABrgMBAAAAAdsDQAAAAAHcAwEAAAAB3QMBAAAAAd4DAQAAAAEM-QIBAAAAAf4CQAAAAAGRA0AAAAAB3wMBAAAAAeADAQAAAAHhAwEAAAAB4gMBAAAAAeMDQAAAAAHkA0AAAAAB5QMBAAAAAeYDAQAAAAHnAwEAAAABAgAAAAUAIDoAAPcJACADAAAABQAgOgAA9wkAIDsAAPYJACABMwAAnQoAMBEDAACeBQAg9gIAAN0FADD3AgAAAwAQ-AIAAN0FADD5AgEAAAAB-gIBAP0EACH-AkAAgAUAIZEDQACABQAh3wMBAP0EACHgAwEA_QQAIeEDAQD_BAAh4gMBAP8EACHjA0AAnQUAIeQDQACdBQAh5QMBAP8EACHmAwEA_wQAIecDAQD_BAAhAgAAAAUAIDMAAPYJACACAAAA9AkAIDMAAPUJACAQ9gIAAPMJADD3AgAA9AkAEPgCAADzCQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACHfAwEA_QQAIeADAQD9BAAh4QMBAP8EACHiAwEA_wQAIeMDQACdBQAh5ANAAJ0FACHlAwEA_wQAIeYDAQD_BAAh5wMBAP8EACEQ9gIAAPMJADD3AgAA9AkAEPgCAADzCQAw-QIBAP0EACH6AgEA_QQAIf4CQACABQAhkQNAAIAFACHfAwEA_QQAIeADAQD9BAAh4QMBAP8EACHiAwEA_wQAIeMDQACdBQAh5ANAAJ0FACHlAwEA_wQAIeYDAQD_BAAh5wMBAP8EACEM-QIBAOEFACH-AkAA4wUAIZEDQADjBQAh3wMBAOEFACHgAwEA4QUAIeEDAQD1BQAh4gMBAPUFACHjA0AA6gUAIeQDQADqBQAh5QMBAPUFACHmAwEA9QUAIecDAQD1BQAhDPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAId8DAQDhBQAh4AMBAOEFACHhAwEA9QUAIeIDAQD1BQAh4wNAAOoFACHkA0AA6gUAIeUDAQD1BQAh5gMBAPUFACHnAwEA9QUAIQz5AgEAAAAB_gJAAAAAAZEDQAAAAAHfAwEAAAAB4AMBAAAAAeEDAQAAAAHiAwEAAAAB4wNAAAAAAeQDQAAAAAHlAwEAAAAB5gMBAAAAAecDAQAAAAEEOgAA7AkAMIIEAADtCQAwhAQAAO8JACCIBAAA8AkAMAQ6AADgCQAwggQAAOEJADCEBAAA4wkAIIgEAADkCQAwBDoAANQJADCCBAAA1QkAMIQEAADXCQAgiAQAANgJADAEOgAAywkAMIIEAADMCQAwhAQAAM4JACCIBAAAgggAMAQ6AADCCQAwggQAAMMJADCEBAAAxQkAIIgEAAD2BwAwBDoAALYJADCCBAAAtwkAMIQEAAC5CQAgiAQAALoJADAEOgAArQkAMIIEAACuCQAwhAQAALAJACCIBAAA4QcAMAQ6AACkCQAwggQAAKUJADCEBAAApwkAIIgEAADVBwAwBDoAAJsJADCCBAAAnAkAMIQEAACeCQAgiAQAAMkHADAEOgAAkgkAMIIEAACTCQAwhAQAAJUJACCIBAAAqAYAMAQ6AACJCQAwggQAAIoJADCEBAAAjAkAIIgEAACcBgAwBDoAAIAJADCCBAAAgQkAMIQEAACDCQAgiAQAAPwFADAEOgAA9AgAMIIEAAD1CAAwhAQAAPcIACCIBAAA-AgAMAQ6AADoCAAwggQAAOkIADCEBAAA6wgAIIgEAADsCAAwAAAAAAAAAAAAAAAAAAAdBAAAhgoAIAUAAIcKACAGAACICgAgIAAAjwoAICEAAIkKACAiAACKCgAgJgAAkQoAICcAAIsKACAoAACMCgAgKQAAjQoAICoAAI4KACArAACQCgAgLAAAkgoAIC0AAJMKACD8AgAA5gUAIKEDAADmBQAgqAMAAOYFACC2AwAA5gUAILcDAADmBQAg6QMAAOYFACDvAwAA5gUAIPADAADmBQAg8QMAAOYFACDyAwAA5gUAIPMDAADmBQAg9AMAAOYFACD1AwAA5gUAIPYDAADmBQAg9wMAAOYFACAEIwAAlAoAICYAAJEKACCXAwAA5gUAIJkDAADmBQAgDAMAAJQKACAHAACXCgAgGgAAkAoAIB0AAJYKACAeAACPCgAg-gIAAOYFACChAwAA5gUAIKIDAADmBQAgpAMAAOYFACClAwAA5gUAIKcDAADmBQAgqAMAAOYFACAREQAAmgoAIBIAAJcKACATAACYCgAgFAAAmgoAIBUAAJwKACAWAACJCgAgGAAAigoAIBkAAJkKACAaAACMCgAgGwAAjQoAIBwAAI4KACAgAACPCgAgoQMAAOYFACCoAwAA5gUAIMcDAADmBQAgyAMAAOYFACDJAwAA5gUAIAAACwcAAJcKACAIAACXCgAgCQAAmAoAIA4AAPQGACAQAACZCgAgwAMAAOYFACDBAwAA5gUAIMIDAADmBQAgxAMAAOYFACDFAwAA5gUAIMYDAADmBQAgAwsAAPQGACChAwAA5gUAILgDAADmBQAgAAz5AgEAAAAB_gJAAAAAAZEDQAAAAAHfAwEAAAAB4AMBAAAAAeEDAQAAAAHiAwEAAAAB4wNAAAAAAeQDQAAAAAHlAwEAAAAB5gMBAAAAAecDAQAAAAEI-QIBAAAAAf4CQAAAAAGRA0AAAAABrgMBAAAAAdsDQAAAAAHcAwEAAAAB3QMBAAAAAd4DAQAAAAEG-QIBAAAAAf4CQAAAAAGRA0AAAAAB2QMBAAAAAdoDAQAAAAHbA0AAAAABA5EDQAAAAAGjAwEAAAABtgMAAAC2AwIE-QIBAAAAAZEDQAAAAAGjAwEAAAABtAMAAAC0AwIJ-QIBAAAAAZEDQAAAAAGSAwEAAAABlAMBAAAAAZUDAQAAAAGWA4AAAAABlwNAAAAAAZgDAgAAAAGZAwEAAAABApEDQAAAAAGjAwEAAAABC_kCAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAGrAwAAAKsDAqwDAQAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAGwA4AAAAABsQMBAAAAAQYzgAAAAAH5AgEAAAAB_gJAAAAAAZEDQAAAAAGjAwEAAAABqQMCAAAAAQv5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQKRA0AAAAABoAMBAAAAAQn5AgEAAAAB-wIBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAGPA0AAAAABkANAAAAAAZEDQAAAAAEF-QIBAAAAAfsCAQAAAAH8AiAAAAAB_QIgAAAAAf4CQAAAAAEK-QIBAAAAAZEDQAAAAAG3AwEAAAAB0gMBAAAAAdMDAQAAAAHUAwIAAAAB1QMBAAAAAdYDIAAAAAHXAwEAAAAB2AMBAAAAASMFAAD5CQAgBgAA-gkAICAAAIEKACAhAAD7CQAgIgAA_AkAICYAAIMKACAnAAD9CQAgKAAA_gkAICkAAP8JACAqAACACgAgKwAAggoAICwAAIQKACAtAACFCgAg-QIBAAAAAfwCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABtgMBAAAAAbcDAQAAAAHoAyAAAAAB6QMBAAAAAesDAAAA6wMC7QMAAADtAwLuAyAAAAAB7wMBAAAAAfADAQAAAAHxA4AAAAAB8gNAAAAAAfMDAQAAAAH0AyAAAAAB9QMBAAAAAfYDQAAAAAH3A0AAAAABAgAAAAEAIDoAAKsKACADAAAADwAgOgAAqwoAIDsAAK8KACAlAAAADwAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIDMAAK8KACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEjBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAAD4CQAgBgAA-gkAICAAAIEKACAhAAD7CQAgIgAA_AkAICYAAIMKACAnAAD9CQAgKAAA_gkAICkAAP8JACAqAACACgAgKwAAggoAICwAAIQKACAtAACFCgAg-QIBAAAAAfwCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABtgMBAAAAAbcDAQAAAAHoAyAAAAAB6QMBAAAAAesDAAAA6wMC7QMAAADtAwLuAyAAAAAB7wMBAAAAAfADAQAAAAHxA4AAAAAB8gNAAAAAAfMDAQAAAAH0AyAAAAAB9QMBAAAAAfYDQAAAAAH3A0AAAAABAgAAAAEAIDoAALAKACADAAAADwAgOgAAsAoAIDsAALQKACAlAAAADwAgBAAA2ggAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIDMAALQKACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEjBAAA2ggAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAAD4CQAgBQAA-QkAICAAAIEKACAhAAD7CQAgIgAA_AkAICYAAIMKACAnAAD9CQAgKAAA_gkAICkAAP8JACAqAACACgAgKwAAggoAICwAAIQKACAtAACFCgAg-QIBAAAAAfwCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABtgMBAAAAAbcDAQAAAAHoAyAAAAAB6QMBAAAAAesDAAAA6wMC7QMAAADtAwLuAyAAAAAB7wMBAAAAAfADAQAAAAHxA4AAAAAB8gNAAAAAAfMDAQAAAAH0AyAAAAAB9QMBAAAAAfYDQAAAAAH3A0AAAAABAgAAAAEAIDoAALUKACADAAAADwAgOgAAtQoAIDsAALkKACAlAAAADwAgBAAA2ggAIAUAANsIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIDMAALkKACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEjBAAA2ggAIAUAANsIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAsAADmCAAgLQAA5wgAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAAD4CQAgBQAA-QkAIAYAAPoJACAgAACBCgAgIQAA-wkAICIAAPwJACAmAACDCgAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAg-QIBAAAAAfwCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABtgMBAAAAAbcDAQAAAAHoAyAAAAAB6QMBAAAAAesDAAAA6wMC7QMAAADtAwLuAyAAAAAB7wMBAAAAAfADAQAAAAHxA4AAAAAB8gNAAAAAAfMDAQAAAAH0AyAAAAAB9QMBAAAAAfYDQAAAAAH3A0AAAAABAgAAAAEAIDoAALoKACADAAAADwAgOgAAugoAIDsAAL4KACAlAAAADwAgBAAA2ggAIAUAANsIACAGAADcCAAgIAAA4wgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIDMAAL4KACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEjBAAA2ggAIAUAANsIACAGAADcCAAgIAAA4wgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAIRoRAACrCAAgEgAAnAgAIBMAAJ0IACAUAACeCAAgFgAAoAgAIBgAAKEIACAZAACiCAAgGgAAowgAIBsAAKQIACAcAAClCAAgIAAApggAIPkCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABxwMCAAAAAcgDAQAAAAHJAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAvwoAIA8HAAC2CAAgCAAAlggAIA4AAJgIACAQAACZCAAgjAMBAAAAAZEDQAAAAAGjAwEAAAABpAMCAAAAAcADAQAAAAHBAwEAAAABwgMBAAAAAcMDAQAAAAHEAwEAAAABxQMBAAAAAcYDQAAAAAECAAAALQAgOgAAwQoAIAMAAAAVACA6AADBCgAgOwAAxQoAIBEAAAAVACAHAACLBwAgCAAAjAcAIA4AAI4HACAQAACPBwAgMwAAxQoAIIwDAQDhBQAhkQNAAOMFACGjAwEA4QUAIaQDAgD0BQAhwAMBAPUFACHBAwEA9QUAIcIDAQD1BQAhwwMBAOEFACHEAwEA9QUAIcUDAQD1BQAhxgNAAOoFACEPBwAAiwcAIAgAAIwHACAOAACOBwAgEAAAjwcAIIwDAQDhBQAhkQNAAOMFACGjAwEA4QUAIaQDAgD0BQAhwAMBAPUFACHBAwEA9QUAIcIDAQD1BQAhwwMBAOEFACHEAwEA9QUAIcUDAQD1BQAhxgNAAOoFACEPBwAAtggAIAkAAJcIACAOAACYCAAgEAAAmQgAIIwDAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAHAAwEAAAABwQMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGA0AAAAABAgAAAC0AIDoAAMYKACAO-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABGhEAAKsIACASAACcCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AADJCgAgCowDAQAAAAGRA0AAAAABpAMCAAAAAcADAQAAAAHBAwEAAAABwgMBAAAAAcMDAQAAAAHEAwEAAAABxQMBAAAAAcYDQAAAAAED-gIBAAAAAZEDQAAAAAG2AwAAALYDAgT5AgEAAAABkQNAAAAAAbIDAQAAAAG0AwAAALQDAgX5AgEAAAABkQNAAAAAAasDAAAAvwMCvAMCAAAAAb0DAQAAAAEC-gIBAAAAAZEDQAAAAAEL-QIBAAAAAfoCAQAAAAGRA0AAAAABpAMCAAAAAasDAAAAqwMCrAMBAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAbADgAAAAAGxAwEAAAABBjOAAAAAAfkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGpAwIAAAABC_kCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaQDAgAAAAGlAwEAAAABpgMCAAAAAacDQAAAAAGoA0AAAAABAwAAABcAIDoAAMkKACA7AADVCgAgHAAAABcAIBEAALEHACASAACyBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAgMwAA1QoAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEaEQAAsQcAIBIAALIHACAUAACxCAAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHIAwEA9QUAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhAwAAABUAIDoAAMYKACA7AADYCgAgEQAAABUAIAcAAIsHACAJAACNBwAgDgAAjgcAIBAAAI8HACAzAADYCgAgjAMBAOEFACGRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQ8HAACLBwAgCQAAjQcAIA4AAI4HACAQAACPBwAgjAMBAOEFACGRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQ35AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQKRA0AAAAABvwMBAAAAAQT5AgEAAAABkQNAAAAAAasDAAAAvwMCvQMBAAAAAQMAAAAXACA6AAC_CgAgOwAA3goAIBwAAAAXACARAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFgAAtQcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIDMAAN4KACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHIAwEA9QUAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhGhEAALEHACASAACyBwAgEwAAswcAIBQAALEIACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIQX5AgEAAAABkQNAAAAAAaEDAgAAAAG3AwEAAAABuAMBAAAAAQIAAADOAgAgOgAA3woAIAMAAADRAgAgOgAA3woAIDsAAOMKACAHAAAA0QIAIDMAAOMKACD5AgEA4QUAIZEDQADjBQAhoQMCAJIGACG3AwEA4QUAIbgDAQD1BQAhBfkCAQDhBQAhkQNAAOMFACGhAwIAkgYAIbcDAQDhBQAhuAMBAPUFACEPBwAAtggAIAgAAJYIACAJAACXCAAgDgAAmAgAIIwDAQAAAAGRA0AAAAABowMBAAAAAaQDAgAAAAHAAwEAAAABwQMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGA0AAAAABAgAAAC0AIDoAAOQKACAaEQAAqwgAIBIAAJwIACATAACdCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBoAAKMIACAbAACkCAAgHAAApQgAICAAAKYIACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHIAwEAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABAgAAABoAIDoAAOYKACADAAAAFQAgOgAA5AoAIDsAAOoKACARAAAAFQAgBwAAiwcAIAgAAIwHACAJAACNBwAgDgAAjgcAIDMAAOoKACCMAwEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIA9AUAIcADAQD1BQAhwQMBAPUFACHCAwEA9QUAIcMDAQDhBQAhxAMBAPUFACHFAwEA9QUAIcYDQADqBQAhDwcAAIsHACAIAACMBwAgCQAAjQcAIA4AAI4HACCMAwEA4QUAIZEDQADjBQAhowMBAOEFACGkAwIA9AUAIcADAQD1BQAhwQMBAPUFACHCAwEA9QUAIcMDAQDhBQAhxAMBAPUFACHFAwEA9QUAIcYDQADqBQAhAwAAABcAIDoAAOYKACA7AADtCgAgHAAAABcAIBEAALEHACASAACyBwAgEwAAswcAIBQAALEIACAVAAC0BwAgFgAAtQcAIBgAALYHACAaAAC4BwAgGwAAuQcAIBwAALoHACAgAAC7BwAgMwAA7QoAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEaEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHIAwEA9QUAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhDwcAALYIACAIAACWCAAgCQAAlwgAIBAAAJkIACCMAwEAAAABkQNAAAAAAaMDAQAAAAGkAwIAAAABwAMBAAAAAcEDAQAAAAHCAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgNAAAAAAQIAAAAtACA6AADuCgAgAwAAABUAIDoAAO4KACA7AADyCgAgEQAAABUAIAcAAIsHACAIAACMBwAgCQAAjQcAIBAAAI8HACAzAADyCgAgjAMBAOEFACGRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQ8HAACLBwAgCAAAjAcAIAkAAI0HACAQAACPBwAgjAMBAOEFACGRA0AA4wUAIaMDAQDhBQAhpAMCAPQFACHAAwEA9QUAIcEDAQD1BQAhwgMBAPUFACHDAwEA4QUAIcQDAQD1BQAhxQMBAPUFACHGA0AA6gUAIQORA0AAAAABowMBAAAAAaQDAgAAAAEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICIAAPwJACAmAACDCgAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AAD0CgAgGhEAAKsIACASAACcCAAgEwAAnQgAIBQAAJ4IACAVAACfCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AAD2CgAgAwAAAA8AIDoAAPQKACA7AAD6CgAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAAD6CgAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAA9goAIDsAAP0KACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAYAAC2BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACAzAAD9CgAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAmAACDCgAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AAD-CgAgGhEAAKsIACASAACcCAAgEwAAnQgAIBQAAJ4IACAVAACfCAAgFgAAoAgAIBkAAKIIACAaAACjCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AACACwAgAwAAAA8AIDoAAP4KACA7AACECwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAACECwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAAgAsAIDsAAIcLACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAICAAALsHACAzAACHCwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBYAALUHACAZAAC3BwAgGgAAuAcAIBsAALkHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AACICwAgGhEAAKsIACASAACcCAAgEwAAnQgAIBQAAJ4IACAVAACfCAAgFgAAoAgAIBgAAKEIACAZAACiCAAgGwAApAgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AACKCwAgAwAAAA8AIDoAAIgLACA7AACOCwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAACOCwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAAigsAIDsAAJELACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAbAAC5BwAgHAAAugcAICAAALsHACAzAACRCwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBsAALkHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACAoAAD-CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AACSCwAgGhEAAKsIACASAACcCAAgEwAAnQgAIBQAAJ4IACAVAACfCAAgFgAAoAgAIBgAAKEIACAZAACiCAAgGgAAowgAIBwAAKUIACAgAACmCAAg-QIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAHHAwIAAAAByAMBAAAAAckDAgAAAAHLAwAAAMsDAswDIAAAAAHNAyAAAAABzgMCAAAAAc8DAgAAAAHQAwIAAAAB0QMCAAAAAQIAAAAaACA6AACUCwAgAwAAAA8AIDoAAJILACA7AACYCwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKAAA4AgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAACYCwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKAAA4AgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAAlAsAIDsAAJsLACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgHAAAugcAICAAALsHACAzAACbCwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBoAALgHACAcAAC6BwAgIAAAuwcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEaEQAAqwgAIBIAAJwIACATAACdCAAgFAAAnggAIBUAAJ8IACAWAACgCAAgGAAAoQgAIBkAAKIIACAaAACjCAAgGwAApAgAICAAAKYIACD5AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAccDAgAAAAHIAwEAAAAByQMCAAAAAcsDAAAAywMCzAMgAAAAAc0DIAAAAAHOAwIAAAABzwMCAAAAAdADAgAAAAHRAwIAAAABAgAAABoAIDoAAJwLACAjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACAoAAD-CQAgKQAA_wkAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AACeCwAgAwAAABcAIDoAAJwLACA7AACiCwAgHAAAABcAIBEAALEHACASAACyBwAgEwAAswcAIBQAALEIACAVAAC0BwAgFgAAtQcAIBgAALYHACAZAAC3BwAgGgAAuAcAIBsAALkHACAgAAC7BwAgMwAAogsAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEaEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAICAAALsHACD5AgEA4QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhxwMCAJIGACHIAwEA9QUAIckDAgCSBgAhywMAAK8HywMizAMgAOIFACHNAyAA4gUAIc4DAgD0BQAhzwMCAPQFACHQAwIA9AUAIdEDAgD0BQAhAwAAAA8AIDoAAJ4LACA7AAClCwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKAAA4AgAICkAAOEIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAAClCwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICAAAOMIACAhAADdCAAgIgAA3ggAICYAAOUIACAnAADfCAAgKAAA4AgAICkAAOEIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEQAwAAsQYAIAcAALAGACAaAACzBgAgHQAAtAYAIPkCAQAAAAH6AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABogMBAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQIAAABGACA6AACmCwAgIwQAAPgJACAFAAD5CQAgBgAA-gkAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACAoAAD-CQAgKQAA_wkAICoAAIAKACArAACCCgAgLAAAhAoAIC0AAIUKACD5AgEAAAAB_AIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAG2AwEAAAABtwMBAAAAAegDIAAAAAHpAwEAAAAB6wMAAADrAwLtAwAAAO0DAu4DIAAAAAHvAwEAAAAB8AMBAAAAAfEDgAAAAAHyA0AAAAAB8wMBAAAAAfQDIAAAAAH1AwEAAAAB9gNAAAAAAfcDQAAAAAECAAAAAQAgOgAAqAsAIBoRAACrCAAgEgAAnAgAIBMAAJ0IACAUAACeCAAgFQAAnwgAIBYAAKAIACAYAAChCAAgGQAAoggAIBoAAKMIACAbAACkCAAgHAAApQgAIPkCAQAAAAH-AkAAAAABkQNAAAAAAaEDAgAAAAGoA0AAAAABxwMCAAAAAcgDAQAAAAHJAwIAAAABywMAAADLAwLMAyAAAAABzQMgAAAAAc4DAgAAAAHPAwIAAAAB0AMCAAAAAdEDAgAAAAECAAAAGgAgOgAAqgsAIAv5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaMDAQAAAAGkAwIAAAABpQMBAAAAAaYDAgAAAAGnA0AAAAABqANAAAAAAQL6AgEAAAABkQNAAAAAAQMAAABEACA6AACmCwAgOwAAsAsAIBIAAABEACADAACUBgAgBwAAkwYAIBoAAJcGACAdAACVBgAgMwAAsAsAIPkCAQDhBQAh-gIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGiAwEA9QUAIaMDAQDhBQAhpAMCAJIGACGlAwEA9QUAIaYDAgD0BQAhpwNAAOoFACGoA0AA6gUAIRADAACUBgAgBwAAkwYAIBoAAJcGACAdAACVBgAg-QIBAOEFACH6AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhowMBAOEFACGkAwIAkgYAIaUDAQD1BQAhpgMCAPQFACGnA0AA6gUAIagDQADqBQAhAwAAAA8AIDoAAKgLACA7AACzCwAgJQAAAA8AIAQAANoIACAFAADbCAAgBgAA3AgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACAzAACzCwAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAANoIACAFAADbCAAgBgAA3AgAICEAAN0IACAiAADeCAAgJgAA5QgAICcAAN8IACAoAADgCAAgKQAA4QgAICoAAOIIACArAADkCAAgLAAA5ggAIC0AAOcIACD5AgEA4QUAIfwCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACG2AwEA9QUAIbcDAQD1BQAh6AMgAOIFACHpAwEA9QUAIesDAADXCOsDIu0DAADYCO0DIu4DIADiBQAh7wMBAPUFACHwAwEA9QUAIfEDgAAAAAHyA0AA6gUAIfMDAQD1BQAh9AMgANkIACH1AwEA9QUAIfYDQADqBQAh9wNAAOoFACEDAAAAFwAgOgAAqgsAIDsAALYLACAcAAAAFwAgEQAAsQcAIBIAALIHACATAACzBwAgFAAAsQgAIBUAALQHACAWAAC1BwAgGAAAtgcAIBkAALcHACAaAAC4BwAgGwAAuQcAIBwAALoHACAzAAC2CwAg-QIBAOEFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIccDAgCSBgAhyAMBAPUFACHJAwIAkgYAIcsDAACvB8sDIswDIADiBQAhzQMgAOIFACHOAwIA9AUAIc8DAgD0BQAh0AMCAPQFACHRAwIA9AUAIRoRAACxBwAgEgAAsgcAIBMAALMHACAUAACxCAAgFQAAtAcAIBYAALUHACAYAAC2BwAgGQAAtwcAIBoAALgHACAbAAC5BwAgHAAAugcAIPkCAQDhBQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhqANAAOoFACHHAwIAkgYAIcgDAQD1BQAhyQMCAJIGACHLAwAArwfLAyLMAyAA4gUAIc0DIADiBQAhzgMCAPQFACHPAwIA9AUAIdADAgD0BQAh0QMCAPQFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICcAAP0JACAoAAD-CQAgKQAA_wkAICoAAIAKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AAC3CwAgEAMAALEGACAHAACwBgAgHQAAtAYAIB4AALIGACD5AgEAAAAB-gIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAaIDAQAAAAGjAwEAAAABpAMCAAAAAaUDAQAAAAGmAwIAAAABpwNAAAAAAagDQAAAAAECAAAARgAgOgAAuQsAIAMAAAAPACA6AAC3CwAgOwAAvQsAICUAAAAPACAEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICwAAOYIACAtAADnCAAgMwAAvQsAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICwAAOYIACAtAADnCAAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhAwAAAEQAIDoAALkLACA7AADACwAgEgAAAEQAIAMAAJQGACAHAACTBgAgHQAAlQYAIB4AAJYGACAzAADACwAg-QIBAOEFACH6AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIaIDAQD1BQAhowMBAOEFACGkAwIAkgYAIaUDAQD1BQAhpgMCAPQFACGnA0AA6gUAIagDQADqBQAhEAMAAJQGACAHAACTBgAgHQAAlQYAIB4AAJYGACD5AgEA4QUAIfoCAQD1BQAh_gJAAOMFACGRA0AA4wUAIaEDAgCSBgAhogMBAPUFACGjAwEA4QUAIaQDAgCSBgAhpQMBAPUFACGmAwIA9AUAIacDQADqBQAhqANAAOoFACEjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJgAAgwoAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AADBCwAgCfkCAQAAAAH7AgEAAAABigMBAAAAAYwDAQAAAAGNAwEAAAABjgMBAAAAAY8DQAAAAAGQA0AAAAABkQNAAAAAAQMAAAAPACA6AADBCwAgOwAAxgsAICUAAAAPACAEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgKAAA4AgAICkAAOEIACAqAADiCAAgKwAA5AgAICwAAOYIACAtAADnCAAgMwAAxgsAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgKAAA4AgAICkAAOEIACAqAADiCAAgKwAA5AgAICwAAOYIACAtAADnCAAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhCyMAAIQGACD5AgEAAAABkQNAAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWA4AAAAABlwNAAAAAAZgDAgAAAAGZAwEAAAABAgAAAF0AIDoAAMcLACAjBAAA-AkAIAUAAPkJACAGAAD6CQAgIAAAgQoAICEAAPsJACAiAAD8CQAgJwAA_QkAICgAAP4JACApAAD_CQAgKgAAgAoAICsAAIIKACAsAACECgAgLQAAhQoAIPkCAQAAAAH8AgEAAAAB_gJAAAAAAZEDQAAAAAGhAwIAAAABqANAAAAAAbYDAQAAAAG3AwEAAAAB6AMgAAAAAekDAQAAAAHrAwAAAOsDAu0DAAAA7QMC7gMgAAAAAe8DAQAAAAHwAwEAAAAB8QOAAAAAAfIDQAAAAAHzAwEAAAAB9AMgAAAAAfUDAQAAAAH2A0AAAAAB9wNAAAAAAQIAAAABACA6AADJCwAgAwAAAFsAIDoAAMcLACA7AADNCwAgDQAAAFsAICMAAPYFACAzAADNCwAg-QIBAOEFACGRA0AA4wUAIZIDAQDhBQAhkwMBAOEFACGUAwEA4QUAIZUDAQDhBQAhlgOAAAAAAZcDQADqBQAhmAMCAPQFACGZAwEA9QUAIQsjAAD2BQAg-QIBAOEFACGRA0AA4wUAIZIDAQDhBQAhkwMBAOEFACGUAwEA4QUAIZUDAQDhBQAhlgOAAAAAAZcDQADqBQAhmAMCAPQFACGZAwEA9QUAIQMAAAAPACA6AADJCwAgOwAA0AsAICUAAAAPACAEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAnAADfCAAgKAAA4AgAICkAAOEIACAqAADiCAAgKwAA5AgAICwAAOYIACAtAADnCAAgMwAA0AsAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAnAADfCAAgKAAA4AgAICkAAOEIACAqAADiCAAgKwAA5AgAICwAAOYIACAtAADnCAAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhIwQAAPgJACAFAAD5CQAgBgAA-gkAICAAAIEKACAhAAD7CQAgIgAA_AkAICYAAIMKACAnAAD9CQAgKAAA_gkAICkAAP8JACAqAACACgAgKwAAggoAIC0AAIUKACD5AgEAAAAB_AIBAAAAAf4CQAAAAAGRA0AAAAABoQMCAAAAAagDQAAAAAG2AwEAAAABtwMBAAAAAegDIAAAAAHpAwEAAAAB6wMAAADrAwLtAwAAAO0DAu4DIAAAAAHvAwEAAAAB8AMBAAAAAfEDgAAAAAHyA0AAAAAB8wMBAAAAAfQDIAAAAAH1AwEAAAAB9gNAAAAAAfcDQAAAAAECAAAAAQAgOgAA0QsAIAMAAAAPACA6AADRCwAgOwAA1QsAICUAAAAPACAEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAtAADnCAAgMwAA1QsAIPkCAQDhBQAh_AIBAPUFACH-AkAA4wUAIZEDQADjBQAhoQMCAJIGACGoA0AA6gUAIbYDAQD1BQAhtwMBAPUFACHoAyAA4gUAIekDAQD1BQAh6wMAANcI6wMi7QMAANgI7QMi7gMgAOIFACHvAwEA9QUAIfADAQD1BQAh8QOAAAAAAfIDQADqBQAh8wMBAPUFACH0AyAA2QgAIfUDAQD1BQAh9gNAAOoFACH3A0AA6gUAISMEAADaCAAgBQAA2wgAIAYAANwIACAgAADjCAAgIQAA3QgAICIAAN4IACAmAADlCAAgJwAA3wgAICgAAOAIACApAADhCAAgKgAA4ggAICsAAOQIACAtAADnCAAg-QIBAOEFACH8AgEA9QUAIf4CQADjBQAhkQNAAOMFACGhAwIAkgYAIagDQADqBQAhtgMBAPUFACG3AwEA9QUAIegDIADiBQAh6QMBAPUFACHrAwAA1wjrAyLtAwAA2AjtAyLuAyAA4gUAIe8DAQD1BQAh8AMBAPUFACHxA4AAAAAB8gNAAOoFACHzAwEA9QUAIfQDIADZCAAh9QMBAPUFACH2A0AA6gUAIfcDQADqBQAhDwQGAgUKAwYOBAwAGiBnESEUBSJaDSZpFideFShkDillDypmECtoEixtGC1xGQEDAAEBAwABAQMQAQIDAAEHAAYNDAAUERYHEikGEyoGFCsHFS4HFi8FGDMNGTULGjkOGz0PHEIQIEcRBgcABggYBgkbBgwADA4fCBAlCwIKAAcNAAkCCyAIDAAKAQshAAIHAAYPAAcDCSYADicAECgAAgcABhc0AQIDAAEHAAYCAz4BBwAGAgMAAQdDBgYDSAEHAAYMABMaThIdSREeShECAwABHwARAhpQAB5PAAkTUQAVUgAWUwAYVAAZVQAaVgAbVwAcWAAgWQADDAAXIwABJmIWAiQAASUAFQEmYwABAwABAQMAAQ4EcgAFcwAGdAAgewAhdQAidgAmfQAndwAoeAApeQAqegArfAAsfgAtfwAAAAAFDAAfQAAgQQAhQgAiQwAjAAAAAAAFDAAfQAAgQQAhQgAiQwAjAQMAAQEDAAEDDAAoQgApQwAqAAAAAwwAKEIAKUMAKgEDAAEBAwABAwwAL0IAMEMAMQAAAAMMAC9CADBDADEBA8wBAQED0gEBAwwANkIAN0MAOAAAAAMMADZCADdDADgBAwABAQMAAQUMAD1AAD5BAD9CAEBDAEEAAAAAAAUMAD1AAD5BAD9CAEBDAEEDEfoBBxL7AQYU_AEHAxGCAgcSgwIGFIQCBwUMAEZAAEdBAEhCAElDAEoAAAAAAAUMAEZAAEdBAEhCAElDAEoBBwAGAQcABgUMAE9AAFBBAFFCAFJDAFMAAAAAAAUMAE9AAFBBAFFCAFJDAFMCCgAHDQAJAgoABw0ACQUMAFhAAFlBAFpCAFtDAFwAAAAAAAUMAFhAAFlBAFpCAFtDAFwCBwAGDwAHAgcABg8ABwUMAGFAAGJBAGNCAGRDAGUAAAAAAAUMAGFAAGJBAGNCAGRDAGUAAAUMAGpAAGtBAGxCAG1DAG4AAAAAAAUMAGpAAGtBAGxCAG1DAG4CAwABBwAGAgMAAQcABgMMAHNCAHRDAHUAAAADDABzQgB0QwB1AgcABheHAwECBwAGF40DAQMMAHpCAHtDAHwAAAADDAB6QgB7QwB8AgMAAQcABgIDAAEHAAYDDACBAUIAggFDAIMBAAAAAwwAgQFCAIIBQwCDAQIDtQMBBwAGAgO7AwEHAAYFDACIAUAAiQFBAIoBQgCLAUMAjAEAAAAAAAUMAIgBQACJAUEAigFCAIsBQwCMAQIDAAEHzQMGAgMAAQfTAwYFDACRAUAAkgFBAJMBQgCUAUMAlQEAAAAAAAUMAJEBQACSAUEAkwFCAJQBQwCVAQMD5QMBBwAGHeYDEQMD7AMBBwAGHe0DEQUMAJoBQACbAUEAnAFCAJ0BQwCeAQAAAAAABQwAmgFAAJsBQQCcAUIAnQFDAJ4BAgMAAR8AEQIDAAEfABEDDACjAUIApAFDAKUBAAAAAwwAowFCAKQBQwClAQEjAAEBIwABBQwAqgFAAKsBQQCsAUIArQFDAK4BAAAAAAAFDACqAUAAqwFBAKwBQgCtAUMArgECJAABJQAVAiQAASUAFQMMALMBQgC0AUMAtQEAAAADDACzAUIAtAFDALUBAQMAAQEDAAEDDAC6AUIAuwFDALwBAAAAAwwAugFCALsBQwC8AS4CAS-AAQEwggEBMYMBATKEAQE0hgEBNYgBGzaJARw3iwEBOI0BGzmOAR08jwEBPZABAT6RARtElAEeRZUBJEaWAQJHlwECSJgBAkmZAQJKmgECS5wBAkyeARtNnwElTqEBAk-jARtQpAEmUaUBAlKmAQJTpwEbVKoBJ1WrAStWrAEDV60BA1iuAQNZrwEDWrABA1uyAQNctAEbXbUBLF63AQNfuQEbYLoBLWG7AQNivAEDY70BG2TAAS5lwQEyZsIBBGfDAQRoxAEEacUBBGrGAQRryAEEbMoBG23LATNuzgEEb9ABG3DRATRx0wEEctQBBHPVARt02AE1ddkBOXbaARl32wEZeNwBGXndARl63gEZe-ABGXziARt94wE6fuUBGX_nARuAAegBO4EB6QEZggHqARmDAesBG4QB7gE8hQHvAUKGAfABBocB8QEGiAHyAQaJAfMBBooB9AEGiwH2AQaMAfgBG40B-QFDjgH-AQaPAYACG5ABgQJEkQGFAgaSAYYCBpMBhwIblAGKAkWVAYsCS5YBjAIHlwGNAgeYAY4CB5kBjwIHmgGQAgebAZICB5wBlAIbnQGVAkyeAZcCB58BmQIboAGaAk2hAZsCB6IBnAIHowGdAhukAaACTqUBoQJUpgGiAginAaMCCKgBpAIIqQGlAgiqAaYCCKsBqAIIrAGqAhutAasCVa4BrQIIrwGvAhuwAbACVrEBsQIIsgGyAgizAbMCG7QBtgJXtQG3Al22AbgCC7cBuQILuAG6Agu5AbsCC7oBvAILuwG-Agu8AcACG70BwQJevgHDAgu_AcUCG8ABxgJfwQHHAgvCAcgCC8MByQIbxAHMAmDFAc0CZsYBzwIJxwHQAgnIAdMCCckB1AIJygHVAgnLAdcCCcwB2QIbzQHaAmfOAdwCCc8B3gIb0AHfAmjRAeACCdIB4QIJ0wHiAhvUAeUCadUB5gJv1gHnAgXXAegCBdgB6QIF2QHqAgXaAesCBdsB7QIF3AHvAhvdAfACcN4B8gIF3wH0AhvgAfUCceEB9gIF4gH3AgXjAfgCG-QB-wJy5QH8AnbmAf0CDecB_gIN6AH_Ag3pAYADDeoBgQMN6wGDAw3sAYUDG-0BhgN37gGJAw3vAYsDG_ABjAN48QGOAw3yAY8DDfMBkAMb9AGTA3n1AZQDffYBlQMO9wGWAw74AZcDDvkBmAMO-gGZAw77AZsDDvwBnQMb_QGeA37-AaADDv8BogMbgAKjA3-BAqQDDoICpQMOgwKmAxuEAqkDgAGFAqoDhAGGAqsDD4cCrAMPiAKtAw-JAq4DD4oCrwMPiwKxAw-MArMDG40CtAOFAY4CtwMPjwK5AxuQAroDhgGRArwDD5ICvQMPkwK-AxuUAsEDhwGVAsIDjQGWAsMDEJcCxAMQmALFAxCZAsYDEJoCxwMQmwLJAxCcAssDG50CzAOOAZ4CzwMQnwLRAxugAtIDjwGhAtQDEKIC1QMQowLWAxukAtkDkAGlAtoDlgGmAtsDEacC3AMRqALdAxGpAt4DEaoC3wMRqwLhAxGsAuMDG60C5AOXAa4C6AMRrwLqAxuwAusDmAGxAu4DEbIC7wMRswLwAxu0AvMDmQG1AvQDnwG2AvUDErcC9gMSuAL3AxK5AvgDEroC-QMSuwL7AxK8Av0DG70C_gOgAb4CgAQSvwKCBBvAAoMEoQHBAoQEEsIChQQSwwKGBBvEAokEogHFAooEpgHGAosEFccCjAQVyAKNBBXJAo4EFcoCjwQVywKRBBXMApMEG80ClASnAc4ClgQVzwKYBBvQApkEqAHRApoEFdICmwQV0wKcBBvUAp8EqQHVAqAErwHWAqEEFtcCogQW2AKjBBbZAqQEFtoCpQQW2wKnBBbcAqkEG90CqgSwAd4CrAQW3wKuBBvgAq8EsQHhArAEFuICsQQW4wKyBBvkArUEsgHlArYEtgHmArcEGOcCuAQY6AK5BBjpAroEGOoCuwQY6wK9BBjsAr8EG-0CwAS3Ae4CwgQY7wLEBBvwAsUEuAHxAsYEGPICxwQY8wLIBBv0AssEuQH1AswEvQE" } config.compilerWasm = { getRuntime: async () => require('./query_compiler_fast_bg.js'), diff --git a/apps/modeling-commons-backend/generated/prisma/package.json b/apps/modeling-commons-backend/generated/prisma/package.json index 3a7d7918..1c9524c7 100644 --- a/apps/modeling-commons-backend/generated/prisma/package.json +++ b/apps/modeling-commons-backend/generated/prisma/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-273e5a3fcac0dca877bb4bb677e273e919cec59c8543681ceb779e6bd9ce1cc5", + "name": "prisma-client-7c793dfda8b5b169a9eeb623480d33dd5d9b1a92b0009a300f9aa6f068f47f9e", "main": "index.js", "types": "index.d.ts", "browser": "default.js", diff --git a/apps/modeling-commons-backend/generated/prisma/schema.prisma b/apps/modeling-commons-backend/generated/prisma/schema.prisma index 46da80f2..7c7ce1da 100644 --- a/apps/modeling-commons-backend/generated/prisma/schema.prisma +++ b/apps/modeling-commons-backend/generated/prisma/schema.prisma @@ -81,14 +81,16 @@ model User { verifications Verification[] // Domain relations - authoredModels ModelAuthor[] - grantedPermissions ModelPermission[] - events Event[] - modelLikes ModelLike[] - modelInteractions ModelInteraction[] - modelDrafts ModelDraft[] - comments ModelComment[] - commentLikes ModelCommentLike[] + authoredModels ModelAuthor[] + grantedPermissions ModelPermission[] + events Event[] + modelLikes ModelLike[] + modelInteractions ModelInteraction[] + modelDrafts ModelDraft[] + comments ModelComment[] + commentLikes ModelCommentLike[] + notifications UserNotification[] + notificationPreferences UserNotificationPreference[] // Better Auth Admin plugin role String? @@ -411,11 +413,47 @@ model Event { payload Json createdAt DateTime @default(now()) processedAt DateTime? + attempts Int @default(0) + lastError String? @db.Text actor User @relation(fields: [actorId], references: [id]) + notifications UserNotification[] + @@index([actorId]) @@index([resourceType, resourceId]) @@index([type]) @@index([processedAt]) } + +model UserNotification { + id String @id @default(uuid()) + recipientId String + eventId String + category String + title String + body String @db.Text + url String + emailSentAt DateTime? @db.Timestamptz(3) + readAt DateTime? @db.Timestamptz(3) + createdAt DateTime @default(now()) @db.Timestamptz(3) + + recipient User @relation(fields: [recipientId], references: [id], onDelete: Cascade) + event Event @relation(fields: [eventId], references: [id], onDelete: Cascade) + + @@unique([eventId, recipientId, category]) + @@index([recipientId, readAt, createdAt]) +} + +model UserNotificationPreference { + id String @id @default(uuid()) + userId String + category String + email Boolean + inApp Boolean + updatedAt DateTime @updatedAt @db.Timestamptz(3) + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([userId, category]) +} diff --git a/apps/modeling-commons-backend/prisma/migrations/20260727192327_user_notifications/migration.sql b/apps/modeling-commons-backend/prisma/migrations/20260727192327_user_notifications/migration.sql new file mode 100644 index 00000000..1a5e036a --- /dev/null +++ b/apps/modeling-commons-backend/prisma/migrations/20260727192327_user_notifications/migration.sql @@ -0,0 +1,49 @@ +-- AlterTable +ALTER TABLE "Event" ADD COLUMN "attempts" INTEGER NOT NULL DEFAULT 0, +ADD COLUMN "lastError" TEXT; + +-- CreateTable +CREATE TABLE "UserNotification" ( + "id" TEXT NOT NULL, + "recipientId" TEXT NOT NULL, + "eventId" TEXT NOT NULL, + "category" TEXT NOT NULL, + "title" TEXT NOT NULL, + "body" TEXT NOT NULL, + "url" TEXT NOT NULL, + "emailSentAt" TIMESTAMPTZ(3), + "readAt" TIMESTAMPTZ(3), + "createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "UserNotification_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "UserNotificationPreference" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "category" TEXT NOT NULL, + "email" BOOLEAN NOT NULL, + "inApp" BOOLEAN NOT NULL, + "updatedAt" TIMESTAMPTZ(3) NOT NULL, + + CONSTRAINT "UserNotificationPreference_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "UserNotification_recipientId_readAt_createdAt_idx" ON "UserNotification"("recipientId", "readAt", "createdAt"); + +-- CreateIndex +CREATE UNIQUE INDEX "UserNotification_eventId_recipientId_category_key" ON "UserNotification"("eventId", "recipientId", "category"); + +-- CreateIndex +CREATE UNIQUE INDEX "UserNotificationPreference_userId_category_key" ON "UserNotificationPreference"("userId", "category"); + +-- AddForeignKey +ALTER TABLE "UserNotification" ADD CONSTRAINT "UserNotification_recipientId_fkey" FOREIGN KEY ("recipientId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "UserNotification" ADD CONSTRAINT "UserNotification_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "UserNotificationPreference" ADD CONSTRAINT "UserNotificationPreference_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/modeling-commons-backend/prisma/schema.prisma b/apps/modeling-commons-backend/prisma/schema.prisma index 09c58ea3..73804b24 100644 --- a/apps/modeling-commons-backend/prisma/schema.prisma +++ b/apps/modeling-commons-backend/prisma/schema.prisma @@ -89,6 +89,8 @@ model User { modelDrafts ModelDraft[] comments ModelComment[] commentLikes ModelCommentLike[] + notifications UserNotification[] + notificationPreferences UserNotificationPreference[] // Better Auth Admin plugin role String? @@ -412,11 +414,47 @@ model Event { payload Json createdAt DateTime @default(now()) processedAt DateTime? + attempts Int @default(0) + lastError String? @db.Text actor User @relation(fields: [actorId], references: [id]) + notifications UserNotification[] + @@index([actorId]) @@index([resourceType, resourceId]) @@index([type]) @@index([processedAt]) } + +model UserNotification { + id String @id @default(uuid()) + recipientId String + eventId String + category String + title String + body String @db.Text + url String + emailSentAt DateTime? @db.Timestamptz(3) + readAt DateTime? @db.Timestamptz(3) + createdAt DateTime @default(now()) @db.Timestamptz(3) + + recipient User @relation(fields: [recipientId], references: [id], onDelete: Cascade) + event Event @relation(fields: [eventId], references: [id], onDelete: Cascade) + + @@unique([eventId, recipientId, category]) + @@index([recipientId, readAt, createdAt]) +} + +model UserNotificationPreference { + id String @id @default(uuid()) + userId String + category String + email Boolean + inApp Boolean + updatedAt DateTime @updatedAt @db.Timestamptz(3) + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([userId, category]) +} diff --git a/apps/modeling-commons-backend/src/config/rules.ts b/apps/modeling-commons-backend/src/config/rules.ts index 1fabe523..f69a3b44 100644 --- a/apps/modeling-commons-backend/src/config/rules.ts +++ b/apps/modeling-commons-backend/src/config/rules.ts @@ -174,6 +174,12 @@ const rules = { // degradation. Retune knowingly if this bites real threads. tree: { maxNodes: 1_000 }, }, + + notification: { + eventBatchSize: 50, + maxEventAttempts: 5, + previewLength: 280, + }, }, mime: { deniedTypes: [ diff --git a/apps/modeling-commons-backend/src/modules/event/database/event.repository.mock.ts b/apps/modeling-commons-backend/src/modules/event/database/event.repository.mock.ts index a6a75e43..1b413525 100644 --- a/apps/modeling-commons-backend/src/modules/event/database/event.repository.mock.ts +++ b/apps/modeling-commons-backend/src/modules/event/database/event.repository.mock.ts @@ -8,6 +8,7 @@ export function mockEventRepository(): { insert: vi.fn(), findUnprocessed: vi.fn(), markProcessed: vi.fn(), + markFailed: vi.fn(), search: vi.fn(), }; } diff --git a/apps/modeling-commons-backend/src/modules/event/database/event.repository.port.ts b/apps/modeling-commons-backend/src/modules/event/database/event.repository.port.ts index c4db0242..acd58c5a 100644 --- a/apps/modeling-commons-backend/src/modules/event/database/event.repository.port.ts +++ b/apps/modeling-commons-backend/src/modules/event/database/event.repository.port.ts @@ -35,6 +35,8 @@ export type EventRecord = { payload: Record; createdAt: Date; processedAt: Date | null; + attempts: number; + lastError: string | null; }; export type InsertEventParams = { @@ -47,8 +49,11 @@ export type InsertEventParams = { export interface EventRepositoryPort { insert: (ctx: TransactionContext, params: InsertEventParams) => Promise; - findUnprocessed: (limit: number) => Promise>; + // `maxAttempts` caps how often a poison event is retried; omitting it selects regardless of + // how many times dispatch has already failed. + findUnprocessed: (limit: number, maxAttempts?: number) => Promise>; markProcessed: (id: string) => Promise; + markFailed: (id: string, error: unknown) => Promise; search: ( filters: EventSearchFilters, params: PaginatedQueryParams, diff --git a/apps/modeling-commons-backend/src/modules/event/database/event.repository.ts b/apps/modeling-commons-backend/src/modules/event/database/event.repository.ts index 8b5cb091..30a1d2d0 100644 --- a/apps/modeling-commons-backend/src/modules/event/database/event.repository.ts +++ b/apps/modeling-commons-backend/src/modules/event/database/event.repository.ts @@ -23,9 +23,12 @@ export default function eventRepository({ db }: Dependencies): EventRepositoryPo }); }, - async findUnprocessed(limit: number): Promise> { + async findUnprocessed(limit: number, maxAttempts?: number): Promise> { const records = await db.event.findMany({ - where: { processedAt: null }, + where: { + processedAt: null, + ...(maxAttempts === undefined ? {} : { attempts: { lt: maxAttempts } }), + }, orderBy: { createdAt: 'asc' }, take: limit, }); @@ -39,6 +42,16 @@ export default function eventRepository({ db }: Dependencies): EventRepositoryPo }); }, + async markFailed(id: string, error: unknown): Promise { + await db.event.update({ + where: { id }, + data: { + attempts: { increment: 1 }, + lastError: error instanceof Error ? error.message : String(error), + }, + }); + }, + async search( filters: EventSearchFilters, params: PaginatedQueryParams, diff --git a/apps/modeling-commons-backend/src/modules/event/domain/event.types.ts b/apps/modeling-commons-backend/src/modules/event/domain/event.types.ts index e86c3837..b55faec0 100644 --- a/apps/modeling-commons-backend/src/modules/event/domain/event.types.ts +++ b/apps/modeling-commons-backend/src/modules/event/domain/event.types.ts @@ -7,6 +7,8 @@ export type DomainEvent = { payload: Record; createdAt: Date; processedAt: Date | null; + attempts: number; + lastError: string | null; }; export type EventSearchFilters = { diff --git a/apps/modeling-commons-backend/src/modules/event/event-dispatcher.service.spec.ts b/apps/modeling-commons-backend/src/modules/event/event-dispatcher.service.spec.ts new file mode 100644 index 00000000..213fa18a --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/event/event-dispatcher.service.spec.ts @@ -0,0 +1,127 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import type { FastifyBaseLogger } from 'fastify'; +import makeEventDispatcherService, { + createEventDispatcher, +} from '#src/modules/event/event-dispatcher.service.ts'; +import type { EventRecord } from '#src/modules/event/database/event.repository.port.ts'; +import type { EventSubscriber } from '#src/modules/user-notification/domain/user-notification.types.ts'; + +function makeEvent(overrides: Partial = {}): EventRecord { + return { + id: 'event-1', + type: 'model_comment.created', + actorId: 'actor-1', + resourceType: 'model', + resourceId: 'model-1', + payload: {}, + createdAt: new Date('2026-01-01'), + processedAt: null, + attempts: 0, + lastError: null, + ...overrides, + }; +} + +function makeSubscriber(handles: boolean): { [K in keyof EventSubscriber]: ReturnType } { + return { + handles: vi.fn().mockReturnValue(handles), + handleEvent: vi.fn().mockResolvedValue(undefined), + }; +} + +function dispatcherWith( + subscribers: Array>, + loggerOverride: FastifyBaseLogger = logger, +) { + return createEventDispatcher(subscribers as unknown as Array, loggerOverride); +} + +const logger = { + info: vi.fn(), + debug: vi.fn(), + error: vi.fn(), + warn: vi.fn(), +} as unknown as FastifyBaseLogger; + +describe('createEventDispatcher', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('only invokes handleEvent on subscribers whose handles() returns true', async () => { + const subscribed = makeSubscriber(true); + const unsubscribed = makeSubscriber(false); + const dispatcher = dispatcherWith([subscribed, unsubscribed]); + const event = makeEvent(); + + await dispatcher.dispatch(event); + + expect(subscribed.handles).toHaveBeenCalledWith(event.type); + expect(subscribed.handleEvent).toHaveBeenCalledWith(event); + expect(unsubscribed.handleEvent).not.toHaveBeenCalled(); + }); + + it('does nothing when no subscriber handles the event type', async () => { + const unsubscribed = makeSubscriber(false); + const dispatcher = dispatcherWith([unsubscribed]); + + await expect(dispatcher.dispatch(makeEvent())).resolves.toBeUndefined(); + expect(unsubscribed.handleEvent).not.toHaveBeenCalled(); + }); + + it('runs every matching subscriber even when one throws', async () => { + const failing = makeSubscriber(true); + failing.handleEvent.mockRejectedValue(new Error('boom')); + const succeeding = makeSubscriber(true); + const dispatcher = dispatcherWith([failing, succeeding]); + + await expect(dispatcher.dispatch(makeEvent())).rejects.toThrow(AggregateError); + + expect(failing.handleEvent).toHaveBeenCalledTimes(1); + expect(succeeding.handleEvent).toHaveBeenCalledTimes(1); + }); + + it('logs each rejection and rethrows an AggregateError carrying every failure', async () => { + const errorA = new Error('subscriber A failed'); + const errorB = new Error('subscriber B failed'); + const subscriberA = makeSubscriber(true); + subscriberA.handleEvent.mockRejectedValue(errorA); + const subscriberB = makeSubscriber(true); + subscriberB.handleEvent.mockRejectedValue(errorB); + const dispatcher = dispatcherWith([subscriberA, subscriberB]); + + let thrown: unknown; + try { + await dispatcher.dispatch(makeEvent()); + } catch (error) { + thrown = error; + } + + expect(thrown).toBeInstanceOf(AggregateError); + expect((thrown as AggregateError).errors).toEqual(expect.arrayContaining([errorA, errorB])); + expect(logger.error).toHaveBeenCalledTimes(2); + }); + + it('does not throw when every matching subscriber succeeds', async () => { + const subscriber = makeSubscriber(true); + const dispatcher = dispatcherWith([subscriber]); + + await expect(dispatcher.dispatch(makeEvent())).resolves.toBeUndefined(); + }); +}); + +describe('makeEventDispatcherService', () => { + it('registers the user notification service as its sole subscriber', async () => { + const userNotificationService = makeSubscriber(true); + const service = makeEventDispatcherService({ + userNotificationService, + logger, + } as never); + const event = makeEvent(); + + await service.dispatch(event); + + expect(userNotificationService.handles).toHaveBeenCalledWith(event.type); + expect(userNotificationService.handleEvent).toHaveBeenCalledWith(event); + }); +}); diff --git a/apps/modeling-commons-backend/src/modules/event/event-dispatcher.service.ts b/apps/modeling-commons-backend/src/modules/event/event-dispatcher.service.ts new file mode 100644 index 00000000..cf2396e1 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/event/event-dispatcher.service.ts @@ -0,0 +1,41 @@ +import type { EventRecord } from '#src/modules/event/database/event.repository.port.ts'; +import type { EventSubscriber } from '#src/modules/user-notification/domain/user-notification.types.ts'; +import type { FastifyBaseLogger } from 'fastify'; + +export function createEventDispatcher(subscribers: Array, logger: FastifyBaseLogger) { + return { + async dispatch(event: EventRecord): Promise { + const targets = subscribers.filter((subscriber) => subscriber.handles(event.type)); + if (targets.length === 0) return; + + const results = await Promise.allSettled( + targets.map(async (subscriber) => subscriber.handleEvent(event)), + ); + const failures = results.filter( + (result): result is PromiseRejectedResult => result.status === 'rejected', + ); + + for (const failure of failures) { + logger.error({ + name: 'EventDispatcherService', + message: 'A subscriber failed to handle an event', + error: failure.reason, + }); + } + + if (failures.length > 0) { + const reasons: Array = failures.map((failure) => failure.reason as unknown); + throw new AggregateError(reasons, 'One or more subscribers failed to handle the event'); + } + }, + }; +} + +// The subscriber array is explicit rather than discovered by container enumeration - +// adding another producing module later is one line here. +export default function makeEventDispatcherService({ + userNotificationService, + logger, +}: Dependencies) { + return createEventDispatcher([userNotificationService], logger); +} diff --git a/apps/modeling-commons-backend/src/modules/event/event.mapper.spec.ts b/apps/modeling-commons-backend/src/modules/event/event.mapper.spec.ts index 7a6dab77..4128e1c2 100644 --- a/apps/modeling-commons-backend/src/modules/event/event.mapper.spec.ts +++ b/apps/modeling-commons-backend/src/modules/event/event.mapper.spec.ts @@ -14,6 +14,8 @@ function makeRecord(overrides: Partial = {}): EventRecord { payload: { draftId: 'd1' }, createdAt: new Date('2026-01-01T00:00:00.000Z'), processedAt: null, + attempts: 0, + lastError: null, ...overrides, }; } diff --git a/apps/modeling-commons-backend/src/modules/event/event.mapper.ts b/apps/modeling-commons-backend/src/modules/event/event.mapper.ts index 1c52a8b1..b85b8950 100644 --- a/apps/modeling-commons-backend/src/modules/event/event.mapper.ts +++ b/apps/modeling-commons-backend/src/modules/event/event.mapper.ts @@ -15,6 +15,8 @@ export default function eventMapper(): Mapper; + eventDispatcherService: ReturnType< + typeof import('#src/modules/event/event-dispatcher.service.ts').default + >; } } diff --git a/apps/modeling-commons-backend/src/modules/model-comment/index.ts b/apps/modeling-commons-backend/src/modules/model-comment/index.ts index 690a16ab..256686d7 100644 --- a/apps/modeling-commons-backend/src/modules/model-comment/index.ts +++ b/apps/modeling-commons-backend/src/modules/model-comment/index.ts @@ -10,6 +10,9 @@ declare global { modelCommentService: ReturnType< typeof import('#src/modules/model-comment/model-comment.service.ts').default >; + modelCommentNotifier: ReturnType< + typeof import('#src/modules/model-comment/notifications/model-comment.notifier.ts').default + >; listCommentsQuery: ReturnType< typeof import('#src/modules/model-comment/queries/list-comments.query.ts').default >; diff --git a/apps/modeling-commons-backend/src/modules/model-comment/model-comment.service.spec.ts b/apps/modeling-commons-backend/src/modules/model-comment/model-comment.service.spec.ts index 4c048234..7bdd033e 100644 --- a/apps/modeling-commons-backend/src/modules/model-comment/model-comment.service.spec.ts +++ b/apps/modeling-commons-backend/src/modules/model-comment/model-comment.service.spec.ts @@ -1,5 +1,4 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; -import env from '#src/config/env.ts'; import makeModelCommentService from '#src/modules/model-comment/model-comment.service.ts'; import modelCommentDomain from '#src/modules/model-comment/domain/model-comment.domain.ts'; import { @@ -11,8 +10,6 @@ import { ForbiddenException } from '#src/shared/exceptions/index.ts'; import { mockTransactionManager } from '#src/shared/test/mock-transaction-manager.ts'; import { mockModelCommentRepository } from '#src/modules/model-comment/database/model-comment.repository.mock.ts'; import { mockEventRepository } from '#src/modules/event/database/event.repository.mock.ts'; -import { mockModelAuthorRepository } from '#src/modules/model-author/database/model-author.repository.mock.ts'; -import { mockUserRepository } from '#src/modules/user/database/user.repository.mock.ts'; import type { ModelCommentEntity } from '#src/modules/model-comment/domain/model-comment.types.ts'; function makeComment(overrides: Partial = {}): ModelCommentEntity { @@ -33,61 +30,25 @@ function makeComment(overrides: Partial = {}): ModelCommentE }; } -// Flushes the fire-and-forget notification promise chain started inside `create`. -async function flushMicrotasks(): Promise { - await new Promise((resolve) => setImmediate(resolve)); - await new Promise((resolve) => setImmediate(resolve)); -} - describe('modelCommentService', () => { const modelCommentRepository = mockModelCommentRepository(); const eventRepository = mockEventRepository(); - const modelAuthorRepository = mockModelAuthorRepository(); - const userRepository = mockUserRepository(); - const mailService = { sendMail: vi.fn() }; - const mailDomain = { - createCommentedOnModelEmail: vi.fn(), - createRepliedToCommentEmail: vi.fn(), - }; - const getModelCardQuery = { execute: vi.fn() }; const transactionManager = mockTransactionManager(); const domain = modelCommentDomain(); - const logger = { warn: vi.fn(), error: vi.fn(), info: vi.fn() }; const service = makeModelCommentService({ transactionManager, modelCommentRepository, modelCommentDomain: domain, eventRepository, - modelAuthorRepository, - userRepository, - getModelCardQuery, - mailService, - mailDomain, - logger, } as never); beforeEach(() => { vi.clearAllMocks(); - const rendered = { from: 'a@b.com', to: 'x@y.com', subject: 'subj', html: '

', text: 'p' }; - mailDomain.createCommentedOnModelEmail.mockResolvedValue(rendered); - mailDomain.createRepliedToCommentEmail.mockResolvedValue(rendered); - getModelCardQuery.execute.mockResolvedValue({ - latestVersion: { title: 'My Model' }, - previewImageUrl: null, - authors: [], - }); - mailService.sendMail.mockResolvedValue(undefined); }); describe('create', () => { - it('writes a comment row and event, and notifies authors except the commenter', async () => { - modelAuthorRepository.findAllByModel.mockResolvedValue([ - { modelId: 'model-1', userId: 'author-1', role: 'owner' }, - { modelId: 'model-1', userId: 'commenter-1', role: 'contributor' }, - ]); - userRepository.findOneById.mockResolvedValue({ id: 'author-1', email: 'author@x.com', name: 'Author' }); - + it('writes a comment row and a model_comment.created event', async () => { const result = await service.create({ modelId: 'model-1', userId: 'commenter-1', @@ -106,19 +67,11 @@ describe('modelCommentService', () => { payload: expect.objectContaining({ parentId: null }), }), ); - - await flushMicrotasks(); - - expect(userRepository.findOneById).toHaveBeenCalledWith('author-1'); - expect(mailDomain.createCommentedOnModelEmail).toHaveBeenCalledOnce(); - expect(mailDomain.createRepliedToCommentEmail).not.toHaveBeenCalled(); - expect(mailService.sendMail).toHaveBeenCalledOnce(); }); it('drops versionNumber on a reply', async () => { const parent = makeComment({ id: 'parent-1', modelId: 'model-1' }); modelCommentRepository.findById.mockResolvedValue(parent); - modelAuthorRepository.findAllByModel.mockResolvedValue([]); await service.create({ modelId: 'model-1', @@ -133,57 +86,6 @@ describe('modelCommentService', () => { expect(insertedEntity.parentId).toBe('parent-1'); }); - it('opens a reply notification on the parent thread with the reply highlighted', async () => { - const parent = makeComment({ id: 'parent-1', modelId: 'model-1', userId: 'author-1' }); - modelCommentRepository.findById.mockResolvedValue(parent); - modelAuthorRepository.findAllByModel.mockResolvedValue([ - { modelId: 'model-1', userId: 'owner-1', role: 'owner' }, - ]); - userRepository.findOneById.mockImplementation(async (id: string) => ({ - id, - email: `${id}@x.com`, - name: id, - })); - - const { id: replyId } = await service.create({ - modelId: 'model-1', - userId: 'commenter-1', - parentId: 'parent-1', - content: 'a reply', - }); - - await flushMicrotasks(); - - const replyUrl = new URL(mailDomain.createRepliedToCommentEmail.mock.calls[0]![5]); - expect(replyUrl.pathname).toBe('/models/model-1/comments/parent-1'); - expect(replyUrl.searchParams.get('highlightedCommentId')).toBe(replyId); - expect(mailDomain.createCommentedOnModelEmail.mock.calls[0]![5]).toBe(replyUrl.toString()); - }); - - it('opens a top-level comment notification on the comment itself', async () => { - modelAuthorRepository.findAllByModel.mockResolvedValue([ - { modelId: 'model-1', userId: 'author-1', role: 'owner' }, - ]); - userRepository.findOneById.mockResolvedValue({ - id: 'author-1', - email: 'author@x.com', - name: 'Author', - }); - - const { id } = await service.create({ - modelId: 'model-1', - userId: 'commenter-1', - content: 'hello world', - }); - - await flushMicrotasks(); - - const url = new URL(mailDomain.createCommentedOnModelEmail.mock.calls[0]![5]); - expect(url.origin).toBe(new URL(env.product.website).origin); - expect(url.pathname).toBe(`/models/model-1/comments/${id}`); - expect(url.searchParams.get('highlightedCommentId')).toBe(id); - }); - it('throws ParentCommentMismatchError when the parent belongs to a different model', async () => { const parent = makeComment({ id: 'parent-1', modelId: 'other-model' }); modelCommentRepository.findById.mockResolvedValue(parent); @@ -209,22 +111,6 @@ describe('modelCommentService', () => { service.create({ modelId: 'model-1', userId: 'commenter-1', parentId: 'missing', content: 'x' }), ).rejects.toThrow(CommentNotFoundError); }); - - it('does not throw out of create when notifying recipients rejects', async () => { - modelAuthorRepository.findAllByModel.mockResolvedValue([ - { modelId: 'model-1', userId: 'author-1', role: 'owner' }, - ]); - userRepository.findOneById.mockResolvedValue({ id: 'author-1', email: 'author@x.com', name: 'Author' }); - mailService.sendMail.mockRejectedValue(new Error('smtp down')); - - await expect( - service.create({ modelId: 'model-1', userId: 'commenter-1', content: 'hello' }), - ).resolves.toEqual(expect.objectContaining({ id: expect.any(String) })); - - await flushMicrotasks(); - - expect(logger.error).toHaveBeenCalled(); - }); }); describe('updateContent', () => { diff --git a/apps/modeling-commons-backend/src/modules/model-comment/model-comment.service.ts b/apps/modeling-commons-backend/src/modules/model-comment/model-comment.service.ts index 81f88e99..5269a710 100644 --- a/apps/modeling-commons-backend/src/modules/model-comment/model-comment.service.ts +++ b/apps/modeling-commons-backend/src/modules/model-comment/model-comment.service.ts @@ -1,15 +1,8 @@ -import env from '#src/config/env.ts'; import { CommentNotFoundError } from '#src/modules/model-comment/domain/model-comment.errors.ts'; import type { CommentAuthCaller, ModelCommentEntity, } from '#src/modules/model-comment/domain/model-comment.types.ts'; -import type { EmailModel } from '@repo/emails'; - -function truncatePreview(text: string, max = 280): string { - const trimmed = text.trim(); - return trimmed.length > max ? `${trimmed.slice(0, max - 1)}…` : trimmed; -} export type CreateCommentInput = { modelId: string; @@ -43,126 +36,7 @@ export default function makeModelCommentService({ modelCommentRepository, modelCommentDomain, eventRepository, - modelAuthorRepository, - userRepository, - getModelCardQuery, - mailService, - mailDomain, - logger, }: Dependencies) { - // A real unsubscribe/preferences endpoint doesn't exist yet, so links point at - // the support inbox. - async function buildEmailModel(modelId: string): Promise { - const fallback: EmailModel = { - name: 'a model', - url: `${env.product.website}/models/${modelId}`, - }; - try { - const card = await getModelCardQuery.execute(modelId); - return { - name: card.latestVersion?.title ?? fallback.name, - url: fallback.url, - imageUrl: card.previewImageUrl ?? undefined, - authorName: card.authors[0]?.userName ?? undefined, - }; - } catch (error) { - logger.error({ - name: 'ModelCommentService', - message: 'Failed to load model card for a comment email', - error, - }); - return fallback; - } - } - - async function notifyOnNewComment(entity: ModelCommentEntity, parent?: ModelCommentEntity) { - try { - const unsubscribeUrl = `mailto:${env.product.supportEmail}`; - // A reply's own deep link opens it detached from the exchange it belongs to, - // so the thread opens one level up and the new comment is highlighted inside it. - const threadCommentId = parent?.id ?? entity.id; - const threadUrl = new URL( - `/models/${entity.modelId}/comments/${threadCommentId}`, - env.product.website, - ); - threadUrl.searchParams.set('highlightedCommentId', entity.id); - const commentUrl = threadUrl.toString(); - const preview = truncatePreview(entity.content ?? ''); - - const commenter = entity.userId ? await userRepository.findOneById(entity.userId) : null; - const commenterName = commenter?.name ?? 'Someone'; - const model = await buildEmailModel(entity.modelId); - - // A reply notifies the parent's author with "replied to your comment". Model - // authors get "commented on your model" — minus the commenter and minus the - // parent author, who already received the more specific reply email. - const parentAuthorId = - parent?.userId && parent.userId !== entity.userId ? parent.userId : null; - - const authors = await modelAuthorRepository.findAllByModel(entity.modelId); - const modelAuthorIds = new Set(authors.map((author) => author.userId)); - if (entity.userId) modelAuthorIds.delete(entity.userId); - if (parentAuthorId) modelAuthorIds.delete(parentAuthorId); - - const jobs: Array> = []; - - if (parentAuthorId) { - jobs.push( - (async () => { - const recipient = await userRepository.findOneById(parentAuthorId); - if (!recipient?.email) return; - const content = await mailDomain.createRepliedToCommentEmail( - recipient.email, - recipient.name ?? 'there', - commenterName, - model, - preview, - commentUrl, - unsubscribeUrl, - ); - await mailService.sendMail(content); - })(), - ); - } - - for (const recipientId of modelAuthorIds) { - jobs.push( - (async () => { - const recipient = await userRepository.findOneById(recipientId); - if (!recipient?.email) return; - const content = await mailDomain.createCommentedOnModelEmail( - recipient.email, - recipient.name ?? 'there', - commenterName, - model, - preview, - commentUrl, - unsubscribeUrl, - ); - await mailService.sendMail(content); - })(), - ); - } - - const results = await Promise.allSettled(jobs); - for (const result of results) { - if (result.status === 'rejected') { - logger.error({ - name: 'ModelCommentService', - message: 'Failed to notify a comment recipient', - error: result.reason, - }); - } - } - } catch (error) { - logger.error({ - name: 'ModelCommentService', - message: 'Failed to notify comment authors', - error, - }); - } - } - async function loadForModel(modelId: string, commentId: string): Promise { const comment = await modelCommentRepository.findById(commentId); if (!comment || comment.modelId !== modelId) { @@ -179,9 +53,8 @@ export default function makeModelCommentService({ versionNumber, content, }: CreateCommentInput): Promise<{ id: string }> { - let parent: ModelCommentEntity | undefined; if (parentId) { - parent = await modelCommentRepository.findById(parentId); + const parent = await modelCommentRepository.findById(parentId); if (!parent) throw new CommentNotFoundError(parentId); modelCommentDomain.assertNotDeleted(parent); modelCommentDomain.assertParentMatchesModel(parent, modelId); @@ -206,8 +79,6 @@ export default function makeModelCommentService({ }); }); - void notifyOnNewComment(entity, parent); - return { id: entity.id }; }, diff --git a/apps/modeling-commons-backend/src/modules/model-comment/notifications/model-comment.notifier.spec.ts b/apps/modeling-commons-backend/src/modules/model-comment/notifications/model-comment.notifier.spec.ts new file mode 100644 index 00000000..7e21fe8d --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/model-comment/notifications/model-comment.notifier.spec.ts @@ -0,0 +1,199 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import env from '#src/config/env.ts'; +import makeModelCommentNotifier from '#src/modules/model-comment/notifications/model-comment.notifier.ts'; +import { CommentNotFoundError } from '#src/modules/model-comment/domain/model-comment.errors.ts'; +import { mockModelCommentRepository } from '#src/modules/model-comment/database/model-comment.repository.mock.ts'; +import { mockModelAuthorRepository } from '#src/modules/model-author/database/model-author.repository.mock.ts'; +import { mockUserRepository } from '#src/modules/user/database/user.repository.mock.ts'; +import type { ModelCommentEntity } from '#src/modules/model-comment/domain/model-comment.types.ts'; +import type { EventRecord } from '#src/modules/event/database/event.repository.port.ts'; +import type { + NotificationLinks, + NotificationRecipient, +} from '#src/modules/user-notification/domain/user-notification.types.ts'; + +function makeComment(overrides: Partial = {}): ModelCommentEntity { + return { + id: 'comment-1', + legacyId: null, + parentId: null, + userId: 'commenter-1', + modelId: 'model-1', + versionNumber: null, + content: 'hello', + likesCount: 0, + createdAt: new Date('2026-01-01'), + updatedAt: new Date('2026-01-01'), + editedAt: null, + deletedAt: null, + ...overrides, + }; +} + +function makeEvent(overrides: Partial = {}): EventRecord { + return { + id: 'event-1', + type: 'model_comment.created', + actorId: 'commenter-1', + resourceType: 'model', + resourceId: 'model-1', + payload: { commentId: 'comment-1', parentId: null }, + createdAt: new Date('2026-01-01'), + processedAt: null, + attempts: 0, + lastError: null, + ...overrides, + }; +} + +const recipient: NotificationRecipient = { id: 'author-1', email: 'author@x.com', name: 'Author' }; +const links: NotificationLinks = { + unsubscribeUrl: 'mailto:support@example.test', + preferencesUrl: 'https://example.test/settings/notifications', +}; + +describe('modelCommentNotifier', () => { + const modelCommentRepository = mockModelCommentRepository(); + const modelAuthorRepository = mockModelAuthorRepository(); + const userRepository = mockUserRepository(); + const mailDomain = { + createCommentedOnModelEmail: vi.fn(), + createRepliedToCommentEmail: vi.fn(), + }; + const getModelCardQuery = { execute: vi.fn() }; + const logger = { warn: vi.fn(), error: vi.fn(), info: vi.fn() }; + + const notifier = makeModelCommentNotifier({ + modelCommentRepository, + modelAuthorRepository, + userRepository, + getModelCardQuery, + mailDomain, + logger, + } as never); + + beforeEach(() => { + vi.clearAllMocks(); + const rendered = { from: 'a@b.com', to: 'x@y.com', subject: 'subj', html: '

', text: 'p' }; + mailDomain.createCommentedOnModelEmail.mockResolvedValue(rendered); + mailDomain.createRepliedToCommentEmail.mockResolvedValue(rendered); + getModelCardQuery.execute.mockResolvedValue({ + latestVersion: { title: 'My Model' }, + previewImageUrl: null, + authors: [], + }); + userRepository.findOneById.mockResolvedValue({ id: 'commenter-1', name: 'Commenter' }); + modelCommentRepository.findById.mockResolvedValue(makeComment()); + }); + + it('declares model_comment.created as its only event type', () => { + expect(notifier.eventTypes).toEqual(['model_comment.created']); + }); + + it('throws when the event refers to a comment that no longer resolves', async () => { + modelCommentRepository.findById.mockResolvedValue(undefined); + + await expect( + notifier.resolve(makeEvent({ payload: { commentId: 'missing', parentId: null } })), + ).rejects.toThrow(CommentNotFoundError); + }); + + it('resolves an intent for every model author except the commenter', async () => { + modelAuthorRepository.findAllByModel.mockResolvedValue([ + { modelId: 'model-1', userId: 'author-1', role: 'owner' }, + { modelId: 'model-1', userId: 'commenter-1', role: 'contributor' }, + ]); + + const intents = await notifier.resolve(makeEvent()); + + expect(intents).toHaveLength(1); + expect(intents[0]!.recipientUserId).toBe('author-1'); + expect(intents[0]!.category).toBe('comment.on_your_model'); + + await intents[0]!.buildEmail(recipient, links); + expect(mailDomain.createCommentedOnModelEmail).toHaveBeenCalledOnce(); + expect(mailDomain.createRepliedToCommentEmail).not.toHaveBeenCalled(); + }); + + it('calls getModelCardQuery.execute once per event, not once per recipient', async () => { + modelAuthorRepository.findAllByModel.mockResolvedValue([ + { modelId: 'model-1', userId: 'author-1', role: 'owner' }, + { modelId: 'model-1', userId: 'author-2', role: 'contributor' }, + ]); + + await notifier.resolve(makeEvent()); + + expect(getModelCardQuery.execute).toHaveBeenCalledOnce(); + }); + + it('opens a reply notification on the parent thread with the reply highlighted', async () => { + const parent = makeComment({ id: 'parent-1', modelId: 'model-1', userId: 'author-1' }); + const reply = makeComment({ + id: 'reply-1', + modelId: 'model-1', + userId: 'commenter-1', + parentId: 'parent-1', + }); + modelCommentRepository.findById.mockImplementation(async (id: string) => { + if (id === 'reply-1') return reply; + if (id === 'parent-1') return parent; + return undefined; + }); + modelAuthorRepository.findAllByModel.mockResolvedValue([ + { modelId: 'model-1', userId: 'owner-1', role: 'owner' }, + ]); + + const intents = await notifier.resolve( + makeEvent({ payload: { commentId: 'reply-1', parentId: 'parent-1' } }), + ); + + const replyIntent = intents.find((intent) => intent.category === 'comment.reply_to_you')!; + const modelIntent = intents.find((intent) => intent.category === 'comment.on_your_model')!; + expect(replyIntent.recipientUserId).toBe('author-1'); + expect(modelIntent.recipientUserId).toBe('owner-1'); + + await replyIntent.buildEmail({ id: 'author-1', email: 'author-1@x.com', name: 'Author' }, links); + await modelIntent.buildEmail({ id: 'owner-1', email: 'owner-1@x.com', name: 'Owner' }, links); + + const replyUrl = new URL(mailDomain.createRepliedToCommentEmail.mock.calls[0]![5]); + expect(replyUrl.pathname).toBe('/models/model-1/comments/parent-1'); + expect(replyUrl.searchParams.get('highlightedCommentId')).toBe('reply-1'); + expect(mailDomain.createCommentedOnModelEmail.mock.calls[0]![5]).toBe(replyUrl.toString()); + }); + + it('opens a top-level comment notification on the comment itself', async () => { + modelCommentRepository.findById.mockResolvedValue(makeComment({ id: 'comment-1' })); + modelAuthorRepository.findAllByModel.mockResolvedValue([ + { modelId: 'model-1', userId: 'author-1', role: 'owner' }, + ]); + + const intents = await notifier.resolve(makeEvent()); + await intents[0]!.buildEmail(recipient, links); + + const url = new URL(mailDomain.createCommentedOnModelEmail.mock.calls[0]![5]); + expect(url.origin).toBe(new URL(env.product.website).origin); + expect(url.pathname).toBe('/models/model-1/comments/comment-1'); + expect(url.searchParams.get('highlightedCommentId')).toBe('comment-1'); + }); + + it('falls back to a generic model name when the model card query fails', async () => { + modelAuthorRepository.findAllByModel.mockResolvedValue([ + { modelId: 'model-1', userId: 'author-1', role: 'owner' }, + ]); + getModelCardQuery.execute.mockRejectedValue(new Error('card query down')); + + const intents = await notifier.resolve(makeEvent()); + await intents[0]!.buildEmail(recipient, links); + + expect(mailDomain.createCommentedOnModelEmail).toHaveBeenCalledWith( + recipient.email, + recipient.name, + 'Commenter', + expect.objectContaining({ name: 'a model' }), + expect.any(String), + expect.any(String), + links.unsubscribeUrl, + ); + expect(logger.error).toHaveBeenCalled(); + }); +}); diff --git a/apps/modeling-commons-backend/src/modules/model-comment/notifications/model-comment.notifier.ts b/apps/modeling-commons-backend/src/modules/model-comment/notifications/model-comment.notifier.ts new file mode 100644 index 00000000..1e313206 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/model-comment/notifications/model-comment.notifier.ts @@ -0,0 +1,125 @@ +import env from '#src/config/env.ts'; +import { CommentNotFoundError } from '#src/modules/model-comment/domain/model-comment.errors.ts'; +import type { EventRecord } from '#src/modules/event/database/event.repository.port.ts'; +import type { + NotificationIntent, + Notifier, +} from '#src/modules/user-notification/domain/user-notification.types.ts'; +import type { EmailModel } from '@repo/emails'; +import { truncatePreview } from '#src/shared/utils/formatters.ts'; + +export default function makeModelCommentNotifier({ + modelCommentRepository, + modelAuthorRepository, + userRepository, + getModelCardQuery, + mailDomain, + logger, +}: Dependencies): Notifier { + async function buildEmailModel(modelId: string): Promise { + const fallback: EmailModel = { + name: 'a model', + url: `${env.product.website}/models/${modelId}`, + }; + try { + const card = await getModelCardQuery.execute(modelId); + return { + name: card.latestVersion?.title ?? fallback.name, + url: fallback.url, + imageUrl: card.previewImageUrl ?? undefined, + authorName: card.authors[0]?.userName ?? undefined, + }; + } catch (error) { + logger.error({ + name: 'ModelCommentNotifier', + message: 'Failed to load model card for a comment email', + error, + }); + return fallback; + } + } + + return { + eventTypes: ['model_comment.created'], + + async resolve(event: EventRecord): Promise> { + const commentId = event.payload['commentId'] as string; + const entity = await modelCommentRepository.findById(commentId); + if (!entity) throw new CommentNotFoundError(commentId); + + const parent = entity.parentId + ? await modelCommentRepository.findById(entity.parentId) + : undefined; + + // A reply's own deep link opens it detached from the exchange it belongs to, + // so the thread opens one level up and the new comment is highlighted inside it. + const threadCommentId = parent?.id ?? entity.id; + const threadUrl = new URL( + `/models/${entity.modelId}/comments/${threadCommentId}`, + env.product.website, + ); + threadUrl.searchParams.set('highlightedCommentId', entity.id); + const commentUrl = threadUrl.toString(); + const preview = truncatePreview(entity.content ?? ''); + + const commenter = entity.userId ? await userRepository.findOneById(entity.userId) : null; + const commenterName = commenter?.name ?? 'Someone'; + const model = await buildEmailModel(entity.modelId); + + // A reply notifies the parent's author with "replied to your comment". Model + // authors get "commented on your model" - minus the commenter and minus the + // parent author, who already received the more specific reply email. + const parentAuthorId = + parent?.userId && parent.userId !== entity.userId ? parent.userId : null; + + const authors = await modelAuthorRepository.findAllByModel(entity.modelId); + const modelAuthorIds = new Set(authors.map((author) => author.userId)); + if (entity.userId) modelAuthorIds.delete(entity.userId); + if (parentAuthorId) modelAuthorIds.delete(parentAuthorId); + + const intents: Array = []; + + if (parentAuthorId) { + intents.push({ + recipientUserId: parentAuthorId, + category: 'comment.reply_to_you', + title: `${commenterName} replied to your comment`, + body: preview, + url: commentUrl, + buildEmail: async (recipient, links) => + mailDomain.createRepliedToCommentEmail( + recipient.email, + recipient.name ?? 'there', + commenterName, + model, + preview, + commentUrl, + links.unsubscribeUrl, + ), + }); + } + + for (const recipientId of modelAuthorIds) { + intents.push({ + recipientUserId: recipientId, + category: 'comment.on_your_model', + title: `${commenterName} commented on your model`, + body: preview, + url: commentUrl, + buildEmail: async (recipient, links) => + mailDomain.createCommentedOnModelEmail( + recipient.email, + recipient.name ?? 'there', + commenterName, + model, + preview, + commentUrl, + links.unsubscribeUrl, + ), + }); + } + + return intents; + }, + }; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.record.ts b/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.record.ts new file mode 100644 index 00000000..e4379f38 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.record.ts @@ -0,0 +1,3 @@ +import type { UserNotificationPreference } from '#prisma/index'; + +export type NotificationPreferenceRecord = UserNotificationPreference; diff --git a/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.repository.mock.ts b/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.repository.mock.ts new file mode 100644 index 00000000..47eefa6c --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.repository.mock.ts @@ -0,0 +1,11 @@ +import { vi } from 'vitest'; +import type { NotificationPreferenceRepositoryPort } from '#src/modules/user-notification/database/notification-preference.repository.port.ts'; + +export function mockNotificationPreferenceRepository(): { + [K in keyof NotificationPreferenceRepositoryPort]: ReturnType; +} { + return { + findAllByUser: vi.fn(), + upsertTx: vi.fn(), + }; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.repository.port.ts b/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.repository.port.ts new file mode 100644 index 00000000..3ee04373 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.repository.port.ts @@ -0,0 +1,14 @@ +import type { NotificationPreferenceRecord } from '#src/modules/user-notification/database/notification-preference.record.ts'; +import type { TransactionContext } from '#src/shared/db/transaction.port.ts'; + +export type UpsertNotificationPreferenceParams = { + userId: string; + category: string; + email: boolean; + inApp: boolean; +}; + +export interface NotificationPreferenceRepositoryPort { + findAllByUser: (userId: string) => Promise>; + upsertTx: (ctx: TransactionContext, params: UpsertNotificationPreferenceParams) => Promise; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.repository.ts b/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.repository.ts new file mode 100644 index 00000000..caeca245 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/database/notification-preference.repository.ts @@ -0,0 +1,29 @@ +import type { NotificationPreferenceRecord } from '#src/modules/user-notification/database/notification-preference.record.ts'; +import type { + NotificationPreferenceRepositoryPort, + UpsertNotificationPreferenceParams, +} from '#src/modules/user-notification/database/notification-preference.repository.port.ts'; +import { resolveTransaction } from '#src/shared/db/prisma-transaction.manager.ts'; +import type { TransactionContext } from '#src/shared/db/transaction.port.ts'; + +export default function notificationPreferenceRepository({ + db, +}: Dependencies): NotificationPreferenceRepositoryPort { + return { + async findAllByUser(userId: string): Promise> { + return db.userNotificationPreference.findMany({ where: { userId } }); + }, + + async upsertTx( + ctx: TransactionContext, + params: UpsertNotificationPreferenceParams, + ): Promise { + const client = resolveTransaction(ctx); + await client.userNotificationPreference.upsert({ + where: { userId_category: { userId: params.userId, category: params.category } }, + create: params, + update: { email: params.email, inApp: params.inApp }, + }); + }, + }; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.record.ts b/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.record.ts new file mode 100644 index 00000000..8592d440 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.record.ts @@ -0,0 +1,3 @@ +import type { UserNotification } from '#prisma/index'; + +export type UserNotificationRecord = UserNotification; diff --git a/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.repository.mock.ts b/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.repository.mock.ts new file mode 100644 index 00000000..c5c53819 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.repository.mock.ts @@ -0,0 +1,15 @@ +import { vi } from 'vitest'; +import type { UserNotificationRepositoryPort } from '#src/modules/user-notification/database/user-notification.repository.port.ts'; + +export function mockUserNotificationRepository(): { + [K in keyof UserNotificationRepositoryPort]: ReturnType; +} { + return { + insertTx: vi.fn(), + markEmailSent: vi.fn(), + markRead: vi.fn(), + findOneById: vi.fn(), + findAllByRecipient: vi.fn(), + countUnread: vi.fn(), + }; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.repository.port.ts b/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.repository.port.ts new file mode 100644 index 00000000..b0799175 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.repository.port.ts @@ -0,0 +1,32 @@ +import type { UserNotificationRecord } from '#src/modules/user-notification/database/user-notification.record.ts'; +import type { + NotificationCategory, + NotificationFeedFilters, +} from '#src/modules/user-notification/domain/user-notification.types.ts'; +import type { Paginated, PaginatedQueryParams } from '#src/shared/db/repository.port.ts'; +import type { TransactionContext } from '#src/shared/db/transaction.port.ts'; + +export type InsertUserNotificationParams = { + recipientId: string; + eventId: string; + category: string; + title: string; + body: string; + url: string; +}; + +export interface UserNotificationRepositoryPort { + insertTx: ( + ctx: TransactionContext, + params: InsertUserNotificationParams, + ) => Promise; + markEmailSent: (id: string, at: Date) => Promise; + markRead: (id: string, at: Date) => Promise; + findOneById: (id: string) => Promise; + findAllByRecipient: ( + recipientId: string, + filters: NotificationFeedFilters, + params: PaginatedQueryParams, + ) => Promise>; + countUnread: (recipientId: string, categories: Array) => Promise; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.repository.ts b/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.repository.ts new file mode 100644 index 00000000..b1944ab6 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/database/user-notification.repository.ts @@ -0,0 +1,98 @@ +import { Prisma } from '#prisma/index'; +import type { UserNotificationRecord } from '#src/modules/user-notification/database/user-notification.record.ts'; +import type { + InsertUserNotificationParams, + UserNotificationRepositoryPort, +} from '#src/modules/user-notification/database/user-notification.repository.port.ts'; +import type { + NotificationCategory, + NotificationFeedFilters, +} from '#src/modules/user-notification/domain/user-notification.types.ts'; +import { resolveTransaction } from '#src/shared/db/prisma-transaction.manager.ts'; +import type { PaginatedQueryParams, Paginated } from '#src/shared/db/repository.port.ts'; +import type { TransactionContext } from '#src/shared/db/transaction.port.ts'; + +function feedWhere( + recipientId: string, + filters: NotificationFeedFilters, +): Prisma.UserNotificationWhereInput { + return { + recipientId, + category: { in: filters.categories }, + ...(filters.since ? { createdAt: { gte: filters.since } } : {}), + ...(filters.unreadOnly ? { readAt: null } : {}), + }; +} + +export default function userNotificationRepository({ + db, +}: Dependencies): UserNotificationRepositoryPort { + return { + // Swallowing P2002 leaves the surrounding transaction aborted in Postgres, so this must + // stay the last write of its transaction - any statement after it would fail on a + // connection that can only roll back. + async insertTx( + ctx: TransactionContext, + params: InsertUserNotificationParams, + ): Promise { + const client = resolveTransaction(ctx); + try { + return await client.userNotification.create({ data: params }); + } catch (error) { + if (error instanceof Prisma.PrismaClientKnownRequestError && error.code === 'P2002') { + return undefined; + } + throw error; + } + }, + + async markEmailSent(id: string, at: Date): Promise { + await db.userNotification.update({ + where: { id }, + data: { emailSentAt: at }, + }); + }, + + async markRead(id: string, at: Date): Promise { + await db.userNotification.update({ + where: { id }, + data: { readAt: at }, + }); + }, + + async findOneById(id: string): Promise { + return (await db.userNotification.findUnique({ where: { id } })) ?? undefined; + }, + + async findAllByRecipient( + recipientId: string, + filters: NotificationFeedFilters, + params: PaginatedQueryParams, + ): Promise> { + const where = feedWhere(recipientId, filters); + + const [records, count] = await Promise.all([ + db.userNotification.findMany({ + where, + orderBy: params.orderBy + ? { [params.orderBy.field]: params.orderBy.param } + : { createdAt: 'desc' }, + skip: params.offset, + take: params.limit, + }), + db.userNotification.count({ where }), + ]); + + return { count, limit: params.limit, page: params.page, data: records }; + }, + + async countUnread( + recipientId: string, + categories: Array, + ): Promise { + return db.userNotification.count({ + where: feedWhere(recipientId, { categories, unreadOnly: true }), + }); + }, + }; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.domain.spec.ts b/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.domain.spec.ts new file mode 100644 index 00000000..a29aef4b --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.domain.spec.ts @@ -0,0 +1,279 @@ +import { describe, it, expect } from 'vitest'; +import userNotificationDomain from '#src/modules/user-notification/domain/user-notification.domain.ts'; +import { + NotificationAlreadyDeliveredError, + NotificationNotFoundError, + NotificationSuppressedError, + RecipientBannedError, + RecipientDeletedError, + RecipientEmailDisabledError, + RecipientEmailNotFoundError, + RecipientNotFoundError, +} from '#src/modules/user-notification/domain/user-notification.errors.ts'; +import type { UserEntity } from '#src/modules/user/domain/user.types.ts'; + +const domain = userNotificationDomain(); + +function makeUser(overrides: Partial = {}): UserEntity { + return { + id: 'user-1', + name: 'Test User', + email: 'test@example.com', + emailVerified: true, + image: null, + systemRole: 'user', + userKind: 'researcher', + isProfilePublic: true, + onboardedAt: null, + createdAt: new Date(), + updatedAt: new Date(), + deletedAt: null, + banned: null, + banReason: null, + banExpires: null, + bio: null, + country: null, + socialLinks: null, + dob: null, + affiliation: null, + role: null, + legacyId: null, + ...overrides, + }; +} + +describe('userNotificationDomain', () => { + describe('categories', () => { + it('exposes exactly the three known categories', () => { + const names = domain.categories.map((c) => c.category).sort(); + expect(names).toEqual( + ['comment.on_your_model', 'comment.reply_to_you', 'general.daily_digest'].sort(), + ); + }); + + it('gives every category a label and a description', () => { + for (const info of domain.categories) { + expect(info.label.length).toBeGreaterThan(0); + expect(info.description.length).toBeGreaterThan(0); + } + }); + }); + + describe('isKnownCategory', () => { + it('accepts every catalog category', () => { + for (const info of domain.categories) { + expect(domain.isKnownCategory(info.category)).toBe(true); + } + }); + + it('rejects an unknown category', () => { + expect(domain.isKnownCategory('comment.mentions_you')).toBe(false); + expect(domain.isKnownCategory('')).toBe(false); + }); + }); + + describe('resolvePreference', () => { + it.each(domain.categories.map((info) => [info.category, info.defaults] as const))( + 'falls back to the catalog defaults for %s when there is no override', + (category, defaults) => { + expect(domain.resolvePreference(category)).toEqual(defaults); + expect(domain.resolvePreference(category, null)).toEqual(defaults); + }, + ); + + it('applies an override for both channels', () => { + const { category, defaults } = domain.categories[0]!; + const opposite = { email: !defaults.email, inApp: !defaults.inApp }; + expect(domain.resolvePreference(category, opposite)).toEqual(opposite); + }); + + it('merges a partial override, keeping the default for the omitted channel', () => { + const { category, defaults } = domain.categories[0]!; + expect(domain.resolvePreference(category, { email: !defaults.email })).toEqual({ + email: !defaults.email, + inApp: defaults.inApp, + }); + expect(domain.resolvePreference(category, { inApp: !defaults.inApp })).toEqual({ + email: defaults.email, + inApp: !defaults.inApp, + }); + }); + }); + + describe('assertRecipientEligible', () => { + it('returns the recipient with a narrowed, non-null email when eligible', () => { + const user = makeUser({ id: 'recipient-1', email: 'recipient@example.com' }); + expect(domain.assertRecipientEligible(user, 'recipient-1')).toEqual(user); + }); + + it('throws RecipientNotFoundError when the recipient does not exist', () => { + expect(() => domain.assertRecipientEligible(undefined, 'missing-1')).toThrow( + RecipientNotFoundError, + ); + }); + + it('throws RecipientDeletedError for a soft-deleted recipient', () => { + const user = makeUser({ deletedAt: new Date('2026-01-01') }); + expect(() => domain.assertRecipientEligible(user, user.id)).toThrow(RecipientDeletedError); + }); + + it('throws RecipientBannedError for a banned recipient', () => { + const user = makeUser({ banned: true }); + expect(() => domain.assertRecipientEligible(user, user.id)).toThrow(RecipientBannedError); + }); + + it('throws RecipientEmailNotFoundError when the recipient has no email', () => { + const user = makeUser({ email: null }); + expect(() => domain.assertRecipientEligible(user, user.id)).toThrow( + RecipientEmailNotFoundError, + ); + }); + }); + + describe('assertChannelsEnabled', () => { + it('throws NotificationSuppressedError when both channels are off', () => { + expect(() => + domain.assertChannelsEnabled( + { email: false, inApp: false }, + 'recipient-1', + 'comment.on_your_model', + ), + ).toThrow(NotificationSuppressedError); + }); + + it('does not throw when at least one channel is on', () => { + expect(() => + domain.assertChannelsEnabled( + { email: true, inApp: false }, + 'recipient-1', + 'comment.on_your_model', + ), + ).not.toThrow(); + expect(() => + domain.assertChannelsEnabled( + { email: false, inApp: true }, + 'recipient-1', + 'comment.on_your_model', + ), + ).not.toThrow(); + }); + }); + + describe('assertEmailDeliverable', () => { + it('returns the notification id when email is enabled and the ledger row was newly inserted', () => { + expect( + domain.assertEmailDeliverable( + 'notification-1', + { email: true, inApp: true }, + 'event-1', + 'recipient-1', + 'comment.on_your_model', + ), + ).toBe('notification-1'); + }); + + it('throws NotificationAlreadyDeliveredError when the ledger row already existed', () => { + expect(() => + domain.assertEmailDeliverable( + undefined, + { email: true, inApp: true }, + 'event-1', + 'recipient-1', + 'comment.on_your_model', + ), + ).toThrow(NotificationAlreadyDeliveredError); + }); + + it('throws RecipientEmailDisabledError when the email channel is off', () => { + expect(() => + domain.assertEmailDeliverable( + 'notification-1', + { email: false, inApp: true }, + 'event-1', + 'recipient-1', + 'comment.on_your_model', + ), + ).toThrow(RecipientEmailDisabledError); + }); + }); + + describe('isSkippableDeliveryError', () => { + it.each([ + new RecipientNotFoundError('recipient-1'), + new RecipientDeletedError('recipient-1'), + new RecipientBannedError('recipient-1'), + new RecipientEmailNotFoundError('recipient-1'), + new NotificationSuppressedError('recipient-1', 'comment.on_your_model'), + new RecipientEmailDisabledError('recipient-1', 'comment.on_your_model'), + new NotificationAlreadyDeliveredError('event-1', 'recipient-1'), + ])('treats %s as a skippable delivery error', (error) => { + expect(domain.isSkippableDeliveryError(error)).toBe(true); + }); + + it('does not treat an unrelated error as skippable', () => { + expect(domain.isSkippableDeliveryError(new Error('SMTP unreachable'))).toBe(false); + }); + }); +}); + +describe('userNotificationDomain feed helpers', () => { + describe('inAppEnabledCategories', () => { + it('falls back to the catalog defaults when the user has no overrides', () => { + expect(domain.inAppEnabledCategories([])).toEqual( + domain.categories.filter((info) => info.defaults.inApp).map((info) => info.category), + ); + }); + + it('drops a category the user muted in-app', () => { + const result = domain.inAppEnabledCategories([ + { category: 'comment.on_your_model', inApp: false }, + ]); + + expect(result).not.toContain('comment.on_your_model'); + }); + + it('adds a category the user opted into against a default of off', () => { + const result = domain.inAppEnabledCategories([ + { category: 'general.daily_digest', inApp: true }, + ]); + + expect(result).toContain('general.daily_digest'); + }); + + it('ignores an override that only touches the email channel', () => { + const result = domain.inAppEnabledCategories([ + { category: 'comment.on_your_model', email: false }, + ]); + + expect(result).toContain('comment.on_your_model'); + }); + }); + + describe('assertOwnedByRecipient', () => { + it('accepts a notification addressed to the caller', () => { + expect(() => + domain.assertOwnedByRecipient( + { id: 'notification-1', recipientId: 'user-1' }, + 'notification-1', + 'user-1', + ), + ).not.toThrow(); + }); + + it('rejects a missing notification', () => { + expect(() => + domain.assertOwnedByRecipient(undefined, 'notification-1', 'user-1'), + ).toThrow(NotificationNotFoundError); + }); + + it('rejects a notification addressed to someone else', () => { + expect(() => + domain.assertOwnedByRecipient( + { id: 'notification-1', recipientId: 'other-user' }, + 'notification-1', + 'user-1', + ), + ).toThrow(NotificationNotFoundError); + }); + }); +}); diff --git a/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.domain.ts b/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.domain.ts new file mode 100644 index 00000000..85cba6b0 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.domain.ts @@ -0,0 +1,134 @@ +import type { UserEntity } from '#src/modules/user/domain/user.types.ts'; +import { + NotificationAlreadyDeliveredError, + NotificationNotFoundError, + NotificationSuppressedError, + RecipientBannedError, + RecipientDeletedError, + RecipientEmailDisabledError, + RecipientEmailNotFoundError, + RecipientNotFoundError, +} from '#src/modules/user-notification/domain/user-notification.errors.ts'; +import type { + NotificationCategory, + NotificationCategoryInfo, + NotificationChannels, +} from '#src/modules/user-notification/domain/user-notification.types.ts'; + +export type EligibleRecipient = UserEntity & { email: string }; + +const SKIPPABLE_DELIVERY_ERRORS = [ + RecipientNotFoundError, + RecipientDeletedError, + RecipientBannedError, + RecipientEmailNotFoundError, + NotificationSuppressedError, + RecipientEmailDisabledError, + NotificationAlreadyDeliveredError, +] as const; + +const catalog = { + 'comment.on_your_model': { + label: 'Comments on your models', + description: 'When someone comments on a model you author.', + defaults: { email: true, inApp: true }, + }, + 'comment.reply_to_you': { + label: 'Replies to your comments', + description: 'When someone replies directly to a comment you wrote.', + defaults: { email: true, inApp: true }, + }, + 'general.daily_digest': { + label: 'Daily digest', + description: 'A daily summary of activity relevant to you.', + defaults: { email: true, inApp: false }, + }, +} as const satisfies Record>; + +const categories: Array = ( + Object.keys(catalog) as Array +).map((category) => ({ category, ...catalog[category] })); + +function resolveChannels( + category: NotificationCategory, + override?: Partial | null, +): NotificationChannels { + const defaults = catalog[category].defaults; + return { + email: override?.email ?? defaults.email, + inApp: override?.inApp ?? defaults.inApp, + }; +} + +export default function userNotificationDomain() { + return { + categories, + + isKnownCategory(value: string): value is NotificationCategory { + return value in catalog; + }, + + resolvePreference: resolveChannels, + + inAppEnabledCategories( + overrides: ReadonlyArray & { category: string }>, + ): Array { + const overrideByCategory = new Map( + overrides.map((override) => [override.category, override] as const), + ); + return categories + .filter( + (info) => resolveChannels(info.category, overrideByCategory.get(info.category)).inApp, + ) + .map((info) => info.category); + }, + + assertOwnedByRecipient( + notification: { id: string; recipientId: string } | undefined, + notificationId: string, + recipientId: string, + ): void { + if (notification?.recipientId !== recipientId) { + throw new NotificationNotFoundError(notificationId); + } + }, + + assertRecipientEligible( + recipient: UserEntity | undefined, + recipientId: string, + ): EligibleRecipient { + if (!recipient) throw new RecipientNotFoundError(recipientId); + if (recipient.deletedAt) throw new RecipientDeletedError(recipientId); + if (recipient.banned) throw new RecipientBannedError(recipientId); + if (!recipient.email) throw new RecipientEmailNotFoundError(recipientId); + return { ...recipient, email: recipient.email }; + }, + + assertChannelsEnabled( + resolved: NotificationChannels, + recipientId: string, + category: NotificationCategory, + ): void { + if (!resolved.email && !resolved.inApp) { + throw new NotificationSuppressedError(recipientId, category); + } + }, + + assertEmailDeliverable( + insertedNotificationId: string | undefined, + resolved: NotificationChannels, + eventId: string, + recipientId: string, + category: NotificationCategory, + ): string { + if (!insertedNotificationId) + throw new NotificationAlreadyDeliveredError(eventId, recipientId); + if (!resolved.email) throw new RecipientEmailDisabledError(recipientId, category); + return insertedNotificationId; + }, + + isSkippableDeliveryError(error: unknown): boolean { + return SKIPPABLE_DELIVERY_ERRORS.some((ErrorClass) => error instanceof ErrorClass); + }, + }; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.errors.ts b/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.errors.ts new file mode 100644 index 00000000..83542000 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.errors.ts @@ -0,0 +1,60 @@ +import { + ArgumentInvalidException, + ConflictException, + ForbiddenException, + NotFoundException, +} from '#src/shared/exceptions/index.ts'; + +export class UnknownCategoryError extends ArgumentInvalidException { + constructor(category: string) { + super(`Unknown notification category: ${category}`); + } +} + +export class NotificationNotFoundError extends NotFoundException { + constructor(notificationId: string) { + super(`Notification ${notificationId} not found`); + } +} + +export class RecipientNotFoundError extends NotFoundException { + constructor(recipientId: string) { + super(`Recipient ${recipientId} not found`); + } +} + +export class RecipientDeletedError extends ConflictException { + constructor(recipientId: string) { + super(`Recipient ${recipientId} is deleted`); + } +} + +export class RecipientBannedError extends ForbiddenException { + constructor(recipientId: string) { + super(`Recipient ${recipientId} is banned`); + } +} + +export class RecipientEmailNotFoundError extends NotFoundException { + constructor(recipientId: string) { + super(`Recipient ${recipientId} has no email address`); + } +} + +export class NotificationSuppressedError extends ConflictException { + constructor(recipientId: string, category: string) { + super(`Recipient ${recipientId} has every channel disabled for category ${category}`); + } +} + +export class RecipientEmailDisabledError extends ConflictException { + constructor(recipientId: string, category: string) { + super(`Recipient ${recipientId} has disabled email delivery for category ${category}`); + } +} + +export class NotificationAlreadyDeliveredError extends ConflictException { + constructor(eventId: string, recipientId: string) { + super(`Event ${eventId} was already delivered to recipient ${recipientId}`); + } +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.types.ts b/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.types.ts new file mode 100644 index 00000000..8d8803e8 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/domain/user-notification.types.ts @@ -0,0 +1,51 @@ +import type { EventRecord } from '#src/modules/event/database/event.repository.port.ts'; +import type Mail from 'nodemailer/lib/mailer/index.js'; + +export const NOTIFICATION_CATEGORIES = [ + 'comment.on_your_model', + 'comment.reply_to_you', + 'general.daily_digest', +] as const; + +export type NotificationCategory = (typeof NOTIFICATION_CATEGORIES)[number]; + +export type NotificationChannels = { + email: boolean; + inApp: boolean; +}; + +export type NotificationCategoryInfo = { + category: NotificationCategory; + label: string; + description: string; + defaults: NotificationChannels; +}; + +export type NotificationFeedFilters = { + categories: Array; + since?: Date; + unreadOnly?: boolean; +}; + +export type NotificationRecipient = { id: string; email: string; name: string | null }; + +export type NotificationLinks = { unsubscribeUrl: string; preferencesUrl: string }; + +export type NotificationIntent = { + recipientUserId: string; + category: NotificationCategory; + title: string; + body: string; + url: string; + buildEmail: (recipient: NotificationRecipient, links: NotificationLinks) => Promise; +}; + +export type Notifier = { + eventTypes: ReadonlyArray; + resolve: (event: EventRecord) => Promise>; +}; + +export type EventSubscriber = { + handles: (eventType: string) => boolean; + handleEvent: (event: EventRecord) => Promise; +}; diff --git a/apps/modeling-commons-backend/src/modules/user-notification/dtos/notification-preference.response.dto.ts b/apps/modeling-commons-backend/src/modules/user-notification/dtos/notification-preference.response.dto.ts new file mode 100644 index 00000000..71188d00 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/dtos/notification-preference.response.dto.ts @@ -0,0 +1,19 @@ +import { Type, type Static } from 'typebox'; + +export const categoryPreferenceDtoSchema = Type.Object({ + category: Type.String(), + label: Type.String(), + description: Type.String(), + email: Type.Boolean(), + inApp: Type.Boolean(), +}); + +export type CategoryPreferenceDto = Static; + +export const notificationPreferenceResponseDtoSchema = Type.Object({ + categories: Type.Array(categoryPreferenceDtoSchema), +}); + +export type NotificationPreferenceResponseDto = Static< + typeof notificationPreferenceResponseDtoSchema +>; diff --git a/apps/modeling-commons-backend/src/modules/user-notification/dtos/update-notification-preferences.request.dto.ts b/apps/modeling-commons-backend/src/modules/user-notification/dtos/update-notification-preferences.request.dto.ts new file mode 100644 index 00000000..5b2f2a47 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/dtos/update-notification-preferences.request.dto.ts @@ -0,0 +1,16 @@ +import { Type, type Static } from 'typebox'; + +export const updateNotificationPreferencesRequestDtoSchema = Type.Object({ + preferences: Type.Array( + Type.Object({ + category: Type.String(), + email: Type.Optional(Type.Boolean()), + inApp: Type.Optional(Type.Boolean()), + }), + { minItems: 1 }, + ), +}); + +export type UpdateNotificationPreferencesRequestDto = Static< + typeof updateNotificationPreferencesRequestDtoSchema +>; diff --git a/apps/modeling-commons-backend/src/modules/user-notification/dtos/user-notification.paginated.response.dto.ts b/apps/modeling-commons-backend/src/modules/user-notification/dtos/user-notification.paginated.response.dto.ts new file mode 100644 index 00000000..e3cba25e --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/dtos/user-notification.paginated.response.dto.ts @@ -0,0 +1,18 @@ +import { Type, type Static } from 'typebox'; + +import { userNotificationResponseDtoSchema } from '#src/modules/user-notification/dtos/user-notification.response.dto.ts'; +import { paginatedResponseBaseSchema } from '#src/shared/api/paginated.response.base.ts'; + +export const userNotificationPaginatedResponseSchema = Type.Intersect([ + paginatedResponseBaseSchema, + Type.Object({ + data: Type.Array(userNotificationResponseDtoSchema), + unreadCount: Type.Number({ + description: 'Unread notifications across every in-app category, ignoring the page filters', + }), + }), +]); + +export type UserNotificationPaginatedResponse = Static< + typeof userNotificationPaginatedResponseSchema +>; diff --git a/apps/modeling-commons-backend/src/modules/user-notification/dtos/user-notification.response.dto.ts b/apps/modeling-commons-backend/src/modules/user-notification/dtos/user-notification.response.dto.ts new file mode 100644 index 00000000..59b7178d --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/dtos/user-notification.response.dto.ts @@ -0,0 +1,15 @@ +import { Type, type Static } from 'typebox'; + +import { NOTIFICATION_CATEGORIES } from '#src/modules/user-notification/domain/user-notification.types.ts'; + +export const userNotificationResponseDtoSchema = Type.Object({ + id: Type.String({ format: 'uuid' }), + category: Type.Enum(NOTIFICATION_CATEGORIES), + title: Type.String(), + body: Type.String(), + url: Type.String({ format: 'uri' }), + createdAt: Type.String({ format: 'date-time' }), + readAt: Type.Union([Type.String({ format: 'date-time' }), Type.Null()]), +}); + +export type UserNotificationResponseDto = Static; diff --git a/apps/modeling-commons-backend/src/modules/user-notification/dtos/user-notifications.request.dto.ts b/apps/modeling-commons-backend/src/modules/user-notification/dtos/user-notifications.request.dto.ts new file mode 100644 index 00000000..4d5bff02 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/dtos/user-notifications.request.dto.ts @@ -0,0 +1,21 @@ +import { Type, type Static } from 'typebox'; + +import { paginatedQueryRequestDtoSchema } from '#src/shared/api/paginated-query.request.dto.ts'; + +export const listUserNotificationsQueryDtoSchema = Type.Intersect([ + paginatedQueryRequestDtoSchema, + Type.Object({ + since: Type.Optional( + Type.String({ + format: 'date-time', + description: 'Only return notifications created at or after this instant', + examples: ['2026-07-28T12:00:00.000Z'], + }), + ), + unreadOnly: Type.Optional( + Type.Boolean({ description: 'Only return notifications that have not been read yet' }), + ), + }), +]); + +export type ListUserNotificationsQueryDto = Static; diff --git a/apps/modeling-commons-backend/src/modules/user-notification/index.ts b/apps/modeling-commons-backend/src/modules/user-notification/index.ts new file mode 100644 index 00000000..5bb20e10 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/index.ts @@ -0,0 +1,22 @@ +import type { NotificationPreferenceRepositoryPort } from '#src/modules/user-notification/database/notification-preference.repository.port.ts'; +import type { UserNotificationRepositoryPort } from '#src/modules/user-notification/database/user-notification.repository.port.ts'; +import type userNotificationDomain from '#src/modules/user-notification/domain/user-notification.domain.ts'; +import type { UserNotificationMapper } from '#src/modules/user-notification/user-notification.mapper.ts'; + +declare global { + export interface Dependencies { + userNotificationRepository: UserNotificationRepositoryPort; + notificationPreferenceRepository: NotificationPreferenceRepositoryPort; + userNotificationDomain: ReturnType; + userNotificationMapper: UserNotificationMapper; + getNotificationPreferencesQuery: ReturnType< + typeof import('#src/modules/user-notification/queries/get-notification-preferences.query.ts').default + >; + listUserNotificationsQuery: ReturnType< + typeof import('#src/modules/user-notification/queries/list-user-notifications.query.ts').default + >; + userNotificationService: ReturnType< + typeof import('#src/modules/user-notification/user-notification.service.ts').default + >; + } +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/queries/get-notification-preferences.query.ts b/apps/modeling-commons-backend/src/modules/user-notification/queries/get-notification-preferences.query.ts new file mode 100644 index 00000000..c2f6d60b --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/queries/get-notification-preferences.query.ts @@ -0,0 +1,28 @@ +import type { NotificationPreferenceResponseDto } from '#src/modules/user-notification/dtos/notification-preference.response.dto.ts'; + +export default function makeGetNotificationPreferencesQuery({ + notificationPreferenceRepository, + userNotificationDomain, + userNotificationMapper, +}: Dependencies) { + return { + async execute(userId: string): Promise { + const overrides = await notificationPreferenceRepository.findAllByUser(userId); + const overrideByCategory = new Map( + overrides + .filter((override) => userNotificationDomain.isKnownCategory(override.category)) + .map((override) => [override.category, override]), + ); + + const categories = userNotificationDomain.categories.map((info) => { + const resolved = userNotificationDomain.resolvePreference( + info.category, + overrideByCategory.get(info.category), + ); + return userNotificationMapper.toCategoryPreference(info, resolved); + }); + + return { categories }; + }, + }; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/queries/list-user-notifications.query.spec.ts b/apps/modeling-commons-backend/src/modules/user-notification/queries/list-user-notifications.query.spec.ts new file mode 100644 index 00000000..42f15876 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/queries/list-user-notifications.query.spec.ts @@ -0,0 +1,143 @@ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import makeListUserNotificationsQuery from '#src/modules/user-notification/queries/list-user-notifications.query.ts'; +import userNotificationDomain from '#src/modules/user-notification/domain/user-notification.domain.ts'; +import userNotificationMapper from '#src/modules/user-notification/user-notification.mapper.ts'; +import { mockNotificationPreferenceRepository } from '#src/modules/user-notification/database/notification-preference.repository.mock.ts'; +import { mockUserNotificationRepository } from '#src/modules/user-notification/database/user-notification.repository.mock.ts'; +import type { NotificationPreferenceRecord } from '#src/modules/user-notification/database/notification-preference.record.ts'; +import type { UserNotificationRecord } from '#src/modules/user-notification/database/user-notification.record.ts'; + +function makePreference( + overrides: Partial = {}, +): NotificationPreferenceRecord { + return { + id: 'pref-1', + userId: 'user-1', + category: 'comment.on_your_model', + email: true, + inApp: true, + updatedAt: new Date('2026-01-01'), + ...overrides, + }; +} + +function makeNotification(overrides: Partial = {}): UserNotificationRecord { + return { + id: 'notification-1', + recipientId: 'user-1', + eventId: 'event-1', + category: 'comment.on_your_model', + title: 'New comment', + body: 'Someone commented on your model', + url: 'https://example.test/models/model-1', + emailSentAt: null, + readAt: null, + createdAt: new Date('2026-01-01T00:00:00.000Z'), + ...overrides, + } as UserNotificationRecord; +} + +describe('listUserNotificationsQuery', () => { + const notificationPreferenceRepository = mockNotificationPreferenceRepository(); + const userNotificationRepository = mockUserNotificationRepository(); + const domain = userNotificationDomain(); + + const query = makeListUserNotificationsQuery({ + userNotificationRepository, + notificationPreferenceRepository, + userNotificationDomain: domain, + userNotificationMapper: userNotificationMapper(), + } as never); + + beforeEach(() => { + vi.clearAllMocks(); + notificationPreferenceRepository.findAllByUser.mockResolvedValue([]); + userNotificationRepository.findAllByRecipient.mockResolvedValue({ + count: 1, + limit: 20, + page: 0, + data: [makeNotification()], + }); + userNotificationRepository.countUnread.mockResolvedValue(3); + }); + + it('serialises a record into the response shape', async () => { + const result = await query.execute('user-1', {}); + + expect(result).toEqual({ + count: 1, + limit: 20, + page: 0, + unreadCount: 3, + data: [ + { + id: 'notification-1', + category: 'comment.on_your_model', + title: 'New comment', + body: 'Someone commented on your model', + url: 'https://example.test/models/model-1', + createdAt: '2026-01-01T00:00:00.000Z', + readAt: null, + }, + ], + }); + }); + + it('restricts the feed to the categories whose inApp channel is on', async () => { + const result = await query.execute('user-1', {}); + + const [, filters] = userNotificationRepository.findAllByRecipient.mock.calls[0]!; + expect(filters.categories).toEqual( + domain.categories.filter((info) => info.defaults.inApp).map((info) => info.category), + ); + expect(result.count).toBe(1); + }); + + it('honours an inApp override over the catalog default', async () => { + notificationPreferenceRepository.findAllByUser.mockResolvedValue([ + makePreference({ category: 'comment.on_your_model', inApp: false }), + makePreference({ id: 'pref-2', category: 'general.daily_digest', inApp: true }), + ]); + + await query.execute('user-1', {}); + + const [, filters] = userNotificationRepository.findAllByRecipient.mock.calls[0]!; + expect(filters.categories).not.toContain('comment.on_your_model'); + expect(filters.categories).toContain('general.daily_digest'); + }); + + it('returns an empty page without touching the ledger when every category is muted', async () => { + notificationPreferenceRepository.findAllByUser.mockResolvedValue( + domain.categories.map((info, index) => + makePreference({ id: `pref-${index}`, category: info.category, inApp: false }), + ), + ); + + const result = await query.execute('user-1', { limit: 10, page: 2 }); + + expect(result).toEqual({ count: 0, limit: 10, page: 2, data: [], unreadCount: 0 }); + expect(userNotificationRepository.findAllByRecipient).not.toHaveBeenCalled(); + expect(userNotificationRepository.countUnread).not.toHaveBeenCalled(); + }); + + it('passes since through as a Date and forwards unreadOnly', async () => { + await query.execute('user-1', { since: '2026-07-01T00:00:00.000Z', unreadOnly: true }); + + const [recipientId, filters, params] = + userNotificationRepository.findAllByRecipient.mock.calls[0]!; + expect(recipientId).toBe('user-1'); + expect(filters.since).toEqual(new Date('2026-07-01T00:00:00.000Z')); + expect(filters.unreadOnly).toBe(true); + expect(params).toMatchObject({ limit: 20, page: 0, offset: 0 }); + }); + + it('counts unread across every in-app category, not just the requested page', async () => { + await query.execute('user-1', { since: '2026-07-01T00:00:00.000Z', unreadOnly: true, page: 3 }); + + const [recipientId, categories] = userNotificationRepository.countUnread.mock.calls[0]!; + expect(recipientId).toBe('user-1'); + expect(categories).toEqual( + domain.categories.filter((info) => info.defaults.inApp).map((info) => info.category), + ); + }); +}); diff --git a/apps/modeling-commons-backend/src/modules/user-notification/queries/list-user-notifications.query.ts b/apps/modeling-commons-backend/src/modules/user-notification/queries/list-user-notifications.query.ts new file mode 100644 index 00000000..167b3e36 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/queries/list-user-notifications.query.ts @@ -0,0 +1,46 @@ +import type { UserNotificationPaginatedResponse } from '#src/modules/user-notification/dtos/user-notification.paginated.response.dto.ts'; +import type { ListUserNotificationsQueryDto } from '#src/modules/user-notification/dtos/user-notifications.request.dto.ts'; +import { paginatedQueryBase } from '#src/shared/ddd/query.base.ts'; + +export default function makeListUserNotificationsQuery({ + userNotificationRepository, + notificationPreferenceRepository, + userNotificationDomain, + userNotificationMapper, +}: Dependencies) { + return { + async execute( + userId: string, + query: ListUserNotificationsQueryDto, + ): Promise { + const params = paginatedQueryBase(query); + const overrides = await notificationPreferenceRepository.findAllByUser(userId); + const categories = userNotificationDomain.inAppEnabledCategories(overrides); + + if (categories.length === 0) { + return { count: 0, limit: params.limit, page: params.page, data: [], unreadCount: 0 }; + } + + const [page, unreadCount] = await Promise.all([ + userNotificationRepository.findAllByRecipient( + userId, + { + categories, + since: query.since ? new Date(query.since) : undefined, + unreadOnly: query.unreadOnly, + }, + params, + ), + userNotificationRepository.countUnread(userId, categories), + ]); + + return { + count: page.count, + limit: page.limit, + page: page.page, + data: page.data.map((record) => userNotificationMapper.toResponse(record)), + unreadCount, + }; + }, + }; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/user-notification.mapper.ts b/apps/modeling-commons-backend/src/modules/user-notification/user-notification.mapper.ts new file mode 100644 index 00000000..5f9883be --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/user-notification.mapper.ts @@ -0,0 +1,42 @@ +import type { UserNotificationRecord } from '#src/modules/user-notification/database/user-notification.record.ts'; +import type { + NotificationCategory, + NotificationCategoryInfo, + NotificationChannels, +} from '#src/modules/user-notification/domain/user-notification.types.ts'; +import type { CategoryPreferenceDto } from '#src/modules/user-notification/dtos/notification-preference.response.dto.ts'; +import type { UserNotificationResponseDto } from '#src/modules/user-notification/dtos/user-notification.response.dto.ts'; + +export type UserNotificationMapper = { + toCategoryPreference: ( + info: NotificationCategoryInfo, + resolved: NotificationChannels, + ) => CategoryPreferenceDto; + toResponse: (record: UserNotificationRecord) => UserNotificationResponseDto; +}; + +export default function userNotificationMapper(): UserNotificationMapper { + return { + toCategoryPreference(info, resolved) { + return { + category: info.category, + label: info.label, + description: info.description, + email: resolved.email, + inApp: resolved.inApp, + }; + }, + + toResponse(record) { + return { + id: record.id, + category: record.category as NotificationCategory, + title: record.title, + body: record.body, + url: record.url, + createdAt: record.createdAt.toISOString(), + readAt: record.readAt?.toISOString() ?? null, + }; + }, + }; +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/user-notification.route.ts b/apps/modeling-commons-backend/src/modules/user-notification/user-notification.route.ts new file mode 100644 index 00000000..275e46e9 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/user-notification.route.ts @@ -0,0 +1,82 @@ +import { requireAuth } from '#src/shared/hooks/require-auth.ts'; +import type { FastifyInstance } from 'fastify'; +import type { TypeBoxTypeProvider } from '@fastify/type-provider-typebox'; +import { + notificationPreferenceResponseDtoSchema, + type NotificationPreferenceResponseDto, +} from '#src/modules/user-notification/dtos/notification-preference.response.dto.ts'; +import { + updateNotificationPreferencesRequestDtoSchema, + type UpdateNotificationPreferencesRequestDto, +} from '#src/modules/user-notification/dtos/update-notification-preferences.request.dto.ts'; +import { listUserNotificationsQueryDtoSchema } from '#src/modules/user-notification/dtos/user-notifications.request.dto.ts'; +import { userNotificationPaginatedResponseSchema } from '#src/modules/user-notification/dtos/user-notification.paginated.response.dto.ts'; +import { idDtoSchema } from '#src/shared/api/id.response.dto.ts'; + +export default async function userNotificationRoutes(fastify: FastifyInstance) { + const { getNotificationPreferencesQuery, listUserNotificationsQuery, userNotificationService } = + fastify.diContainer.cradle; + + fastify.get( + '/v1/me/notification-preferences', + { + schema: { + response: { 200: notificationPreferenceResponseDtoSchema }, + tags: ['UserNotification'], + }, + preHandler: [requireAuth], + }, + async (request): Promise => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return getNotificationPreferencesQuery.execute(request.user!.id); + }, + ); + + fastify.patch<{ Body: UpdateNotificationPreferencesRequestDto }>( + '/v1/me/notification-preferences', + { + schema: { + body: updateNotificationPreferencesRequestDtoSchema, + tags: ['UserNotification'], + }, + preHandler: [requireAuth], + }, + async (request, reply) => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + await userNotificationService.updatePreferences(request.user!.id, request.body.preferences); + return reply.code(204).send(); + }, + ); + + fastify.withTypeProvider().get( + '/v1/me/notifications', + { + schema: { + querystring: listUserNotificationsQueryDtoSchema, + response: { 200: userNotificationPaginatedResponseSchema }, + tags: ['UserNotification'], + }, + preHandler: [requireAuth], + }, + async (request) => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return listUserNotificationsQuery.execute(request.user!.id, request.query); + }, + ); + + fastify.withTypeProvider().patch( + '/v1/me/notifications/:id/read', + { + schema: { + params: idDtoSchema, + tags: ['UserNotification'], + }, + preHandler: [requireAuth], + }, + async (request, reply) => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + await userNotificationService.markRead(request.user!.id, request.params.id); + return reply.code(204).send(); + }, + ); +} diff --git a/apps/modeling-commons-backend/src/modules/user-notification/user-notification.service.spec.ts b/apps/modeling-commons-backend/src/modules/user-notification/user-notification.service.spec.ts new file mode 100644 index 00000000..209240f6 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/user-notification.service.spec.ts @@ -0,0 +1,434 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import makeUserNotificationService, { + createUserNotificationService, +} from '#src/modules/user-notification/user-notification.service.ts'; +import userNotificationDomain from '#src/modules/user-notification/domain/user-notification.domain.ts'; +import { + NotificationNotFoundError, + UnknownCategoryError, +} from '#src/modules/user-notification/domain/user-notification.errors.ts'; +import { mockNotificationPreferenceRepository } from '#src/modules/user-notification/database/notification-preference.repository.mock.ts'; +import { mockUserNotificationRepository } from '#src/modules/user-notification/database/user-notification.repository.mock.ts'; +import { mockUserRepository } from '#src/modules/user/database/user.repository.mock.ts'; +import { mockTransactionManager } from '#src/shared/test/mock-transaction-manager.ts'; +import type { NotificationPreferenceRecord } from '#src/modules/user-notification/database/notification-preference.record.ts'; +import type { UserNotificationRecord } from '#src/modules/user-notification/database/user-notification.record.ts'; +import type { EventRecord } from '#src/modules/event/database/event.repository.port.ts'; +import type { + NotificationIntent, + Notifier, +} from '#src/modules/user-notification/domain/user-notification.types.ts'; + +function makeRecord( + overrides: Partial = {}, +): NotificationPreferenceRecord { + return { + id: 'pref-1', + userId: 'user-1', + category: 'comment.on_your_model', + email: false, + inApp: true, + updatedAt: new Date('2026-01-01'), + ...overrides, + }; +} + +describe('userNotificationService', () => { + const notificationPreferenceRepository = mockNotificationPreferenceRepository(); + const transactionManager = mockTransactionManager(); + const domain = userNotificationDomain(); + + const service = makeUserNotificationService({ + transactionManager, + notificationPreferenceRepository, + userNotificationDomain: domain, + } as never); + + beforeEach(() => { + notificationPreferenceRepository.findAllByUser.mockReset(); + notificationPreferenceRepository.upsertTx.mockReset(); + }); + + describe('updatePreferences', () => { + it('rejects an unknown category and writes nothing', async () => { + await expect( + service.updatePreferences('user-1', [{ category: 'comment.mentions_you', email: false }]), + ).rejects.toThrow(UnknownCategoryError); + + expect(notificationPreferenceRepository.findAllByUser).not.toHaveBeenCalled(); + expect(notificationPreferenceRepository.upsertTx).not.toHaveBeenCalled(); + }); + + it('keeps the currently-resolved value for an omitted channel', async () => { + notificationPreferenceRepository.findAllByUser.mockResolvedValue([ + makeRecord({ email: false, inApp: true }), + ]); + + await service.updatePreferences('user-1', [ + { category: 'comment.on_your_model', inApp: false }, + ]); + + expect(notificationPreferenceRepository.upsertTx).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + category: 'comment.on_your_model', + email: false, + inApp: false, + }), + ); + }); + + it('falls back to the catalog default for an omitted channel with no override', async () => { + notificationPreferenceRepository.findAllByUser.mockResolvedValue([]); + + await service.updatePreferences('user-1', [ + { category: 'comment.on_your_model', email: false }, + ]); + + const defaults = domain.categories.find( + (info) => info.category === 'comment.on_your_model', + )!.defaults; + + expect(notificationPreferenceRepository.upsertTx).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + category: 'comment.on_your_model', + email: false, + inApp: defaults.inApp, + }), + ); + }); + + it('writes with the userId that was passed in, not any value from the input rows', async () => { + notificationPreferenceRepository.findAllByUser.mockResolvedValue([]); + + await service.updatePreferences('caller-user', [ + { category: 'comment.on_your_model', email: true, inApp: true }, + ]); + + expect(notificationPreferenceRepository.findAllByUser).toHaveBeenCalledWith('caller-user'); + expect(notificationPreferenceRepository.upsertTx).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ userId: 'caller-user' }), + ); + }); + }); +}); + +function makeEvent(overrides: Partial = {}): EventRecord { + return { + id: 'event-1', + type: 'model_comment.created', + actorId: 'actor-1', + resourceType: 'model', + resourceId: 'model-1', + payload: {}, + createdAt: new Date('2026-01-01'), + processedAt: null, + attempts: 0, + lastError: null, + ...overrides, + }; +} + +function makeIntent(overrides: Partial = {}): NotificationIntent { + return { + recipientUserId: 'recipient-1', + category: 'comment.on_your_model', + title: 'New comment', + body: 'Someone commented on your model', + url: 'https://example.test/models/model-1', + buildEmail: vi.fn().mockResolvedValue({ to: 'recipient@example.test', subject: 'New comment' }), + ...overrides, + }; +} + +function makeNotifier(intents: Array): Notifier { + return { + eventTypes: ['model_comment.created'], + resolve: vi.fn().mockResolvedValue(intents), + }; +} + +function makeUserRecord(overrides: Record = {}): Record { + return { + id: 'recipient-1', + name: 'Recipient', + email: 'recipient@example.test', + deletedAt: null, + banned: null, + ...overrides, + }; +} + +function makeInsertedNotification( + overrides: Partial = {}, +): UserNotificationRecord { + return { + id: 'notification-1', + recipientId: 'recipient-1', + eventId: 'event-1', + category: 'comment.on_your_model', + title: 'New comment', + body: 'Someone commented on your model', + url: 'https://example.test/models/model-1', + emailSentAt: null, + readAt: null, + createdAt: new Date('2026-01-01'), + ...overrides, + } as UserNotificationRecord; +} + +describe('userNotificationService handleEvent', () => { + const notificationPreferenceRepository = mockNotificationPreferenceRepository(); + const userNotificationRepository = mockUserNotificationRepository(); + const userRepository = mockUserRepository(); + const transactionManager = mockTransactionManager(); + const domain = userNotificationDomain(); + const mailService = { sendMailAsync: vi.fn(), sendMail: vi.fn() }; + const logger = { error: vi.fn(), info: vi.fn(), warn: vi.fn(), debug: vi.fn() }; + + function build(notifiers: Array) { + return createUserNotificationService(notifiers, { + transactionManager, + notificationPreferenceRepository, + userNotificationRepository, + userNotificationDomain: domain, + userRepository, + mailService, + logger, + } as never); + } + + beforeEach(() => { + notificationPreferenceRepository.findAllByUser.mockReset().mockResolvedValue([]); + userNotificationRepository.insertTx.mockReset().mockResolvedValue(makeInsertedNotification()); + userNotificationRepository.markEmailSent.mockReset(); + userRepository.findOneById.mockReset().mockResolvedValue(makeUserRecord()); + mailService.sendMailAsync.mockReset().mockResolvedValue({}); + logger.error.mockReset(); + }); + + describe('handles', () => { + it('is true only for event types a registered notifier declares', () => { + const service = build([makeNotifier([])]); + + expect(service.handles('model_comment.created')).toBe(true); + expect(service.handles('model.deleted')).toBe(false); + }); + + it('is always false with no notifiers registered', () => { + const service = build([]); + + expect(service.handles('model_comment.created')).toBe(false); + }); + }); + + describe('handleEvent', () => { + it('is a no-op when no notifier handles the event type', async () => { + const notifier = makeNotifier([makeIntent()]); + const service = build([notifier]); + + await service.handleEvent(makeEvent({ type: 'model.deleted' })); + + expect(notifier.resolve).not.toHaveBeenCalled(); + expect(userRepository.findOneById).not.toHaveBeenCalled(); + }); + + it('still delivers a healthy notifier\'s intents when another notifier throws, then rethrows', async () => { + const healthy = makeNotifier([makeIntent()]); + const broken = makeNotifier([]); + (broken.resolve as ReturnType).mockRejectedValue(new Error('notifier down')); + const service = build([broken, healthy]); + + await expect(service.handleEvent(makeEvent())).rejects.toThrow(AggregateError); + + expect(mailService.sendMailAsync).toHaveBeenCalledTimes(1); + expect(logger.error).toHaveBeenCalled(); + }); + + it('inserts a ledger row and sends mail for a fully opted-in recipient', async () => { + const intent = makeIntent(); + const service = build([makeNotifier([intent])]); + + await service.handleEvent(makeEvent()); + + expect(userNotificationRepository.insertTx).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + recipientId: 'recipient-1', + eventId: 'event-1', + category: 'comment.on_your_model', + }), + ); + expect(intent.buildEmail).toHaveBeenCalledWith( + { id: 'recipient-1', email: 'recipient@example.test', name: 'Recipient' }, + expect.objectContaining({ + unsubscribeUrl: expect.stringMatching(/^mailto:/), + preferencesUrl: expect.stringContaining('/settings/notifications'), + }), + ); + expect(mailService.sendMailAsync).toHaveBeenCalledTimes(1); + expect(userNotificationRepository.markEmailSent).toHaveBeenCalledWith( + 'notification-1', + expect.any(Date), + ); + }); + + it('sends no mail and writes no ledger row for a recipient fully opted out of the category', async () => { + notificationPreferenceRepository.findAllByUser.mockResolvedValue([ + makeRecord({ category: 'comment.on_your_model', email: false, inApp: false }), + ]); + const intent = makeIntent(); + const service = build([makeNotifier([intent])]); + + await service.handleEvent(makeEvent()); + + expect(intent.buildEmail).not.toHaveBeenCalled(); + expect(userNotificationRepository.insertTx).not.toHaveBeenCalled(); + expect(mailService.sendMailAsync).not.toHaveBeenCalled(); + }); + + it('sends no mail when the recipient turned the email channel off', async () => { + notificationPreferenceRepository.findAllByUser.mockResolvedValue([ + makeRecord({ category: 'comment.on_your_model', email: false, inApp: true }), + ]); + const intent = makeIntent(); + const service = build([makeNotifier([intent])]); + + await service.handleEvent(makeEvent()); + + expect(intent.buildEmail).not.toHaveBeenCalled(); + expect(mailService.sendMailAsync).not.toHaveBeenCalled(); + }); + + it('still writes the ledger row when only the in-app channel is off, so a retry cannot resend', async () => { + notificationPreferenceRepository.findAllByUser.mockResolvedValue([ + makeRecord({ category: 'comment.on_your_model', email: true, inApp: false }), + ]); + const service = build([makeNotifier([makeIntent()])]); + + await service.handleEvent(makeEvent()); + + expect(userNotificationRepository.insertTx).toHaveBeenCalledTimes(1); + expect(mailService.sendMailAsync).toHaveBeenCalledTimes(1); + expect(userNotificationRepository.markEmailSent).toHaveBeenCalledWith( + 'notification-1', + expect.any(Date), + ); + }); + + it.each([ + ['a missing recipient', undefined], + ['a soft-deleted recipient', makeUserRecord({ deletedAt: new Date('2026-01-02') })], + ['a banned recipient', makeUserRecord({ banned: true })], + ['a recipient without an email', makeUserRecord({ email: null })], + ])('skips %s without writing a ledger row or invoking buildEmail', async (_label, record) => { + userRepository.findOneById.mockResolvedValue(record); + const intent = makeIntent(); + const service = build([makeNotifier([intent])]); + + await service.handleEvent(makeEvent()); + + expect(intent.buildEmail).not.toHaveBeenCalled(); + expect(userNotificationRepository.insertTx).not.toHaveBeenCalled(); + expect(mailService.sendMailAsync).not.toHaveBeenCalled(); + }); + + it('sends no mail and does not throw when the ledger row already exists', async () => { + userNotificationRepository.insertTx.mockResolvedValue(undefined); + const intent = makeIntent(); + const service = build([makeNotifier([intent])]); + + await expect(service.handleEvent(makeEvent())).resolves.toBeUndefined(); + + expect(intent.buildEmail).not.toHaveBeenCalled(); + expect(mailService.sendMailAsync).not.toHaveBeenCalled(); + }); + + it('leaves emailSentAt unset, logs, and does not throw when sendMailAsync rejects', async () => { + mailService.sendMailAsync.mockRejectedValue(new Error('SMTP unreachable')); + const intent = makeIntent(); + const service = build([makeNotifier([intent])]); + + await expect(service.handleEvent(makeEvent())).resolves.toBeUndefined(); + + expect(userNotificationRepository.markEmailSent).not.toHaveBeenCalled(); + expect(logger.error).toHaveBeenCalledWith( + expect.objectContaining({ error: expect.any(Error) }), + ); + }); + + it('applies preferences and recipient checks independently per intent', async () => { + notificationPreferenceRepository.findAllByUser.mockImplementation(async (userId: string) => + userId === 'blocked-recipient' + ? [makeRecord({ category: 'comment.on_your_model', email: false, inApp: false })] + : [], + ); + userRepository.findOneById.mockImplementation(async (id: string) => + makeUserRecord({ id, email: `${id}@example.test` }), + ); + const allowedIntent = makeIntent({ recipientUserId: 'allowed-recipient' }); + const blockedIntent = makeIntent({ recipientUserId: 'blocked-recipient' }); + const service = build([makeNotifier([allowedIntent, blockedIntent])]); + + await service.handleEvent(makeEvent()); + + expect(allowedIntent.buildEmail).toHaveBeenCalledTimes(1); + expect(blockedIntent.buildEmail).not.toHaveBeenCalled(); + }); + }); +}); + +describe('userNotificationService markRead', () => { + const userNotificationRepository = mockUserNotificationRepository(); + const domain = userNotificationDomain(); + + const service = makeUserNotificationService({ + userNotificationRepository, + userNotificationDomain: domain, + } as never); + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('stamps readAt on a notification the caller owns', async () => { + userNotificationRepository.findOneById.mockResolvedValue(makeInsertedNotification()); + + await service.markRead('recipient-1', 'notification-1'); + + expect(userNotificationRepository.markRead).toHaveBeenCalledWith( + 'notification-1', + expect.any(Date), + ); + }); + + it('leaves an already-read notification untouched', async () => { + userNotificationRepository.findOneById.mockResolvedValue( + makeInsertedNotification({ readAt: new Date('2026-01-02') }), + ); + + await service.markRead('recipient-1', 'notification-1'); + + expect(userNotificationRepository.markRead).not.toHaveBeenCalled(); + }); + + it('rejects a notification that does not exist', async () => { + userNotificationRepository.findOneById.mockResolvedValue(undefined); + + await expect(service.markRead('recipient-1', 'missing')).rejects.toThrow( + NotificationNotFoundError, + ); + expect(userNotificationRepository.markRead).not.toHaveBeenCalled(); + }); + + it("refuses to read another user's notification and does not leak that it exists", async () => { + userNotificationRepository.findOneById.mockResolvedValue(makeInsertedNotification()); + + await expect(service.markRead('someone-else', 'notification-1')).rejects.toThrow( + NotificationNotFoundError, + ); + expect(userNotificationRepository.markRead).not.toHaveBeenCalled(); + }); +}); diff --git a/apps/modeling-commons-backend/src/modules/user-notification/user-notification.service.ts b/apps/modeling-commons-backend/src/modules/user-notification/user-notification.service.ts new file mode 100644 index 00000000..47d18a99 --- /dev/null +++ b/apps/modeling-commons-backend/src/modules/user-notification/user-notification.service.ts @@ -0,0 +1,173 @@ +import env from '#src/config/env.ts'; +import type { EventRecord } from '#src/modules/event/database/event.repository.port.ts'; +import { UnknownCategoryError } from '#src/modules/user-notification/domain/user-notification.errors.ts'; +import type { + NotificationCategory, + NotificationIntent, + NotificationLinks, + Notifier, +} from '#src/modules/user-notification/domain/user-notification.types.ts'; + +export type UpdatePreferenceInput = { + category: string; + email?: boolean; + inApp?: boolean; +}; + +type ValidatedPreferenceInput = { + category: NotificationCategory; + email?: boolean; + inApp?: boolean; +}; + +export function createUserNotificationService( + notifiers: ReadonlyArray, + { + transactionManager, + notificationPreferenceRepository, + userNotificationRepository, + userNotificationDomain, + userRepository, + mailService, + logger, + }: Dependencies, +) { + async function deliver( + event: EventRecord, + intent: NotificationIntent, + links: NotificationLinks, + ): Promise { + try { + const recipient = userNotificationDomain.assertRecipientEligible( + await userRepository.findOneById(intent.recipientUserId), + intent.recipientUserId, + ); + + const preferences = await notificationPreferenceRepository.findAllByUser(recipient.id); + const override = preferences.find((preference) => preference.category === intent.category); + const resolved = userNotificationDomain.resolvePreference(intent.category, override); + userNotificationDomain.assertChannelsEnabled(resolved, recipient.id, intent.category); + + // The row is the delivery ledger, not the feed entry, so it is written even when + // `inApp` is off - its unique key is what stops a retried event resending the email. + const inserted = await transactionManager.run(async (ctx) => + userNotificationRepository.insertTx(ctx, { + recipientId: recipient.id, + eventId: event.id, + category: intent.category, + title: intent.title, + body: intent.body, + url: intent.url, + }), + ); + const insertedNotificationId = userNotificationDomain.assertEmailDeliverable( + inserted?.id, + resolved, + event.id, + recipient.id, + intent.category, + ); + + const content = await intent.buildEmail( + { id: recipient.id, email: recipient.email, name: recipient.name }, + links, + ); + await mailService.sendMailAsync(content); + await userNotificationRepository.markEmailSent(insertedNotificationId, new Date()); + } catch (error) { + if (userNotificationDomain.isSkippableDeliveryError(error)) return; + logger.error({ + name: 'UserNotificationService', + message: 'Failed to send a notification email', + error, + }); + } + } + + return { + handles(eventType: string): boolean { + return notifiers.some((notifier) => notifier.eventTypes.includes(eventType)); + }, + + async handleEvent(event: EventRecord): Promise { + const applicable = notifiers.filter((notifier) => notifier.eventTypes.includes(event.type)); + if (applicable.length === 0) return; + + const resolutions = await Promise.allSettled( + applicable.map(async (notifier) => notifier.resolve(event)), + ); + const intents = resolutions + .filter((result) => result.status === 'fulfilled') + .flatMap((result) => result.value); + const failedResolutions = resolutions.filter((result) => result.status === 'rejected'); + + for (const failure of failedResolutions) { + logger.error({ + name: 'UserNotificationService', + message: 'A notifier failed to resolve intents', + error: failure.reason, + }); + } + + const links: NotificationLinks = { + unsubscribeUrl: `mailto:${env.product.supportEmail}`, + preferencesUrl: `${env.product.website}/settings/notifications`, + }; + + for (const intent of intents) { + await deliver(event, intent, links); + } + + if (failedResolutions.length > 0) { + throw new AggregateError( + failedResolutions.map((failure) => failure.reason as unknown), + 'One or more notifiers failed to resolve intents', + ); + } + }, + + async markRead(userId: string, notificationId: string): Promise { + const notification = await userNotificationRepository.findOneById(notificationId); + userNotificationDomain.assertOwnedByRecipient(notification, notificationId, userId); + if (notification?.readAt) return; + + await userNotificationRepository.markRead(notificationId, new Date()); + }, + + async updatePreferences( + userId: string, + preferences: Array, + ): Promise { + const validated: Array = preferences.map((preference) => { + const { category } = preference; + if (!userNotificationDomain.isKnownCategory(category)) { + throw new UnknownCategoryError(category); + } + return { category, email: preference.email, inApp: preference.inApp }; + }); + + const existing = await notificationPreferenceRepository.findAllByUser(userId); + const existingByCategory = new Map(existing.map((row) => [row.category, row])); + + await transactionManager.run(async (ctx) => { + for (const preference of validated) { + const resolved = userNotificationDomain.resolvePreference( + preference.category, + existingByCategory.get(preference.category), + ); + + await notificationPreferenceRepository.upsertTx(ctx, { + userId, + category: preference.category, + email: preference.email ?? resolved.email, + inApp: preference.inApp ?? resolved.inApp, + }); + } + }); + }, + }; +} + +export default function makeUserNotificationService(deps: Dependencies) { + return createUserNotificationService([deps.modelCommentNotifier], deps); +} diff --git a/apps/modeling-commons-backend/src/server/di/index.ts b/apps/modeling-commons-backend/src/server/di/index.ts index ab51a6ba..a1e3d9dc 100644 --- a/apps/modeling-commons-backend/src/server/di/index.ts +++ b/apps/modeling-commons-backend/src/server/di/index.ts @@ -17,7 +17,7 @@ export async function di(fastify: FastifyInstance): Promise { [ path.join( import.meta.dirname, - '../../modules/**/*.{repository,mapper,service,domain,query,storage}.{js,ts}', + '../../modules/**/*.{repository,mapper,service,domain,query,storage,notifier}.{js,ts}', ), ], { @@ -30,19 +30,6 @@ export async function di(fastify: FastifyInstance): Promise { }, ); - await diContainer.loadModules( - [path.join(import.meta.dirname, '../../modules/**/*.{handler,event-handler}.{js,ts}')], - { - formatName, - esModules: true, - resolverOptions: { - asyncInit: 'init', - register: asFunction, - lifetime: Lifetime.SINGLETON, - }, - }, - ); - // Create a dependency injection container await fastify.register(fastifyAwilixPlugin, { container: diContainer, diff --git a/apps/modeling-commons-backend/src/shared/utils/formatters.ts b/apps/modeling-commons-backend/src/shared/utils/formatters.ts new file mode 100644 index 00000000..d3f8be62 --- /dev/null +++ b/apps/modeling-commons-backend/src/shared/utils/formatters.ts @@ -0,0 +1,9 @@ +import rules from '#src/config/rules.ts'; + +export function truncatePreview( + text: string, + max = rules.limits.notification.previewLength, +): string { + const trimmed = text.trim(); + return trimmed.length > max ? `${trimmed.slice(0, max - 1)}…` : trimmed; +} diff --git a/apps/modeling-commons-backend/src/workers/event-processor.spec.ts b/apps/modeling-commons-backend/src/workers/event-processor.spec.ts index 6a7326fe..12b6eedd 100644 --- a/apps/modeling-commons-backend/src/workers/event-processor.spec.ts +++ b/apps/modeling-commons-backend/src/workers/event-processor.spec.ts @@ -20,6 +20,7 @@ vi.mock('pg-boss', () => ({ import { startEventProcessor } from '#src/workers/event-processor.ts'; import { mockEventRepository } from '#src/modules/event/database/event.repository.mock.ts'; +import rules from '#src/config/rules.ts'; const logger = { info: vi.fn(), @@ -28,6 +29,10 @@ const logger = { warn: vi.fn(), } as unknown as FastifyBaseLogger; +function makeEventDispatcherService(): { dispatch: ReturnType } { + return { dispatch: vi.fn().mockResolvedValue(undefined) }; +} + describe('startEventProcessor', () => { beforeEach(() => { vi.clearAllMocks(); @@ -42,6 +47,9 @@ describe('startEventProcessor', () => { eventRepository: eventRepository as unknown as Parameters< typeof startEventProcessor >[0]['eventRepository'], + eventDispatcherService: makeEventDispatcherService() as unknown as Parameters< + typeof startEventProcessor + >[0]['eventDispatcherService'], logger, }); @@ -51,24 +59,82 @@ describe('startEventProcessor', () => { expect(boss).toBe(bossInstance); }); - it('marks each unprocessed event as processed when the handler runs', async () => { + it('fetches within the configured batch size and attempt ceiling', async () => { + const eventRepository = mockEventRepository(); + eventRepository.findUnprocessed.mockResolvedValue([]); + + await startEventProcessor({ + connectionString: 'postgres://test', + eventRepository: eventRepository as unknown as Parameters< + typeof startEventProcessor + >[0]['eventRepository'], + eventDispatcherService: makeEventDispatcherService() as unknown as Parameters< + typeof startEventProcessor + >[0]['eventDispatcherService'], + logger, + }); + + const handler = bossInstance.work.mock.calls[0]![1] as () => Promise; + await handler(); + + expect(eventRepository.findUnprocessed).toHaveBeenCalledWith( + rules.limits.notification.eventBatchSize, + rules.limits.notification.maxEventAttempts, + ); + }); + + it('dispatches each unprocessed event, then marks it processed', async () => { const eventRepository = mockEventRepository(); eventRepository.findUnprocessed.mockResolvedValue([{ id: 'event-1' }, { id: 'event-2' }]); eventRepository.markProcessed.mockResolvedValue(undefined); + const eventDispatcherService = makeEventDispatcherService(); await startEventProcessor({ connectionString: 'postgres://test', eventRepository: eventRepository as unknown as Parameters< typeof startEventProcessor >[0]['eventRepository'], + eventDispatcherService: eventDispatcherService as unknown as Parameters< + typeof startEventProcessor + >[0]['eventDispatcherService'], logger, }); const handler = bossInstance.work.mock.calls[0]![1] as () => Promise; await handler(); - expect(eventRepository.findUnprocessed).toHaveBeenCalledWith(50); + expect(eventDispatcherService.dispatch).toHaveBeenNthCalledWith(1, { id: 'event-1' }); + expect(eventDispatcherService.dispatch).toHaveBeenNthCalledWith(2, { id: 'event-2' }); expect(eventRepository.markProcessed).toHaveBeenNthCalledWith(1, 'event-1'); expect(eventRepository.markProcessed).toHaveBeenNthCalledWith(2, 'event-2'); + expect(eventRepository.markFailed).not.toHaveBeenCalled(); + }); + + it('marks a failed dispatch and keeps processing the rest of the batch', async () => { + const eventRepository = mockEventRepository(); + eventRepository.findUnprocessed.mockResolvedValue([{ id: 'event-1' }, { id: 'event-2' }]); + eventRepository.markProcessed.mockResolvedValue(undefined); + eventRepository.markFailed.mockResolvedValue(undefined); + const error = new Error('subscriber exploded'); + const eventDispatcherService = makeEventDispatcherService(); + eventDispatcherService.dispatch.mockRejectedValueOnce(error).mockResolvedValueOnce(undefined); + + await startEventProcessor({ + connectionString: 'postgres://test', + eventRepository: eventRepository as unknown as Parameters< + typeof startEventProcessor + >[0]['eventRepository'], + eventDispatcherService: eventDispatcherService as unknown as Parameters< + typeof startEventProcessor + >[0]['eventDispatcherService'], + logger, + }); + + const handler = bossInstance.work.mock.calls[0]![1] as () => Promise; + await handler(); + + expect(eventRepository.markFailed).toHaveBeenCalledWith('event-1', error); + expect(eventRepository.markProcessed).not.toHaveBeenCalledWith('event-1'); + expect(eventRepository.markProcessed).toHaveBeenCalledWith('event-2'); }); }); diff --git a/apps/modeling-commons-backend/src/workers/event-processor.ts b/apps/modeling-commons-backend/src/workers/event-processor.ts index bc1d8155..7b25606e 100644 --- a/apps/modeling-commons-backend/src/workers/event-processor.ts +++ b/apps/modeling-commons-backend/src/workers/event-processor.ts @@ -1,18 +1,21 @@ +import rules from '#src/config/rules.ts'; +import type makeEventDispatcherService from '#src/modules/event/event-dispatcher.service.ts'; import type { EventRepositoryPort } from '#src/modules/event/database/event.repository.port.ts'; import type { FastifyBaseLogger } from 'fastify'; import { PgBoss } from 'pg-boss'; const QUEUE_NAME = 'process-events'; -const BATCH_SIZE = 50; const CRON_EXPRESSION = '*/1 * * * *'; export async function startEventProcessor({ connectionString, eventRepository, + eventDispatcherService, logger, }: { connectionString: string; eventRepository: EventRepositoryPort; + eventDispatcherService: ReturnType; logger: FastifyBaseLogger; }): Promise { const boss = new PgBoss(connectionString); @@ -25,10 +28,17 @@ export async function startEventProcessor({ await boss.createQueue(QUEUE_NAME); await boss.work(QUEUE_NAME, async () => { - const events = await eventRepository.findUnprocessed(BATCH_SIZE); + const events = await eventRepository.findUnprocessed( + rules.limits.notification.eventBatchSize, + rules.limits.notification.maxEventAttempts, + ); for (const event of events) { - // Future: dispatch side effects based on event.type - await eventRepository.markProcessed(event.id); + try { + await eventDispatcherService.dispatch(event); + await eventRepository.markProcessed(event.id); + } catch (error) { + await eventRepository.markFailed(event.id, error); + } } logger.debug(`Processed ${events.length} events`); }); diff --git a/apps/modeling-commons-backend/src/workers/index.spec.ts b/apps/modeling-commons-backend/src/workers/index.spec.ts index 8ea9566a..aa6e8645 100644 --- a/apps/modeling-commons-backend/src/workers/index.spec.ts +++ b/apps/modeling-commons-backend/src/workers/index.spec.ts @@ -30,10 +30,14 @@ import { startWorkers } from '#src/workers/index.ts'; function makeFastify(): { fastify: FastifyInstance; hooks: Map Promise>; - cradle: { eventRepository: unknown; modelDraftService: unknown }; + cradle: { eventRepository: unknown; eventDispatcherService: unknown; modelDraftService: unknown }; } { const hooks = new Map Promise>(); - const cradle = { eventRepository: { tag: 'er' }, modelDraftService: { tag: 'mds' } }; + const cradle = { + eventRepository: { tag: 'er' }, + eventDispatcherService: { tag: 'eds' }, + modelDraftService: { tag: 'mds' }, + }; const fastify = { log: { info: vi.fn(), error: vi.fn(), warn: vi.fn(), debug: vi.fn() }, diContainer: { cradle }, @@ -70,6 +74,7 @@ describe('startWorkers', () => { expect(startEventProcessor).toHaveBeenCalledWith({ connectionString: 'postgres://test', eventRepository: cradle.eventRepository, + eventDispatcherService: cradle.eventDispatcherService, logger: fastify.log, }); expect(startModelDraftJanitor).toHaveBeenCalledWith({ diff --git a/apps/modeling-commons-backend/src/workers/index.ts b/apps/modeling-commons-backend/src/workers/index.ts index f39276e3..16528561 100644 --- a/apps/modeling-commons-backend/src/workers/index.ts +++ b/apps/modeling-commons-backend/src/workers/index.ts @@ -12,11 +12,17 @@ export async function startWorkers(fastify: FastifyInstance): Promise { return; } - const { eventRepository, modelDraftService } = fastify.diContainer.cradle; + const { eventRepository, eventDispatcherService, modelDraftService } = + fastify.diContainer.cradle; const connectionString = env.db.url; const [eventBoss, janitorBoss] = await Promise.all([ - startEventProcessor({ connectionString, eventRepository, logger: fastify.log }), + startEventProcessor({ + connectionString, + eventRepository, + eventDispatcherService, + logger: fastify.log, + }), startModelDraftJanitor({ connectionString, modelDraftService, logger: fastify.log }), ]); diff --git a/apps/modeling-commons-backend/tests/api/model-comment.feature b/apps/modeling-commons-backend/tests/api/model-comment.feature index cdd21ec9..1707a07d 100644 --- a/apps/modeling-commons-backend/tests/api/model-comment.feature +++ b/apps/modeling-commons-backend/tests/api/model-comment.feature @@ -176,28 +176,6 @@ Feature: Model Comments When "fan" gets comment "target" on "Likeable Comments" Then comment "target" in the response should have property "likes" equal to "0" - Scenario: Commenting notifies other authors but never the commenter - Given an authenticated user "owner" - And a public model "Notify Model" created by "owner" - And an authenticated user "contributor" - And "owner" has added "contributor" as a contributor to "Notify Model" - And an authenticated user "commenter" - And mail delivery is captured - When "commenter" comments "Great work!" on "Notify Model" - Then the response status should be 201 - And mail should have been sent to 2 recipients - And mail should have been sent to "owner" - And mail should have been sent to "contributor" - And mail should not have been sent to "commenter" - - Scenario: Commenting on your own model does not notify yourself - Given an authenticated user "owner" - And a public model "Solo Model" created by "owner" - And mail delivery is captured - When "owner" comments "Talking to myself" on "Solo Model" - Then the response status should be 201 - And no mail should have been sent - Scenario: Sibling parents at the same level are limited independently Given an authenticated user "owner" And a public model "Siblings" created by "owner" diff --git a/apps/modeling-commons-backend/tests/api/model-comment.steps.ts b/apps/modeling-commons-backend/tests/api/model-comment.steps.ts index 5cd120c3..4619fffd 100644 --- a/apps/modeling-commons-backend/tests/api/model-comment.steps.ts +++ b/apps/modeling-commons-backend/tests/api/model-comment.steps.ts @@ -9,10 +9,6 @@ interface CommentRef { modelId: string; } -interface MailCall { - to: string; -} - function getUsers(context: Record): Map { if (!context['users']) context['users'] = new Map(); return context['users'] as Map; @@ -389,76 +385,6 @@ Then( }, ); -// --- Mail capture ----------------------------------------------------------- -// The comment service fires `notifyOnNewComment` fire-and-forget (`void`) after -// the write transaction commits, so the HTTP response can return before mail -// dispatch runs. Rather than sending through a real SMTP/Mailpit round trip, -// `mailService.sendMail` (a DI singleton) is monkey-patched with a capturing -// stub, and mail assertions poll briefly for the expected number of calls. - -function installMailSpy(server: FastifyInstance): MailCall[] { - const calls: MailCall[] = []; - const mailService = server.diContainer.cradle.mailService as { - sendMail: (content: unknown) => void; - }; - mailService.sendMail = (content: unknown) => { - const { to } = content as { to?: string }; - calls.push({ to: to ?? '' }); - }; - return calls; -} - -async function waitForMailCalls(calls: MailCall[], expected: number, timeoutMs = 3000): Promise { - const start = Date.now(); - while (calls.length < expected && Date.now() - start < timeoutMs) { - await new Promise((resolve) => setTimeout(resolve, 25)); - } -} - -Given('mail delivery is captured', function (this: ICustomWorld) { - this.context['mailCalls'] = installMailSpy(this.server); -}); - -Then( - 'mail should have been sent to {int} recipients', - async function (this: ICustomWorld, count: number) { - const calls = this.context['mailCalls'] as MailCall[]; - await waitForMailCalls(calls, count); - assert.strictEqual(calls.length, count); - }, -); - -Then( - 'mail should have been sent to {string}', - function (this: ICustomWorld, actorName: string) { - const calls = this.context['mailCalls'] as MailCall[]; - const actor = getUsers(this.context).get(actorName)!; - assert.ok( - calls.some((call) => call.to === actor.email), - `Expected an email to be sent to ${actor.email}`, - ); - }, -); - -Then( - 'mail should not have been sent to {string}', - function (this: ICustomWorld, actorName: string) { - const calls = this.context['mailCalls'] as MailCall[]; - const actor = getUsers(this.context).get(actorName)!; - assert.ok( - !calls.some((call) => call.to === actor.email), - `Expected no email to be sent to ${actor.email}`, - ); - }, -); - -Then('no mail should have been sent', async function (this: ICustomWorld) { - // Give the fire-and-forget notifier a brief window before asserting absence. - await new Promise((resolve) => setTimeout(resolve, 200)); - const calls = this.context['mailCalls'] as MailCall[]; - assert.strictEqual(calls.length, 0); -}); - // --- Comment repository call counter ----------------------------------------- // Pins the level-batched traversal: shape assertions alone can't distinguish a // per-node fan-out from a per-level batch, since both produce the same response diff --git a/apps/modeling-commons-backend/tests/api/user-notification.feature b/apps/modeling-commons-backend/tests/api/user-notification.feature new file mode 100644 index 00000000..8871d313 --- /dev/null +++ b/apps/modeling-commons-backend/tests/api/user-notification.feature @@ -0,0 +1,142 @@ +Feature: Notification Preferences and Feed + As a signed-in user + I want to read and change my notification preferences and read my in-app feed + So that I control what I get notified about and can catch up on it in the app + + Scenario: A user with no stored preferences sees the catalog defaults + Given an authenticated user "reader" + When "reader" gets their notification preferences + Then the response status should be 200 + And the notification preferences response should list every known category + + Scenario: Overriding one category leaves the others on their defaults + Given an authenticated user "editor" + And "editor" gets their notification preferences + When "editor" turns off email for category "comment.on_your_model" + Then the response status should be 204 + When "editor" gets their notification preferences + Then the response status should be 200 + And category "comment.on_your_model" should have email false + And category "comment.on_your_model" should have the same inApp value as before + And every other category should be unchanged from before + + Scenario: Updating an unknown category is rejected and writes nothing + Given an authenticated user "confused" + And "confused" gets their notification preferences + When "confused" turns off email for category "comment.mentions_you" + Then the response status should be 400 + When "confused" gets their notification preferences + Then the response status should be 200 + And every category should be unchanged from before + + Scenario: Reading preferences requires authentication + When an anonymous viewer gets notification preferences + Then the response status should be 401 + + Scenario: Updating preferences requires authentication + When an anonymous viewer updates notification preferences + Then the response status should be 401 + + Scenario: A user cannot change another user's preferences + Given an authenticated user "alice" + And an authenticated user "bob" + And "bob" gets their notification preferences + When "alice" turns off email for category "comment.on_your_model" + Then the response status should be 204 + When "bob" gets their notification preferences + Then the response status should be 200 + And every category should be unchanged from before + + Scenario: Commenting notifies other authors but never the commenter + Given an authenticated user "owner" + And a public model "Notify Model" created by "owner" + And an authenticated user "contributor" + And "owner" has added "contributor" as a contributor to "Notify Model" + And an authenticated user "commenter" + And mail delivery is captured + When "commenter" comments "Great work!" on "Notify Model" + Then the response status should be 201 + When the event processor queue is triggered + Then mail should have been sent to 2 recipients + And mail should have been sent to "owner" + And mail should have been sent to "contributor" + And mail should not have been sent to "commenter" + + Scenario: Commenting on your own model does not notify yourself + Given an authenticated user "owner" + And a public model "Solo Model" created by "owner" + And mail delivery is captured + When "owner" comments "Talking to myself" on "Solo Model" + Then the response status should be 201 + When the event processor queue is triggered + Then no mail should have been sent + + Scenario: A comment lands in the recipient's in-app feed + Given an authenticated user "owner" + And a public model "Feed Model" created by "owner" + And an authenticated user "commenter" + When "commenter" comments "Nice model!" on "Feed Model" + Then the response status should be 201 + When the comment notification has been delivered + And "owner" lists their notifications + Then the response status should be 200 + And the notification feed should contain 1 notification + And the notification feed should report 1 unread + And the first feed notification should have category "comment.on_your_model" + And the first feed notification should be unread + + Scenario: Marking a notification read clears it from the unread count + Given an authenticated user "owner" + And a public model "Read Model" created by "owner" + And an authenticated user "commenter" + When "commenter" comments "Ping" on "Read Model" + Then the response status should be 201 + When the comment notification has been delivered + And "owner" lists their notifications + And "owner" marks the first feed notification read + Then the response status should be 204 + When "owner" lists their notifications + Then the notification feed should report 0 unread + And the first feed notification should be read + + Scenario: A user cannot mark another user's notification read + Given an authenticated user "owner" + And a public model "Guarded Model" created by "owner" + And an authenticated user "commenter" + When "commenter" comments "Hello" on "Guarded Model" + Then the response status should be 201 + When the comment notification has been delivered + And "owner" lists their notifications + And "commenter" marks the first feed notification read + Then the response status should be 404 + When "owner" lists their notifications + Then the notification feed should report 1 unread + + Scenario: A category muted in-app is delivered by email but stays out of the feed + Given an authenticated user "owner" + And a public model "Quiet Model" created by "owner" + And "owner" mutes the in-app channel for category "comment.on_your_model" + And an authenticated user "commenter" + And mail delivery is captured + When "commenter" comments "Still emailed" on "Quiet Model" + Then the response status should be 201 + When the event processor queue is triggered + Then mail should have been sent to 1 recipients + When "owner" lists their notifications + Then the response status should be 200 + And the notification feed should contain 0 notifications + + Scenario: Reading the notification feed requires authentication + When an anonymous viewer lists notifications + Then the response status should be 401 + + Scenario: A recipient who opted out of the category receives nothing + Given an authenticated user "owner" + And a public model "Muted Model" created by "owner" + And "owner" opts out of category "comment.on_your_model" + And an authenticated user "commenter" + And mail delivery is captured + When "commenter" comments "Anyone home?" on "Muted Model" + Then the response status should be 201 + When the event processor queue is triggered + Then no mail should have been sent diff --git a/apps/modeling-commons-backend/tests/api/user-notification.steps.ts b/apps/modeling-commons-backend/tests/api/user-notification.steps.ts new file mode 100644 index 00000000..5f7291ed --- /dev/null +++ b/apps/modeling-commons-backend/tests/api/user-notification.steps.ts @@ -0,0 +1,371 @@ +import assert from 'node:assert'; +import { Given, Then, When } from '@cucumber/cucumber'; +import { PgBoss } from 'pg-boss'; +import type { FastifyInstance } from 'fastify'; +import env from '#src/config/env.ts'; +import type { ICustomWorld } from '../support/custom-world.ts'; +import type { TestUser } from '../support/auth-helper.ts'; +import userNotificationDomain from '#src/modules/user-notification/domain/user-notification.domain.ts'; + +// The real catalog, not a copy, keeps this suite honest about which categories +// exist without asserting on their label/description copy. +const KNOWN_CATEGORIES = userNotificationDomain().categories.map((c) => c.category); + +type CategoryPreference = { + category: string; + label: string; + description: string; + email: boolean; + inApp: boolean; +}; + +function getUsers(context: Record): Map { + if (!context['users']) context['users'] = new Map(); + return context['users'] as Map; +} + +function getSnapshots(context: Record): Map> { + if (!context['notificationSnapshots']) context['notificationSnapshots'] = new Map(); + return context['notificationSnapshots'] as Map>; +} + +function findCategory(list: Array, category: string): CategoryPreference { + const found = list.find((entry) => entry.category === category); + assert.ok(found, `category "${category}" missing from response`); + return found; +} + +When( + '{string} gets their notification preferences', + async function (this: ICustomWorld, name: string) { + const user = getUsers(this.context).get(name)!; + this.context['lastNotificationUser'] = name; + const response = await this.server.inject({ + method: 'GET', + url: '/api/v1/me/notification-preferences', + headers: { cookie: user.cookie }, + }); + this.context.latestResponse = response; + + const snapshots = getSnapshots(this.context); + if (response.statusCode === 200 && !snapshots.has(name)) { + const body = JSON.parse(response.body) as { categories: Array }; + snapshots.set(name, body.categories); + } + }, +); + +When( + '{string} turns off email for category {string}', + async function (this: ICustomWorld, name: string, category: string) { + const user = getUsers(this.context).get(name)!; + this.context['lastNotificationUser'] = name; + this.context['lastTouchedCategory'] = category; + this.context.latestResponse = await this.server.inject({ + method: 'PATCH', + url: '/api/v1/me/notification-preferences', + payload: { preferences: [{ category, email: false }] }, + headers: { cookie: user.cookie, 'content-type': 'application/json' }, + }); + }, +); + +Given( + '{string} opts out of category {string}', + async function (this: ICustomWorld, name: string, category: string) { + const user = getUsers(this.context).get(name)!; + await this.server.inject({ + method: 'PATCH', + url: '/api/v1/me/notification-preferences', + payload: { preferences: [{ category, email: false, inApp: false }] }, + headers: { cookie: user.cookie, 'content-type': 'application/json' }, + }); + }, +); + +When('an anonymous viewer gets notification preferences', async function (this: ICustomWorld) { + this.context.latestResponse = await this.server.inject({ + method: 'GET', + url: '/api/v1/me/notification-preferences', + }); +}); + +When('an anonymous viewer updates notification preferences', async function (this: ICustomWorld) { + this.context.latestResponse = await this.server.inject({ + method: 'PATCH', + url: '/api/v1/me/notification-preferences', + payload: { preferences: [{ category: KNOWN_CATEGORIES[0], email: false }] }, + headers: { 'content-type': 'application/json' }, + }); +}); + +Then( + 'the notification preferences response should list every known category', + function (this: ICustomWorld) { + const body = JSON.parse(this.context.latestResponse!.body) as { + categories: Array; + }; + const returned = body.categories.map((entry) => entry.category).sort(); + assert.deepStrictEqual(returned, [...KNOWN_CATEGORIES].sort()); + for (const entry of body.categories) { + assert.strictEqual(typeof entry.email, 'boolean'); + assert.strictEqual(typeof entry.inApp, 'boolean'); + } + }, +); + +Then('category {string} should have email false', function (this: ICustomWorld, category: string) { + const body = JSON.parse(this.context.latestResponse!.body) as { + categories: Array; + }; + const entry = findCategory(body.categories, category); + assert.strictEqual(entry.email, false); +}); + +Then( + 'category {string} should have the same inApp value as before', + function (this: ICustomWorld, category: string) { + const name = this.context['lastNotificationUser'] as string; + const before = findCategory(getSnapshots(this.context).get(name)!, category); + const body = JSON.parse(this.context.latestResponse!.body) as { + categories: Array; + }; + const after = findCategory(body.categories, category); + assert.strictEqual(after.inApp, before.inApp); + }, +); + +Then('every other category should be unchanged from before', function (this: ICustomWorld) { + const name = this.context['lastNotificationUser'] as string; + const touched = this.context['lastTouchedCategory'] as string | undefined; + const before = getSnapshots(this.context).get(name)!; + const body = JSON.parse(this.context.latestResponse!.body) as { + categories: Array; + }; + for (const beforeEntry of before) { + if (beforeEntry.category === touched) continue; + const afterEntry = findCategory(body.categories, beforeEntry.category); + assert.strictEqual(afterEntry.email, beforeEntry.email); + assert.strictEqual(afterEntry.inApp, beforeEntry.inApp); + } +}); + +Then('every category should be unchanged from before', function (this: ICustomWorld) { + const name = this.context['lastNotificationUser'] as string; + const before = getSnapshots(this.context).get(name)!; + const body = JSON.parse(this.context.latestResponse!.body) as { + categories: Array; + }; + for (const beforeEntry of before) { + const afterEntry = findCategory(body.categories, beforeEntry.category); + assert.strictEqual(afterEntry.email, beforeEntry.email); + assert.strictEqual(afterEntry.inApp, beforeEntry.inApp); + } +}); + +interface MailCall { + to: string; +} + +interface EventRow { + processedAt: Date | null; +} + +interface PrismaCradle { + prisma: { + event: { + findFirst: (args: { + where: { type: string }; + orderBy: { createdAt: 'desc' }; + }) => Promise; + }; + }; +} + +function installMailSpy(server: FastifyInstance): MailCall[] { + const calls: MailCall[] = []; + const mailService = server.diContainer.cradle.mailService as { + sendMailAsync: (content: unknown) => Promise; + }; + mailService.sendMailAsync = (content: unknown) => { + const { to } = content as { to?: string }; + calls.push({ to: to ?? '' }); + return Promise.resolve(); + }; + return calls; +} + +async function waitForCommentEventProcessed( + server: FastifyInstance, + timeoutMs = 70000, +): Promise { + const { prisma } = server.diContainer.cradle as unknown as PrismaCradle; + const start = Date.now(); + while (Date.now() - start < timeoutMs) { + const event = await prisma.event.findFirst({ + where: { type: 'model_comment.created' }, + orderBy: { createdAt: 'desc' }, + }); + if (event?.processedAt) return; + await new Promise((resolve) => setTimeout(resolve, 200)); + } + throw new Error(`model_comment.created event was not processed within ${timeoutMs}ms`); +} + +Given('mail delivery is captured', function (this: ICustomWorld) { + this.context['mailCalls'] = installMailSpy(this.server); +}); + +Then( + 'mail should have been sent to {int} recipients', + async function (this: ICustomWorld, count: number) { + await waitForCommentEventProcessed(this.server); + const calls = this.context['mailCalls'] as MailCall[]; + assert.strictEqual(calls.length, count); + }, +); + +Then('mail should have been sent to {string}', function (this: ICustomWorld, actorName: string) { + const calls = this.context['mailCalls'] as MailCall[]; + const actor = getUsers(this.context).get(actorName)!; + assert.ok( + calls.some((call) => call.to === actor.email), + `Expected an email to be sent to ${actor.email}`, + ); +}); + +Then( + 'mail should not have been sent to {string}', + function (this: ICustomWorld, actorName: string) { + const calls = this.context['mailCalls'] as MailCall[]; + const actor = getUsers(this.context).get(actorName)!; + assert.ok( + !calls.some((call) => call.to === actor.email), + `Expected no email to be sent to ${actor.email}`, + ); + }, +); + +Then('no mail should have been sent', async function (this: ICustomWorld) { + await waitForCommentEventProcessed(this.server); + const calls = this.context['mailCalls'] as MailCall[]; + assert.strictEqual(calls.length, 0); +}); + +interface FeedNotification { + id: string; + category: string; + title: string; + body: string; + url: string; + createdAt: string; + readAt: string | null; +} + +interface NotificationFeed { + count: number; + limit: number; + page: number; + data: Array; + unreadCount: number; +} + +function getFeed(context: Record): NotificationFeed { + return JSON.parse((context['latestResponse'] as { body: string }).body) as NotificationFeed; +} + +function firstFeedNotification(context: Record): FeedNotification { + const feed = context['notificationFeed'] as NotificationFeed | undefined; + assert.ok(feed, 'no notification feed has been read yet'); + const first = feed.data[0]; + assert.ok(first, 'the notification feed is empty'); + return first; +} + +Given( + '{string} mutes the in-app channel for category {string}', + async function (this: ICustomWorld, name: string, category: string) { + const user = getUsers(this.context).get(name)!; + this.context.latestResponse = await this.server.inject({ + method: 'PATCH', + url: '/api/v1/me/notification-preferences', + payload: { preferences: [{ category, inApp: false }] }, + headers: { cookie: user.cookie, 'content-type': 'application/json' }, + }); + }, +); + +When('the comment notification has been delivered', async function (this: ICustomWorld) { + const boss = new PgBoss(env.db.url); + await boss.start(); + try { + await boss.send('process-events', {}); + } finally { + await boss.stop({ graceful: false }); + } + await waitForCommentEventProcessed(this.server); +}); + +When('{string} lists their notifications', async function (this: ICustomWorld, name: string) { + const user = getUsers(this.context).get(name)!; + this.context.latestResponse = await this.server.inject({ + method: 'GET', + url: '/api/v1/me/notifications', + headers: { cookie: user.cookie }, + }); + if (this.context.latestResponse.statusCode === 200) { + this.context['notificationFeed'] = getFeed(this.context); + } +}); + +When('an anonymous viewer lists notifications', async function (this: ICustomWorld) { + this.context.latestResponse = await this.server.inject({ + method: 'GET', + url: '/api/v1/me/notifications', + }); +}); + +When( + '{string} marks the first feed notification read', + async function (this: ICustomWorld, name: string) { + const user = getUsers(this.context).get(name)!; + const notification = firstFeedNotification(this.context); + this.context.latestResponse = await this.server.inject({ + method: 'PATCH', + url: `/api/v1/me/notifications/${notification.id}/read`, + headers: { cookie: user.cookie }, + }); + }, +); + +Then( + 'the notification feed should contain {int} notification(s)', + function (this: ICustomWorld, expected: number) { + const feed = getFeed(this.context); + assert.strictEqual(feed.data.length, expected); + assert.strictEqual(feed.count, expected); + }, +); + +Then( + 'the notification feed should report {int} unread', + function (this: ICustomWorld, expected: number) { + assert.strictEqual(getFeed(this.context).unreadCount, expected); + }, +); + +Then( + 'the first feed notification should have category {string}', + function (this: ICustomWorld, category: string) { + assert.strictEqual(firstFeedNotification(this.context).category, category); + }, +); + +Then('the first feed notification should be unread', function (this: ICustomWorld) { + assert.strictEqual(firstFeedNotification(this.context).readAt, null); +}); + +Then('the first feed notification should be read', function (this: ICustomWorld) { + const first = firstFeedNotification(this.context); + assert.ok(first.readAt, 'expected the notification to carry a readAt timestamp'); +}); diff --git a/apps/modeling-commons-backend/tests/api/workers.feature b/apps/modeling-commons-backend/tests/api/workers.feature index ce965707..615a6af3 100644 --- a/apps/modeling-commons-backend/tests/api/workers.feature +++ b/apps/modeling-commons-backend/tests/api/workers.feature @@ -8,3 +8,18 @@ Feature: Background workers And an unprocessed event of type "test.event" exists for "actor" When the event processor queue is triggered Then the event should be marked processed within 10 seconds + + Scenario: A failing dispatch increments attempts and records the error instead of processing + Given an authenticated user "actor" + And an unprocessed event of type "test.event" exists for "actor" + And dispatching that event is rigged to fail once + When the event processor queue is triggered + Then the event should have 1 attempt and a recorded error within 10 seconds + And the event should still be unprocessed + + Scenario: An event at the retry ceiling is not picked up again + Given an authenticated user "actor" + And an unprocessed event of type "test.event" exists for "actor" with 5 prior attempts + When the event processor queue is triggered + Then the event should still have 5 attempts after 3 seconds + And the event should still be unprocessed diff --git a/apps/modeling-commons-backend/tests/api/workers.steps.ts b/apps/modeling-commons-backend/tests/api/workers.steps.ts index 38e5cda4..8d87cd66 100644 --- a/apps/modeling-commons-backend/tests/api/workers.steps.ts +++ b/apps/modeling-commons-backend/tests/api/workers.steps.ts @@ -1,25 +1,42 @@ -import { Given, When, Then } from '@cucumber/cucumber'; +import { After, Given, When, Then } from '@cucumber/cucumber'; import { PgBoss } from 'pg-boss'; import env from '#src/config/env.ts'; import type { ICustomWorld } from '../support/custom-world.ts'; import type { TestUser } from '../support/auth-helper.ts'; +interface EventRow { + id: string; + processedAt: Date | null; + attempts: number; + lastError: string | null; +} + interface PrismaCradle { prisma: { event: { create: (args: { data: Record }) => Promise<{ id: string }>; - findUnique: (args: { - where: { id: string }; - }) => Promise<{ id: string; processedAt: Date | null } | null>; + findUnique: (args: { where: { id: string } }) => Promise; }; }; } +interface EventDispatcherCradle { + eventDispatcherService: { + dispatch: (event: unknown) => Promise; + }; +} + function getUsers(context: Record): Map { if (!context['users']) context['users'] = new Map(); return context['users'] as Map; } +async function loadEvent(this: ICustomWorld): Promise { + const eventId = this.context['pendingEventId'] as string; + const { prisma } = this.server.diContainer.cradle as unknown as PrismaCradle; + return prisma.event.findUnique({ where: { id: eventId } }); +} + Given( 'an unprocessed event of type {string} exists for {string}', async function (this: ICustomWorld, eventType: string, actorName: string) { @@ -38,6 +55,50 @@ Given( }, ); +Given( + 'an unprocessed event of type {string} exists for {string} with {int} prior attempts', + async function (this: ICustomWorld, eventType: string, actorName: string, attempts: number) { + const actor = getUsers(this.context).get(actorName)!; + const { prisma } = this.server.diContainer.cradle as unknown as PrismaCradle; + const event = await prisma.event.create({ + data: { + type: eventType, + actorId: actor.id, + resourceType: 'test', + resourceId: actor.id, + payload: {}, + attempts, + }, + }); + this.context['pendingEventId'] = event.id; + }, +); + +// `eventDispatcherService` is a DI singleton shared across the whole scenario run +// (same pattern as the mail/repository spies in model-comment.steps.ts), so the +// After hook below restores the original `dispatch` rather than leaving a scenario's +// rig in place for whatever runs next. +Given('dispatching that event is rigged to fail once', function (this: ICustomWorld) { + const { eventDispatcherService } = this.server.diContainer.cradle as unknown as EventDispatcherCradle; + const original = eventDispatcherService.dispatch.bind(eventDispatcherService); + let hasFailed = false; + eventDispatcherService.dispatch = async (event: unknown) => { + if (!hasFailed) { + hasFailed = true; + throw new Error('workers.feature: rigged dispatch failure'); + } + return original(event); + }; + this.context['restoreDispatch'] = () => { + eventDispatcherService.dispatch = original; + }; +}); + +After(function (this: ICustomWorld) { + const restore = this.context['restoreDispatch'] as (() => void) | undefined; + restore?.(); +}); + When('the event processor queue is triggered', async function (this: ICustomWorld) { const boss = new PgBoss(env.db.url); await boss.start(); @@ -52,11 +113,10 @@ Then( 'the event should be marked processed within {int} seconds', async function (this: ICustomWorld, seconds: number) { const eventId = this.context['pendingEventId'] as string; - const { prisma } = this.server.diContainer.cradle as unknown as PrismaCradle; const deadline = Date.now() + seconds * 1000; while (Date.now() < deadline) { - const event = await prisma.event.findUnique({ where: { id: eventId } }); + const event = await loadEvent.call(this); if (event?.processedAt) return; await new Promise((resolve) => setTimeout(resolve, 250)); } @@ -64,3 +124,51 @@ Then( throw new Error(`Event ${eventId} was not processed within ${seconds}s`); }, ); + +Then( + 'the event should have {int} attempt(s) and a recorded error within {int} seconds', + async function (this: ICustomWorld, expectedAttempts: number, seconds: number) { + const eventId = this.context['pendingEventId'] as string; + const deadline = Date.now() + seconds * 1000; + + while (Date.now() < deadline) { + const event = await loadEvent.call(this); + if (event && event.attempts > 0 && event.lastError) { + if (event.attempts !== expectedAttempts) { + throw new Error( + `Expected event ${eventId} to have ${expectedAttempts} attempt(s), got ${event.attempts}`, + ); + } + return; + } + await new Promise((resolve) => setTimeout(resolve, 250)); + } + + throw new Error( + `Event ${eventId} did not reach ${expectedAttempts} attempt(s) with a recorded error within ${seconds}s`, + ); + }, +); + +Then( + 'the event should still have {int} attempt(s) after {int} seconds', + async function (this: ICustomWorld, expectedAttempts: number, seconds: number) { + await new Promise((resolve) => setTimeout(resolve, seconds * 1000)); + + const eventId = this.context['pendingEventId'] as string; + const event = await loadEvent.call(this); + if (!event || event.attempts !== expectedAttempts) { + throw new Error( + `Expected event ${eventId} to still have ${expectedAttempts} attempt(s), got ${event?.attempts}`, + ); + } + }, +); + +Then('the event should still be unprocessed', async function (this: ICustomWorld) { + const eventId = this.context['pendingEventId'] as string; + const event = await loadEvent.call(this); + if (!event || event.processedAt) { + throw new Error(`Expected event ${eventId} to remain unprocessed`); + } +}); diff --git a/apps/modeling-commons-frontend/shared/types/api.d.ts b/apps/modeling-commons-frontend/shared/types/api.d.ts index 81df42ad..1c857a3b 100644 --- a/apps/modeling-commons-frontend/shared/types/api.d.ts +++ b/apps/modeling-commons-frontend/shared/types/api.d.ts @@ -2298,7 +2298,7 @@ export interface paths { limit?: number; /** @description Page number */ page?: number; - sort?: "createdAt" | "likes"; + sort?: "createdAt" | "newest" | "likes"; }; header?: never; path: { @@ -2487,7 +2487,6 @@ export interface paths { limit?: number; /** @description Page number */ page?: number; - sort?: "createdAt" | "likes"; }; header?: never; path: { @@ -6376,6 +6375,358 @@ export interface paths { patch?: never; trace?: never; }; + "/api/v1/me/notification-preferences": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Default Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + categories: { + category: string; + label: string; + description: string; + email: boolean; + inApp: boolean; + }[]; + }; + }; + }; + /** @description Default Response */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": { + preferences: { + category: string; + email?: boolean; + inApp?: boolean; + }[]; + }; + }; + }; + responses: { + /** @description Default Response */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + }; + }; + trace?: never; + }; + "/api/v1/me/notifications": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: { + parameters: { + query?: { + /** @description Specifies a limit of returned records */ + limit?: number; + /** @description Page number */ + page?: number; + /** + * @description Only return notifications created at or after this instant + * @example 2026-07-28T12:00:00.000Z + */ + since?: string; + /** @description Only return notifications that have not been read yet */ + unreadOnly?: boolean; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Default Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + /** + * @description Total number of items + * @example 5 + */ + count: number; + /** + * @description Number of items per page + * @example 10 + */ + limit: number; + /** + * @description Page number + * @example 0 + */ + page: number; + data: unknown[]; + } & { + data: { + /** Format: uuid */ + id: string; + /** @enum {unknown} */ + category: "comment.on_your_model" | "comment.reply_to_you" | "general.daily_digest"; + title: string; + body: string; + /** Format: uri */ + url: string; + /** Format: date-time */ + createdAt: string; + readAt: string | null; + }[]; + /** @description Unread notifications across every in-app category, ignoring the page filters */ + unreadCount: number; + }; + }; + }; + /** @description Default Response */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/me/notifications/{id}/read": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Entity's id */ + id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Default Response */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + /** @description Default Response */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["def-0"]; + }; + }; + }; + }; + trace?: never; + }; "/api/health": { parameters: { query?: never;