From 5023905519d70c84d46b9d9b74e9b685cc9aca88 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale Date: Tue, 21 Jul 2026 18:38:27 +0530 Subject: [PATCH 1/3] docs(partners): add Sign in with Appwrite section --- .optimize-cache.json | 16 + src/lib/utils/code.ts | 2 + src/lib/utils/references.ts | 2 + src/routes/docs/Sidebar.svelte | 18 + src/routes/docs/partners/apps/+layout.svelte | 51 + src/routes/docs/partners/apps/+page.markdoc | 72 + .../docs/partners/apps/consent/+page.markdoc | 46 + .../partners/apps/quick-start/+page.markdoc | 953 +++++ .../partners/apps/registration/+page.markdoc | 666 ++++ .../docs/partners/apps/scopes/+page.markdoc | 83 + .../docs/partners/apps/tokens/+page.markdoc | 107 + .../docs/partners/project/+layout.svelte | 96 + .../docs/partners/project/+page.markdoc | 463 +++ .../partners/project/api-keys/+page.markdoc | 1628 ++++++++ .../project/auth-methods/+page.markdoc | 287 ++ .../project/branded-emails/+page.markdoc | 900 +++++ .../project/email-templates/+page.markdoc | 872 +++++ .../environment-variables/+page.markdoc | 1222 ++++++ .../project/key-rotation/+page.markdoc | 811 ++++ .../partners/project/labels/+page.markdoc | 270 ++ .../project/mock-phones/+page.markdoc | 1098 ++++++ .../docs/partners/project/oauth/+page.markdoc | 1060 +++++ .../partners/project/platforms/+page.markdoc | 1206 ++++++ .../partners/project/policies/+page.markdoc | 3407 +++++++++++++++++ .../partners/project/protocols/+page.markdoc | 285 ++ .../project/provisioning/+page.markdoc | 757 ++++ .../partners/project/services/+page.markdoc | 296 ++ .../docs/partners/project/smtp/+page.markdoc | 605 +++ .../partners/apps/account-applications.avif | Bin 0 -> 19610 bytes .../docs/partners/apps/consent-screen.avif | Bin 0 -> 12013 bytes .../apps/dark/account-applications.avif | Bin 0 -> 21521 bytes .../partners/apps/dark/consent-screen.avif | Bin 0 -> 12018 bytes .../docs/partners/apps/dark/device-code.avif | Bin 0 -> 6291 bytes .../apps/dark/quick-start-consent.avif | Bin 0 -> 11545 bytes .../apps/dark/quick-start-provider-setup.avif | Bin 0 -> 22179 bytes .../apps/dark/registration-marketplace.avif | Bin 0 -> 27546 bytes .../apps/dark/registration-oauth-client.avif | Bin 0 -> 31961 bytes .../apps/dark/registration-secrets.avif | Bin 0 -> 24871 bytes .../docs/partners/apps/device-code.avif | Bin 0 -> 6250 bytes .../partners/apps/quick-start-consent.avif | Bin 0 -> 11628 bytes .../apps/quick-start-provider-setup.avif | Bin 0 -> 21072 bytes .../apps/registration-marketplace.avif | Bin 0 -> 25620 bytes .../apps/registration-oauth-client.avif | Bin 0 -> 30091 bytes .../partners/apps/registration-secrets.avif | Bin 0 -> 23251 bytes static/images/docs/project/auth-methods.avif | Bin 0 -> 30910 bytes .../images/docs/project/create-api-key.avif | Bin 0 -> 14966 bytes .../docs/project/dark/auth-methods.avif | Bin 0 -> 34406 bytes .../docs/project/dark/create-api-key.avif | Bin 0 -> 17537 bytes .../docs/project/dark/email-templates.avif | Bin 0 -> 30610 bytes static/images/docs/project/dark/labels.avif | Bin 0 -> 32758 bytes .../images/docs/project/dark/mock-phones.avif | Bin 0 -> 43735 bytes .../docs/project/dark/oauth-providers.avif | Bin 0 -> 36614 bytes .../images/docs/project/dark/platforms.avif | Bin 0 -> 28928 bytes static/images/docs/project/dark/policies.avif | Bin 0 -> 29586 bytes .../images/docs/project/dark/protocols.avif | Bin 0 -> 44395 bytes static/images/docs/project/dark/services.avif | Bin 0 -> 46978 bytes static/images/docs/project/dark/smtp.avif | Bin 0 -> 29672 bytes .../images/docs/project/email-templates.avif | Bin 0 -> 26600 bytes static/images/docs/project/labels.avif | Bin 0 -> 27825 bytes static/images/docs/project/mock-phones.avif | Bin 0 -> 36779 bytes .../images/docs/project/oauth-providers.avif | Bin 0 -> 33453 bytes static/images/docs/project/platforms.avif | Bin 0 -> 25120 bytes static/images/docs/project/policies.avif | Bin 0 -> 25371 bytes static/images/docs/project/protocols.avif | Bin 0 -> 37565 bytes static/images/docs/project/services.avif | Bin 0 -> 40047 bytes static/images/docs/project/smtp.avif | Bin 0 -> 24970 bytes 66 files changed, 17279 insertions(+) create mode 100644 src/routes/docs/partners/apps/+layout.svelte create mode 100644 src/routes/docs/partners/apps/+page.markdoc create mode 100644 src/routes/docs/partners/apps/consent/+page.markdoc create mode 100644 src/routes/docs/partners/apps/quick-start/+page.markdoc create mode 100644 src/routes/docs/partners/apps/registration/+page.markdoc create mode 100644 src/routes/docs/partners/apps/scopes/+page.markdoc create mode 100644 src/routes/docs/partners/apps/tokens/+page.markdoc create mode 100644 src/routes/docs/partners/project/+layout.svelte create mode 100644 src/routes/docs/partners/project/+page.markdoc create mode 100644 src/routes/docs/partners/project/api-keys/+page.markdoc create mode 100644 src/routes/docs/partners/project/auth-methods/+page.markdoc create mode 100644 src/routes/docs/partners/project/branded-emails/+page.markdoc create mode 100644 src/routes/docs/partners/project/email-templates/+page.markdoc create mode 100644 src/routes/docs/partners/project/environment-variables/+page.markdoc create mode 100644 src/routes/docs/partners/project/key-rotation/+page.markdoc create mode 100644 src/routes/docs/partners/project/labels/+page.markdoc create mode 100644 src/routes/docs/partners/project/mock-phones/+page.markdoc create mode 100644 src/routes/docs/partners/project/oauth/+page.markdoc create mode 100644 src/routes/docs/partners/project/platforms/+page.markdoc create mode 100644 src/routes/docs/partners/project/policies/+page.markdoc create mode 100644 src/routes/docs/partners/project/protocols/+page.markdoc create mode 100644 src/routes/docs/partners/project/provisioning/+page.markdoc create mode 100644 src/routes/docs/partners/project/services/+page.markdoc create mode 100644 src/routes/docs/partners/project/smtp/+page.markdoc create mode 100644 static/images/docs/partners/apps/account-applications.avif create mode 100644 static/images/docs/partners/apps/consent-screen.avif create mode 100644 static/images/docs/partners/apps/dark/account-applications.avif create mode 100644 static/images/docs/partners/apps/dark/consent-screen.avif create mode 100644 static/images/docs/partners/apps/dark/device-code.avif create mode 100644 static/images/docs/partners/apps/dark/quick-start-consent.avif create mode 100644 static/images/docs/partners/apps/dark/quick-start-provider-setup.avif create mode 100644 static/images/docs/partners/apps/dark/registration-marketplace.avif create mode 100644 static/images/docs/partners/apps/dark/registration-oauth-client.avif create mode 100644 static/images/docs/partners/apps/dark/registration-secrets.avif create mode 100644 static/images/docs/partners/apps/device-code.avif create mode 100644 static/images/docs/partners/apps/quick-start-consent.avif create mode 100644 static/images/docs/partners/apps/quick-start-provider-setup.avif create mode 100644 static/images/docs/partners/apps/registration-marketplace.avif create mode 100644 static/images/docs/partners/apps/registration-oauth-client.avif create mode 100644 static/images/docs/partners/apps/registration-secrets.avif create mode 100644 static/images/docs/project/auth-methods.avif create mode 100644 static/images/docs/project/create-api-key.avif create mode 100644 static/images/docs/project/dark/auth-methods.avif create mode 100644 static/images/docs/project/dark/create-api-key.avif create mode 100644 static/images/docs/project/dark/email-templates.avif create mode 100644 static/images/docs/project/dark/labels.avif create mode 100644 static/images/docs/project/dark/mock-phones.avif create mode 100644 static/images/docs/project/dark/oauth-providers.avif create mode 100644 static/images/docs/project/dark/platforms.avif create mode 100644 static/images/docs/project/dark/policies.avif create mode 100644 static/images/docs/project/dark/protocols.avif create mode 100644 static/images/docs/project/dark/services.avif create mode 100644 static/images/docs/project/dark/smtp.avif create mode 100644 static/images/docs/project/email-templates.avif create mode 100644 static/images/docs/project/labels.avif create mode 100644 static/images/docs/project/mock-phones.avif create mode 100644 static/images/docs/project/oauth-providers.avif create mode 100644 static/images/docs/project/platforms.avif create mode 100644 static/images/docs/project/policies.avif create mode 100644 static/images/docs/project/protocols.avif create mode 100644 static/images/docs/project/services.avif create mode 100644 static/images/docs/project/smtp.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index 828a3aaef7..2d9b435507 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1593,6 +1593,22 @@ "static/images/docs/network/edges-map.png": "12ecc1ea200905ba75eb7cfd17055a156fd51fccf746869a1058f923dfd7ac1b", "static/images/docs/network/pops-map.png": "205ead599703cf47d0df316db8fcc4f48d5eed01508109fc740d17914275e9ab", "static/images/docs/network/regions-map.png": "c65f1423ab19c3048bf8bf93117e8f2e1d13a2bc705c00307de7ee821e5668a1", + "static/images/docs/partners/apps/account-applications.png": "85b60bff922db940aafe30a3eb5c1646d66a30f6d7894df2f0c14c65bd79d7e6", + "static/images/docs/partners/apps/consent-screen.png": "5c6875f7d9af0180d0c5859bac2c57bb620a2243aac72530ca122a40f3758b50", + "static/images/docs/partners/apps/dark/account-applications.png": "03389413091ae6530ebb592d9aade7248b0b8b1a34e4a1b90c3f48480bf01ae3", + "static/images/docs/partners/apps/dark/consent-screen.png": "cfb1385940b821a39a90e2c2010d6a9d86b7d02373adb564e78711088acd092c", + "static/images/docs/partners/apps/dark/device-code.png": "e84f23cfcd904cf5fa5aef2642738fb6ce2289135c8f7d74c5b85d36b3da127c", + "static/images/docs/partners/apps/dark/quick-start-consent.png": "2f94d24187e22f9391e86b5029b9b3cf47189b49ca6db8858eca2851b21bccec", + "static/images/docs/partners/apps/dark/quick-start-provider-setup.png": "55a2bd989f7d7237d17d2bdae78d5d1cce8adadd01e6c155ff1c766cb26a1fb2", + "static/images/docs/partners/apps/dark/registration-marketplace.png": "e7af87266c488d7627d5334f9b4264afbbbcdf26f61e3cef1d44685e19008948", + "static/images/docs/partners/apps/dark/registration-oauth-client.png": "5cedae65dc096c51c644b7a8946525171a62398b20ffa593db86b6ad4aef7972", + "static/images/docs/partners/apps/dark/registration-secrets.png": "fb81e51364c7ff4267fcc985b9556e697b5541b16b7520e9b5780b1cb3477dc2", + "static/images/docs/partners/apps/device-code.png": "1afe19a6a183e2a0da2a4777db710d2b88e28e3dc51d0fedaed3dbcee1b29580", + "static/images/docs/partners/apps/quick-start-consent.png": "4515e2c9bee7c0e269bc3878bf0a804942b9f39fba103a2feda5b71aedf3acbc", + "static/images/docs/partners/apps/quick-start-provider-setup.png": "1c3dce9dc68df86c0744d86cfa0e2bcb2185fdc52f5fe22138ab8d21b1f571f2", + "static/images/docs/partners/apps/registration-marketplace.png": "0b9aa3fb30a5c8dc0fa857c177f6bc714c490933c395c14957c56d27f099ccc3", + "static/images/docs/partners/apps/registration-oauth-client.png": "bf6d7c6afb0d8f75371ca261386c06a3f0a8e1942a1cec2fb910a296c2f707fb", + "static/images/docs/partners/apps/registration-secrets.png": "92e6ecff867e92d64aa6ceea0b67a711b7e1d715c9f3f99dc4df10e663a68aa0", "static/images/docs/platform/add-platform.png": "5a05bb9d75a8d5270bfa5e67df7e6de20a9fad174476a112b5bdab72e7bdad30", "static/images/docs/platform/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", "static/images/docs/platform/create-webhook.png": "77e08173da6ac534524e025433cf75e532d853a135944a7c6ba2278357d88b2d", diff --git a/src/lib/utils/code.ts b/src/lib/utils/code.ts index 87503c1066..f58058218a 100644 --- a/src/lib/utils/code.ts +++ b/src/lib/utils/code.ts @@ -54,6 +54,8 @@ const languages = { java: java, cpp: cpp, bash: bash, + curl: bash, + hurl: http, powershell: powershell, cmd: dos, yaml: yaml, diff --git a/src/lib/utils/references.ts b/src/lib/utils/references.ts index ad3358eebf..bc2dda57f8 100644 --- a/src/lib/utils/references.ts +++ b/src/lib/utils/references.ts @@ -136,6 +136,8 @@ export const platformMap: Record = { csharp: 'C#', cpp: 'C++', bash: 'Bash', + curl: 'cURL', + hurl: 'Hurl', powershell: 'PowerShell', cmd: 'CMD', yaml: 'YAML', diff --git a/src/routes/docs/Sidebar.svelte b/src/routes/docs/Sidebar.svelte index a3334b9bdc..ba4e59c671 100644 --- a/src/routes/docs/Sidebar.svelte +++ b/src/routes/docs/Sidebar.svelte @@ -93,6 +93,24 @@ } ] }, + { + label: 'Partners', + items: [ + { + label: 'Project', + href: '/docs/partners/project', + icon: 'icon-briefcase', + isParent: true + }, + { + label: 'Apps', + href: '/docs/partners/apps', + icon: 'icon-key', + isParent: true, + new: isNewUntil('31 Aug 2026') + } + ] + }, { label: 'Utilities', collapsible: true, diff --git a/src/routes/docs/partners/apps/+layout.svelte b/src/routes/docs/partners/apps/+layout.svelte new file mode 100644 index 0000000000..807565ae27 --- /dev/null +++ b/src/routes/docs/partners/apps/+layout.svelte @@ -0,0 +1,51 @@ + + + + + + diff --git a/src/routes/docs/partners/apps/+page.markdoc b/src/routes/docs/partners/apps/+page.markdoc new file mode 100644 index 0000000000..6808f9f706 --- /dev/null +++ b/src/routes/docs/partners/apps/+page.markdoc @@ -0,0 +1,72 @@ +--- +layout: article +title: Sign in with Appwrite +description: Build apps that access your users' Appwrite projects and organizations with consent-based, scoped OAuth2 tokens instead of pasted API keys. +back: /docs +--- + +Appwrite is an **OAuth 2.1 and OpenID Connect provider**. Your app can send any Appwrite user to a consent screen, ask for access to the projects and organizations they choose, and receive tokens that call their project APIs directly. This is **Sign in with Appwrite**: the same consent flow users know from "Sign in with Google", pointed at their Appwrite account and backend. + +Before this, a tool that worked with a user's Appwrite project asked them to create an API key and paste it in. That key never expired unless they remembered it, carried whatever scopes they picked under pressure, and had to be repeated for every project. With Sign in with Appwrite, the user approves once, picks the projects your app can reach, and can revoke everything from their account page at any time. + +{% info title="Building your own provider?" %} +This section is for apps that build on top of Appwrite itself. To make your own product an OAuth provider so that third parties can offer "Sign in with your product", see the [OAuth2 server](/docs/products/auth/oauth-server) documentation. +{% /info %} + +# What you can build {% #what-you-can-build %} + +Your app authenticates the user once and then acts on their Appwrite resources with the scopes they granted. + +- **Dashboards and monitors** that read usage, logs, and data across the projects a user selects. +- **Deployment tools** that push functions and sites into a customer's project without holding a key. +- **CLIs and devices** that sign in with a short user code instead of a browser redirect. +- **AI agents and MCP clients** that operate under scopes the user can narrow to read-only. + +# How it works {% #how-it-works %} + +Sign in with Appwrite is the authorization code flow from OAuth 2.1, served by Appwrite. + +1. **Your app redirects the user** to the Appwrite authorization endpoint with the scopes it needs. +2. **Appwrite shows the consent screen.** The user sees your app's name and logo, reviews the requested permissions, and picks which projects and organizations they apply to. They can narrow the request, down to read-only. +3. **Your app receives an authorization code** at its redirect URI and exchanges it for an access token, a refresh token, and an ID token. +4. **Your app calls Appwrite APIs** with the access token as a bearer token, on any of the granted projects, in any region. + +Because the provider is spec-compliant, any OAuth or OIDC library works against the discovery document without Appwrite-specific code: + +```text +https://cloud.appwrite.io/v1/oauth2/console/.well-known/openid-configuration +``` + +Users stay in control after the redirect too. Every authorization appears on their account's applications page, where they see the scopes your app holds and the tokens issued under it, and can revoke a token family or the whole authorization at any time. + +# Explore {% #explore %} + +{% cards %} +{% cards_item href="/docs/partners/apps/quick-start" title="Quick start" %} +Register an app and run the full flow, from consent to your first authorized API call. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/registration" title="Registration" %} +Register your app in the Console or from code with the Apps API. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/scopes" title="Scopes" %} +The scope catalog and how grants target specific projects and organizations. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/consent" title="Consent" %} +What users see, what they can change, and what your app receives. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/tokens" title="Tokens" %} +Use, refresh, and revoke the tokens Appwrite issues to your app. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/dashboards" title="Dashboards" %} +Build a read-only dashboard over the projects a user selects. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/deployments" title="Deployments" %} +Deploy functions and sites into a user's project with write scopes. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/device-flow" title="Device flow" %} +Sign in from CLIs and devices with a short user code. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/agents" title="Agents" %} +Connect AI agents and MCP clients to your users' projects. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/partners/apps/consent/+page.markdoc b/src/routes/docs/partners/apps/consent/+page.markdoc new file mode 100644 index 0000000000..92556f0442 --- /dev/null +++ b/src/routes/docs/partners/apps/consent/+page.markdoc @@ -0,0 +1,46 @@ +--- +layout: article +title: Consent +description: What users see on the Sign in with Appwrite consent screen, what they can change, and what your app receives. +back: /docs/partners/apps +--- + +Consent is where the user decides. Appwrite hosts the screen, renders what your app asked for, and gives the user the final say over scopes and targets. Your app never sees the screen; it sees the outcome. + +# The consent screen {% #consent-screen %} + +{% only_dark %} +![Consent screen showing app identity, requested permissions, and project selection](/images/docs/partners/apps/dark/consent-screen.avif) +{% /only_dark %} +{% only_light %} +![Consent screen showing app identity, requested permissions, and project selection](/images/docs/partners/apps/consent-screen.avif) +{% /only_light %} + +The screen leads with your app's identity: the name, logo, and tagline from [registration](/docs/partners/apps/registration), with the privacy policy and terms linked in the footer. Below it, each requested scope appears as a permission line in plain language, and a summary states the overall reach, from "view your identity" for a bare OIDC request up to full account access. + +When the request targets projects or organizations, the screen shows a picker. A wildcard request becomes a list of the user's resources to choose from; a request for named IDs shows those resources for confirmation. The user signs in first if no session exists, and can switch accounts from the screen itself. + +# Users can grant less {% #partial-grants %} + +The user approves the request as a whole, a subset of it, or nothing. They deselect projects, drop scopes, and for agent-style grants toggle whole categories to read-only. Only `openid` always survives approval, so an approved flow always identifies the user. + +Your app learns the outcome from the token response: `scope` holds the scopes that survived, `authorization_details` the targets. Build for partial grants from the start. A dashboard asked to read five projects but granted two should show two projects, not an error. + +# When the screen is skipped {% #consent-reuse %} + +Appwrite remembers approvals. A returning user is redirected straight back to your app, without seeing the screen, when the new request stays inside the stored consent: no new scopes, and `authorization_details` identical to what was approved. The screen reappears when anything differs, including a request that omits `authorization_details` after a consent that had them, so send the same authorization parameters on every sign-in. + +Two request parameters override this. `prompt=consent` forces the screen even when a matching consent exists, and `prompt=none` forbids it, returning `error=consent_required` or `error=login_required` instead of showing UI. Use `prompt=none` to probe for existing access silently. + +# Revocation {% #revocation %} + +{% only_dark %} +![Account applications page listing authorized apps with their token families](/images/docs/partners/apps/dark/account-applications.avif) +{% /only_dark %} +{% only_light %} +![Account applications page listing authorized apps with their token families](/images/docs/partners/apps/account-applications.avif) +{% /only_light %} + +Every consent appears on the user's account applications page, which lists each authorized app, the scopes it holds, and the tokens issued under it. The user revokes a single token or the whole consent; revoking the consent invalidates every token your app holds for that user. + +Your app sees revocation as failure, not as a message: token refreshes and API calls start returning `401`. Handle it by sending the user through authorization again. To leave cleanly, delete on your side too: revoke the tokens you hold at the [revocation endpoint](/docs/partners/apps/tokens#revocation) when a user disconnects your app. diff --git a/src/routes/docs/partners/apps/quick-start/+page.markdoc b/src/routes/docs/partners/apps/quick-start/+page.markdoc new file mode 100644 index 0000000000..86453b8101 --- /dev/null +++ b/src/routes/docs/partners/apps/quick-start/+page.markdoc @@ -0,0 +1,953 @@ +--- +layout: article +title: Start with Sign in with Appwrite +description: Register an app and run the full Sign in with Appwrite flow, from consent screen to your first authorized API call. +back: /docs/partners/apps +--- + +This guide builds Sign in with Appwrite into an app, start to finish. The running example is Horizon, a deployment dashboard: a user clicks its sign-in button, approves access on the Appwrite consent screen, and Horizon reads their projects with the tokens it receives. By the end, you will have run the same journey with your own app. + +You need a server that can receive a redirect and keep a client secret. The examples use `http://localhost:7700/oauth/callback` as the redirect URI; replace it with your own. + +# Register your app {% #register %} + +{% only_dark %} +![Marketplace tab of an organization with the Add app action](/images/docs/partners/apps/dark/registration-marketplace.avif) +{% /only_dark %} +{% only_light %} +![Marketplace tab of an organization with the Add app action](/images/docs/partners/apps/registration-marketplace.avif) +{% /only_light %} + +Before Appwrite can show your app to anyone, it needs to know the app exists. In the Console, open your organization's **Marketplace** tab and click **Add app**. Give it a name, a slug, a category, and a short description; the slug becomes your client ID, so Horizon signs in as `horizon`. + +{% only_dark %} +![OAuth client page with client type and redirect URIs](/images/docs/partners/apps/dark/registration-oauth-client.avif) +{% /only_dark %} +{% only_light %} +![OAuth client page with client type and redirect URIs](/images/docs/partners/apps/registration-oauth-client.avif) +{% /only_light %} + +The new app opens on its settings pages. On **OAuth client**, keep the type **Confidential**, since your server will hold a secret, and add your redirect URI to the list. The authorization endpoint refuses to send users anywhere else, which is what makes the callback trustworthy. + +{% only_dark %} +![OAuth secrets page with active secrets](/images/docs/partners/apps/dark/registration-secrets.avif) +{% /only_dark %} +{% only_light %} +![OAuth secrets page with active secrets](/images/docs/partners/apps/registration-secrets.avif) +{% /only_light %} + +Last, your app needs a way to prove it is really Horizon when it exchanges codes for tokens. On **OAuth secrets**, select **Create secret** and copy the value; it is shown once. Store the client ID and the secret in your server's environment. + +The same registration works from code with the `apps` service, which is how you would script it in CI or offer it inside your own product: + +{% multicode %} +```server-nodejs +import { Client, Apps, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['http://localhost:7700/oauth/callback'], + type: 'confidential' +}); + +const secret = await apps.createSecret({ appId: app.$id }); +``` + +```server-deno +import { Client, Apps, ID } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['http://localhost:7700/oauth/callback'], + type: 'confidential' +}); + +const secret = await apps.createSecret({ appId: app.$id }); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('console') +client.set_session('') # Your Appwrite account session + +apps = Apps(client) + +app = apps.create( + app_id = ID.unique(), + name = 'Horizon', + redirect_uris = ['http://localhost:7700/oauth/callback'], + type = 'confidential' +) + +secret = apps.create_secret(app_id = app.id) +``` + +```server-php +setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('console') + ->setSession(''); // Your Appwrite account session + +$apps = new Apps($client); + +$app = $apps->create( + appId: ID::unique(), + name: 'Horizon', + redirectUris: ['http://localhost:7700/oauth/callback'], + type: 'confidential' +); + +$secret = $apps->createSecret(appId: $app['$id']); +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('console') + .set_session('') # Your Appwrite account session + +apps = Apps.new(client) + +app = apps.create( + app_id: ID.unique(), + name: 'Horizon', + redirect_uris: ['http://localhost:7700/oauth/callback'], + type: 'confidential' +) + +secret = apps.create_secret(app_id: app.id) +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +Apps apps = Apps(client); + +App app = await apps.create( + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['http://localhost:7700/oauth/callback'], + type: 'confidential', +); + +AppSecretPlaintext secret = await apps.createSecret(appId: app.$id); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +val apps = Apps(client) + +val app = apps.create( + appId = ID.unique(), + name = "Horizon", + redirectUris = listOf("http://localhost:7700/oauth/callback"), + type = "confidential" +) + +val secret = apps.createSecret(appId = app.id) +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +apps.create( + ID.unique(), // appId + "Horizon", // name + List.of("http://localhost:7700/oauth/callback"), // redirectUris + null, // description + null, // clientUri + null, // logoUri + null, // privacyPolicyUrl + null, // termsUrl + null, // contacts + null, // tagline + null, // tags + null, // images + null, // supportUrl + null, // dataDeletionUrl + null, // postLogoutRedirectUris + null, // enabled + "confidential", // type + null, // deviceFlow + null, // teamId + new CoroutineCallback<>((app, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(app); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +let apps = Apps(client) + +let app = try await apps.create( + appId: ID.unique(), + name: "Horizon", + redirectUris: ["http://localhost:7700/oauth/callback"], + type: "confidential" +) + +let secret = try await apps.createSecret(appId: app.id) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("console") + .SetSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +App app = await apps.Create( + appId: ID.Unique(), + name: "Horizon", + redirectUris: new List { "http://localhost:7700/oauth/callback" }, + type: "confidential" +); + +AppSecretPlaintext secret = await apps.CreateSecret(appId: app.Id); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/apps" + "github.com/appwrite/sdk-for-go/client" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + c := client.New( + client.WithEndpoint("https://cloud.appwrite.io/v1"), + client.WithProject("console"), + client.WithSession(""), // Your Appwrite account session + ) + + service := apps.New(c) + + app, err := service.Create( + id.Unique(), + "Horizon", + []string{"http://localhost:7700/oauth/callback"}, + apps.WithCreateType("confidential"), + ) + if err != nil { + panic(err) + } + + secret, err := service.CreateSecret(app.Id) + if err != nil { + panic(err) + } + + fmt.Println(secret) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://cloud.appwrite.io/v1"); + client.set_project("console"); + client.set_session(""); // Your Appwrite account session + + let apps = Apps::new(&client); + + let app = apps.create( + &ID::unique(), + "Horizon", + vec!["http://localhost:7700/oauth/callback"], + None, None, None, None, None, None, None, None, None, None, None, None, None, + Some("confidential"), + None, None, + ).await?; + + let secret = apps.create_secret(&app.id).await?; + println!("{}", secret.secret); // Shown only once + + Ok(()) +} +``` +{% /multicode %} + +[Registration](/docs/partners/apps/registration) covers both paths in detail. + +# Redirect the user {% #redirect %} + +With credentials in your environment, Horizon can offer its sign-in button. The button sends the user to the authorization endpoint, and the query string carries everything your app asks for: identity scopes, one project scope, and an `authorization_details` parameter that lets the user pick which projects the grant applies to. + +```text +https://cloud.appwrite.io/v1/oauth2/console/authorize + ?client_id= + &redirect_uri=http://localhost:7700/oauth/callback + &response_type=code + &scope=openid profile email project:databases.read + &state= + &authorization_details=[{"type":"project","identifiers":["*"]}] +``` + +URL-encode the values. Generate a fresh random `state` per request and verify it on the way back; it is your protection against forged callbacks. The wildcard identifier asks for any project, which the consent screen turns into a picker the user controls. Scopes are described in the [scope catalog](/docs/partners/apps/scopes). + +# User grants access {% #consent %} + +{% only_dark %} +![Consent screen asking to authorize the app with selected projects](/images/docs/partners/apps/dark/quick-start-consent.avif) +{% /only_dark %} +{% only_light %} +![Consent screen asking to authorize the app with selected projects](/images/docs/partners/apps/quick-start-consent.avif) +{% /only_light %} + +This is the moment the user meets your app inside Appwrite. The consent screen shows Horizon's name and logo, lists each requested permission in plain language, and lets the user select the projects the grant covers or reduce the access to read-only. On approval, the browser returns to your redirect URI: + +```text +http://localhost:7700/oauth/callback?code=&state=&iss=https://cloud.appwrite.io/v1/oauth2/console +``` + +Verify that `state` matches what you sent, then use the code within five minutes. It is single-use. + +# Exchange the code {% #exchange %} + +From your server, exchange the code for tokens. Authenticate with your client credentials over HTTP basic auth. + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -u ":" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "grant_type=authorization_code" \ + -d "code=" \ + -d "redirect_uri=http://localhost:7700/oauth/callback" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +[BasicAuth] +: +[Form] +grant_type: authorization_code +code: +redirect_uri: http://localhost:7700/oauth/callback +``` +{% /multicode %} + +The response carries the three tokens and echoes what the user actually granted: + +```json +{ + "access_token": "eyJ0eXAiOiJhdCtqd3QiLCJhbGciOiJSUzI1NiJ9...", + "token_type": "Bearer", + "expires_in": 28800, + "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", + "scope": "openid profile email project:databases.read", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "id_token": "eyJhbGciOiJSUzI1NiJ9..." +} +``` + +Compare `scope` and `authorization_details` against what you requested; the user may have granted less. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. + +# List the user's projects {% #list-projects %} + +The user is signed in and Horizon holds its tokens. Now the payoff: every Sign in with Appwrite token can list the projects and organizations it was granted. Pass the access token as a bearer token with any Appwrite Server SDK. + +{% multicode %} +```server-nodejs +import { Client, Oauth2 } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setBearer('Bearer '); // The user's access token + +const oauth2 = new Oauth2(client); + +const projects = await oauth2.listProjects(); +``` + +```server-deno +import { Client, Oauth2 } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setBearer('Bearer '); // The user's access token + +const oauth2 = new Oauth2(client); + +const projects = await oauth2.listProjects(); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.oauth2 import Oauth2 + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('console') +client.set_bearer('Bearer ') # The user's access token + +oauth2 = Oauth2(client) + +projects = oauth2.list_projects() +``` + +```server-php +setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('console') + ->setBearer('Bearer '); // The user's access token + +$oauth2 = new Oauth2($client); + +$projects = $oauth2->listProjects(); +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('console') + .set_bearer('Bearer ') # The user's access token + +oauth2 = Oauth2.new(client) + +projects = oauth2.list_projects +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setBearer('Bearer '); // The user's access token + +Oauth2 oauth2 = Oauth2(client); + +Oauth2ProjectList projects = await oauth2.listProjects(); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Oauth2 + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setBearer("Bearer ") // The user's access token + +val oauth2 = Oauth2(client) + +val projects = oauth2.listProjects() +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setBearer("Bearer "); // The user's access token + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.listProjects( + null, // limit (optional) + null, // offset (optional) + null, // search (optional) + new CoroutineCallback<>((projects, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(projects); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setBearer("Bearer ") // The user's access token + +let oauth2 = Oauth2(client) + +let projects = try await oauth2.listProjects() +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("console") + .SetBearer("Bearer "); // The user's access token + +Oauth2 oauth2 = new Oauth2(client); + +Oauth2ProjectList projects = await oauth2.ListProjects(); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/client" + "github.com/appwrite/sdk-for-go/oauth2" +) + +func main() { + c := client.New( + client.WithEndpoint("https://cloud.appwrite.io/v1"), + client.WithProject("console"), + client.WithBearer("Bearer "), // The user's access token + ) + + service := oauth2.New(c) + + projects, err := service.ListProjects() + if err != nil { + panic(err) + } + + fmt.Println(projects) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::services::Oauth2; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://cloud.appwrite.io/v1"); + client.set_project("console"); + client.set_bearer("Bearer "); // The user's access token + + let oauth2 = Oauth2::new(&client); + + let projects = oauth2.list_projects(None, None, None).await?; + println!("{:?}", projects.projects); + + Ok(()) +} +``` +{% /multicode %} + +Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. + +# Call a project API {% #call-project-api %} + +The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:databases.read`, that is the read side of Databases. + +{% multicode %} +```server-nodejs +import { Client, Databases } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('') // From the project listing + .setProject('') + .setBearer('Bearer '); // The same access token + +const databases = new Databases(client); + +const result = await databases.list(); +``` + +```server-deno +import { Client, Databases } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('') // From the project listing + .setProject('') + .setBearer('Bearer '); // The same access token + +const databases = new Databases(client); + +const result = await databases.list(); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.databases import Databases + +client = Client() +client.set_endpoint('') # From the project listing +client.set_project('') +client.set_bearer('Bearer ') # The same access token + +databases = Databases(client) + +result = databases.list() +``` + +```server-php +setEndpoint('') // From the project listing + ->setProject('') + ->setBearer('Bearer '); // The same access token + +$databases = new Databases($client); + +$result = $databases->list(); +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('') # From the project listing + .set_project('') + .set_bearer('Bearer ') # The same access token + +databases = Databases.new(client) + +result = databases.list +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('') // From the project listing + .setProject('') + .setBearer('Bearer '); // The same access token + +Databases databases = Databases(client); + +DatabaseList result = await databases.list(); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Databases + +val client = Client() + .setEndpoint("") // From the project listing + .setProject("") + .setBearer("Bearer ") // The same access token + +val databases = Databases(client) + +val result = databases.list() +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Databases; + +Client client = new Client() + .setEndpoint("") // From the project listing + .setProject("") + .setBearer("Bearer "); // The same access token + +Databases databases = new Databases(client); + +databases.list( + null, // queries (optional) + null, // search (optional) + null, // total (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("") // From the project listing + .setProject("") + .setBearer("Bearer ") // The same access token + +let databases = Databases(client) + +let result = try await databases.list() +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("") // From the project listing + .SetProject("") + .SetBearer("Bearer "); // The same access token + +Databases databases = new Databases(client); + +DatabaseList result = await databases.List(); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/client" + "github.com/appwrite/sdk-for-go/databases" +) + +func main() { + c := client.New( + client.WithEndpoint(""), // From the project listing + client.WithProject(""), + client.WithBearer("Bearer "), // The same access token + ) + + service := databases.New(c) + + result, err := service.List() + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::services::Databases; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint(""); // From the project listing + client.set_project(""); + client.set_bearer("Bearer "); // The same access token + + let databases = Databases::new(&client); + + let result = databases.list(None, None, None).await?; + println!("{:?}", result.total); + + Ok(()) +} +``` +{% /multicode %} + +A call outside the granted scopes or projects fails with a `401` error of type `general_unauthorized_scope`. The token works on every region, so your app never maps regions itself; use each project's `endpoint` value from the listing. + +# Sign in through Appwrite Auth {% #appwrite-provider %} + +{% only_dark %} +![Appwrite provider settings with quick setup filling credentials from an organization app](/images/docs/partners/apps/dark/quick-start-provider-setup.avif) +{% /only_dark %} +{% only_light %} +![Appwrite provider settings with quick setup filling credentials from an organization app](/images/docs/partners/apps/quick-start-provider-setup.avif) +{% /only_light %} + +If your product itself runs on an Appwrite project, you do not need to handle the flow by hand. Appwrite Auth ships an **Appwrite** OAuth provider. In your project, open **Auth** and then **Social providers**, select **Appwrite**, and use **Quick setup** to create or pick an organization app; Appwrite registers the callback URI and fills the client ID and secret for you. Then sign users in with the same call you would use for GitHub or Google. + +{% multicode %} +```client-web +import { Client, Account, OAuthProvider } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); // Your project, not the user's + +const account = new Account(client); + +account.createOAuth2Session({ + provider: OAuthProvider.Appwrite, + success: 'https://example.com/success', + failure: 'https://example.com/failure' +}); +``` + +```client-flutter +import 'package:appwrite/appwrite.dart'; +import 'package:appwrite/enums.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); // Your project, not the user's + +Account account = Account(client); + +await account.createOAuth2Session( + provider: OAuthProvider.appwrite, +); +``` + +```client-apple +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") // Your project, not the user's + +let account = Account(client) + +try await account.createOAuth2Session( + provider: .appwrite +) +``` + +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.enums.OAuthProvider +import io.appwrite.services.Account + +val client = Client(context) + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") // Your project, not the user's + +val account = Account(client) + +account.createOAuth2Session( + activity = activity, + provider = OAuthProvider.APPWRITE, +) +``` + +```client-react-native +import { Client, Account, OAuthProvider } from 'react-native-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); // Your project, not the user's + +const account = new Account(client); + +account.createOAuth2Token({ + provider: OAuthProvider.Appwrite, + success: '', + failure: '' +}); +``` +{% /multicode %} + +The provider requests the identity scopes, signs the user into your project, and stores the issued tokens on the user's [identity](/docs/products/auth/identities). Use this when you want "Sign in with Appwrite" as a login method; use the manual flow above when your app needs scoped access to the user's projects. + +# Next steps {% #next-steps %} + +{% cards %} +{% cards_item href="/docs/partners/apps/registration" title="Registration" %} +Give your app a logo and consent screen details, and manage secrets. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/scopes" title="Scopes" %} +Request exactly the access your app needs. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/dashboards" title="Dashboards" %} +Build a read-only dashboard over granted projects. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/tokens" title="Tokens" %} +Refresh tokens before they expire and handle revocation. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/partners/apps/registration/+page.markdoc b/src/routes/docs/partners/apps/registration/+page.markdoc new file mode 100644 index 0000000000..6959be06a4 --- /dev/null +++ b/src/routes/docs/partners/apps/registration/+page.markdoc @@ -0,0 +1,666 @@ +--- +layout: article +title: Registration +description: Register your app for Sign in with Appwrite through the Console or the Apps API. +back: /docs/partners/apps +--- + +Your app appears on the consent screen as a registered client: a name, a logo, and a set of credentials tied to redirect URIs. Appwrite gives you two ways to register: the Console for people, the Apps API for code. + +| Method | Best for | Credentials | +| --- | --- | --- | +| [Console](#console) | Products with a marketplace listing: a logo, legal pages, managed secrets | Client ID and secrets you manage | +| [Apps API](#apps-api) | The same apps, managed from code | Client ID and secrets you manage | + +# Client types {% #client-types %} + +Every client is `confidential` or `public`, and the choice decides how it authenticates. + +- **Confidential** clients have a backend that keeps a secret. They authenticate token requests with the client secret, and their tokens live longer: 8 hours for access tokens and 365 days for refresh tokens by default. +- **Public** clients run where a secret cannot survive: single-page apps, native apps, CLIs. They carry no secret and must use [PKCE](https://datatracker.ietf.org/doc/html/rfc7636) with `S256` on every authorization. Their tokens default to 1 hour and 30 days. + +Choose confidential whenever a server takes part in the flow. Public exists for the rest. + +# Console {% #console %} + +{% only_dark %} +![Marketplace tab of an organization showing the app catalog and the Add app action](/images/docs/partners/apps/dark/registration-marketplace.avif) +{% /only_dark %} +{% only_light %} +![Marketplace tab of an organization showing the app catalog and the Add app action](/images/docs/partners/apps/registration-marketplace.avif) +{% /only_light %} + +Register through the Console when your app is a product: the same flow that creates the client also builds its marketplace listing. In your organization, open the **Marketplace** tab and click **Add app**. Give the app a name, a slug, a category, and a description. The slug becomes the app's client ID, and the app starts as a draft that only your organization sees. + +The app's pages hold everything else, split across **General**, **OAuth client**, **OAuth secrets**, **Legal**, **Support**, and **Publish**. + +## OAuth client {% #console-oauth-client %} + +{% only_dark %} +![OAuth client settings with client type, device flow, and redirect URIs](/images/docs/partners/apps/dark/registration-oauth-client.avif) +{% /only_dark %} +{% only_light %} +![OAuth client settings with client type, device flow, and redirect URIs](/images/docs/partners/apps/registration-oauth-client.avif) +{% /only_light %} + +The **OAuth client** page sets the protocol details: the [client type](#client-types), the device flow toggle for TVs and CLIs, and the redirect URIs. Add every URI your app returns to; the authorization endpoint rejects anything not on the list. + +## OAuth secrets {% #console-oauth-secrets %} + +{% only_dark %} +![OAuth secrets page listing an active secret with its hint](/images/docs/partners/apps/dark/registration-secrets.avif) +{% /only_dark %} +{% only_light %} +![OAuth secrets page listing an active secret with its hint](/images/docs/partners/apps/registration-secrets.avif) +{% /only_light %} + +The **OAuth secrets** page issues client secrets for confidential apps. Each secret's value appears once, at creation; store it in your deployment environment before closing the dialog. The list keeps only a hint of each secret, its creation date, and when it was last used. See [Secrets](#secrets) for the rotation workflow. + +## Publish {% #console-publish %} + +**Legal** and **Support** hold the privacy policy, terms of service, data deletion, and contact details that the consent screen links. When the listing is complete, the **Publish** page makes the app visible in the marketplace catalog for every organization. Publishing changes discovery, not authorization: users consent to your app the same way whether it is a draft or published. + +# Apps API {% #apps-api %} + +Everything the Console does, the `apps` service does from code. Authenticate with your Appwrite account's session; the apps you create belong to you, or to a team you pass in `teamId`. + +{% multicode %} +```server-nodejs +import { Client, Apps, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logoUri: 'https://horizon.example.com/logo.png', + clientUri: 'https://horizon.example.com', + privacyPolicyUrl: 'https://horizon.example.com/privacy', + termsUrl: 'https://horizon.example.com/terms', + type: 'confidential' +}); +``` + +```server-deno +import { Client, Apps, ID } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logoUri: 'https://horizon.example.com/logo.png', + clientUri: 'https://horizon.example.com', + privacyPolicyUrl: 'https://horizon.example.com/privacy', + termsUrl: 'https://horizon.example.com/terms', + type: 'confidential' +}); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('console') +client.set_session('') # Your Appwrite account session + +apps = Apps(client) + +app = apps.create( + app_id = ID.unique(), + name = 'Horizon', + redirect_uris = ['https://horizon.example.com/oauth/callback'], + description = 'Deployment dashboard for your Appwrite projects.', + tagline = 'Ship from one place', + logo_uri = 'https://horizon.example.com/logo.png', + client_uri = 'https://horizon.example.com', + privacy_policy_url = 'https://horizon.example.com/privacy', + terms_url = 'https://horizon.example.com/terms', + type = 'confidential' +) +``` + +```server-php +setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('console') + ->setSession(''); // Your Appwrite account session + +$apps = new Apps($client); + +$app = $apps->create( + appId: ID::unique(), + name: 'Horizon', + redirectUris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logoUri: 'https://horizon.example.com/logo.png', + clientUri: 'https://horizon.example.com', + privacyPolicyUrl: 'https://horizon.example.com/privacy', + termsUrl: 'https://horizon.example.com/terms', + type: 'confidential' +); +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('console') + .set_session('') # Your Appwrite account session + +apps = Apps.new(client) + +app = apps.create( + app_id: ID.unique(), + name: 'Horizon', + redirect_uris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logo_uri: 'https://horizon.example.com/logo.png', + client_uri: 'https://horizon.example.com', + privacy_policy_url: 'https://horizon.example.com/privacy', + terms_url: 'https://horizon.example.com/terms', + type: 'confidential' +) +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +Apps apps = Apps(client); + +App app = await apps.create( + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logoUri: 'https://horizon.example.com/logo.png', + clientUri: 'https://horizon.example.com', + privacyPolicyUrl: 'https://horizon.example.com/privacy', + termsUrl: 'https://horizon.example.com/terms', + type: 'confidential', +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +val apps = Apps(client) + +val app = apps.create( + appId = ID.unique(), + name = "Horizon", + redirectUris = listOf("https://horizon.example.com/oauth/callback"), + description = "Deployment dashboard for your Appwrite projects.", + tagline = "Ship from one place", + logoUri = "https://horizon.example.com/logo.png", + clientUri = "https://horizon.example.com", + privacyPolicyUrl = "https://horizon.example.com/privacy", + termsUrl = "https://horizon.example.com/terms", + type = "confidential" +) +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +apps.create( + ID.unique(), // appId + "Horizon", // name + List.of("https://horizon.example.com/oauth/callback"), // redirectUris + "Deployment dashboard for your Appwrite projects.", // description + "https://horizon.example.com", // clientUri + "https://horizon.example.com/logo.png", // logoUri + "https://horizon.example.com/privacy", // privacyPolicyUrl + "https://horizon.example.com/terms", // termsUrl + null, // contacts + "Ship from one place", // tagline + null, // tags + null, // images + null, // supportUrl + null, // dataDeletionUrl + null, // postLogoutRedirectUris + null, // enabled + "confidential", // type + null, // deviceFlow + null, // teamId + new CoroutineCallback<>((app, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(app); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +let apps = Apps(client) + +let app = try await apps.create( + appId: ID.unique(), + name: "Horizon", + redirectUris: ["https://horizon.example.com/oauth/callback"], + description: "Deployment dashboard for your Appwrite projects.", + tagline: "Ship from one place", + logoUri: "https://horizon.example.com/logo.png", + clientUri: "https://horizon.example.com", + privacyPolicyUrl: "https://horizon.example.com/privacy", + termsUrl: "https://horizon.example.com/terms", + type: "confidential" +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("console") + .SetSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +App app = await apps.Create( + appId: ID.Unique(), + name: "Horizon", + redirectUris: new List { "https://horizon.example.com/oauth/callback" }, + description: "Deployment dashboard for your Appwrite projects.", + tagline: "Ship from one place", + logoUri: "https://horizon.example.com/logo.png", + clientUri: "https://horizon.example.com", + privacyPolicyUrl: "https://horizon.example.com/privacy", + termsUrl: "https://horizon.example.com/terms", + type: "confidential" +); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/apps" + "github.com/appwrite/sdk-for-go/client" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + c := client.New( + client.WithEndpoint("https://cloud.appwrite.io/v1"), + client.WithProject("console"), + client.WithSession(""), // Your Appwrite account session + ) + + service := apps.New(c) + + app, err := service.Create( + id.Unique(), + "Horizon", + []string{"https://horizon.example.com/oauth/callback"}, + apps.WithCreateDescription("Deployment dashboard for your Appwrite projects."), + apps.WithCreateTagline("Ship from one place"), + apps.WithCreateLogoUri("https://horizon.example.com/logo.png"), + apps.WithCreateClientUri("https://horizon.example.com"), + apps.WithCreatePrivacyPolicyUrl("https://horizon.example.com/privacy"), + apps.WithCreateTermsUrl("https://horizon.example.com/terms"), + apps.WithCreateType("confidential"), + ) + if err != nil { + panic(err) + } + + fmt.Println(app) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://cloud.appwrite.io/v1"); + client.set_project("console"); + client.set_session(""); // Your Appwrite account session + + let apps = Apps::new(&client); + + let app = apps.create( + &ID::unique(), + "Horizon", + vec!["https://horizon.example.com/oauth/callback"], + Some("Deployment dashboard for your Appwrite projects."), + Some("https://horizon.example.com"), + Some("https://horizon.example.com/logo.png"), + Some("https://horizon.example.com/privacy"), + Some("https://horizon.example.com/terms"), + None, + Some("Ship from one place"), + None, + None, + None, + None, + None, + None, + Some("confidential"), + None, + None, + ).await?; + + println!("{}", app.id); + + Ok(()) +} +``` +{% /multicode %} + +The consent screen shows the name, logo, and tagline on the authorization card, and links the privacy policy and terms of service in its footer. `description`, `tags`, `images`, `supportUrl`, `dataDeletionUrl`, and `contacts` complete the listing where apps are browsed. + +Redirect URIs match exactly, with one exception: public clients may register loopback URIs (`http://127.0.0.1`, `http://localhost`), which match on any port. Redirect URIs must use HTTPS, a loopback address, or a private-use scheme such as `com.example.app:/callback` for native apps. + +# Secrets {% #secrets %} + +Confidential clients authenticate with a secret. Create one after registering: + +{% multicode %} +```server-nodejs +import { Client, Apps } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const secret = await apps.createSecret({ + appId: '' +}); + +console.log(secret.secret); // Shown only once +``` + +```server-deno +import { Client, Apps } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const secret = await apps.createSecret({ + appId: '' +}); + +console.log(secret.secret); // Shown only once +``` + +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('console') +client.set_session('') # Your Appwrite account session + +apps = Apps(client) + +secret = apps.create_secret( + app_id = '' +) + +print(secret.secret) # Shown only once +``` + +```server-php +setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('console') + ->setSession(''); // Your Appwrite account session + +$apps = new Apps($client); + +$secret = $apps->createSecret( + appId: '' +); + +echo $secret['secret']; // Shown only once +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('console') + .set_session('') # Your Appwrite account session + +apps = Apps.new(client) + +secret = apps.create_secret( + app_id: '' +) + +puts secret.secret # Shown only once +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +Apps apps = Apps(client); + +AppSecretPlaintext secret = await apps.createSecret( + appId: '', +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +val apps = Apps(client) + +val secret = apps.createSecret( + appId = "" +) +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +apps.createSecret( + "", // appId + new CoroutineCallback<>((secret, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(secret); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +let apps = Apps(client) + +let secret = try await apps.createSecret( + appId: "" +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("console") + .SetSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +AppSecretPlaintext secret = await apps.CreateSecret( + appId: "" +); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/apps" + "github.com/appwrite/sdk-for-go/client" +) + +func main() { + c := client.New( + client.WithEndpoint("https://cloud.appwrite.io/v1"), + client.WithProject("console"), + client.WithSession(""), // Your Appwrite account session + ) + + service := apps.New(c) + + secret, err := service.CreateSecret("") + if err != nil { + panic(err) + } + + fmt.Println(secret) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://cloud.appwrite.io/v1"); + client.set_project("console"); + client.set_session(""); // Your Appwrite account session + + let apps = Apps::new(&client); + + let secret = apps.create_secret("").await?; + println!("{}", secret.secret); // Shown only once + + Ok(()) +} +``` +{% /multicode %} + +An app holds several active secrets at once, so rotation needs no downtime: create a new secret, deploy it, then delete the old one. Each stored secret keeps a `hint` (its last characters), who created it, and when it was last used, which tells you when the old secret is safe to delete. + +Two more operations matter over an app's life. `updateTeam` moves ownership to a team, so registration does not depend on one person's account. `deleteTokens` is the kill switch: it invalidates every token the app has been issued, for every user. + +# Labels {% #labels %} + +Labels such as `official` and `partner` mark apps the platform vouches for, and consent screens surface them as trust signals. Labels are assigned by Appwrite, not by the app itself, so they cannot be self-granted. Contact your partner manager to have your app labeled. diff --git a/src/routes/docs/partners/apps/scopes/+page.markdoc b/src/routes/docs/partners/apps/scopes/+page.markdoc new file mode 100644 index 0000000000..10e027603c --- /dev/null +++ b/src/routes/docs/partners/apps/scopes/+page.markdoc @@ -0,0 +1,83 @@ +--- +layout: article +title: Scopes +description: The Sign in with Appwrite scope catalog, and how grants target the projects and organizations a user chooses. +back: /docs/partners/apps +--- + +A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:databases.read` by itself says what, and the user's project selection on the consent screen says where. + +Request the smallest set that serves your app. Every scope you ask for appears on the consent screen as a permission line, and users decline requests that want too much. + +# Identity scopes {% #identity-scopes %} + +The OpenID Connect scopes cover who the user is. They are the same four scopes every OIDC provider uses. + +| Scope | Grants | +| --- | --- | +| `openid` | The user's subject identifier. Required to receive an ID token. | +| `profile` | Profile claims, such as the user's name. | +| `email` | The user's email address and its verification state. | +| `phone` | The user's phone number and its verification state. | + +An app that only signs users in requests `openid profile email` and stops there. + +# Project scopes {% #project-scopes %} + +Project scopes carry the `project:` prefix and map to the permissions [API keys](/docs/partners/project/api-keys) use, one `.read` and one `.write` scope per resource. The catalog covers every Appwrite product: + +| Product | Scopes | +| --- | --- | +| Databases | `project:databases.read`, `project:databases.write`, `project:tables.read`, `project:tables.write`, `project:columns.read`, `project:columns.write`, `project:rows.read`, `project:rows.write`, `project:indexes.read`, `project:indexes.write` | +| Auth | `project:users.read`, `project:users.write`, `project:sessions.read`, `project:sessions.write`, `project:teams.read`, `project:teams.write` | +| Storage | `project:buckets.read`, `project:buckets.write`, `project:files.read`, `project:files.write`, `project:tokens.read`, `project:tokens.write` | +| Functions | `project:functions.read`, `project:functions.write`, `project:executions.read`, `project:executions.write` | +| Sites | `project:sites.read`, `project:sites.write`, `project:log.read`, `project:log.write` | +| Messaging | `project:providers.read`, `project:providers.write`, `project:topics.read`, `project:topics.write`, `project:subscribers.read`, `project:subscribers.write`, `project:targets.read`, `project:targets.write`, `project:messages.read`, `project:messages.write` | +| Project configuration | `project:project.read`, `project:project.write`, `project:keys.read`, `project:keys.write`, `project:platforms.read`, `project:platforms.write`, `project:webhooks.read`, `project:webhooks.write`, `project:policies.read`, `project:policies.write` | +| Networking | `project:rules.read`, `project:rules.write`, `project:domains.read`, `project:domains.write`, `project:wafRules.read`, `project:wafRules.write` | +| Operations | `project:usage.read`, `project:health.read`, `project:migrations.read`, `project:migrations.write`, `project:backups.policies.read`, `project:backups.policies.write`, `project:archives.read`, `project:archives.write`, `project:restorations.read`, `project:restorations.write` | + +`project:all` grants the full project catalog at once. Reserve it for tools that genuinely administer whole projects; the consent screen presents it as full project access. + +The full list is published in the discovery document under `scopes_supported`: + +```text +https://cloud.appwrite.io/v1/oauth2/console/.well-known/openid-configuration +``` + +# Organization scopes {% #organization-scopes %} + +Organization scopes carry the `organization:` prefix and cover what a user's organization owns: its profile, members, projects, domains, and keys. + +| Area | Scopes | +| --- | --- | +| Organization | `organization:organization.read`, `organization:organization.write` | +| Members | `organization:organization.memberships.read`, `organization:organization.memberships.write` | +| Projects | `organization:projects.read`, `organization:projects.write` | +| Domains | `organization:domains.read`, `organization:domains.write` | +| Keys | `organization:organization.keys.read`, `organization:organization.keys.write` | +| Dev keys | `organization:devKeys.read`, `organization:devKeys.write` | + +`organization:all` grants the full set. `organization:projects.write` is the scope that creates projects, which lets an app provision on a user's behalf. + +# Targeting projects and organizations {% #targeting %} + +Scopes alone never grant access to a resource. The authorization request also carries `authorization_details` ([RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)), a JSON array that names the projects and organizations the grant covers: + +```json +[ + { "type": "project", "identifiers": ["*"] }, + { "type": "organization", "identifiers": [""] } +] +``` + +Each entry has a `type`, either `project` or `organization`, and an `identifiers` array of IDs. The wildcard `*` asks for all of them, which the consent screen turns into a picker where the user chooses. Your app receives the final selection in the token response's `authorization_details` field and can read the granted projects at any time by listing them, as shown in the [quick start](/docs/partners/apps/quick-start#list-projects). + +A granted scope applies only inside the granted targets. A token with `project:databases.read` reads databases in the projects the user selected and fails everywhere else with a `401` error of type `general_unauthorized_scope`. There is one hard exclusion: an authorization detail can never name the `console` project itself as a target. + +# When requests fail {% #failures %} + +Requesting a scope outside the catalog fails before consent: the authorization endpoint redirects back with `error=invalid_scope`. Malformed or unsupported `authorization_details` fail the same way with `error=invalid_authorization_details`. Validate both against the discovery document, which also publishes `authorization_details_types_supported`. + +The user can also grant less than you asked. Consent may drop scopes or narrow write access to read, so treat the `scope` string in the token response as the truth, not your request. [Consent](/docs/partners/apps/consent) shows what that narrowing looks like. diff --git a/src/routes/docs/partners/apps/tokens/+page.markdoc b/src/routes/docs/partners/apps/tokens/+page.markdoc new file mode 100644 index 0000000000..c6b7bd90a0 --- /dev/null +++ b/src/routes/docs/partners/apps/tokens/+page.markdoc @@ -0,0 +1,107 @@ +--- +layout: article +title: Tokens +description: Use, refresh, and revoke the tokens Appwrite issues to your app through Sign in with Appwrite. +back: /docs/partners/apps +--- + +A successful token exchange returns three tokens with different jobs. The access token calls APIs, the refresh token replaces expired access tokens, and the ID token proves who signed in. + +```json +{ + "access_token": "eyJ0eXAiOiJhdCtqd3QiLCJhbGciOiJSUzI1NiJ9...", + "token_type": "Bearer", + "expires_in": 28800, + "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", + "scope": "openid profile email project:databases.read", + "authorization_details": [{ "type": "project", "identifiers": ["6a357f7e001c7237296b"] }], + "id_token": "eyJhbGciOiJSUzI1NiJ9..." +} +``` + +# Access tokens {% #access-tokens %} + +The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068)), signed with `RS256`. Its claims carry the whole grant: `sub` is the user, `client_id` your app, `scope` the granted scopes, and `authorization_details` the granted targets, along with the standard `iss`, `aud`, `exp`, `iat`, `jti`, and `auth_time`. + +Pass it as a bearer token. The Server SDKs send it through `setBearer`, with the `Bearer ` scheme included in the value: + +```server-nodejs +import { Client, Oauth2 } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setBearer('Bearer '); +``` + +One token works everywhere the grant reaches. Appwrite validates it across regions, so your app calls each granted project at its own `endpoint` with the same token, and the console endpoints for [listing projects and organizations](/docs/partners/apps/quick-start#list-projects) with that token too. + +Default lifetimes depend on the client type: 8 hours for confidential clients, 1 hour for public ones. + +# Refresh tokens {% #refresh-tokens %} + +When the access token expires, exchange the refresh token for a new pair: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -u ":" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "grant_type=refresh_token" \ + -d "refresh_token=" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +[BasicAuth] +: +[Form] +grant_type: refresh_token +refresh_token: +``` +{% /multicode %} + +Refresh tokens rotate: every exchange returns a new refresh token and invalidates the old one. Persist the new token atomically before you discard the old response. + +Rotation is also a tripwire. If an old refresh token is presented again, Appwrite treats it as theft and deletes the whole token family: the current access token and the newest refresh token stop working, and the user must authorize your app again. A refresh loop that retries a stale token after a crash triggers this, which is why atomic persistence matters. Refresh tokens default to 365 days for confidential clients and 30 days for public ones, treat them like passwords, and store them encrypted. + +# ID tokens {% #id-tokens %} + +The ID token is an OpenID Connect JWT issued when the grant includes `openid`. It carries identity claims scoped to what was granted: `name` with `profile`, `email` and `email_verified` with `email`, `phone_number` and `phone_number_verified` with `phone`. + +Use it to establish who signed in, never to call APIs. Its audience is your `client_id`, not Appwrite's API, and resource servers reject it because its type is not `at+jwt`. For a live view of the same claims, call the userinfo endpoint with the access token. + +# Validating tokens {% #validation %} + +If your app runs its own API and receives Appwrite access tokens from clients, verify them against the published keys: + +```text +https://cloud.appwrite.io/v1/oauth2/console/.well-known/jwks.json +``` + +Check the signature, the `iss` claim, the audience, the expiry, and require the `at+jwt` type so an ID token can never pass as an access token. When you need revocation awareness that offline validation cannot give, call the introspection endpoint ([RFC 7662](https://datatracker.ietf.org/doc/html/rfc7662)) with your client credentials; it returns `"active": false` for anything expired, revoked, or rotated away. + +# Revocation {% #revocation %} + +Revoke tokens when a user disconnects your app: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/revoke \ + -u ":" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "token=" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/revoke +[BasicAuth] +: +[Form] +token: +``` +{% /multicode %} + +Revoking either token of a pair invalidates both. The endpoint returns an empty `200` whether or not the token existed, as [RFC 7009](https://datatracker.ietf.org/doc/html/rfc7009) requires. + +Revocation also arrives from outside your app. Users revoke from their account applications page, and reuse detection tears tokens down on its own. Treat a `401` with a previously working token as the signal to re-authorize, not to retry. diff --git a/src/routes/docs/partners/project/+layout.svelte b/src/routes/docs/partners/project/+layout.svelte new file mode 100644 index 0000000000..ed26ec0f75 --- /dev/null +++ b/src/routes/docs/partners/project/+layout.svelte @@ -0,0 +1,96 @@ + + + + + + diff --git a/src/routes/docs/partners/project/+page.markdoc b/src/routes/docs/partners/project/+page.markdoc new file mode 100644 index 0000000000..e5cf5ac2ed --- /dev/null +++ b/src/routes/docs/partners/project/+page.markdoc @@ -0,0 +1,463 @@ +--- +layout: article +title: Project +description: Configure your Appwrite project, including auth methods, platforms, protocols, services, and policies. +back: /docs +--- + +An Appwrite **Project** is the top-level container for all the resources your app uses, from users and databases to storage buckets and functions. The settings on a project control which authentication methods are available, which client platforms can connect, which protocols and services are exposed, and which policies apply to the resources inside it. + +# Built for platform teams {% #platform-teams %} + +The Console configures one project at a time by hand. The Project API does the same configuration programmatically, which is what teams need when they operate not one project but many: a platform that gives every customer their own project, an agency running client environments, or an enterprise standardizing dozens of internal apps. + +Driving configuration from code is what makes a fleet of projects manageable. Provision every new project to the same baseline, enforce one security posture across all of them, and send each customer branded emails from their own domain. The [guides](#guides) below walk through each of these end to end. + +# Concepts {% #concepts %} + +{% cards %} +{% cards_item href="/docs/partners/project/auth-methods" title="Auth methods" %} +Enable or disable authentication methods on your project. +{% /cards_item %} +{% cards_item href="/docs/partners/project/oauth" title="OAuth providers" %} +Configure OAuth2 sign-in providers like Google, GitHub, and Apple. +{% /cards_item %} +{% cards_item href="/docs/partners/project/api-keys" title="API keys" %} +Create and manage API keys used by Server SDKs. +{% /cards_item %} +{% cards_item href="/docs/partners/project/platforms" title="Platforms" %} +Register the apps and origins that are allowed to call your project. +{% /cards_item %} +{% cards_item href="/docs/partners/project/protocols" title="Protocols" %} +Toggle the API protocols clients can use to reach your project. +{% /cards_item %} +{% cards_item href="/docs/partners/project/services" title="Services" %} +Turn individual Appwrite services on or off for your project. +{% /cards_item %} +{% cards_item href="/docs/partners/project/policies" title="Policies" %} +Configure project-wide policies that apply across resources. +{% /cards_item %} +{% cards_item href="/docs/partners/project/mock-phones" title="Mock phones" %} +Register fictional phone numbers and OTPs to test phone authentication. +{% /cards_item %} +{% cards_item href="/docs/partners/project/environment-variables" title="Environment variables" %} +Share constants and secrets across your functions and sites. +{% /cards_item %} +{% cards_item href="/docs/partners/project/smtp" title="SMTP" %} +Send emails from your own custom SMTP server. +{% /cards_item %} +{% cards_item href="/docs/partners/project/email-templates" title="Email templates" %} +Customize the account management emails Appwrite sends to your users. +{% /cards_item %} +{% cards_item href="/docs/partners/project/labels" title="Labels" %} +Tag projects with customizable labels to organize and filter them. +{% /cards_item %} +{% /cards %} + +# Guides {% #guides %} + +{% cards %} +{% cards_item href="/docs/partners/project/provisioning" title="Provisioning" %} +Apply a standard baseline to a new customer's project from a script. +{% /cards_item %} +{% cards_item href="/docs/partners/project/key-rotation" title="Key rotation" %} +Issue, audit, rotate, and revoke scoped API keys programmatically. +{% /cards_item %} +{% cards_item href="/docs/partners/project/branded-emails" title="Branded emails" %} +Route a project's mail through custom SMTP and rebrand the templates. +{% /cards_item %} +{% /cards %} + +# Retrieve your project {% #get-project %} + +Fetch your project's current configuration in a single call, including its name, region, labels, and the settings managed on the pages above. Use a [Server SDK](/docs/sdks#server). + +{% info title="Required scope" %} +The API key used for this call needs the `project.read` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.get(); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.get(); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->get(); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Project as ProjectModel + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: ProjectModel = project.get() + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.get +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +Project result = await project.Get(); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +Project result = await project.get(); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.get() +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.get(new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); +})); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let result = try await project.get() +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.Get() + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.get().await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +# Delete a project {% #delete-project %} + +{% info title="Permanent and irreversible" %} +Deleting a project permanently removes it along with every resource inside it, including users, databases, storage, functions, and sites. This action cannot be undone. The call targets the project tied to the API key and endpoint you initialize the SDK with, so make sure you are pointing at the project you intend to delete. +{% /info %} + +The `delete` method requires an API key with the `project.write` scope. It takes no parameters and acts on the project the request is scoped to. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.delete(); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.delete(); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->delete(); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result = project.delete() +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.delete() +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +await project.Delete(); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +await project.delete(); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.delete() +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.delete(new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); +})); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let result = try await project.delete() +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.Delete() + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + project.delete().await?; + + Ok(()) +} +``` +```bash +appwrite project delete +``` +{% /multicode %} diff --git a/src/routes/docs/partners/project/api-keys/+page.markdoc b/src/routes/docs/partners/project/api-keys/+page.markdoc new file mode 100644 index 0000000000..ecdeddc4d4 --- /dev/null +++ b/src/routes/docs/partners/project/api-keys/+page.markdoc @@ -0,0 +1,1628 @@ +--- +layout: article +title: API keys +description: Secure your application with Appwrite API Keys. Discover how to create and manage API keys to control access and enhance your application's security. +--- + +API keys are secrets used by Appwrite [Server SDKs](/docs/sdks#server) and the Appwrite CLI to prove their identity. +What can be accessed each API key is restricted by [scopes](#scopes) instead of permissions. + +{% info title="Best practice" %} +It is a best practice to grant only the scopes you need to meet your project's goals to an API key. +API keys should be treated as a secret. Never share the API key and keep API keys out of client applications. +{% /info %} + +# API keys vs Dev keys {% #api-keys-vs-dev-keys %} + +API keys and [Dev keys](/docs/advanced/security/dev-keys) are not the same and cannot be used interchangeably. + +API keys permit access to Appwrite services in production environments, with access controlled through scopes to ensure secure and controlled server-side operations. Dev keys, conversely, are specifically designed to help you avoid abuse limits and CORS errors in test and development environments. + +API keys are for server SDKs and the CLI in production environments, while Dev keys are for client SDKs in development environments. + +# Create API key {% #create-api-key %} + +{% only_dark %} +![Project settings screen](/images/docs/project/dark/create-api-key.avif) +{% /only_dark %} +{% only_light %} +![Project settings screen](/images/docs/project/create-api-key.avif) +{% /only_light %} + +To create a new API key, navigate to **Overview** > **Integration** > **API keys** and click **Create API key**. + +You can then use the API key to initialize the Appwrite client in your server-side apps. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); // Your API key +``` + +```server-python +from appwrite.client import Client + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') # Your API key +``` + +```server-php +use Appwrite\Client; + +$client = new Client(); +$client + ->setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); // Your API key +``` + +```server-go +package main + +import "github.com/appwrite/sdk-for-go/client" + +func main() { + c := client.NewClient() + c.SetEndpoint("https://.cloud.appwrite.io/v1") + c.SetProject("") + c.SetKey("") // Your API key +} +``` + +```server-ruby +require 'appwrite' + +client = Appwrite::Client.new +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') # Your API key +``` + +```server-deno +import { Client } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); // Your API key +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); // Your API key +``` + +```server-kotlin +import io.appwrite.Client + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") // Your API key +``` + +```server-dotnet +using Appwrite; + +var client = new Client() + .SetEndpoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); // Your API key +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") // Your API key +``` + +```server-java +import io.appwrite.Client; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); // Your API key +``` + +```server-rust +use appwrite::Client; + +let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); // Your API key +``` +{% /multicode %} + +When adding a new API Key, you can choose which [scopes](#scopes) to grant your application. +If you need to replace your API Key, create a new key, update your app credentials and, once ready, delete your old key. + +# Manage API keys with a Server SDK {% #manage-api-keys-with-a-server-sdk %} + +You can also manage API keys programmatically using a Server SDK. This requires an API key with the `keys.read` and `keys.write` [scopes](#scopes). + +{% info title="Sensitive scopes" %} +The `keys.read` and `keys.write` scopes are very sensitive. An API key with `keys.write` can create new keys with any scope, effectively granting full access to your project. Only assign these scopes to keys used in trusted, secure environments, and never expose them in client-side applications. +{% /info %} + +## List API keys {% #list-api-keys %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listKeys(); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listKeys(); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->listKeys(); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.list_keys() +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.list_keys() +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.ListKeys(); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.listKeys(); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.listKeys() +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.listKeys( + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.listKeys() +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.ListKeys() + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.list_keys( + None, // queries + None, // total + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Get an API key {% #get-an-api-key %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getKey({ + keyId: '' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getKey({ + keyId: '' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->getKey( + keyId: '' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.get_key( + key_id='' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.get_key( + key_id: '' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.GetKey( + keyId: "" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.getKey( + keyId: '', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.getKey( + keyId = "" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.getKey( + "", // keyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.getKey( + keyId: "" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.GetKey( + "", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.get_key( + "", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Create an API key {% #create-an-api-key %} + +{% multicode %} +```server-nodejs +import { Client, Project, ID, ProjectKeyScopes } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createKey({ + keyId: ID.unique(), + name: 'My API Key', + scopes: [ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite], + expire: '2026-12-31T23:59:59.000+00:00' +}); +``` +```server-deno +import { Client, Project, ID, ProjectKeyScopes } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createKey({ + keyId: ID.unique(), + name: 'My API Key', + scopes: [ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite], + expire: '2026-12-31T23:59:59.000+00:00' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->createKey( + keyId: ID::unique(), + name: 'My API Key', + scopes: ['databases.read', 'databases.write'], + expire: '2026-12-31T23:59:59.000+00:00' +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project +from appwrite.enums import ProjectKeyScopes + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.create_key( + key_id=ID.unique(), + name='My API Key', + scopes=[ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE], + expire='2026-12-31T23:59:59.000+00:00' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.create_key( + key_id: ID.unique(), + name: 'My API Key', + scopes: ['databases.read', 'databases.write'], + expire: '2026-12-31T23:59:59.000+00:00' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; +using Appwrite.Models; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.CreateKey( + keyId: ID.Unique(), + name: "My API Key", + scopes: new List {ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite}, + expire: "2026-12-31T23:59:59.000+00:00" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.createKey( + keyId: ID.unique(), + name: 'My API Key', + scopes: [enums.ProjectKeyScopes.databasesRead, enums.ProjectKeyScopes.databasesWrite], + expire: '2026-12-31T23:59:59.000+00:00', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.enums.ProjectKeyScopes +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.createKey( + keyId = ID.unique(), + name = "My API Key", + scopes = listOf(ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE), + expire = "2026-12-31T23:59:59.000+00:00" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.enums.ProjectKeyScopes; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.createKey( + ID.unique(), // keyId + "My API Key", // name + List.of(ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE), // scopes + "2026-12-31T23:59:59.000+00:00", // expire + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.createKey( + keyId: ID.unique(), + name: "My API Key", + scopes: [ProjectKeyScopes.databasesRead, ProjectKeyScopes.databasesWrite], + expire: "2026-12-31T23:59:59.000+00:00" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateKey( + id.Unique(), + "My API Key", + []string{"databases.read", "databases.write"}, + project.WithCreateKeyExpire("2026-12-31T23:59:59.000+00:00"), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::enums::ProjectKeyScopes; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.create_key( + ID::unique(), // key_id + "My API Key", // name + vec![ProjectKeyScopes::DatabasesRead, ProjectKeyScopes::DatabasesWrite], // scopes + Some("2026-12-31T23:59:59.000+00:00"), // expire + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Create an ephemeral key {% #create-an-ephemeral-key %} + +Ephemeral keys are short-lived API keys that expire after a set duration, useful for temporary or single-session server access without managing a long-lived key. Pass the `scopes` to grant and a `duration` in seconds (maximum 3600). The response includes the generated secret and its expiration time. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectKeyScopes } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createEphemeralKey({ + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + duration: 600 +}); +``` +```server-deno +import { Client, Project, ProjectKeyScopes } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createEphemeralKey({ + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + duration: 600 +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->createEphemeralKey( + scopes: ['tables.read', 'tables.write'], + duration: 600 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.enums import ProjectKeyScopes + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.create_ephemeral_key( + scopes=[ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE], + duration=600 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.create_ephemeral_key( + scopes: ['tables.read', 'tables.write'], + duration: 600 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.CreateEphemeralKey( + scopes: new List {ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite}, + duration: 600 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.createEphemeralKey( + scopes: [enums.ProjectKeyScopes.tablesRead, enums.ProjectKeyScopes.tablesWrite], + duration: 600, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectKeyScopes +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.createEphemeralKey( + scopes = listOf(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), + duration = 600 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.enums.ProjectKeyScopes; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.createEphemeralKey( + List.of(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), // scopes + 600, // duration + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.createEphemeralKey( + scopes: [ProjectKeyScopes.tablesRead, ProjectKeyScopes.tablesWrite], + duration: 600 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateEphemeralKey( + []string{"tables.read", "tables.write"}, + 600, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectKeyScopes; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.create_ephemeral_key( + vec![ProjectKeyScopes::TablesRead, ProjectKeyScopes::TablesWrite], // scopes + 600, // duration + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Update an API key {% #update-an-api-key %} + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectKeyScopes } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateKey({ + keyId: '', + name: 'Updated Key', + scopes: [ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite, ProjectKeyScopes.UsersRead], + expire: '2027-06-30T23:59:59.000+00:00' +}); +``` +```server-deno +import { Client, Project, ProjectKeyScopes } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateKey({ + keyId: '', + name: 'Updated Key', + scopes: [ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite, ProjectKeyScopes.UsersRead], + expire: '2027-06-30T23:59:59.000+00:00' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateKey( + keyId: '', + name: 'Updated Key', + scopes: ['databases.read', 'databases.write', 'users.read'], + expire: '2027-06-30T23:59:59.000+00:00' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.enums import ProjectKeyScopes + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_key( + key_id='', + name='Updated Key', + scopes=[ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE, ProjectKeyScopes.USERS_READ], + expire='2027-06-30T23:59:59.000+00:00' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_key( + key_id: '', + name: 'Updated Key', + scopes: ['databases.read', 'databases.write', 'users.read'], + expire: '2027-06-30T23:59:59.000+00:00' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; +using Appwrite.Models; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateKey( + keyId: "", + name: "Updated Key", + scopes: new List {ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite, ProjectKeyScopes.UsersRead}, + expire: "2027-06-30T23:59:59.000+00:00" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateKey( + keyId: '', + name: 'Updated Key', + scopes: [enums.ProjectKeyScopes.databasesRead, enums.ProjectKeyScopes.databasesWrite, enums.ProjectKeyScopes.usersRead], + expire: '2027-06-30T23:59:59.000+00:00', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectKeyScopes +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.updateKey( + keyId = "", + name = "Updated Key", + scopes = listOf(ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE, ProjectKeyScopes.USERS_READ), + expire = "2027-06-30T23:59:59.000+00:00" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.enums.ProjectKeyScopes; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateKey( + "", // keyId + "Updated Key", // name + List.of(ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE, ProjectKeyScopes.USERS_READ), // scopes + "2027-06-30T23:59:59.000+00:00", // expire + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateKey( + keyId: "", + name: "Updated Key", + scopes: [ProjectKeyScopes.databasesRead, ProjectKeyScopes.databasesWrite, ProjectKeyScopes.usersRead], + expire: "2027-06-30T23:59:59.000+00:00" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateKey( + "", + "Updated Key", + []string{"databases.read", "databases.write", "users.read"}, + project.WithUpdateKeyExpire("2027-06-30T23:59:59.000+00:00"), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectKeyScopes; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_key( + "", // key_id + "Updated Key", // name + vec![ProjectKeyScopes::DatabasesRead, ProjectKeyScopes::DatabasesWrite, ProjectKeyScopes::UsersRead], // scopes + Some("2027-06-30T23:59:59.000+00:00"), // expire + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Delete an API key {% #delete-an-api-key %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +await project.deleteKey({ + keyId: '' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +await project.deleteKey({ + keyId: '' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$project->deleteKey( + keyId: '' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +project.delete_key( + key_id='' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +project.delete_key( + key_id: '' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +await project.DeleteKey( + keyId: "" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +await project.deleteKey( + keyId: '', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +project.deleteKey( + keyId = "" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.deleteKey( + "", // keyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +try await project.deleteKey( + keyId: "" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + _, err := project.DeleteKey( + "", + ) + + if err != nil { + panic(err) + } + + fmt.Println("API key deleted") +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + project.delete_key( + "", + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Scopes {% #scopes %} + +When adding a new API key, you choose which scopes to grant. Scopes are grouped by service, matching the categories shown in the Appwrite Console. + +{% accordion %} +{% accordion_item title="Auth" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `sessions.write` | Access to create, update, and delete user sessions | +| `users.read` | Access to read your project's users | +| `users.write` | Access to create, update, and delete your project's users | +| `teams.read` | Access to read your project's teams | +| `teams.write` | Access to create, update, and delete your project's teams | + +{% /accordion_item %} +{% accordion_item title="Databases" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `databases.read` | Access to read your project's databases | +| `databases.write` | Access to create, update, and delete your project's databases | +| `tables.read` | Access to read your project's database tables | +| `tables.write` | Access to create, update, and delete your project's database tables | +| `columns.read` | Access to read your project's database table columns | +| `columns.write` | Access to create, update, and delete your project's database table columns | +| `indexes.read` | Access to read your project's database table indexes | +| `indexes.write` | Access to create, update, and delete your project's database table indexes | +| `rows.read` | Access to read your project's database rows | +| `rows.write` | Access to create, update, and delete your project's database rows | + +{% /accordion_item %} +{% accordion_item title="Functions" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `functions.read` | Access to read your project's functions and code deployments | +| `functions.write` | Access to create, update, and delete your project's functions and code deployments| +| `execution.read` | Access to read your project's execution logs | +| `execution.write` | Access to execute your project's functions | + +{% /accordion_item %} +{% accordion_item title="Storage" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `files.read` | Access to read your project's storage files and preview images | +| `files.write` | Access to create, update, and delete your project's storage files | +| `buckets.read` | Access to read your project's storage buckets | +| `buckets.write` | Access to create, update, and delete your project's storage buckets | + +{% /accordion_item %} +{% accordion_item title="Messaging" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `providers.read` | Access to read your project's providers | +| `providers.write` | Access to create, update, and delete your project's providers | +| `messages.read` | Access to read your project's messages | +| `messages.write` | Access to create, update, and delete your project's messages | +| `topics.read` | Access to read your project's topics | +| `topics.write` | Access to create, update, and delete your project's topics | +| `subscribers.read` | Access to read your project's subscribers | +| `subscribers.write` | Access to create, update, and delete your project's subscribers | +| `targets.read` | Access to read your project's targets | +| `targets.write` | Access to create, update, and delete your project's targets | + +{% /accordion_item %} +{% accordion_item title="Sites" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `sites.read` | Access to read your project's sites and deployments | +| `sites.write` | Access to create, update, and delete your project's sites and deployments | +| `log.read` | Access to read your site's logs | +| `log.write` | Access to update and delete your site's logs | + +{% /accordion_item %} +{% accordion_item title="Other" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `locale.read` | Access to your project's Locale service | +| `avatars.read` | Access to your project's Avatars service | +| `health.read` | Access to read your project's health status | +| `migrations.read` | Access to read your project's migrations | +| `migrations.write` | Access to create, update, and delete your project's migrations | +| `tokens.read` | Access to read your project's tokens | +| `tokens.write` | Access to create, update, and delete your project's tokens | +| `webhooks.read` | Access to read your project's webhooks | +| `webhooks.write` | Access to create, update, and delete your project's webhooks | +| `keys.read` | Access to read your project's API keys | +| `keys.write` | Access to create, update, and delete your project's API keys | +| `rules.read` | Access to read your project's proxy rules | +| `rules.write` | Access to create, update, and delete your project's proxy rules | +| `vcs.read` | Access to read your project's VCS repositories | +| `vcs.write` | Access to create, update, and delete your project's VCS repositories | +| `assistant.read` | Access to read the Assistant service | + +{% /accordion_item %} +{% /accordion %} diff --git a/src/routes/docs/partners/project/auth-methods/+page.markdoc b/src/routes/docs/partners/project/auth-methods/+page.markdoc new file mode 100644 index 0000000000..7f833e22bc --- /dev/null +++ b/src/routes/docs/partners/project/auth-methods/+page.markdoc @@ -0,0 +1,287 @@ +--- +layout: article +title: Auth methods +description: Enable or disable authentication methods on your Appwrite project programmatically using server SDKs. +--- + +Each Appwrite project ships with a configurable set of authentication methods, including email and password, magic URL, email OTP, phone, anonymous sessions, JWT, and team invites. Methods can be toggled on or off from the Appwrite Console under **Auth** > **Settings**, or programmatically through any server SDK using the Project service. + +When a method is disabled, the matching account endpoints reject requests for that project until it is re-enabled. + +# Toggle from the Console {% #toggle-console %} + +{% only_dark %} +![Auth methods settings in the Appwrite Console](/images/docs/project/dark/auth-methods.avif) +{% /only_dark %} +{% only_light %} +![Auth methods settings in the Appwrite Console](/images/docs/project/auth-methods.avif) +{% /only_light %} + +To toggle auth methods manually: + +1. Open your project in the Appwrite Console. +2. Navigate to **Auth** in the sidebar, then open the **Settings** tab. +3. In the **Auth methods** card, toggle individual methods on or off, or use **Enable all** or **Disable all** for bulk changes. +4. Changes take effect immediately. No deploy or restart is required. + +OAuth2 providers are configured separately in the **OAuth2 Providers** section on the same page. + +# Method IDs {% #method-ids %} + +The `methodId` parameter accepts one of the following values: + +| Method ID | Description | +| --- | --- | +| `email-password` | Email and password sign-up and login. | +| `magic-url` | Passwordless login using a magic link sent to the user's email. | +| `email-otp` | Time-based one-time password sent to the user's email. | +| `phone` | SMS-based phone authentication. | +| `anonymous` | Guest sessions for unauthenticated visitors. | +| `invites` | Team invitations for collaborative access. | +| `jwt` | JWT-based authentication for delegated access. | + +# Enable or disable a method {% #update-auth-method %} + +Use the Project service `updateAuthMethod` endpoint with a method ID and the `enabled` flag. + +{% info title="Required scope" %} +The API key used for these calls needs the `project.write` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectAuthMethodId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateAuthMethod({ + methodId: ProjectAuthMethodId.Emailpassword, + enabled: false +}); +``` +```server-deno +import { Client, Project, ProjectAuthMethodId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateAuthMethod({ + methodId: ProjectAuthMethodId.Emailpassword, + enabled: false +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateAuthMethod( + methodId: ProjectAuthMethodId::EMAILPASSWORD(), + enabled: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.enums import ProjectAuthMethodId + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_auth_method( + method_id = ProjectAuthMethodId.EMAIL_PASSWORD, + enabled = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_auth_method( + method_id: ProjectAuthMethodId::EMAIL_PASSWORD, + enabled: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateAuthMethod( + methodId: ProjectAuthMethodId.EmailPassword, + enabled: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateAuthMethod( + methodId: enums.ProjectAuthMethodId.emailPassword, + enabled: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project +import io.appwrite.enums.ProjectAuthMethodId + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.updateAuthMethod( + methodId = ProjectAuthMethodId.EMAIL_PASSWORD, + enabled = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; +import io.appwrite.enums.ProjectAuthMethodId; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateAuthMethod( + ProjectAuthMethodId.EMAIL_PASSWORD, // methodId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateAuthMethod( + methodId: .emailPassword, + enabled: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateAuthMethod( + "email-password", + false, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; +use appwrite::enums::ProjectAuthMethodId; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_auth_method( + ProjectAuthMethodId::EmailPassword, + false, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-auth-method \ + --method-id email-password \ + --enabled false +``` +{% /multicode %} + +The endpoint returns the updated [Project](/docs/references/cloud/models/project) document with the new method state applied. diff --git a/src/routes/docs/partners/project/branded-emails/+page.markdoc b/src/routes/docs/partners/project/branded-emails/+page.markdoc new file mode 100644 index 0000000000..5ffa74fbd2 --- /dev/null +++ b/src/routes/docs/partners/project/branded-emails/+page.markdoc @@ -0,0 +1,900 @@ +--- +layout: article +title: White-label transactional emails +description: Route a customer's project emails through their own SMTP server and rebrand the email templates per locale with the Project API. +--- + +When a user on your customer's app resets their password, the email that lands in their inbox is part of your customer's brand, or it should be. Out of the box, those messages go through Appwrite's shared sender and carry Appwrite's default templates, which quietly breaks the white-label illusion the moment a user reads the "from" line. The Project API lets you route a project's mail through the customer's own SMTP server and rewrite every template, so verification, recovery, and invitation emails come from the customer's domain and read in their voice. + +This guide: + +- Points a project at the customer's SMTP server. +- Confirms that mail is reaching the inbox. +- Rebrands a template in the customer's voice. + +{% info title="Required scopes" %} +The SMTP calls need the `project.write` scope, and the template calls need the `templates.write` scope. +{% /info %} + +# Configure custom SMTP {% #configure-smtp %} + +Set up the client, then hand the project the customer's SMTP credentials and the sender identity their recipients should see in the inbox. The password is write-only, so it is stored securely and never comes back in a response. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectSMTPSecure } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSMTP({ + host: 'smtp.example.com', + port: 587, + username: '', // optional + password: '', // optional + senderEmail: 'email@example.com', + senderName: '', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '', // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +}); +``` +```server-deno +import { Client, Project, ProjectSMTPSecure } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSMTP({ + host: 'smtp.example.com', + port: 587, + username: '', // optional + password: '', // optional + senderEmail: 'email@example.com', + senderName: '', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '', // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateSMTP( + host: 'smtp.example.com', + port: 587, + username: '', // optional + password: '', // optional + senderEmail: 'email@example.com', + senderName: '', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '', // optional + secure: ProjectSMTPSecure::TLS(), // optional + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Project as ProjectModel +from appwrite.enums import ProjectSMTPSecure + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result: ProjectModel = project.update_smtp( + host = 'smtp.example.com', + port = 587, + username = '', # optional + password = '', # optional + sender_email = 'email@example.com', + sender_name = '', # optional + reply_to_email = 'email@example.com', # optional + reply_to_name = '', # optional + secure = ProjectSMTPSecure.TLS, # optional + enabled = True +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +result = project.update_smtp( + host: 'smtp.example.com', + port: 587, + username: '', # optional + password: '', # optional + sender_email: 'email@example.com', + sender_name: '', # optional + reply_to_email: 'email@example.com', # optional + reply_to_name: '', # optional + secure: ProjectSMTPSecure::TLS, # optional + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +Project result = await project.UpdateSMTP( + host: "smtp.example.com", + port: 587, + username: "", // optional + password: "", // optional + senderEmail: "email@example.com", + senderName: "", // optional + replyToEmail: "email@example.com", // optional + replyToName: "", // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +Project result = await project.updateSMTP( + host: 'smtp.example.com', + port: 587, + username: '', // (optional) + password: '', // (optional) + senderEmail: 'email@example.com', + senderName: '', // (optional) + replyToEmail: 'email@example.com', // (optional) + replyToName: '', // (optional) + secure: enums.ProjectSMTPSecure.tls, // (optional) + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.enums.ProjectSMTPSecure +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateSMTP( + host = "smtp.example.com", + port = 587, + username = "", // optional + password = "", // optional + senderEmail = "email@example.com", + senderName = "", // optional + replyToEmail = "email@example.com", // optional + replyToName = "", // optional + secure = ProjectSMTPSecure.TLS, // optional + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectSMTPSecure; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateSMTP( + "smtp.example.com", // host + 587, // port + "", // username (optional) + "", // password (optional) + "email@example.com", // senderEmail + "", // senderName (optional) + "email@example.com", // replyToEmail (optional) + "", // replyToName (optional) + ProjectSMTPSecure.TLS, // secure (optional) + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateSMTP( + host: "smtp.example.com", + port: 587, + username: "", // optional + password: "", // optional + senderEmail: "email@example.com", + senderName: "", // optional + replyToEmail: "email@example.com", // optional + replyToName: "", // optional + secure: .tls, // optional + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateSMTP( + appwrite.WithUpdateSMTPHost("smtp.example.com"), + appwrite.WithUpdateSMTPPort(587), + appwrite.WithUpdateSMTPUsername(""), + appwrite.WithUpdateSMTPPassword(""), + appwrite.WithUpdateSMTPSenderEmail("email@example.com"), + appwrite.WithUpdateSMTPSenderName(""), + appwrite.WithUpdateSMTPReplyToEmail("email@example.com"), + appwrite.WithUpdateSMTPReplyToName(""), + appwrite.WithUpdateSMTPSecure("tls"), + appwrite.WithUpdateSMTPEnabled(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; +use appwrite::enums::ProjectSMTPSecure; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); + client.set_project(""); + client.set_key(""); + + let project = Project::new(&client); + + let result = project.update_smtp( + Some("smtp.example.com"), + Some(587), + Some(""), // optional + Some(""), // optional + Some("email@example.com"), + Some(""), // optional + Some("email@example.com"), // optional + Some(""), // optional + Some(ProjectSMTPSecure::Tls), // optional + Some(true) + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project update-smtp \ + --host smtp.example.com \ + --port 587 \ + --username "" \ + --password "" \ + --sender-email email@example.com \ + --sender-name "" \ + --reply-to-email email@example.com \ + --reply-to-name "" \ + --secure tls \ + --enabled true +``` +```http +PATCH /v1/project/smtp HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "host": "smtp.example.com", + "port": 587, + "username": "", + "password": "", + "senderEmail": "email@example.com", + "senderName": "", + "replyToEmail": "email@example.com", + "replyToName": "", + "secure": "tls", + "enabled": true +} +``` +{% /multicode %} + +{% info title="Enabling SMTP validates the connection" %} +The moment you enable custom SMTP, Appwrite tries to connect to the host you gave it, so the server has to be reachable with those exact credentials or the call fails. Custom SMTP is also the prerequisite for everything below: you cannot customize email templates until it is enabled. +{% /info %} + +# Send a test email {% #test-smtp %} + +Do not wait for a real password reset to find out the configuration is wrong. Send yourself a test message, which goes out through the SMTP settings you just saved, and a message arriving in the inbox confirms the whole path end to end. + +{% multicode %} +```server-nodejs +const result = await project.createSMTPTest({ + emails: ['email@example.com'] +}); +``` +```server-deno +const result = await project.createSMTPTest({ + emails: ['email@example.com'] +}); +``` +```server-php +$result = $project->createSMTPTest( + emails: ['email@example.com'] +); +``` +```server-python +result = project.create_smtp_test( + emails = ['email@example.com'] +) +``` +```server-ruby +result = project.create_smtp_test( + emails: ['email@example.com'] +) +``` +```server-dotnet +await project.CreateSMTPTest( + emails: new List { "email@example.com" } +); +``` +```server-dart +await project.createSMTPTest( + emails: ['email@example.com'], +); +``` +```server-kotlin +val response = project.createSMTPTest( + emails = listOf("email@example.com") +) +``` +```server-java +project.createSMTPTest( + List.of("email@example.com"), // emails + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.createSMTPTest( + emails: ["email@example.com"] +) +``` +```server-go +response, err := project.CreateSMTPTest( + []interface{}{"email@example.com"}, +) + +if err != nil { + panic(err) +} + +fmt.Println(response) +``` +```server-rust +project.create_smtp_test( + vec!["email@example.com"] +).await?; +``` +```bash +appwrite project create-smtp-test \ + --emails email@example.com +``` +```http +POST /v1/project/smtp/tests HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "emails": ["email@example.com"] +} +``` +{% /multicode %} + +# Customize a template {% #customize-template %} + +With mail flowing through the customer's server, rebrand the messages themselves. Set the subject, body, and sender for a template in a given locale, and repeat per locale to localize. This example rewrites the verification email. + +{% multicode %} +```server-nodejs +const result = await project.updateEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: '', // optional + message: '', // optional + senderName: '', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '' // optional +}); +``` +```server-deno +const result = await project.updateEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: '', // optional + message: '', // optional + senderName: '', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '' // optional +}); +``` +```server-php +$result = $project->updateEmailTemplate( + templateId: ProjectEmailTemplateId::VERIFICATION(), + locale: ProjectEmailTemplateLocale::EN(), // optional + subject: '', // optional + message: '', // optional + senderName: '', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '' // optional +); +``` +```server-python +result: EmailTemplate = project.update_email_template( + template_id = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN, # optional + subject = '', # optional + message = '', # optional + sender_name = '', # optional + sender_email = 'email@example.com', # optional + reply_to_email = 'email@example.com', # optional + reply_to_name = '' # optional +) + +print(result.model_dump()) +``` +```server-ruby +result = project.update_email_template( + template_id: ProjectEmailTemplateId::VERIFICATION, + locale: ProjectEmailTemplateLocale::EN, # optional + subject: '', # optional + message: '', # optional + sender_name: '', # optional + sender_email: 'email@example.com', # optional + reply_to_email: 'email@example.com', # optional + reply_to_name: '' # optional +) +``` +```server-dotnet +EmailTemplate result = await project.UpdateEmailTemplate( + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: "", // optional + message: "", // optional + senderName: "", // optional + senderEmail: "email@example.com", // optional + replyToEmail: "email@example.com", // optional + replyToName: "" // optional +); +``` +```server-dart +EmailTemplate result = await project.updateEmailTemplate( + templateId: enums.ProjectEmailTemplateId.verification, + locale: enums.ProjectEmailTemplateLocale.en, // (optional) + subject: '', // (optional) + message: '', // (optional) + senderName: '', // (optional) + senderEmail: 'email@example.com', // (optional) + replyToEmail: 'email@example.com', // (optional) + replyToName: '', // (optional) +); +``` +```server-kotlin +val response = project.updateEmailTemplate( + templateId = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN, // optional + subject = "", // optional + message = "", // optional + senderName = "", // optional + senderEmail = "email@example.com", // optional + replyToEmail = "email@example.com", // optional + replyToName = "" // optional +) +``` +```server-java +project.updateEmailTemplate( + ProjectEmailTemplateId.VERIFICATION, // templateId + ProjectEmailTemplateLocale.EN, // locale (optional) + "", // subject (optional) + "", // message (optional) + "", // senderName (optional) + "email@example.com", // senderEmail (optional) + "email@example.com", // replyToEmail (optional) + "", // replyToName (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let emailTemplate = try await project.updateEmailTemplate( + templateId: .verification, + locale: .en, // optional + subject: "", // optional + message: "", // optional + senderName: "", // optional + senderEmail: "email@example.com", // optional + replyToEmail: "email@example.com", // optional + replyToName: "" // optional +) +``` +```server-go +result, err := project.UpdateEmailTemplate( + "verification", + appwrite.WithUpdateEmailTemplateLocale("en"), + appwrite.WithUpdateEmailTemplateSubject(""), + appwrite.WithUpdateEmailTemplateMessage(""), + appwrite.WithUpdateEmailTemplateSenderName(""), + appwrite.WithUpdateEmailTemplateSenderEmail("email@example.com"), + appwrite.WithUpdateEmailTemplateReplyToEmail("email@example.com"), + appwrite.WithUpdateEmailTemplateReplyToName(""), +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_email_template( + ProjectEmailTemplateId::Verification, + Some(ProjectEmailTemplateLocale::En), // optional + Some(""), // optional + Some(""), // optional + Some(""), // optional + Some("email@example.com"), // optional + Some("email@example.com"), // optional + Some("") // optional +).await?; + +let _ = result; +``` +```bash +appwrite project update-email-template \ + --template-id verification \ + --locale en \ + --subject "" \ + --message "" \ + --sender-name "" \ + --sender-email email@example.com \ + --reply-to-email email@example.com \ + --reply-to-name "" +``` +```http +PATCH /v1/project/templates/email HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "templateId": "verification", + "locale": "en", + "subject": "", + "message": "", + "senderName": "", + "senderEmail": "email@example.com", + "replyToEmail": "email@example.com", + "replyToName": "" +} +``` +{% /multicode %} + +The template ID is one of `verification`, `magicSession`, `recovery`, `invitation`, `mfaChallenge`, `sessionAlert`, or `otpSession`. + +# Read templates back {% #read-templates %} + +Read a template back to check the copy that is live, which is worth doing whenever you let a customer edit their own templates through your dashboard. + +{% multicode %} +```server-nodejs +const result = await project.getEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +}); +``` +```server-deno +const result = await project.getEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +}); +``` +```server-php +$result = $project->getEmailTemplate( + templateId: ProjectEmailTemplateId::VERIFICATION(), + locale: ProjectEmailTemplateLocale::EN() // optional +); +``` +```server-python +result: EmailTemplate = project.get_email_template( + template_id = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN # optional +) + +print(result.model_dump()) +``` +```server-ruby +result = project.get_email_template( + template_id: ProjectEmailTemplateId::VERIFICATION, + locale: ProjectEmailTemplateLocale::EN # optional +) +``` +```server-dotnet +EmailTemplate result = await project.GetEmailTemplate( + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +); +``` +```server-dart +EmailTemplate result = await project.getEmailTemplate( + templateId: enums.ProjectEmailTemplateId.verification, + locale: enums.ProjectEmailTemplateLocale.en, // (optional) +); +``` +```server-kotlin +val response = project.getEmailTemplate( + templateId = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN // optional +) +``` +```server-java +project.getEmailTemplate( + ProjectEmailTemplateId.VERIFICATION, // templateId + ProjectEmailTemplateLocale.EN, // locale (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let emailTemplate = try await project.getEmailTemplate( + templateId: .verification, + locale: .en // optional +) +``` +```server-go +result, err := project.GetEmailTemplate( + "verification", + appwrite.WithGetEmailTemplateLocale("en"), +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.get_email_template( + ProjectEmailTemplateId::Verification, + Some(ProjectEmailTemplateLocale::En) // optional +).await?; + +let _ = result; +``` +```bash +appwrite project get-email-template \ + --template-id verification \ + --locale en +``` +```http +GET /v1/project/templates/email/verification?locale=en HTTP/1.1 +X-Appwrite-Project: +X-Appwrite-Key: +``` +{% /multicode %} + +Or list the project's templates to see everything you have overridden in one call. + +{% multicode %} +```server-nodejs +const result = await project.listEmailTemplates({ + queries: [], // optional + total: false // optional +}); +``` +```server-deno +const result = await project.listEmailTemplates({ + queries: [], // optional + total: false // optional +}); +``` +```server-php +$result = $project->listEmailTemplates( + queries: [], // optional + total: false // optional +); +``` +```server-python +result: EmailTemplateList = project.list_email_templates( + queries = [], # optional + total = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +result = project.list_email_templates( + queries: [], # optional + total: false # optional +) +``` +```server-dotnet +EmailTemplateList result = await project.ListEmailTemplates( + queries: new List(), // optional + total: false // optional +); +``` +```server-dart +EmailTemplateList result = await project.listEmailTemplates( + queries: [], // (optional) + total: false, // (optional) +); +``` +```server-kotlin +val response = project.listEmailTemplates( + queries = listOf(), // optional + total = false // optional +) +``` +```server-java +project.listEmailTemplates( + List.of(), // queries (optional) + false, // total (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let emailTemplateList = try await project.listEmailTemplates( + queries: [], // optional + total: false // optional +) +``` +```server-go +result, err := project.ListEmailTemplates( + appwrite.WithListEmailTemplatesQueries([]interface{}{}), + appwrite.WithListEmailTemplatesTotal(false), +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.list_email_templates( + Some(vec![]), // optional + Some(false) // optional +).await?; + +let _ = result; +``` +```bash +appwrite project list-email-templates +``` +```http +GET /v1/project/templates/email HTTP/1.1 +X-Appwrite-Project: +X-Appwrite-Key: +``` +{% /multicode %} + +# Next steps {% #next-steps %} + +With SMTP and templates driven from code, every customer's project sends mail that carries their brand rather than yours. From here: + +- [Provision a project's baseline](/docs/partners/project/provisioning) so branding the emails is one step in onboarding. +- Read the [SMTP](/docs/partners/project/smtp) and [Email templates](/docs/partners/project/email-templates) references for every field you can set. diff --git a/src/routes/docs/partners/project/email-templates/+page.markdoc b/src/routes/docs/partners/project/email-templates/+page.markdoc new file mode 100644 index 0000000000..832c4ce973 --- /dev/null +++ b/src/routes/docs/partners/project/email-templates/+page.markdoc @@ -0,0 +1,872 @@ +--- +layout: article +title: Email templates +description: Customize the account management emails Appwrite sends to your users, including verification, password recovery, and magic URL emails, per locale. +--- + +Appwrite sends transactional emails on your behalf for account management flows such as email verification, password recovery, and magic URL sign-in. Email templates let you customize the subject, message body, sender identity, and reply-to address of each of these emails, with a separate version for every locale you support. + +{% info title="Custom SMTP required to save changes" %} +You can view the built-in default templates at any time, but saving a customization requires a custom SMTP server enabled on your project. See [Custom SMTP server](/docs/products/auth/message-templates#smtp) to set one up. +{% /info %} + +# Manage in the Console {% #console %} + +{% only_dark %} +![Email templates in the Appwrite Console](/images/docs/project/dark/email-templates.avif) +{% /only_dark %} +{% only_light %} +![Email templates in the Appwrite Console](/images/docs/project/email-templates.avif) +{% /only_light %} + +To edit email templates from the Appwrite Console: + +1. Navigate to your project. +2. Open the **Auth** section and select the **Templates** tab. +3. Under **Email templates**, expand the template you want to edit, such as **Verification** or **Reset password**. +4. Choose a **Template language**, then edit the sender name, sender email, reply-to address, subject, and message. Use the variable chips (`{{user}}`, `{{project}}`, `{{redirect}}`) to insert dynamic values into the subject and message. +5. Click **Update** to save the template for the selected language. + +# Manage with a Server SDK {% #server-sdks %} + +You can also manage email templates programmatically using a [Server SDK](/docs/sdks#server). + +{% info title="Required scopes" %} +The API key used for these calls needs `templates.read` to list or fetch templates, and `templates.write` to update them. +{% /info %} + +## List email templates {% #list-email-templates %} + +You can paginate the result with the `limit` and `offset` queries. See [Queries](/docs/products/databases/queries) for the query syntax. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.listEmailTemplates({ + queries: [], // optional + total: false // optional +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.listEmailTemplates({ + queries: [], // optional + total: false // optional +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->listEmailTemplates( + queries: [], // optional + total: false // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import EmailTemplateList + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: EmailTemplateList = project.list_email_templates( + queries = [], # optional + total = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.list_email_templates( + queries: [], # optional + total: false # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +EmailTemplateList result = await project.ListEmailTemplates( + queries: new List(), // optional + total: false // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +EmailTemplateList result = await project.listEmailTemplates( + queries: [], // (optional) + total: false, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.listEmailTemplates( + queries = listOf(), // optional + total = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.listEmailTemplates( + List.of(), // queries (optional) + false, // total (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let emailTemplateList = try await project.listEmailTemplates( + queries: [], // optional + total: false // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.ListEmailTemplates( + appwrite.WithListEmailTemplatesQueries([]interface{}{}), + appwrite.WithListEmailTemplatesTotal(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.list_email_templates( + Some(vec![]), // optional + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project list-email-templates +``` +{% /multicode %} + +## Get an email template {% #get-email-template %} + +Retrieve a single template by its type and, optionally, locale. If you omit the locale, the fallback locale `en` is returned. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectEmailTemplateId, ProjectEmailTemplateLocale } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.getEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +}); +``` +```server-deno +import { Client, Project, ProjectEmailTemplateId, ProjectEmailTemplateLocale } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.getEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->getEmailTemplate( + templateId: ProjectEmailTemplateId::VERIFICATION(), + locale: ProjectEmailTemplateLocale::EN() // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import EmailTemplate +from appwrite.enums import ProjectEmailTemplateId +from appwrite.enums import ProjectEmailTemplateLocale + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: EmailTemplate = project.get_email_template( + template_id = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.get_email_template( + template_id: ProjectEmailTemplateId::VERIFICATION, + locale: ProjectEmailTemplateLocale::EN # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +EmailTemplate result = await project.GetEmailTemplate( + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +EmailTemplate result = await project.getEmailTemplate( + templateId: enums.ProjectEmailTemplateId.verification, + locale: enums.ProjectEmailTemplateLocale.en, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.enums.ProjectEmailTemplateId +import io.appwrite.enums.ProjectEmailTemplateLocale +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.getEmailTemplate( + templateId = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectEmailTemplateId; +import io.appwrite.enums.ProjectEmailTemplateLocale; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.getEmailTemplate( + ProjectEmailTemplateId.VERIFICATION, // templateId + ProjectEmailTemplateLocale.EN, // locale (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let emailTemplate = try await project.getEmailTemplate( + templateId: .verification, + locale: .en // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.GetEmailTemplate( + "verification", + appwrite.WithGetEmailTemplateLocale("en"), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; +use appwrite::enums::ProjectEmailTemplateId; +use appwrite::enums::ProjectEmailTemplateLocale; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.get_email_template( + ProjectEmailTemplateId::Verification, + Some(ProjectEmailTemplateLocale::En) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project get-email-template \ + --template-id verification \ + --locale en +``` +{% /multicode %} + +## Update an email template {% #update-email-template %} + +Customize a template's subject, message, and sender identity for a given type and locale. Every field is optional, so you can change only the values you need. The `subject` and `message` accept the `{{user}}`, `{{project}}`, and `{{redirect}}` variables, which Appwrite replaces when sending the email. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectEmailTemplateId, ProjectEmailTemplateLocale } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.updateEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: '', // optional + message: '', // optional + senderName: '', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '' // optional +}); +``` +```server-deno +import { Client, Project, ProjectEmailTemplateId, ProjectEmailTemplateLocale } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.updateEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: '', // optional + message: '', // optional + senderName: '', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '' // optional +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->updateEmailTemplate( + templateId: ProjectEmailTemplateId::VERIFICATION(), + locale: ProjectEmailTemplateLocale::EN(), // optional + subject: '', // optional + message: '', // optional + senderName: '', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '' // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import EmailTemplate +from appwrite.enums import ProjectEmailTemplateId +from appwrite.enums import ProjectEmailTemplateLocale + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: EmailTemplate = project.update_email_template( + template_id = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN, # optional + subject = '', # optional + message = '', # optional + sender_name = '', # optional + sender_email = 'email@example.com', # optional + reply_to_email = 'email@example.com', # optional + reply_to_name = '' # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.update_email_template( + template_id: ProjectEmailTemplateId::VERIFICATION, + locale: ProjectEmailTemplateLocale::EN, # optional + subject: '', # optional + message: '', # optional + sender_name: '', # optional + sender_email: 'email@example.com', # optional + reply_to_email: 'email@example.com', # optional + reply_to_name: '' # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +EmailTemplate result = await project.UpdateEmailTemplate( + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: "", // optional + message: "", // optional + senderName: "", // optional + senderEmail: "email@example.com", // optional + replyToEmail: "email@example.com", // optional + replyToName: "" // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +EmailTemplate result = await project.updateEmailTemplate( + templateId: enums.ProjectEmailTemplateId.verification, + locale: enums.ProjectEmailTemplateLocale.en, // (optional) + subject: '', // (optional) + message: '', // (optional) + senderName: '', // (optional) + senderEmail: 'email@example.com', // (optional) + replyToEmail: 'email@example.com', // (optional) + replyToName: '', // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.enums.ProjectEmailTemplateId +import io.appwrite.enums.ProjectEmailTemplateLocale +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.updateEmailTemplate( + templateId = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN, // optional + subject = "", // optional + message = "", // optional + senderName = "", // optional + senderEmail = "email@example.com", // optional + replyToEmail = "email@example.com", // optional + replyToName = "" // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectEmailTemplateId; +import io.appwrite.enums.ProjectEmailTemplateLocale; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.updateEmailTemplate( + ProjectEmailTemplateId.VERIFICATION, // templateId + ProjectEmailTemplateLocale.EN, // locale (optional) + "", // subject (optional) + "", // message (optional) + "", // senderName (optional) + "email@example.com", // senderEmail (optional) + "email@example.com", // replyToEmail (optional) + "", // replyToName (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let emailTemplate = try await project.updateEmailTemplate( + templateId: .verification, + locale: .en, // optional + subject: "", // optional + message: "", // optional + senderName: "", // optional + senderEmail: "email@example.com", // optional + replyToEmail: "email@example.com", // optional + replyToName: "" // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateEmailTemplate( + "verification", + appwrite.WithUpdateEmailTemplateLocale("en"), + appwrite.WithUpdateEmailTemplateSubject(""), + appwrite.WithUpdateEmailTemplateMessage(""), + appwrite.WithUpdateEmailTemplateSenderName(""), + appwrite.WithUpdateEmailTemplateSenderEmail("email@example.com"), + appwrite.WithUpdateEmailTemplateReplyToEmail("email@example.com"), + appwrite.WithUpdateEmailTemplateReplyToName(""), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; +use appwrite::enums::ProjectEmailTemplateId; +use appwrite::enums::ProjectEmailTemplateLocale; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.update_email_template( + ProjectEmailTemplateId::Verification, + Some(ProjectEmailTemplateLocale::En), // optional + Some(""), // optional + Some(""), // optional + Some(""), // optional + Some("email@example.com"), // optional + Some("email@example.com"), // optional + Some("") // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project update-email-template \ + --template-id verification \ + --locale en \ + --subject "" \ + --message "" \ + --sender-name "" \ + --sender-email email@example.com \ + --reply-to-email email@example.com \ + --reply-to-name "" +``` +{% /multicode %} + +# Template types {% #template-types %} + +Each email template is identified by a `templateId`. The available types map to the account management emails Appwrite sends: + +| Console name | Template ID | Sent when | +|------------------|----------------|------------------------------------------------------------| +| Verification | `verification` | A user requests email address verification. | +| Magic URL | `magicSession` | A user signs in with a magic URL link. | +| OTP session | `otpSession` | A user signs in with an email one-time password. | +| Reset password | `recovery` | A user starts the password recovery flow. | +| Invite user | `invitation` | A user is invited to join a team. | +| 2FA verification | `mfaChallenge` | A user completes an email-based multi-factor challenge. | +| Session alert | `sessionAlert` | A new session is created on a user's account. | + +# Locales {% #locales %} + +Templates are stored per locale, so you can send the right copy to each audience. Pass the `locale` parameter to read or write the version for a specific language. If you omit it, Appwrite uses the fallback locale `en`. Locale codes follow the ISO 639-1 standard with optional region suffixes, such as `en`, `fr`, `de`, or `pt-br`. + +# Benefits {% #benefits %} + +- **On-brand emails.** Replace the default sender name, address, subject, and message so account emails match your product instead of generic Appwrite copy. +- **Localized messaging.** Maintain a separate version of each template per locale and reach every user in their own language. +- **Repeatable provisioning.** Script template content as code and apply the same configuration across dev, staging, and production projects without clicking through the Console. diff --git a/src/routes/docs/partners/project/environment-variables/+page.markdoc b/src/routes/docs/partners/project/environment-variables/+page.markdoc new file mode 100644 index 0000000000..fe309d414b --- /dev/null +++ b/src/routes/docs/partners/project/environment-variables/+page.markdoc @@ -0,0 +1,1222 @@ +--- +layout: article +title: Environment variables +description: Use project, function, and site environment variables to pass constants and secrets to your Appwrite Functions and Appwrite Sites at build and runtime. +--- + +Environment variables let you pass constants and secrets such as API keys, connection strings, and feature flags into your Appwrite Functions and Appwrite Sites at build and runtime. Storing values outside your source keeps secrets out of version control and lets you change configuration without code changes. + +Appwrite supports three scopes of environment variables: + +- **Project variables** are shared across every function and site in the project. Use them for values consumed by more than one resource, such as a shared third-party API key, a database URL, or a feature flag. +- **Function variables** are scoped to a single function. Use them for values only that function needs. +- **Site variables** are scoped to a single site. Use them for values only that site needs. + +When the same key is defined in multiple scopes, the more specific scope wins. Function or site variables override project variables, and Appwrite-injected variables (those prefixed with `APPWRITE_`) take final precedence and cannot be overridden. + +{% info title="Redeployment required" %} +Variable changes only take effect on the next deployment. Redeploy your functions or sites after creating, updating, or deleting variables. +{% /info %} + +# Project variables {% #project-variables %} + +Project variables are available to every function and site in your project. They are managed at the project level and merged into each function or site's environment automatically at build and runtime. + +This page covers how to manage project variables. To manage variables on a single function or site, see the dedicated pages: + +{% cards %} +{% cards_item href="/docs/products/functions/environment-variables" title="Function variables" %} +Manage variables for a single function. +{% /cards_item %} +{% cards_item href="/docs/products/sites/environment-variables" title="Site variables" %} +Manage variables for a single site. +{% /cards_item %} +{% /cards %} + +# Manage in the Console {% #console %} + +You can create and manage project variables from the Appwrite Console. The Console refers to them as **Global variables**: + +1. Navigate to your project. +2. Open **Settings** and scroll to the **Global variables** section. +3. Click **Create a global variable** and enter a key and value. +4. Optionally select the **Secret** checkbox to prevent any team member from reading the value after creation. +5. Click **Create**, then redeploy your functions and sites for the change to take effect. + +{% only_dark %} +![Project Global variables in the Appwrite Console](/images/docs/platform/dark/env-variables.avif) +{% /only_dark %} +{% only_light %} +![Project Global variables in the Appwrite Console](/images/docs/platform/env-variables.avif) +{% /only_light %} + +# Manage with a Server SDK {% #server-sdks %} + +You can also manage project variables programmatically using a [Server SDK](/docs/sdks#server). + +{% info title="Required scopes" %} +The API key used for these calls needs `project.read` to list or fetch variables, and `project.write` to create, update, or delete them. +{% /info %} + +## Create a variable {% #create-variable %} + +{% multicode %} +```server-nodejs +import { Client, Project, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.createVariable({ + variableId: ID.unique(), + key: '', + value: '', + secret: false // optional +}); +``` +```server-deno +import { Client, Project, ID } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.createVariable({ + variableId: ID.unique(), + key: '', + value: '', + secret: false // optional +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->createVariable( + variableId: ID::unique(), + key: '', + value: '', + secret: false // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project +from appwrite.models import Variable + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: Variable = project.create_variable( + variable_id = ID.unique(), + key = '', + value = '', + secret = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.create_variable( + variable_id: ID.unique(), + key: '', + value: '', + secret: false # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +Variable result = await project.CreateVariable( + variableId: ID.Unique(), + key: "", + value: "", + secret: false // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +Variable result = await project.createVariable( + variableId: ID.unique(), + key: '', + value: '', + secret: false, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.createVariable( + variableId = ID.unique(), + key = "", + value = "", + secret = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.createVariable( + ID.unique(), // variableId + "", // key + "", // value + false, // secret (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let variable = try await project.createVariable( + variableId: ID.unique(), + key: "", + value: "", + secret: false // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), +) + +project := appwrite.NewProject(client) + +response, error := project.CreateVariable( + id.Unique(), + "", + "", + appwrite.WithCreateVariableSecret(false), +) +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.create_variable( + &ID::unique(), + "", + "", + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +## List variables {% #list-variables %} + +You can paginate, filter, and sort the result. See [Queries](/docs/products/databases/queries) for the query syntax. The list endpoint accepts queries on the `key`, `value`, and `secret` attributes. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.listVariables({ + queries: [], // optional + total: false // optional +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.listVariables({ + queries: [], // optional + total: false // optional +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->listVariables( + queries: [], // optional + total: false // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import VariableList + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: VariableList = project.list_variables( + queries = [], # optional + total = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.list_variables( + queries: [], # optional + total: false # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +VariableList result = await project.ListVariables( + queries: new List(), // optional + total: false // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +VariableList result = await project.listVariables( + queries: [], // (optional) + total: false, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.listVariables( + queries = listOf(), // optional + total = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.listVariables( + List.of(), // queries (optional) + false, // total (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let variableList = try await project.listVariables( + queries: [], // optional + total: false // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), +) + +project := appwrite.NewProject(client) + +response, error := project.ListVariables( + appwrite.WithListVariablesQueries([]interface{}{}), + appwrite.WithListVariablesTotal(false), +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.list_variables( + Some(vec![]), // optional + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +## Get a variable {% #get-variable %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.getVariable({ + variableId: '' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.getVariable({ + variableId: '' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->getVariable( + variableId: '' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Variable + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: Variable = project.get_variable( + variable_id = '' +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.get_variable( + variable_id: '' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +Variable result = await project.GetVariable( + variableId: "" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +Variable result = await project.getVariable( + variableId: '', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.getVariable( + variableId = "" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.getVariable( + "", // variableId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let variable = try await project.getVariable( + variableId: "" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), +) + +project := appwrite.NewProject(client) + +response, error := project.GetVariable( + "", +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.get_variable( + "" + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +## Update a variable {% #update-variable %} + +You can change a variable's `key`, `value`, or `secret` flag. Marking a variable as secret is one-way. Once set, the value is no longer readable from the Console or API. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.updateVariable({ + variableId: '', + key: '', // optional + value: '', // optional + secret: false // optional +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.updateVariable({ + variableId: '', + key: '', // optional + value: '', // optional + secret: false // optional +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->updateVariable( + variableId: '', + key: '', // optional + value: '', // optional + secret: false // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Variable + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: Variable = project.update_variable( + variable_id = '', + key = '', # optional + value = '', # optional + secret = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.update_variable( + variable_id: '', + key: '', # optional + value: '', # optional + secret: false # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +Variable result = await project.UpdateVariable( + variableId: "", + key: "", // optional + value: "", // optional + secret: false // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +Variable result = await project.updateVariable( + variableId: '', + key: '', // (optional) + value: '', // (optional) + secret: false, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.updateVariable( + variableId = "", + key = "", // optional + value = "", // optional + secret = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.updateVariable( + "", // variableId + "", // key (optional) + "", // value (optional) + false, // secret (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let variable = try await project.updateVariable( + variableId: "", + key: "", // optional + value: "", // optional + secret: false // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), +) + +project := appwrite.NewProject(client) + +response, error := project.UpdateVariable( + "", + appwrite.WithUpdateVariableKey(""), + appwrite.WithUpdateVariableValue(""), + appwrite.WithUpdateVariableSecret(false), +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.update_variable( + "", + Some(""), // optional + Some(""), // optional + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +## Delete a variable {% #delete-variable %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.deleteVariable({ + variableId: '' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.deleteVariable({ + variableId: '' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->deleteVariable( + variableId: '' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result = project.delete_variable( + variable_id = '' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.delete_variable( + variable_id: '' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +await project.DeleteVariable( + variableId: "" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +await project.deleteVariable( + variableId: '', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.deleteVariable( + variableId = "" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.deleteVariable( + "", // variableId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let result = try await project.deleteVariable( + variableId: "" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), +) + +project := appwrite.NewProject(client) + +response, error := project.DeleteVariable( + "", +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + project.delete_variable( + "" + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Secret variables {% #secret-variables %} + +Mark a variable as **Secret** to hide its value from the Console and API after creation. Only the function or site runtime can read the value at build and runtime. Team members and external integrations cannot retrieve it after creation. + +You can mark a variable as secret either when you create it or by updating an existing variable. Marking a variable as secret cannot be reversed. To replace a secret value, delete the variable and create a new one with the same key. + +# Override behavior {% #overrides %} + +When the same key is defined in multiple scopes, more specific scopes take precedence: + +1. Project variables are merged into the runtime environment first. +2. Function or site variables override matching keys from project scope. +3. Appwrite-injected variables (those prefixed with `APPWRITE_`) override matching keys from both scopes and cannot be customized. + +This lets you set a default at the project level (for example, `LOG_LEVEL=info`) and override it for a specific function or site that needs different behavior. + +# Limits {% #limits %} + +| Field | Limit | +|----------------|------------------------------------------------| +| Variable ID | 36 characters, `a-z A-Z 0-9 . - _` | +| Key | 255 characters | +| Value | 8192 characters | diff --git a/src/routes/docs/partners/project/key-rotation/+page.markdoc b/src/routes/docs/partners/project/key-rotation/+page.markdoc new file mode 100644 index 0000000000..9384f0e84b --- /dev/null +++ b/src/routes/docs/partners/project/key-rotation/+page.markdoc @@ -0,0 +1,811 @@ +--- +layout: article +title: Issue and rotate API keys +description: Manage the full life of an API key with the Project API, from issuing a scoped credential to auditing, rotating, and revoking it. +--- + +Every connection your platform makes into a customer's project rides on an API key, and a key is a credential like any other in production. Left alone, a long-lived key with broad scopes is exactly the thing a security review flags: too much access, no expiry, no record of when it was last rotated. The Project API lets you run a key's whole life from your backend so it never becomes that liability: + +- Issue it scoped to one integration, with an expiry. +- Audit the keys on the project before each rotation cycle. +- Replace its secret on a schedule, with no downtime. +- Revoke it the moment it is no longer needed. + +This guide follows one key from the day you stand up an integration against a customer's project, through the routine audit and rotation that keeps it fresh, to the day you retire it. + +{% info title="Required scopes" %} +The API key used for these calls needs the `keys.read` and `keys.write` scopes. +{% /info %} + +# Issue a key scoped to the integration {% #issue-key %} + +When you connect a new integration to a customer's project, give it a key that can reach only the parts of the API that integration touches, and put an expiry on it from the start. Set up the client once, then issue the key. A sync job that reads and writes tables needs the `tables.read` and `tables.write` scopes and nothing more, so that is all its key gets. + +{% multicode %} +```server-nodejs +import { Client, Project, ID, ProjectKeyScopes } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createKey({ + keyId: ID.unique(), + name: 'Tenant integration', + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + expire: '2026-12-31T23:59:59.000+00:00' +}); +``` +```server-deno +import { Client, Project, ID, ProjectKeyScopes } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createKey({ + keyId: ID.unique(), + name: 'Tenant integration', + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + expire: '2026-12-31T23:59:59.000+00:00' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->createKey( + keyId: ID::unique(), + name: 'Tenant integration', + scopes: ['tables.read', 'tables.write'], + expire: '2026-12-31T23:59:59.000+00:00' +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project +from appwrite.enums import ProjectKeyScopes + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.create_key( + key_id=ID.unique(), + name='Tenant integration', + scopes=[ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE], + expire='2026-12-31T23:59:59.000+00:00' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.create_key( + key_id: ID.unique(), + name: 'Tenant integration', + scopes: ['tables.read', 'tables.write'], + expire: '2026-12-31T23:59:59.000+00:00' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; +using Appwrite.Models; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.CreateKey( + keyId: ID.Unique(), + name: "Tenant integration", + scopes: new List {ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite}, + expire: "2026-12-31T23:59:59.000+00:00" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.createKey( + keyId: ID.unique(), + name: 'Tenant integration', + scopes: [enums.ProjectKeyScopes.tablesRead, enums.ProjectKeyScopes.tablesWrite], + expire: '2026-12-31T23:59:59.000+00:00', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.enums.ProjectKeyScopes +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.createKey( + keyId = ID.unique(), + name = "Tenant integration", + scopes = listOf(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), + expire = "2026-12-31T23:59:59.000+00:00" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.enums.ProjectKeyScopes; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.createKey( + ID.unique(), // keyId + "Tenant integration", // name + List.of(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), // scopes + "2026-12-31T23:59:59.000+00:00", // expire + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.createKey( + keyId: ID.unique(), + name: "Tenant integration", + scopes: [ProjectKeyScopes.tablesRead, ProjectKeyScopes.tablesWrite], + expire: "2026-12-31T23:59:59.000+00:00" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateKey( + id.Unique(), + "Tenant integration", + []string{"tables.read", "tables.write"}, + project.WithCreateKeyExpire("2026-12-31T23:59:59.000+00:00"), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::enums::ProjectKeyScopes; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.create_key( + ID::unique(), // key_id + "Tenant integration", // name + vec![ProjectKeyScopes::TablesRead, ProjectKeyScopes::TablesWrite], // scopes + Some("2026-12-31T23:59:59.000+00:00"), // expire + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project create-key \ + --key-id 'unique()' \ + --name "Tenant integration" \ + --scopes tables.read tables.write +``` +```http +POST /v1/project/keys HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "keyId": "unique()", + "name": "Tenant integration", + "scopes": ["tables.read", "tables.write"], + "expire": "2026-12-31T23:59:59.000+00:00" +} +``` +{% /multicode %} + +The secret is returned once, on creation, and never again. Write it straight to your secrets manager, because there is no call that reads it back. + +# Audit the project's keys {% #audit-keys %} + +Rotation begins with knowing what is out there. When a rotation window comes due, list the keys on the project to see them all and when each one expires. + +{% multicode %} +```server-nodejs +const result = await project.listKeys(); +``` +```server-deno +const result = await project.listKeys(); +``` +```server-php +$result = $project->listKeys(); +``` +```server-python +result = project.list_keys() +``` +```server-ruby +response = project.list_keys() +``` +```server-dotnet +var result = await project.ListKeys(); +``` +```server-dart +final result = await project.listKeys(); +``` +```server-kotlin +val result = project.listKeys() +``` +```server-java +project.listKeys( + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.listKeys() +``` +```server-go +result, err := project.ListKeys() + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.list_keys( + None, // queries + None, // total +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project list-keys +``` +```http +GET /v1/project/keys HTTP/1.1 +X-Appwrite-Project: +X-Appwrite-Key: +``` +{% /multicode %} + +For any key that is close to expiry, read it back to confirm exactly what it can do before you decide how to handle it. + +{% multicode %} +```server-nodejs +const result = await project.getKey({ + keyId: '' +}); +``` +```server-deno +const result = await project.getKey({ + keyId: '' +}); +``` +```server-php +$result = $project->getKey( + keyId: '' +); +``` +```server-python +result = project.get_key( + key_id='' +) +``` +```server-ruby +response = project.get_key( + key_id: '' +) +``` +```server-dotnet +var result = await project.GetKey( + keyId: "" +); +``` +```server-dart +final result = await project.getKey( + keyId: '', +); +``` +```server-kotlin +val result = project.getKey( + keyId = "" +) +``` +```server-java +project.getKey( + "", // keyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.getKey( + keyId: "" +) +``` +```server-go +result, err := project.GetKey( + "", +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.get_key( + "", +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project get-key \ + --key-id '' +``` +```http +GET /v1/project/keys/ HTTP/1.1 +X-Appwrite-Project: +X-Appwrite-Key: +``` +{% /multicode %} + +# Update a key's scopes or expiry {% #adjust-key %} + +Sometimes a key just needs a smaller scope set or a later expiry, not a new secret. Updating a key changes its name, scopes, and expiry while keeping the same secret, so reach for it when you are adjusting access for an integration that has not changed credentials. + +{% multicode %} +```server-nodejs +const result = await project.updateKey({ + keyId: '', + name: 'Updated Key', + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite, ProjectKeyScopes.UsersRead], + expire: '2027-06-30T23:59:59.000+00:00' +}); +``` +```server-deno +const result = await project.updateKey({ + keyId: '', + name: 'Updated Key', + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite, ProjectKeyScopes.UsersRead], + expire: '2027-06-30T23:59:59.000+00:00' +}); +``` +```server-php +$result = $project->updateKey( + keyId: '', + name: 'Updated Key', + scopes: ['tables.read', 'tables.write', 'users.read'], + expire: '2027-06-30T23:59:59.000+00:00' +); +``` +```server-python +result = project.update_key( + key_id='', + name='Updated Key', + scopes=[ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE, ProjectKeyScopes.USERS_READ], + expire='2027-06-30T23:59:59.000+00:00' +) +``` +```server-ruby +response = project.update_key( + key_id: '', + name: 'Updated Key', + scopes: ['tables.read', 'tables.write', 'users.read'], + expire: '2027-06-30T23:59:59.000+00:00' +) +``` +```server-dotnet +var result = await project.UpdateKey( + keyId: "", + name: "Updated Key", + scopes: new List {ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite, ProjectKeyScopes.UsersRead}, + expire: "2027-06-30T23:59:59.000+00:00" +); +``` +```server-dart +final result = await project.updateKey( + keyId: '', + name: 'Updated Key', + scopes: [enums.ProjectKeyScopes.tablesRead, enums.ProjectKeyScopes.tablesWrite, enums.ProjectKeyScopes.usersRead], + expire: '2027-06-30T23:59:59.000+00:00', +); +``` +```server-kotlin +val result = project.updateKey( + keyId = "", + name = "Updated Key", + scopes = listOf(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE, ProjectKeyScopes.USERS_READ), + expire = "2027-06-30T23:59:59.000+00:00" +) +``` +```server-java +project.updateKey( + "", // keyId + "Updated Key", // name + List.of(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE, ProjectKeyScopes.USERS_READ), // scopes + "2027-06-30T23:59:59.000+00:00", // expire + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.updateKey( + keyId: "", + name: "Updated Key", + scopes: [ProjectKeyScopes.tablesRead, ProjectKeyScopes.tablesWrite, ProjectKeyScopes.usersRead], + expire: "2027-06-30T23:59:59.000+00:00" +) +``` +```server-go +result, err := project.UpdateKey( + "", + "Updated Key", + []string{"tables.read", "tables.write", "users.read"}, + project.WithUpdateKeyExpire("2027-06-30T23:59:59.000+00:00"), +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_key( + "", // key_id + "Updated Key", // name + vec![ProjectKeyScopes::TablesRead, ProjectKeyScopes::TablesWrite, ProjectKeyScopes::UsersRead], // scopes + Some("2027-06-30T23:59:59.000+00:00"), // expire +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project update-key \ + --key-id '' \ + --name "Updated Key" \ + --scopes tables.read tables.write users.read +``` +```http +PUT /v1/project/keys/ HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "name": "Updated Key", + "scopes": ["tables.read", "tables.write", "users.read"], + "expire": "2027-06-30T23:59:59.000+00:00" +} +``` +{% /multicode %} + +# Rotate a key's secret {% #roll-secret %} + +Rotating the secret itself, the part a security policy usually requires on a fixed cadence, means retiring one key and standing up another without a gap in service: + +1. Issue a fresh key with the same scopes using the create call above. +2. Point the integration at the new secret. +3. Confirm its traffic has moved over. +4. Delete the old key so the retired secret stops working. + +{% multicode %} +```server-nodejs +await project.deleteKey({ + keyId: '' +}); +``` +```server-deno +await project.deleteKey({ + keyId: '' +}); +``` +```server-php +$project->deleteKey( + keyId: '' +); +``` +```server-python +project.delete_key( + key_id='' +) +``` +```server-ruby +project.delete_key( + key_id: '' +) +``` +```server-dotnet +await project.DeleteKey( + keyId: "" +); +``` +```server-dart +await project.deleteKey( + keyId: '', +); +``` +```server-kotlin +project.deleteKey( + keyId = "" +) +``` +```server-java +project.deleteKey( + "", // keyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +try await project.deleteKey( + keyId: "" +) +``` +```server-go +_, err := project.DeleteKey( + "", +) + +if err != nil { + panic(err) +} + +fmt.Println("API key deleted") +``` +```server-rust +project.delete_key( + "", +).await?; +``` +```bash +appwrite project delete-key \ + --key-id '' +``` +```http +DELETE /v1/project/keys/ HTTP/1.1 +X-Appwrite-Project: +X-Appwrite-Key: +``` +{% /multicode %} + +The delete takes effect immediately, so only run it once you have confirmed nothing is still authenticating with the old secret. The same call revokes a key that has leaked, without waiting for its expiry. + +# Issue a short-lived ephemeral key {% #ephemeral-access %} + +Not every job deserves a long-lived key. A support engineer running a one-off migration, or a script that needs an hour of access, can take an ephemeral key instead. It carries its scopes and a lifetime of up to an hour, then expires on its own with nothing for you to revoke afterward. + +{% multicode %} +```server-nodejs +const result = await project.createEphemeralKey({ + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + duration: 600 +}); +``` +```server-deno +const result = await project.createEphemeralKey({ + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + duration: 600 +}); +``` +```server-php +$result = $project->createEphemeralKey( + scopes: ['tables.read', 'tables.write'], + duration: 600 +); +``` +```server-python +result = project.create_ephemeral_key( + scopes=[ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE], + duration=600 +) +``` +```server-ruby +response = project.create_ephemeral_key( + scopes: ['tables.read', 'tables.write'], + duration: 600 +) +``` +```server-dotnet +var result = await project.CreateEphemeralKey( + scopes: new List {ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite}, + duration: 600 +); +``` +```server-dart +final result = await project.createEphemeralKey( + scopes: [enums.ProjectKeyScopes.tablesRead, enums.ProjectKeyScopes.tablesWrite], + duration: 600, +); +``` +```server-kotlin +val result = project.createEphemeralKey( + scopes = listOf(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), + duration = 600 +) +``` +```server-java +project.createEphemeralKey( + List.of(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), // scopes + 600, // duration + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.createEphemeralKey( + scopes: [ProjectKeyScopes.tablesRead, ProjectKeyScopes.tablesWrite], + duration: 600 +) +``` +```server-go +result, err := project.CreateEphemeralKey( + []string{"tables.read", "tables.write"}, + 600, +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.create_ephemeral_key( + vec![ProjectKeyScopes::TablesRead, ProjectKeyScopes::TablesWrite], // scopes + 600, // duration +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project create-ephemeral-key \ + --scopes tables.read tables.write \ + --duration 600 +``` +```http +POST /v1/project/keys/ephemeral HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "scopes": ["tables.read", "tables.write"], + "duration": 600 +} +``` +{% /multicode %} + +# Next steps {% #next-steps %} + +Running a key's whole life from code is what lets you treat customer credentials as managed infrastructure instead of secrets someone pasted once. The same Project API covers the rest of a project's life: + +- [Provision a project's baseline](/docs/partners/project/provisioning) before you issue its first key. +- Read the [API keys](/docs/partners/project/api-keys) reference for the full list of scopes a key can hold. diff --git a/src/routes/docs/partners/project/labels/+page.markdoc b/src/routes/docs/partners/project/labels/+page.markdoc new file mode 100644 index 0000000000..a827241450 --- /dev/null +++ b/src/routes/docs/partners/project/labels/+page.markdoc @@ -0,0 +1,270 @@ +--- +layout: article +title: Labels +description: Assign customizable labels to your Appwrite project to categorize and filter projects within an organization. +--- + +Labels are short alphanumeric tags you assign to a project. Use them to categorize your projects and filter them within an organization, for example by environment (`production`, `staging`), team, or region. + +# Manage in the Console {% #console %} + +{% only_dark %} +![Project labels in the Appwrite Console](/images/docs/project/dark/labels.avif) +{% /only_dark %} +{% only_light %} +![Project labels in the Appwrite Console](/images/docs/project/labels.avif) +{% /only_light %} + +To manage labels from the Appwrite Console: + +1. Navigate to your project. +2. Open the **Settings** section. The **Labels** card is on the **Overview** tab. +3. In the **Labels** field, type a label and press Enter, or select one of the suggested labels. Labels may contain only alphanumeric characters. +4. Click **Update** to save your changes. + +# Manage with a Server SDK {% #server-sdks %} + +You can also manage project labels programmatically using a [Server SDK](/docs/sdks#server). + +{% info title="Required scope" %} +The API key used for this call needs the `project.write` scope. +{% /info %} + +## Update labels {% #update-labels %} + +The `labels` array replaces the project's existing labels, so include every label you want to keep in each call. A project can have up to 1000 labels, each up to 36 alphanumeric characters long. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.updateLabels({ + labels: ['production', 'eu'] +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.updateLabels({ + labels: ['production', 'eu'] +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->updateLabels( + labels: ['production', 'eu'] +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Project as ProjectModel + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: ProjectModel = project.update_labels( + labels = ['production', 'eu'] +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.update_labels( + labels: ['production', 'eu'] +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +Project result = await project.UpdateLabels( + labels: new List { "production", "eu" } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +Project result = await project.updateLabels( + labels: ['production', 'eu'], +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.updateLabels( + labels = listOf("production", "eu") +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.updateLabels( + List.of("production", "eu"), // labels + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let result = try await project.updateLabels( + labels: ["production", "eu"] +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateLabels( + []interface{}{"production", "eu"}, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.update_labels( + vec!["production", "eu"] + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project update-labels \ + --labels production \ + --labels eu +``` +{% /multicode %} + +{% info title="Reading labels" %} +Labels have no dedicated read endpoint. Call `get` to fetch the project and read its `labels` field. + +```server-nodejs +const result = await project.get(); +console.log(result.labels); // ['production', 'eu'] +``` +{% /info %} + +# Benefits {% #benefits %} + +- **Organize at scale.** Group related projects with shared tags such as environment, team, or region, so large organizations stay navigable. +- **Faster filtering.** Find the projects you need by filtering an organization on its labels instead of scanning the full list. +- **Repeatable provisioning.** Apply a consistent labeling scheme across projects from a script, keeping your organization tidy without manual Console work. diff --git a/src/routes/docs/partners/project/mock-phones/+page.markdoc b/src/routes/docs/partners/project/mock-phones/+page.markdoc new file mode 100644 index 0000000000..5f52881eee --- /dev/null +++ b/src/routes/docs/partners/project/mock-phones/+page.markdoc @@ -0,0 +1,1098 @@ +--- +layout: article +title: Mock phones +description: Register fictional phone numbers and OTPs to test phone authentication flows without sending real SMS messages. +--- + +Mock phones let you register fictional phone numbers and a fixed verification code at the project level. When a tester signs in with a registered number, the registered code works in place of a real SMS, so phone authentication flows can be exercised in CI, demo accounts, and app store review submissions without sending SMS or paying provider fees. + +Each project stores its mock phones on the project document. Numbers must be in [E.164](https://en.wikipedia.org/wiki/E.164) format, and verification codes are exactly six digits. + +# Add from the Console {% #toggle-console %} + +{% only_dark %} +![Mock phone numbers settings in the Appwrite Console](/images/docs/project/dark/mock-phones.avif) +{% /only_dark %} +{% only_light %} +![Mock phone numbers settings in the Appwrite Console](/images/docs/project/mock-phones.avif) +{% /only_light %} + +To add a mock phone manually: + +1. Open your project in the Appwrite Console. +2. Navigate to **Auth** in the sidebar, then open the **Settings** tab. +3. Scroll to the **Mock phone numbers** card and click **Add a number**. +4. Enter a phone number in E.164 format (for example, `+15555550100`) and a six-digit verification code. +5. Click **Save** on the row, then **Update** at the bottom of the section to persist. + +Use fictional ranges (such as North American `555` numbers) to avoid collision with real subscribers. + +# Manage with a Server SDK {% #manage-with-sdk %} + +The Project service exposes endpoints to list, create, get, update, and delete mock phones. All endpoints require an API key with the appropriate scope or a Console session. + +{% info title="Required scopes" %} +Reading mock phones requires the `mocks.read` scope. Creating, updating, or deleting requires `mocks.write`. +{% /info %} + +## Create a mock phone {% #create-mock-phone %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createMockPhone({ + number: '+15555550100', + otp: '123456' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createMockPhone({ + number: '+15555550100', + otp: '123456' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->createMockPhone( + number: '+15555550100', + otp: '123456' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.create_mock_phone( + number = '+15555550100', + otp = '123456' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +result = project.create_mock_phone( + number: '+15555550100', + otp: '123456' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.CreateMockPhone( + number: "+15555550100", + otp: "123456" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.createMockPhone( + number: '+15555550100', + otp: '123456', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.createMockPhone( + number = "+15555550100", + otp = "123456" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.createMockPhone( + "+15555550100", // number + "123456", // otp + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.createMockPhone( + number: "+15555550100", + otp: "123456" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateMockPhone( + "+15555550100", + "123456", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.create_mock_phone( + "+15555550100", + "123456", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project create-mock-phone \ + --number +15555550100 \ + --otp 123456 +``` +{% /multicode %} + +The endpoint returns the new [MockNumber](/docs/references/cloud/models/mockNumber) document. + +## List mock phones {% #list-mock-phones %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listMockPhones(); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listMockPhones(); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->listMockPhones(); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.list_mock_phones() +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +result = project.list_mock_phones() +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.ListMockPhones(); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.listMockPhones(); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.listMockPhones() +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.listMockPhones(new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); +})); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.listMockPhones() +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.ListMockPhones() + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.list_mock_phones(None, None).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project list-mock-phones \ + --limit 25 +``` +{% /multicode %} + +## Get a mock phone {% #get-mock-phone %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getMockPhone({ + number: '+15555550100' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getMockPhone({ + number: '+15555550100' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->getMockPhone( + number: '+15555550100' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.get_mock_phone( + number = '+15555550100' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +result = project.get_mock_phone( + number: '+15555550100' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.GetMockPhone( + number: "+15555550100" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.getMockPhone( + number: '+15555550100', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.getMockPhone( + number = "+15555550100" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.getMockPhone( + "+15555550100", // number + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.getMockPhone( + number: "+15555550100" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.GetMockPhone("+15555550100") + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.get_mock_phone("+15555550100").await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project get-mock-phone --number +15555550100 +``` +{% /multicode %} + +## Update a mock phone {% #update-mock-phone %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateMockPhone({ + number: '+15555550100', + otp: '654321' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateMockPhone({ + number: '+15555550100', + otp: '654321' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateMockPhone( + number: '+15555550100', + otp: '654321' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_mock_phone( + number = '+15555550100', + otp = '654321' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +result = project.update_mock_phone( + number: '+15555550100', + otp: '654321' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateMockPhone( + number: "+15555550100", + otp: "654321" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateMockPhone( + number: '+15555550100', + otp: '654321', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.updateMockPhone( + number = "+15555550100", + otp = "654321" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateMockPhone( + "+15555550100", // number + "654321", // otp + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateMockPhone( + number: "+15555550100", + otp: "654321" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateMockPhone("+15555550100", "654321") + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_mock_phone("+15555550100", "654321").await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-mock-phone \ + --number +15555550100 \ + --otp 654321 +``` +{% /multicode %} + +## Delete a mock phone {% #delete-mock-phone %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +await project.deleteMockPhone({ + number: '+15555550100' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +await project.deleteMockPhone({ + number: '+15555550100' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$project->deleteMockPhone( + number: '+15555550100' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +project.delete_mock_phone( + number = '+15555550100' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +project.delete_mock_phone( + number: '+15555550100' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +await project.DeleteMockPhone( + number: "+15555550100" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +await project.deleteMockPhone( + number: '+15555550100', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +project.deleteMockPhone( + number = "+15555550100" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.deleteMockPhone( + "+15555550100", // number + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +try await project.deleteMockPhone( + number: "+15555550100" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + _, err := project.DeleteMockPhone("+15555550100") + + if err != nil { + panic(err) + } + + fmt.Println("deleted") +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + project.delete_mock_phone("+15555550100").await?; + + Ok(()) +} +``` +```bash +appwrite project delete-mock-phone --number +15555550100 +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **No SMS costs in test flows.** Exercise phone authentication in CI, demo accounts, and app store review submissions without sending real SMS or paying provider fees. +- **Stable credentials for automation.** Registered numbers and codes don't expire or rotate, so end-to-end tests stay deterministic across runs. +- **Repeatable provisioning.** Script the mock phone set a project should expose and apply it from CI when spinning up a new environment. diff --git a/src/routes/docs/partners/project/oauth/+page.markdoc b/src/routes/docs/partners/project/oauth/+page.markdoc new file mode 100644 index 0000000000..6f837f3880 --- /dev/null +++ b/src/routes/docs/partners/project/oauth/+page.markdoc @@ -0,0 +1,1060 @@ +--- +layout: article +title: OAuth providers +description: Configure OAuth2 sign-in providers for your project from the Console or programmatically with a Server SDK. +--- + +OAuth2 providers let your users sign in with accounts they already have, such as GitHub, Google, or Apple. Each provider stores a client ID and client secret at the project level, and can be enabled or disabled independently. + +You can configure providers from the Appwrite Console or programmatically with a [Server SDK](/docs/sdks#server). Each provider has its own update method (`updateOAuth2GitHub`, `updateOAuth2Google`, and so on), the read methods `listOAuth2Providers` and `getOAuth2Provider` cover all of them. + +# Configure from the Console {% #configure-console %} + +{% only_dark %} +![OAuth2 providers in the Appwrite Console](/images/docs/project/dark/oauth-providers.avif) +{% /only_dark %} +{% only_light %} +![OAuth2 providers in the Appwrite Console](/images/docs/project/oauth-providers.avif) +{% /only_light %} + +To configure a provider from the Console: + +1. Open your project in the Appwrite Console. +2. Navigate to **Auth** in the sidebar, then open the **Settings** tab. +3. Find the provider in the **OAuth2 Providers** list and click it. +4. Enter the credentials from the provider (the field names vary per provider, see [Available providers](#available-providers)). +5. Toggle the provider on and click **Update**. + +# Configure a provider {% #configure-provider %} + +Each provider has a dedicated update method named `updateOAuth2`. The example below configures GitHub. Swap the method name and credential fields to configure a different provider, the field names per provider are listed in [Available providers](#available-providers). + +{% info title="Required scopes" %} +The API key used for these calls needs `oauth2.write` to configure providers, and `oauth2.read` to list or fetch them. +{% /info %} + +{% info title="Enabling validates credentials" %} +Setting `enabled` to `true` triggers end-to-end validation of the credentials against the provider, and the request throws if they are invalid. To store credentials without activating the provider yet, send them with `enabled` set to `false`. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateOAuth2GitHub({ + clientId: '', + clientSecret: '', + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateOAuth2GitHub({ + clientId: '', + clientSecret: '', + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateOAuth2GitHub( + clientId: '', + clientSecret: '', + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_o_auth2_git_hub( + client_id = '', + client_secret = '', + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_o_auth2_git_hub( + client_id: '', + client_secret: '', + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateOAuth2GitHub( + clientId: "", + clientSecret: "", + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateOAuth2GitHub( + clientId: '', + clientSecret: '', + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateOAuth2GitHub( + clientId = "", + clientSecret = "", + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateOAuth2GitHub( + "", // clientId + "", // clientSecret + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateOAuth2GitHub( + clientId: "", + clientSecret: "", + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateOAuth2GitHub( + service.WithUpdateOAuth2GitHubClientId(""), + service.WithUpdateOAuth2GitHubClientSecret(""), + service.WithUpdateOAuth2GitHubEnabled(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_o_auth2_git_hub( + Some(""), + Some(""), + Some(true), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-o-auth-2-git-hub \ + --client-id "" \ + --client-secret "" \ + --enabled true +``` +{% /multicode %} + +## Providers with extra fields {% #provider-extra-fields %} + +Some providers take more than a client ID and secret. Google, for example, accepts an additional `prompt` parameter that controls the consent screen behavior: + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectOAuth2GooglePrompt } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateOAuth2Google({ + clientId: '', + clientSecret: '', + prompt: [ProjectOAuth2GooglePrompt.SelectAccount], + enabled: true +}); +``` +```server-deno +import { Client, Project, ProjectOAuth2GooglePrompt } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateOAuth2Google({ + clientId: '', + clientSecret: '', + prompt: [ProjectOAuth2GooglePrompt.SelectAccount], + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateOAuth2Google( + clientId: '', + clientSecret: '', + prompt: [ProjectOAuth2GooglePrompt::SELECTACCOUNT()], + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectOAuth2GooglePrompt +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_o_auth2_google( + client_id = '', + client_secret = '', + prompt = [ProjectOAuth2GooglePrompt.SELECT_ACCOUNT], + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_o_auth2_google( + client_id: '', + client_secret: '', + prompt: [ProjectOAuth2GooglePrompt::SELECT_ACCOUNT], + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateOAuth2Google( + clientId: "", + clientSecret: "", + prompt: new List {ProjectOAuth2GooglePrompt.SelectAccount}, + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateOAuth2Google( + clientId: '', + clientSecret: '', + prompt: [enums.ProjectOAuth2GooglePrompt.selectAccount], + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectOAuth2GooglePrompt +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateOAuth2Google( + clientId = "", + clientSecret = "", + prompt = listOf(ProjectOAuth2GooglePrompt.SELECT_ACCOUNT), + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectOAuth2GooglePrompt; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateOAuth2Google( + "", // clientId + "", // clientSecret + listOf(ProjectOAuth2GooglePrompt.SELECT_ACCOUNT), // prompt + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateOAuth2Google( + clientId: "", + clientSecret: "", + prompt: [.selectAccount], + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateOAuth2Google( + service.WithUpdateOAuth2GoogleClientId(""), + service.WithUpdateOAuth2GoogleClientSecret(""), + service.WithUpdateOAuth2GooglePrompt([]string{"select_account"}), + service.WithUpdateOAuth2GoogleEnabled(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectOAuth2GooglePrompt; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_o_auth2_google( + Some(""), + Some(""), + Some(vec![ProjectOAuth2GooglePrompt::SelectAccount]), + Some(true), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-o-auth-2-google \ + --client-id "" \ + --client-secret "" \ + --prompt "select_account" \ + --enabled true +``` +{% /multicode %} + +# Available providers {% #available-providers %} + +Every provider has its own `updateOAuth2` method. The credential field names differ per provider, use the columns below to map the provider's credentials to the method's parameters. + +| Provider | SDK method | App ID field | App secret field | Other fields | +| --- | --- | --- | --- | --- | +| Amazon | `updateOAuth2Amazon` | `clientId` | `clientSecret` | | +| Apple | `updateOAuth2Apple` | `serviceId` | `keyId` | `teamId` | +| Auth0 | `updateOAuth2Auth0` | `clientId` | `clientSecret` | `endpoint` | +| Authentik | `updateOAuth2Authentik` | `clientId` | `clientSecret` | `endpoint` | +| Autodesk | `updateOAuth2Autodesk` | `clientId` | `clientSecret` | | +| Bitbucket | `updateOAuth2Bitbucket` | `key` | `secret` | | +| Bitly | `updateOAuth2Bitly` | `clientId` | `clientSecret` | | +| Box | `updateOAuth2Box` | `clientId` | `clientSecret` | | +| Dailymotion | `updateOAuth2Dailymotion` | `apiKey` | `apiSecret` | | +| Discord | `updateOAuth2Discord` | `clientId` | `clientSecret` | | +| Disqus | `updateOAuth2Disqus` | `publicKey` | `secretKey` | | +| Dropbox | `updateOAuth2Dropbox` | `appKey` | `appSecret` | | +| Etsy | `updateOAuth2Etsy` | `keyString` | `sharedSecret` | | +| Facebook | `updateOAuth2Facebook` | `appId` | `appSecret` | | +| Figma | `updateOAuth2Figma` | `clientId` | `clientSecret` | | +| FusionAuth | `updateOAuth2FusionAuth` | `clientId` | `clientSecret` | `endpoint` | +| GitHub | `updateOAuth2GitHub` | `clientId` | `clientSecret` | | +| GitLab | `updateOAuth2Gitlab` | `applicationId` | `secret` | `endpoint` | +| Google | `updateOAuth2Google` | `clientId` | `clientSecret` | `prompt` | +| Keycloak | `updateOAuth2Keycloak` | `clientId` | `clientSecret` | `endpoint`, `realmName` | +| Kick | `updateOAuth2Kick` | `clientId` | `clientSecret` | | +| LinkedIn | `updateOAuth2Linkedin` | `clientId` | `primaryClientSecret` | | +| Microsoft | `updateOAuth2Microsoft` | `applicationId` | `applicationSecret` | `tenant` | +| Notion | `updateOAuth2Notion` | `oauthClientId` | `oauthClientSecret` | | +| OIDC | `updateOAuth2Oidc` | `clientId` | `clientSecret` | `wellKnownURL`, `authorizationURL`, `tokenURL`, `userInfoURL` | +| Okta | `updateOAuth2Okta` | `clientId` | `clientSecret` | `domain`, `authorizationServerId` | +| PayPal | `updateOAuth2Paypal` | `clientId` | `secretKey` | | +| PayPal Sandbox | `updateOAuth2PaypalSandbox` | `clientId` | `secretKey` | | +| Podio | `updateOAuth2Podio` | `clientId` | `clientSecret` | | +| Salesforce | `updateOAuth2Salesforce` | `customerKey` | `customerSecret` | | +| Slack | `updateOAuth2Slack` | `clientId` | `clientSecret` | | +| Spotify | `updateOAuth2Spotify` | `clientId` | `clientSecret` | | +| Stripe | `updateOAuth2Stripe` | `clientId` | `apiSecretKey` | | +| Tradeshift | `updateOAuth2Tradeshift` | | | `enabled` only | +| Tradeshift Sandbox | `updateOAuth2TradeshiftSandbox` | | | `enabled` only | +| Twitch | `updateOAuth2Twitch` | `clientId` | `clientSecret` | | +| WordPress | `updateOAuth2WordPress` | `clientId` | `clientSecret` | | +| X | `updateOAuth2X` | `customerKey` | `secretKey` | | +| Yahoo | `updateOAuth2Yahoo` | `clientId` | `clientSecret` | | +| Yandex | `updateOAuth2Yandex` | `clientId` | `clientSecret` | | +| Zoho | `updateOAuth2Zoho` | `clientId` | `clientSecret` | | +| Zoom | `updateOAuth2Zoom` | `clientId` | `clientSecret` | | + +{% info title="Apple is in beta" %} +The Apple provider is currently in beta. +{% /info %} + +# List providers {% #list-providers %} + +List every OAuth2 provider and its current configuration state. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listOAuth2Providers({ + queries: [], + total: false +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listOAuth2Providers({ + queries: [], + total: false +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->listOAuth2Providers( + queries: [], + total: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.list_o_auth2_providers( + queries = [], + total = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.list_o_auth2_providers( + queries: [], + total: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.ListOAuth2Providers( + queries: new List(), + total: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.listOAuth2Providers( + queries: [], + total: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.listOAuth2Providers( + queries = listOf(), + total = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.listOAuth2Providers( + List.of(), // queries + false, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.listOAuth2Providers( + queries: [], + total: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.ListOAuth2Providers( + service.WithListOAuth2ProvidersQueries([]string{}), + service.WithListOAuth2ProvidersTotal(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.list_o_auth2_providers( + Some(vec![]), + Some(false), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project list-o-auth-2-providers \ + --limit 25 +``` +{% /multicode %} + +# Get a provider {% #get-provider %} + +Fetch a single provider's configuration by its provider ID. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectOAuthProviderId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getOAuth2Provider({ + providerId: ProjectOAuthProviderId.Github +}); +``` +```server-deno +import { Client, Project, ProjectOAuthProviderId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getOAuth2Provider({ + providerId: ProjectOAuthProviderId.Github +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->getOAuth2Provider( + providerId: ProjectOAuthProviderId::GITHUB() +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectOAuthProviderId +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.get_o_auth2_provider( + provider_id = ProjectOAuthProviderId.GITHUB +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.get_o_auth2_provider( + provider_id: ProjectOAuthProviderId::GITHUB +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.GetOAuth2Provider( + providerId: ProjectOAuthProviderId.Github +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.getOAuth2Provider( + providerId: enums.ProjectOAuthProviderId.github, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectOAuthProviderId +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.getOAuth2Provider( + providerId = ProjectOAuthProviderId.GITHUB +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectOAuthProviderId; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.getOAuth2Provider( + ProjectOAuthProviderId.GITHUB, // providerId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.getOAuth2Provider( + providerId: .github +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.GetOAuth2Provider( + "github", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectOAuthProviderId; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.get_o_auth2_provider( + ProjectOAuthProviderId::Github, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project get-o-auth-2-provider \ + --provider-id github +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Repeatable provisioning.** Script the full set of OAuth2 providers a project needs and recreate it on demand, without clicking through the Console. +- **Environment parity.** Keep dev, staging, and production projects in sync by running the same configuration script against each one. +- **Server-only secrets.** Client secrets are write-only over the API and never returned in responses, so configuration scripts can run in CI without exposing them. diff --git a/src/routes/docs/partners/project/platforms/+page.markdoc b/src/routes/docs/partners/project/platforms/+page.markdoc new file mode 100644 index 0000000000..d2aa0da845 --- /dev/null +++ b/src/routes/docs/partners/project/platforms/+page.markdoc @@ -0,0 +1,1206 @@ +--- +layout: article +title: Platforms +description: Register Web, Apple, Android, Windows, and Linux apps to your Appwrite project programmatically using server SDKs. +--- + +Each Appwrite project has a list of registered platforms. A platform identifies a client application that is allowed to talk to your project's API: a Web platform pins an allowed hostname for CORS, while Apple, Android, Windows, and Linux platforms pin a bundle, package, or application ID for native clients. + +Platforms can be added from the Appwrite Console, or programmatically through any server SDK using the Project service. + +# Manage from the Console {% #manage-console %} + +{% only_dark %} +![Project platforms in the Appwrite Console](/images/docs/project/dark/platforms.avif) +{% /only_dark %} +{% only_light %} +![Project platforms in the Appwrite Console](/images/docs/project/platforms.avif) +{% /only_light %} + +To add a platform manually: + +1. Open your project in the Appwrite Console. +2. On the project **Overview**, scroll to the **Integrations** card and select the **Platforms** tab. +3. Click **Add platform** and choose the platform type (Web, Flutter, Android, Apple, or React Native). +4. Fill in the name and the platform's identifier (hostname for Web, bundle or package ID for native), then click **Create platform**. +5. To rename or remove a platform later, click its row and use the edit dialog or the **Delete** button. + +# Platform types {% #platform-types %} + +The Project service exposes a dedicated create method per platform type. Each method takes a unique `platformId`, a display `name`, and the platform's identifier: + +| Type | Method | Identifier param | +| --- | --- | --- | +| Web | `createWebPlatform` | `hostname` (e.g. `app.example.com`) | +| Apple | `createApplePlatform` | `bundleIdentifier` (e.g. `com.example.app`) | +| Android | `createAndroidPlatform` | `applicationId` (e.g. `com.example.app`) | +| Windows | `createWindowsPlatform` | `packageIdentifierName` | +| Linux | `createLinuxPlatform` | `packageName` | + +Flutter and React Native platforms shown in the Console map to the underlying Apple, Android, or Web type based on the target you pick. + +# Register a platform {% #register-platform %} + +The example below registers a Web platform. Swap the method name and identifier param to register Apple, Android, Windows, or Linux platforms. + +{% info title="Required scopes" %} +The API key used for these calls needs `platforms.write` to create, update, or delete platforms, and `platforms.read` to list or fetch them. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createWebPlatform({ + platformId: ID.unique(), + name: 'My Web App', + hostname: 'app.example.com' +}); +``` +```server-deno +import { Client, Project, ID } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createWebPlatform({ + platformId: ID.unique(), + name: 'My Web App', + hostname: 'app.example.com' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->createWebPlatform( + platformId: ID::unique(), + name: 'My Web App', + hostname: 'app.example.com' +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.create_web_platform( + platform_id = ID.unique(), + name = 'My Web App', + hostname = 'app.example.com' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.create_web_platform( + platform_id: ID.unique(), + name: 'My Web App', + hostname: 'app.example.com' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.CreateWebPlatform( + platformId: ID.Unique(), + name: "My Web App", + hostname: "app.example.com" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.createWebPlatform( + platformId: ID.unique(), + name: 'My Web App', + hostname: 'app.example.com', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.createWebPlatform( + platformId = ID.unique(), + name = "My Web App", + hostname = "app.example.com" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.createWebPlatform( + ID.unique(), // platformId + "My Web App", // name + "app.example.com", // hostname + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.createWebPlatform( + platformId: ID.unique(), + name: "My Web App", + hostname: "app.example.com" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateWebPlatform( + id.Unique(), + "My Web App", + "app.example.com", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.create_web_platform( + ID::unique(), + "My Web App", + "app.example.com", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project create-web-platform \ + --platform-id 'unique()' \ + --name "My Web App" \ + --hostname app.example.com +``` +{% /multicode %} + +# List platforms {% #list-platforms %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listPlatforms({ + queries: [], + total: false +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listPlatforms({ + queries: [], + total: false +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->listPlatforms( + queries: [], + total: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.list_platforms( + queries = [], + total = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.list_platforms( + queries: [], + total: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.ListPlatforms( + queries: new List(), + total: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.listPlatforms( + queries: [], + total: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.listPlatforms( + queries = listOf(), + total = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.listPlatforms( + List.of(), // queries + false, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.listPlatforms( + queries: [], + total: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/project" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.ListPlatforms( + project.WithListPlatformsQueries([]interface{}{}), + project.WithListPlatformsTotal(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.list_platforms( + Some(vec![]), + Some(false), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project list-platforms \ + --limit 25 +``` +{% /multicode %} + +# Get a platform {% #get-platform %} + +Fetch a single platform by its ID. The response includes the platform's type-specific fields, such as `hostname` for Web or `bundleIdentifier` for Apple. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getPlatform({ + platformId: '' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getPlatform({ + platformId: '' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->getPlatform( + platformId: '' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.get_platform( + platform_id = '' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +result = project.get_platform( + platform_id: '' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.GetPlatform( + platformId: "" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.getPlatform( + platformId: '', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val result = project.getPlatform( + platformId = "" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.getPlatform( + "", // platformId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.getPlatform( + platformId: "" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.GetPlatform( + "", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.get_platform( + "", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project get-platform \ + --platform-id +``` +{% /multicode %} + +# Update a platform {% #update-platform %} + +Each platform type has a matching update method (`updateWebPlatform`, `updateApplePlatform`, and so on). The example below updates a Web platform's name and hostname. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateWebPlatform({ + platformId: '', + name: 'Renamed Web App', + hostname: 'app.example.com' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateWebPlatform({ + platformId: '', + name: 'Renamed Web App', + hostname: 'app.example.com' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateWebPlatform( + platformId: '', + name: 'Renamed Web App', + hostname: 'app.example.com' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_web_platform( + platform_id = '', + name = 'Renamed Web App', + hostname = 'app.example.com' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_web_platform( + platform_id: '', + name: 'Renamed Web App', + hostname: 'app.example.com' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateWebPlatform( + platformId: "", + name: "Renamed Web App", + hostname: "app.example.com" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateWebPlatform( + platformId: '', + name: 'Renamed Web App', + hostname: 'app.example.com', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateWebPlatform( + platformId = "", + name = "Renamed Web App", + hostname = "app.example.com" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateWebPlatform( + "", // platformId + "Renamed Web App", // name + "app.example.com", // hostname + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateWebPlatform( + platformId: "", + name: "Renamed Web App", + hostname: "app.example.com" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateWebPlatform( + "", + "Renamed Web App", + "app.example.com", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_web_platform( + "", + "Renamed Web App", + "app.example.com", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-web-platform \ + --platform-id \ + --name "Renamed Web App" \ + --hostname app.example.com +``` +{% /multicode %} + +# Delete a platform {% #delete-platform %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +await project.deletePlatform({ + platformId: '' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +await project.deletePlatform({ + platformId: '' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$project->deletePlatform( + platformId: '' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +project.delete_platform( + platform_id = '' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +project.delete_platform( + platform_id: '' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +await project.DeletePlatform( + platformId: "" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +await project.deletePlatform( + platformId: '', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +project.deletePlatform( + platformId = "" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.deletePlatform( + "", // platformId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +try await project.deletePlatform( + platformId: "" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.DeletePlatform( + "", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + project.delete_platform( + "", + ).await?; + + Ok(()) +} +``` +```bash +appwrite project delete-platform \ + --platform-id +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Repeatable provisioning.** Script the full set of platforms a project needs and recreate it on demand, without clicking through the Console. +- **Environment parity.** Keep dev, staging, and production projects in sync by running the same script against each one. +- **CI and automation.** Add or rotate platforms from a CI job when a new preview environment spins up or a domain changes. diff --git a/src/routes/docs/partners/project/policies/+page.markdoc b/src/routes/docs/partners/project/policies/+page.markdoc new file mode 100644 index 0000000000..aad7649d60 --- /dev/null +++ b/src/routes/docs/partners/project/policies/+page.markdoc @@ -0,0 +1,3407 @@ +--- +layout: article +title: Policies +description: Configure password rules, session limits, user limits, and membership privacy on your Appwrite project programmatically using server SDKs. +--- + +Project policies control how users authenticate, how long their sessions live, how many users can sign up, and what team members can see about each other. Each policy is an independent toggle on the project. + +Policies can be configured from the Appwrite Console, or programmatically through any server SDK using the Project service. + +# Manage from the Console {% #manage-console %} + +{% only_dark %} +![Project policies in the Appwrite Console](/images/docs/project/dark/policies.avif) +{% /only_dark %} +{% only_light %} +![Project policies in the Appwrite Console](/images/docs/project/policies.avif) +{% /only_light %} + +To configure policies manually: + +1. Open your project in the Appwrite Console. +2. Navigate to **Auth** in the sidebar. +3. Open the **Security** tab. +4. Adjust the policy you want, then click **Update** on its card. + +# Available policies {% #available-policies %} + +| Policy ID | SDK method | Body | +| --- | --- | --- | +| `password-dictionary` | `updatePasswordDictionaryPolicy` | `enabled` | +| `password-history` | `updatePasswordHistoryPolicy` | `total` (1–`APP_LIMIT_COUNT`, or `null`) | +| `password-strength` | `updatePasswordStrengthPolicy` | `min` (8–256, default 8), `uppercase`, `lowercase`, `number`, `symbols` (all optional) | +| `password-personal-data` | `updatePasswordPersonalDataPolicy` | `enabled` | +| `session-alert` | `updateSessionAlertPolicy` | `enabled` | +| `session-duration` | `updateSessionDurationPolicy` | `duration` (5–31536000 seconds) | +| `session-invalidation` | `updateSessionInvalidationPolicy` | `enabled` | +| `session-limit` | `updateSessionLimitPolicy` | `total` (1–`APP_LIMIT_COUNT`, or `null`) | +| `user-limit` | `updateUserLimitPolicy` | `total` (1–`APP_LIMIT_COUNT`, or `null`) | +| `membership-privacy` | `updateMembershipPrivacyPolicy` | `userId`, `userEmail`, `userPhone`, `userName`, `userMFA` (all bool, all optional) | +| `deny-aliased-email` | `updateDenyAliasedEmailPolicy` | `enabled` | +| `deny-disposable-email` | `updateDenyDisposableEmailPolicy` | `enabled` | +| `deny-free-email` | `updateDenyFreeEmailPolicy` | `enabled` | + +{% info title="Required scopes" %} +The API key used for these calls needs `project.policies.read` to list or fetch policies, and `project.policies.write` to update them. +{% /info %} + +# List policies {% #list-policies %} + +List all policies configured for the project along with their current state. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listPolicies({ + queries: [], + total: false +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.listPolicies({ + queries: [], + total: false +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->listPolicies( + queries: [], + total: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.list_policies( + queries = [], + total = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.list_policies( + queries: [], + total: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.ListPolicies( + queries: new List(), + total: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.listPolicies( + queries: [], + total: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.listPolicies( + queries = listOf(), + total = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.listPolicies( + List.of(), // queries + false, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.listPolicies( + queries: [], + total: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/project" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.ListPolicies( + project.WithListPoliciesQueries([]interface{}{}), + project.WithListPoliciesTotal(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.list_policies( + Some(vec![]), + Some(false), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project list-policies \ + --limit 25 +``` +{% /multicode %} + +# Get a policy {% #get-policy %} + +Fetch a single policy by its ID. The response fields depend on the policy type, matching the [Available policies](#available-policies) table above. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectPolicyId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getPolicy({ + policyId: ProjectPolicyId.Passworddictionary +}); +``` +```server-deno +import { Client, Project, ProjectPolicyId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.getPolicy({ + policyId: ProjectPolicyId.Passworddictionary +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->getPolicy( + policyId: ProjectPolicyId::PASSWORDDICTIONARY() +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectPolicyId +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.get_policy( + policy_id = ProjectPolicyId.PASSWORD_DICTIONARY +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.get_policy( + policy_id: ProjectPolicyId::PASSWORD_DICTIONARY +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.GetPolicy( + policyId: ProjectPolicyId.PasswordDictionary +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.getPolicy( + policyId: enums.ProjectPolicyId.passwordDictionary, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectPolicyId +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.getPolicy( + policyId = ProjectPolicyId.PASSWORD_DICTIONARY +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectPolicyId; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.getPolicy( + ProjectPolicyId.PASSWORD_DICTIONARY, // policyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.getPolicy( + policyId: .passwordDictionary +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.GetPolicy( + "password-dictionary", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectPolicyId; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.get_policy( + ProjectPolicyId::PasswordDictionary, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project get-policy \ + --policy-id password-dictionary +``` +{% /multicode %} + +# Update password dictionary policy {% #update-password-dictionary-policy %} + +When enabled, new passwords are checked against a dictionary of common passwords and rejected if they match. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updatePasswordDictionaryPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updatePasswordDictionaryPolicy({ + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updatePasswordDictionaryPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_password_dictionary_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_password_dictionary_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdatePasswordDictionaryPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updatePasswordDictionaryPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updatePasswordDictionaryPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updatePasswordDictionaryPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updatePasswordDictionaryPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdatePasswordDictionaryPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_password_dictionary_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-password-dictionary-policy \ + --enabled true +``` +{% /multicode %} + +# Update password history policy {% #update-password-history-policy %} + +Stores the last `total` password hashes per user and rejects new passwords that match. Pass `null` to disable. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updatePasswordHistoryPolicy({ + total: 5 +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updatePasswordHistoryPolicy({ + total: 5 +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updatePasswordHistoryPolicy( + total: 5 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_password_history_policy( + total = 5 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_password_history_policy( + total: 5 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdatePasswordHistoryPolicy( + total: 5 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updatePasswordHistoryPolicy( + total: 5, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updatePasswordHistoryPolicy( + total = 5 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updatePasswordHistoryPolicy( + 5, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updatePasswordHistoryPolicy( + total: 5 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdatePasswordHistoryPolicy(5) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_password_history_policy(5).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-password-history-policy \ + --total 5 +``` +{% /multicode %} + +# Update password strength policy {% #update-password-strength-policy %} + +Set the minimum password length and which character types new passwords must contain. Each field is optional, and any field you omit keeps its current value. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updatePasswordStrengthPolicy({ + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updatePasswordStrengthPolicy({ + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updatePasswordStrengthPolicy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_password_strength_policy( + min = 8, + uppercase = True, + lowercase = True, + number = True, + symbols = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_password_strength_policy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdatePasswordStrengthPolicy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updatePasswordStrengthPolicy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updatePasswordStrengthPolicy( + min = 8, + uppercase = true, + lowercase = true, + number = true, + symbols = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updatePasswordStrengthPolicy( + 8, // min + true, // uppercase + true, // lowercase + true, // number + true, // symbols + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updatePasswordStrengthPolicy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/project" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdatePasswordStrengthPolicy( + project.WithUpdatePasswordStrengthPolicyMin(8), + project.WithUpdatePasswordStrengthPolicyUppercase(true), + project.WithUpdatePasswordStrengthPolicyLowercase(true), + project.WithUpdatePasswordStrengthPolicyNumber(true), + project.WithUpdatePasswordStrengthPolicySymbols(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_password_strength_policy( + Some(8), + Some(true), + Some(true), + Some(true), + Some(true), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-password-strength-policy \ + --min 8 \ + --uppercase true \ + --lowercase true \ + --number true \ + --symbols true +``` +{% /multicode %} + +# Update password personal data policy {% #update-password-personal-data-policy %} + +When enabled, new passwords are rejected if they contain the user's ID, name, email, or phone number. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updatePasswordPersonalDataPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updatePasswordPersonalDataPolicy({ + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updatePasswordPersonalDataPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_password_personal_data_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_password_personal_data_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdatePasswordPersonalDataPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updatePasswordPersonalDataPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updatePasswordPersonalDataPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updatePasswordPersonalDataPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updatePasswordPersonalDataPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdatePasswordPersonalDataPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_password_personal_data_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-password-personal-data-policy \ + --enabled true +``` +{% /multicode %} + +# Update session alert policy {% #update-session-alert-policy %} + +When enabled, the user receives an email each time a new session is created. The first session after sign-up does not trigger an alert. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSessionAlertPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSessionAlertPolicy({ + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateSessionAlertPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_session_alert_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_session_alert_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateSessionAlertPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateSessionAlertPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateSessionAlertPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateSessionAlertPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateSessionAlertPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateSessionAlertPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_session_alert_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-session-alert-policy \ + --enabled true +``` +{% /multicode %} + +# Update session duration policy {% #update-session-duration-policy %} + +Sets the maximum lifetime of a session in seconds. Valid range is 5 seconds to 31536000 seconds (one year). + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSessionDurationPolicy({ + duration: 86400 +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSessionDurationPolicy({ + duration: 86400 +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateSessionDurationPolicy( + duration: 86400 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_session_duration_policy( + duration = 86400 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_session_duration_policy( + duration: 86400 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateSessionDurationPolicy( + duration: 86400 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateSessionDurationPolicy( + duration: 86400, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateSessionDurationPolicy( + duration = 86400 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateSessionDurationPolicy( + 86400, // duration + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateSessionDurationPolicy( + duration: 86400 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateSessionDurationPolicy(86400) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_session_duration_policy(86400).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-session-duration-policy \ + --duration 86400 +``` +{% /multicode %} + +# Update session invalidation policy {% #update-session-invalidation-policy %} + +When enabled, all existing sessions for a user are invalidated when their password is changed. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSessionInvalidationPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSessionInvalidationPolicy({ + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateSessionInvalidationPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_session_invalidation_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_session_invalidation_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateSessionInvalidationPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateSessionInvalidationPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateSessionInvalidationPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateSessionInvalidationPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateSessionInvalidationPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateSessionInvalidationPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_session_invalidation_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-session-invalidation-policy \ + --enabled true +``` +{% /multicode %} + +# Update session limit policy {% #update-session-limit-policy %} + +Sets the maximum number of concurrent sessions allowed per user. When the limit is reached, the oldest session is dropped to make room for a new one. Pass `null` to remove the limit. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSessionLimitPolicy({ + total: 10 +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateSessionLimitPolicy({ + total: 10 +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateSessionLimitPolicy( + total: 10 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_session_limit_policy( + total = 10 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_session_limit_policy( + total: 10 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateSessionLimitPolicy( + total: 10 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateSessionLimitPolicy( + total: 10, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateSessionLimitPolicy( + total = 10 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateSessionLimitPolicy( + 10, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateSessionLimitPolicy( + total: 10 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateSessionLimitPolicy(10) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_session_limit_policy(10).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-session-limit-policy \ + --total 10 +``` +{% /multicode %} + +# Update user limit policy {% #update-user-limit-policy %} + +Sets the maximum number of users in the project. Existing users remain active when the limit is reached or exceeded; new sign-ups are rejected. Pass `null` to remove the limit. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateUserLimitPolicy({ + total: 1000 +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateUserLimitPolicy({ + total: 1000 +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateUserLimitPolicy( + total: 1000 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_user_limit_policy( + total = 1000 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_user_limit_policy( + total: 1000 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateUserLimitPolicy( + total: 1000 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateUserLimitPolicy( + total: 1000, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateUserLimitPolicy( + total = 1000 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateUserLimitPolicy( + 1000, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateUserLimitPolicy( + total: 1000 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateUserLimitPolicy(1000) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_user_limit_policy(1000).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-user-limit-policy \ + --total 1000 +``` +{% /multicode %} + +# Update membership privacy policy {% #update-membership-privacy-policy %} + +Controls which fields of one team member's profile are visible to other members in the same team. Each field can be toggled independently. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateMembershipPrivacyPolicy({ + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateMembershipPrivacyPolicy({ + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateMembershipPrivacyPolicy( + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_membership_privacy_policy( + user_id = True, + user_email = False, + user_phone = False, + user_name = True, + user_mfa = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_membership_privacy_policy( + user_id: true, + user_email: false, + user_phone: false, + user_name: true, + user_mfa: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateMembershipPrivacyPolicy( + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateMembershipPrivacyPolicy( + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateMembershipPrivacyPolicy( + userId = true, + userEmail = false, + userPhone = false, + userName = true, + userMFA = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateMembershipPrivacyPolicy( + true, // userId + false, // userEmail + false, // userPhone + true, // userName + false, // userMFA + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateMembershipPrivacyPolicy( + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/project" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateMembershipPrivacyPolicy( + project.WithUpdateMembershipPrivacyPolicyUserId(true), + project.WithUpdateMembershipPrivacyPolicyUserEmail(false), + project.WithUpdateMembershipPrivacyPolicyUserPhone(false), + project.WithUpdateMembershipPrivacyPolicyUserName(true), + project.WithUpdateMembershipPrivacyPolicyUserMFA(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_membership_privacy_policy( + Some(true), + Some(false), + Some(false), + Some(true), + Some(false), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-membership-privacy-policy \ + --user-id true \ + --user-email false \ + --user-phone false \ + --user-name true \ + --user-mfa false +``` +{% /multicode %} + +# Update deny aliased email policy {% #update-deny-aliased-email-policy %} + +When enabled, aliased emails such as subaddresses and emails with a suffix are rejected during new sign-ups and email updates. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateDenyAliasedEmailPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateDenyAliasedEmailPolicy({ + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateDenyAliasedEmailPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_deny_aliased_email_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_deny_aliased_email_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateDenyAliasedEmailPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateDenyAliasedEmailPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateDenyAliasedEmailPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateDenyAliasedEmailPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateDenyAliasedEmailPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateDenyAliasedEmailPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_deny_aliased_email_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-deny-aliased-email-policy \ + --enabled true +``` +{% /multicode %} + +# Update deny disposable email policy {% #update-deny-disposable-email-policy %} + +When enabled, disposable emails from known temporary domains are rejected during new sign-ups and email updates. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateDenyDisposableEmailPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateDenyDisposableEmailPolicy({ + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateDenyDisposableEmailPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_deny_disposable_email_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_deny_disposable_email_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateDenyDisposableEmailPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateDenyDisposableEmailPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateDenyDisposableEmailPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateDenyDisposableEmailPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateDenyDisposableEmailPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateDenyDisposableEmailPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_deny_disposable_email_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-deny-disposable-email-policy \ + --enabled true +``` +{% /multicode %} + +# Update deny free email policy {% #update-deny-free-email-policy %} + +When enabled, emails from free providers such as Gmail or Yahoo are rejected during new sign-ups and email updates. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateDenyFreeEmailPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateDenyFreeEmailPolicy({ + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateDenyFreeEmailPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_deny_free_email_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_deny_free_email_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateDenyFreeEmailPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateDenyFreeEmailPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateDenyFreeEmailPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateDenyFreeEmailPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateDenyFreeEmailPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateDenyFreeEmailPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_deny_free_email_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-deny-free-email-policy \ + --enabled true +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Codify auth posture.** Keep password rules, session lifetimes, and user caps in version control alongside the rest of your project configuration. +- **Environment parity.** Apply the same policy script to dev, staging, and production projects to keep them aligned. +- **Faster incident response.** When a policy needs to change in a hurry (e.g. tightening session duration after a breach), update it from a script instead of clicking through the Console. diff --git a/src/routes/docs/partners/project/protocols/+page.markdoc b/src/routes/docs/partners/project/protocols/+page.markdoc new file mode 100644 index 0000000000..f3f9596550 --- /dev/null +++ b/src/routes/docs/partners/project/protocols/+page.markdoc @@ -0,0 +1,285 @@ +--- +layout: article +title: Protocols +description: Enable or disable the REST, GraphQL, and WebSocket protocols on your Appwrite project programmatically using server SDKs. +--- + +Each Appwrite project exposes its API through three protocols: REST, GraphQL, and WebSocket. You can disable any protocol your clients don't use to shrink the project's surface area, then re-enable it when needed. + +Protocols can be toggled from the Appwrite Console, or programmatically through any server SDK using the Project service. + +# Manage from the Console {% #manage-console %} + +{% only_dark %} +![Project protocols in the Appwrite Console](/images/docs/project/dark/protocols.avif) +{% /only_dark %} +{% only_light %} +![Project protocols in the Appwrite Console](/images/docs/project/protocols.avif) +{% /only_light %} + +To toggle a protocol manually: + +1. Open your project in the Appwrite Console. +2. Open **Settings** from the bottom of the side nav. +3. Scroll to the **Protocols** card. +4. Flip the switch next to REST, GraphQL, or WebSocket. Use **Disable all** to turn off every protocol at once. + +# Available protocols {% #available-protocols %} + +| Protocol ID | Description | +| --- | --- | +| `rest` | Standard HTTP API requests from client SDKs. | +| `graphql` | GraphQL API access for queries and mutations. | +| `websocket` | Realtime subscriptions over WebSocket connections. | + +# Update a protocol {% #update-protocol %} + +The example below disables the REST protocol. Pass `enabled: true` to re-enable it. + +Disabling REST blocks client SDK traffic only. Server SDKs using an API key keep access, so you can always call this endpoint again to re-enable the protocol. + +{% info title="Required scope" %} +The API key used for this call needs the `project.write` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectProtocolId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateProtocol({ + protocolId: ProjectProtocolId.Rest, + enabled: false +}); +``` +```server-deno +import { Client, Project, ProjectProtocolId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateProtocol({ + protocolId: ProjectProtocolId.Rest, + enabled: false +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateProtocol( + protocolId: ProjectProtocolId::REST(), + enabled: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectProtocolId +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_protocol( + protocol_id = ProjectProtocolId.REST, + enabled = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_protocol( + protocol_id: ProjectProtocolId::REST, + enabled: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateProtocol( + protocolId: ProjectProtocolId.Rest, + enabled: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateProtocol( + protocolId: enums.ProjectProtocolId.rest, + enabled: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectProtocolId +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateProtocol( + protocolId = ProjectProtocolId.REST, + enabled = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectProtocolId; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateProtocol( + ProjectProtocolId.REST, // protocolId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateProtocol( + protocolId: .rest, + enabled: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateProtocol( + "rest", + false, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectProtocolId; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_protocol( + ProjectProtocolId::Rest, + false, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-protocol \ + --protocol-id rest \ + --enabled false +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Shrink the client surface area.** Disabled protocols are blocked for client SDK callers (anonymous, account session, JWT, and OAuth users). Server SDKs using an API key still have access, including to re-enable the protocol. +- **Repeatable provisioning.** Script the protocol set a project should expose and apply it from CI when spinning up a new environment. +- **Environment parity.** Keep dev, staging, and production in sync by running the same enable/disable script against each project. diff --git a/src/routes/docs/partners/project/provisioning/+page.markdoc b/src/routes/docs/partners/project/provisioning/+page.markdoc new file mode 100644 index 0000000000..4e40258315 --- /dev/null +++ b/src/routes/docs/partners/project/provisioning/+page.markdoc @@ -0,0 +1,757 @@ +--- +layout: article +title: Provision a project's baseline +description: Apply a standard configuration to a customer's project programmatically with the Project API, including platforms, auth methods, services, protocols, and variables. +--- + +A customer signs up to your platform and a project is created for them. Right now it is wide open: every authentication method is enabled, every service is exposed on the API, and nothing is constrained to the way you run things. Before that customer ever logs in, you want their project to match the baseline that every project on your platform shares. + +The Project API lets you encode that baseline once and apply it from your backend or a CI step, so onboarding a customer is a script you run, not a checklist someone works through in the Console. The sections below follow that script in the order it runs: + +- Register the customer's app. +- Narrow the sign-in methods to the ones they use. +- Close down the services and protocols they don't. +- Seed the variables their code expects. + +Each call uses a [Server SDK](/docs/sdks#server) with an API key. + +{% info title="Required scopes" %} +The API key used for these calls needs the `project.write` and `platforms.write` scopes. See [API keys](/docs/partners/project/api-keys) to create one. +{% /info %} + +# Register the customer's app {% #register-platform %} + +Nothing can talk to a project until you register the apps allowed to reach it. Set up the client once, then register the customer's web app by its hostname, so requests from their domain are accepted and everything else is rejected. + +{% multicode %} +```server-nodejs +import { Client, Project, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createWebPlatform({ + platformId: ID.unique(), + name: 'Customer web app', + hostname: 'app.customer.example' +}); +``` +```server-deno +import { Client, Project, ID } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.createWebPlatform({ + platformId: ID.unique(), + name: 'Customer web app', + hostname: 'app.customer.example' +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->createWebPlatform( + platformId: ID::unique(), + name: 'Customer web app', + hostname: 'app.customer.example' +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.create_web_platform( + platform_id = ID.unique(), + name = 'Customer web app', + hostname = 'app.customer.example' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.create_web_platform( + platform_id: ID.unique(), + name: 'Customer web app', + hostname: 'app.customer.example' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.CreateWebPlatform( + platformId: ID.Unique(), + name: "Customer web app", + hostname: "app.customer.example" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.createWebPlatform( + platformId: ID.unique(), + name: 'Customer web app', + hostname: 'app.customer.example', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.createWebPlatform( + platformId = ID.unique(), + name = "Customer web app", + hostname = "app.customer.example" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.createWebPlatform( + ID.unique(), // platformId + "Customer web app", // name + "app.customer.example", // hostname + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.createWebPlatform( + platformId: ID.unique(), + name: "Customer web app", + hostname: "app.customer.example" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateWebPlatform( + id.Unique(), + "Customer web app", + "app.customer.example", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.create_web_platform( + ID::unique(), + "Customer web app", + "app.customer.example", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project create-web-platform \ + --platform-id 'unique()' \ + --name "Customer web app" \ + --hostname app.customer.example +``` +```http +POST /v1/project/platforms/web HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "platformId": "unique()", + "name": "Customer web app", + "hostname": "app.customer.example" +} +``` +{% /multicode %} + +If the customer ships native apps too, register them the same way with `createAndroidPlatform`, `createApplePlatform`, `createLinuxPlatform`, or `createWindowsPlatform`. Each takes the identifier for that target, such as an Android application ID or an Apple bundle identifier. + +# Enable the required auth methods {% #auth-methods %} + +A fresh project leaves every sign-in method enabled. Trim that down to the methods the customer's app offers, so you are not exposing flows they never built a UI for. If they sign their users in over SMS, turn phone authentication on. + +{% multicode %} +```server-nodejs +const result = await project.updateAuthMethod({ + methodId: ProjectAuthMethodId.Phone, + enabled: true +}); +``` +```server-deno +const result = await project.updateAuthMethod({ + methodId: ProjectAuthMethodId.Phone, + enabled: true +}); +``` +```server-php +$result = $project->updateAuthMethod( + methodId: ProjectAuthMethodId::PHONE(), + enabled: true +); +``` +```server-python +result = project.update_auth_method( + method_id = ProjectAuthMethodId.PHONE, + enabled = True +) +``` +```server-ruby +response = project.update_auth_method( + method_id: ProjectAuthMethodId::PHONE, + enabled: true +) +``` +```server-dotnet +var result = await project.UpdateAuthMethod( + methodId: ProjectAuthMethodId.Phone, + enabled: true +); +``` +```server-dart +final result = await project.updateAuthMethod( + methodId: enums.ProjectAuthMethodId.phone, + enabled: true, +); +``` +```server-kotlin +val result = project.updateAuthMethod( + methodId = ProjectAuthMethodId.PHONE, + enabled = true +) +``` +```server-java +project.updateAuthMethod( + ProjectAuthMethodId.PHONE, // methodId + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.updateAuthMethod( + methodId: .phone, + enabled: true +) +``` +```server-go +result, err := project.UpdateAuthMethod( + "phone", + true, +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_auth_method( + ProjectAuthMethodId::Phone, + true, +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project update-auth-method \ + --method-id phone \ + --enabled true +``` +```http +PATCH /v1/project/auth-methods/phone HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "enabled": true +} +``` +{% /multicode %} + +Pass `enabled: false` to switch a method off. The method ID is one of `email-password`, `magic-url`, `email-otp`, `anonymous`, `invites`, `jwt`, or `phone`. + +# Disable unused services and protocols {% #services %} + +Every service the customer will never call is attack surface you can remove. If their app has no client-side Functions, take Functions off the client API to shrink that surface. + +{% multicode %} +```server-nodejs +const result = await project.updateService({ + serviceId: ProjectServiceId.Functions, + enabled: false +}); +``` +```server-deno +const result = await project.updateService({ + serviceId: ProjectServiceId.Functions, + enabled: false +}); +``` +```server-php +$result = $project->updateService( + serviceId: ProjectServiceId::FUNCTIONS(), + enabled: false +); +``` +```server-python +result = project.update_service( + service_id = ProjectServiceId.FUNCTIONS, + enabled = False +) +``` +```server-ruby +response = project.update_service( + service_id: ProjectServiceId::FUNCTIONS, + enabled: false +) +``` +```server-dotnet +var result = await project.UpdateService( + serviceId: ProjectServiceId.Functions, + enabled: false +); +``` +```server-dart +final result = await project.updateService( + serviceId: enums.ProjectServiceId.functions, + enabled: false, +); +``` +```server-kotlin +val response = project.updateService( + serviceId = ProjectServiceId.FUNCTIONS, + enabled = false +) +``` +```server-java +project.updateService( + ProjectServiceId.FUNCTIONS, // serviceId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.updateService( + serviceId: .functions, + enabled: false +) +``` +```server-go +result, err := service.UpdateService( + "functions", + false, +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_service( + ProjectServiceId::Functions, + false, +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project update-service \ + --service-id functions \ + --enabled false +``` +```http +PATCH /v1/project/services/functions HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "enabled": false +} +``` +{% /multicode %} + +{% info title="Server SDKs keep access" %} +Disabling a service only removes it from the client-facing API. A Server SDK using an API key can still reach the service, including to turn it back on later, so your own backend keeps working while client apps lose the route. +{% /info %} + +Apply the same reasoning to API protocols. If nothing in the customer's stack speaks GraphQL, disable it and leave REST and Realtime in place. + +{% multicode %} +```server-nodejs +const result = await project.updateProtocol({ + protocolId: ProjectProtocolId.Graphql, + enabled: false +}); +``` +```server-deno +const result = await project.updateProtocol({ + protocolId: ProjectProtocolId.Graphql, + enabled: false +}); +``` +```server-php +$result = $project->updateProtocol( + protocolId: ProjectProtocolId::GRAPHQL(), + enabled: false +); +``` +```server-python +result = project.update_protocol( + protocol_id = ProjectProtocolId.GRAPHQL, + enabled = False +) +``` +```server-ruby +response = project.update_protocol( + protocol_id: ProjectProtocolId::GRAPHQL, + enabled: false +) +``` +```server-dotnet +var result = await project.UpdateProtocol( + protocolId: ProjectProtocolId.Graphql, + enabled: false +); +``` +```server-dart +final result = await project.updateProtocol( + protocolId: enums.ProjectProtocolId.graphql, + enabled: false, +); +``` +```server-kotlin +val response = project.updateProtocol( + protocolId = ProjectProtocolId.GRAPHQL, + enabled = false +) +``` +```server-java +project.updateProtocol( + ProjectProtocolId.GRAPHQL, // protocolId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.updateProtocol( + protocolId: .graphql, + enabled: false +) +``` +```server-go +result, err := service.UpdateProtocol( + "graphql", + false, +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_protocol( + ProjectProtocolId::Graphql, + false, +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project update-protocol \ + --protocol-id graphql \ + --enabled false +``` +```http +PATCH /v1/project/protocols/graphql HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "enabled": false +} +``` +{% /multicode %} + +The protocol ID is one of `rest`, `graphql`, or `websocket`. + +# Seed project variables {% #variables %} + +The last step before the project is ready is to drop in the constants and secrets the customer's functions and sites read at build and runtime, so their first deploy finds everything it needs already in place. + +{% multicode %} +```server-nodejs +const result = await project.createVariable({ + variableId: ID.unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false // optional +}); +``` +```server-deno +const result = await project.createVariable({ + variableId: ID.unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false // optional +}); +``` +```server-php +$result = $project->createVariable( + variableId: ID::unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false // optional +); +``` +```server-python +result: Variable = project.create_variable( + variable_id = ID.unique(), + key = 'TENANT_TIER', + value = 'pro', + secret = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +result = project.create_variable( + variable_id: ID.unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false # optional +) +``` +```server-dotnet +Variable result = await project.CreateVariable( + variableId: ID.Unique(), + key: "", + value: "", + secret: false // optional +); +``` +```server-dart +Variable result = await project.createVariable( + variableId: ID.unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false, // (optional) +); +``` +```server-kotlin +val response = project.createVariable( + variableId = ID.unique(), + key = "", + value = "", + secret = false // optional +) +``` +```server-java +project.createVariable( + ID.unique(), // variableId + "", // key + "", // value + false, // secret (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let variable = try await project.createVariable( + variableId: ID.unique(), + key: "", + value: "", + secret: false // optional +) +``` +```server-go +response, error := project.CreateVariable( +id.Unique(), +"", +"", +appwrite.WithCreateVariableSecret(false), +) +``` +```server-rust +let result = project.create_variable( + &ID::unique(), + "", + "", + Some(false) // optional +).await?; + +let _ = result; +``` +```bash +appwrite project create-variable \ + --variable-id 'unique()' \ + --key TENANT_TIER \ + --value pro +``` +```http +POST /v1/project/variables HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +X-Appwrite-Key: + +{ + "variableId": "unique()", + "key": "TENANT_TIER", + "value": "pro" +} +``` +{% /multicode %} + +# Next steps {% #next-steps %} + +Wrap these calls in a single function keyed to the customer and every project you bring online starts identical, which is what keeps the next thousand projects manageable. With the baseline in place, the rest of the project's life uses the same Project API: + +- [Issue and rotate API keys](/docs/partners/project/key-rotation) for the integrations that run against the project. +- [Brand its transactional emails](/docs/partners/project/branded-emails) so they come from the customer's domain. diff --git a/src/routes/docs/partners/project/services/+page.markdoc b/src/routes/docs/partners/project/services/+page.markdoc new file mode 100644 index 0000000000..ab19356004 --- /dev/null +++ b/src/routes/docs/partners/project/services/+page.markdoc @@ -0,0 +1,296 @@ +--- +layout: article +title: Services +description: Enable or disable individual Appwrite services on your project programmatically using server SDKs. +--- + +Each Appwrite project ships with the full set of services enabled by default: Account, TablesDB, Storage, Functions, and so on. You can disable any service your clients don't use to remove it from the client-facing API. Disabled services remain accessible to server SDKs using an API key. + +Services can be toggled from the Appwrite Console, or programmatically through any server SDK using the Project service. + +# Manage from the Console {% #manage-console %} + +{% only_dark %} +![Project services in the Appwrite Console](/images/docs/project/dark/services.avif) +{% /only_dark %} +{% only_light %} +![Project services in the Appwrite Console](/images/docs/project/services.avif) +{% /only_light %} + +To toggle a service manually: + +1. Open your project in the Appwrite Console. +2. Open **Settings** from the bottom of the side nav. +3. Scroll to the **Services** card. +4. Flip the switch next to the service you want to enable or disable. Use **Disable all** to turn off every optional service at once. + +# Available services {% #available-services %} + +| Service ID | Description | +| --- | --- | +| `account` | User accounts and authentication. | +| `avatars` | App image, icon, and avatar helpers. | +| `tablesdb` | TablesDB tables, columns, and rows. | +| `locale` | Locale and geographic helpers. | +| `health` | Health checks and status. | +| `project` | Project configuration. | +| `storage` | File storage buckets and files. | +| `teams` | Teams and shared resource access. | +| `users` | User administration via server SDKs. | +| `sites` | Sites hosting and deployments. | +| `functions` | Cloud Functions. | +| `proxy` | Custom domain proxy. | +| `graphql` | GraphQL endpoint. | +| `migrations` | Third-party data migrations. | +| `messaging` | Push, SMS, and email messaging. | +| `databases` | Legacy Databases collections and documents. | + +# Update a service {% #update-service %} + +The example below disables the Account service. Pass `enabled: true` to re-enable it. + +{% info title="Required scope" %} +The API key used for this call needs the `project.write` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectServiceId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateService({ + serviceId: ProjectServiceId.Account, + enabled: false +}); +``` +```server-deno +import { Client, Project, ProjectServiceId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const project = new Project(client); + +const result = await project.updateService({ + serviceId: ProjectServiceId.Account, + enabled: false +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$project = new Project($client); + +$result = $project->updateService( + serviceId: ProjectServiceId::ACCOUNT(), + enabled: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectServiceId +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +project = Project(client) + +result = project.update_service( + service_id = ProjectServiceId.ACCOUNT, + enabled = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +project = Project.new(client) + +response = project.update_service( + service_id: ProjectServiceId::ACCOUNT, + enabled: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +Project project = new Project(client); + +var result = await project.UpdateService( + serviceId: ProjectServiceId.Account, + enabled: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +Project project = Project(client); + +final result = await project.updateService( + serviceId: enums.ProjectServiceId.account, + enabled: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectServiceId +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +val project = Project(client) + +val response = project.updateService( + serviceId = ProjectServiceId.ACCOUNT, + enabled = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectServiceId; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey(""); + +Project project = new Project(client); + +project.updateService( + ProjectServiceId.ACCOUNT, // serviceId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let project = Project(client) + +let result = try await project.updateService( + serviceId: .account, + enabled: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateService( + "account", + false, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectServiceId; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let project = Project::new(&client); + + let result = project.update_service( + ProjectServiceId::Account, + false, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-service \ + --service-id account \ + --enabled false +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Shrink the client surface area.** Disable services your client apps don't use so they're no longer callable from client SDKs. +- **Server-only access.** Disabled services stay reachable from server SDKs using an API key, useful when you want a service available to your backend but hidden from clients. +- **Repeatable provisioning.** Script the service set a project should expose and apply it from CI when spinning up a new environment. diff --git a/src/routes/docs/partners/project/smtp/+page.markdoc b/src/routes/docs/partners/project/smtp/+page.markdoc new file mode 100644 index 0000000000..7d04870091 --- /dev/null +++ b/src/routes/docs/partners/project/smtp/+page.markdoc @@ -0,0 +1,605 @@ +--- +layout: article +title: SMTP +description: Configure a custom SMTP server to send Appwrite's account management emails from your own domain, improve deliverability, and unlock custom email templates. +--- + +By default, Appwrite sends account management emails such as verification, password recovery, and magic URL links from a shared SMTP server. Configuring a custom SMTP server lets you send these emails through your own provider instead. This sends mail from your own domain, improves deliverability, and unlocks [custom email templates](/docs/partners/project/email-templates). + +# Configure in the Console {% #console %} + +{% only_dark %} +![SMTP settings in the Appwrite Console](/images/docs/project/dark/smtp.avif) +{% /only_dark %} +{% only_light %} +![SMTP settings in the Appwrite Console](/images/docs/project/smtp.avif) +{% /only_light %} + +To configure a custom SMTP server from the Appwrite Console: + +1. Navigate to your project. +2. Open the **Settings** section and select the **SMTP** tab. +3. Enable **Custom SMTP server**. +4. Enter your provider's **Sender name**, **Sender email**, **Server host**, and **Server port**. Add a **Username** and **Password** if your provider requires authentication, set a **Reply to** address if needed, and choose the encryption protocol (TLS or SSL). +5. Click **Update**. Appwrite validates the connection to your SMTP server before saving, so the credentials must be correct. + +# Configure with a Server SDK {% #server-sdks %} + +You can also manage SMTP programmatically using a [Server SDK](/docs/sdks#server). + +{% info title="Required scope" %} +The API key used for these calls needs the `project.write` scope. +{% /info %} + +## Configure SMTP {% #configure-smtp %} + +Every field is optional, so you can change only the values you need. Any field you omit keeps its current value. To enable SMTP, the project must have a `host`, `port`, and `senderEmail` set, either in this call or from a previous one. When you enable SMTP, Appwrite validates the connection to your server before saving. The encryption protocol accepts `tls` or `ssl`. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectSMTPSecure } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.updateSMTP({ + host: 'smtp.example.com', + port: 587, + username: '', // optional + password: '', // optional + senderEmail: 'email@example.com', + senderName: '', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '', // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +}); +``` +```server-deno +import { Client, Project, ProjectSMTPSecure } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.updateSMTP({ + host: 'smtp.example.com', + port: 587, + username: '', // optional + password: '', // optional + senderEmail: 'email@example.com', + senderName: '', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '', // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->updateSMTP( + host: 'smtp.example.com', + port: 587, + username: '', // optional + password: '', // optional + senderEmail: 'email@example.com', + senderName: '', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '', // optional + secure: ProjectSMTPSecure::TLS(), // optional + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Project as ProjectModel +from appwrite.enums import ProjectSMTPSecure + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result: ProjectModel = project.update_smtp( + host = 'smtp.example.com', + port = 587, + username = '', # optional + password = '', # optional + sender_email = 'email@example.com', + sender_name = '', # optional + reply_to_email = 'email@example.com', # optional + reply_to_name = '', # optional + secure = ProjectSMTPSecure.TLS, # optional + enabled = True +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.update_smtp( + host: 'smtp.example.com', + port: 587, + username: '', # optional + password: '', # optional + sender_email: 'email@example.com', + sender_name: '', # optional + reply_to_email: 'email@example.com', # optional + reply_to_name: '', # optional + secure: ProjectSMTPSecure::TLS, # optional + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +Project result = await project.UpdateSMTP( + host: "smtp.example.com", + port: 587, + username: "", // optional + password: "", // optional + senderEmail: "email@example.com", + senderName: "", // optional + replyToEmail: "email@example.com", // optional + replyToName: "", // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +Project result = await project.updateSMTP( + host: 'smtp.example.com', + port: 587, + username: '', // (optional) + password: '', // (optional) + senderEmail: 'email@example.com', + senderName: '', // (optional) + replyToEmail: 'email@example.com', // (optional) + replyToName: '', // (optional) + secure: enums.ProjectSMTPSecure.tls, // (optional) + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.enums.ProjectSMTPSecure +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.updateSMTP( + host = "smtp.example.com", + port = 587, + username = "", // optional + password = "", // optional + senderEmail = "email@example.com", + senderName = "", // optional + replyToEmail = "email@example.com", // optional + replyToName = "", // optional + secure = ProjectSMTPSecure.TLS, // optional + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectSMTPSecure; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.updateSMTP( + "smtp.example.com", // host + 587, // port + "", // username (optional) + "", // password (optional) + "email@example.com", // senderEmail + "", // senderName (optional) + "email@example.com", // replyToEmail (optional) + "", // replyToName (optional) + ProjectSMTPSecure.TLS, // secure (optional) + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let result = try await project.updateSMTP( + host: "smtp.example.com", + port: 587, + username: "", // optional + password: "", // optional + senderEmail: "email@example.com", + senderName: "", // optional + replyToEmail: "email@example.com", // optional + replyToName: "", // optional + secure: .tls, // optional + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateSMTP( + appwrite.WithUpdateSMTPHost("smtp.example.com"), + appwrite.WithUpdateSMTPPort(587), + appwrite.WithUpdateSMTPUsername(""), + appwrite.WithUpdateSMTPPassword(""), + appwrite.WithUpdateSMTPSenderEmail("email@example.com"), + appwrite.WithUpdateSMTPSenderName(""), + appwrite.WithUpdateSMTPReplyToEmail("email@example.com"), + appwrite.WithUpdateSMTPReplyToName(""), + appwrite.WithUpdateSMTPSecure("tls"), + appwrite.WithUpdateSMTPEnabled(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; +use appwrite::enums::ProjectSMTPSecure; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + let result = project.update_smtp( + Some("smtp.example.com"), + Some(587), + Some(""), // optional + Some(""), // optional + Some("email@example.com"), + Some(""), // optional + Some("email@example.com"), // optional + Some(""), // optional + Some(ProjectSMTPSecure::Tls), // optional + Some(true) + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project update-smtp \ + --host smtp.example.com \ + --port 587 \ + --username "" \ + --password "" \ + --sender-email email@example.com \ + --sender-name "" \ + --reply-to-email email@example.com \ + --reply-to-name "" \ + --secure tls \ + --enabled true +``` +{% /multicode %} + +## Send a test email {% #send-test-email %} + +Once SMTP is configured, send a test email to confirm that your server delivers mail. Appwrite sends a sample email to each address you provide, up to a maximum of 10 recipients. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.createSMTPTest({ + emails: ['email@example.com'] +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +const project = new Project(client); + +const result = await project.createSMTPTest({ + emails: ['email@example.com'] +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your API key + +$project = new Project($client); + +$result = $project->createSMTPTest( + emails: ['email@example.com'] +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your API key + +project = Project(client) + +result = project.create_smtp_test( + emails = ['email@example.com'] +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your API key + +project = Project.new(client) + +result = project.create_smtp_test( + emails: ['email@example.com'] +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your API key + +Project project = new Project(client); + +await project.CreateSMTPTest( + emails: new List { "email@example.com" } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your API key + +Project project = Project(client); + +await project.createSMTPTest( + emails: ['email@example.com'], +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +val project = Project(client) + +val response = project.createSMTPTest( + emails = listOf("email@example.com") +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your API key + +Project project = new Project(client); + +project.createSMTPTest( + List.of("email@example.com"), // emails + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your API key + +let project = Project(client) + +let result = try await project.createSMTPTest( + emails: ["email@example.com"] +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + project := appwrite.NewProject(client) + response, err := project.CreateSMTPTest( + []interface{}{"email@example.com"}, + ) + + if err != nil { + panic(err) + } + + fmt.Println(response) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your API key + + let project = Project::new(&client); + + project.create_smtp_test( + vec!["email@example.com"] + ).await?; + + Ok(()) +} +``` +```bash +appwrite project create-smtp-test \ + --emails email@example.com +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Send from your own domain.** Deliver account emails from your branded sender address instead of Appwrite's shared one, so users recognize and trust them. +- **Better deliverability.** Routing mail through an authenticated provider, with SPF and DKIM set up on your domain, reduces the chance of verification and recovery emails landing in spam. +- **Unlocks custom templates.** A custom SMTP server is required to customize [email templates](/docs/partners/project/email-templates) per locale. diff --git a/static/images/docs/partners/apps/account-applications.avif b/static/images/docs/partners/apps/account-applications.avif new file mode 100644 index 0000000000000000000000000000000000000000..2916460af6adec43948e27b525a41bc1fba6bf97 GIT binary patch literal 19610 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/consent-screen.avif b/static/images/docs/partners/apps/dark/consent-screen.avif new file mode 100644 index 0000000000000000000000000000000000000000..dda846de1c17785febe90cf294a290ceb3c72883 GIT binary patch literal 12018 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�COCF(w7An!^`*Q^ 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 PHG(F9;s5>69q@ku8QK88 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/device-code.avif b/static/images/docs/partners/apps/dark/device-code.avif new file mode 100644 index 0000000000000000000000000000000000000000..eba213c961e8ba187d5ebc4523b37f1d0f915aea GIT binary patch literal 6291 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 I{uK0o055pF!2kdN literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/quick-start-consent.avif b/static/images/docs/partners/apps/dark/quick-start-consent.avif new file mode 100644 index 0000000000000000000000000000000000000000..154520c6f9fd89614ab88e5bd7b54de993ad2003 GIT binary patch literal 11545 zcmY+qV{|4=ur(Un=ESy>NiwmMC$??d=ESyb+qP}ncD{Mf{m#1gRa|B<1YJK7olCjtTj|F=Qr{y8K&b2szr% zgWhAm^%dLe-kE%BDbTk!x8u3T`)PbBq|V>3{ur6*%LYgA7__1tPI;)b1$~K2aQP<0 zlhXH(sZmk6tB*2)?FFCEOFeS3EX4|HR@{^S+703m0e4VjPYUIgDCCx!qrTLKiLz_c zIY9uAex@B#L)(K;Hp={0kV-`av);-u&|u)#!zDhz=F-*@u*ITzLD*u$9?)ycjw7hY ze#=qQETnCAxZoI9R@h(jzImbFNM}&b2{Vi`AQ9h%;iT?;*8MYPqs?jN!FR@Bue#9R zM;@;fs5!WkE_|r~OVVWvF+Qk6zd{3qkR%yHD#Lvo9j`Km9K7*vVlA=+@j5D=nR0+L zdt_h74Z0jZGREAM&=`M&7RWjz>ejmvJA1@gaBe(vBly*dKX$AhWN z6@f$6%KQ)lYz^K^VPJRanhV!+H4xcDZgg$)@uur{MW?PRMk2JO^Eava#T9Tt7@6$2 z*akr$EOa7w<BH>|mc@&_T}m#c=WS|Icv;tq7*d_vp)K2UOLbh&6b z6;JG}o=nD6zncs?d2;|p>!wVat`_-WGNH`j>fITlaJ$}4d|w_STK9iA=(aJ6y9Wcz z9b$5o>tIK^;3iPgYbW-j91cD30)8qqt7`|T-QQ~0LBNLZUO9})T@4`2_*LDmiEhSI zGaHD+vrBNljqyzSUQ{LF-@U?W72aR(SO*dc4!{CGcLJ0ZldusK2~RP7q}(>|3U~NR z%~-{fGl$C9d0{Ud0-c^y??d;u8x2vpABO_X&>$u^D;l8N{rEqF@+8$$^ByrbJ#vzO zi;6jloCo%?gp_U!fr~HyO#8dPjDk<+tU`{&B*F~_QIXfMswu_3lYIWbfqrgxT{I4y zJ*lcnCtU$}^hLK?l6w!S?sfLw+^M;m?m?~}^l`g%%Cg1U#KOP&! z^muQ! zK&unN7=)X+z@EP*4!UVB(<=}jqhI%J!k=>kS2R-nY&;iOfZiwlf-+x=I1VfWs4#Xw zPA-dx>EFTxApnZ?u=oA0=|C@FPeqBSAX=o|0f!PF@16sQ6nq!r;FKrlsK^Od{v=vA zMxX}GSIH1}m4!8`>YTMeNh_wQe#uxks7I~1STJNW-PkF+Z7h9Dqo1^hrt?qVmRNew*>z0=hOii8GhShuW2( z@_T3qC%}-%3g4o-_0xSE2MM?xjtfPO9+Y{KF0AV_X!0OOLTN!o#TF?=f~v|i^a&=r zkJA{$k)ZrnRL}to*pkq$rX)exO62uo(nMPu8#zps_aW(-gLVNV>ayQ*&aPD4hh6 zGK8BL#r`Kq6t^28o_Jdat`-%oS$arL+2qL#J=Bngl;oLiCUN#wSskg}U7j*(3PwrM zi4R{3T+Mj3d5OnkYDfv;%tre|6P3SgP)fqnmLzJ+t&iy`DKNr(w+uKr0%ELK;R{v9 zgz_D}7WOZS1KK30X=l*grjcgsMttr+UCteLPfN7yJ~fJ~5X-|NmGa-9HsOgUZ*wCC zI9GeG=V!7@L0V~de>)|x@A~#tg&vKC8xikNWqnc70A=NhGiG7HhP5+b`i=)Iw?XZ; zXHQN^)Kly4lgyBJIV{JM9i6V-_j=sig)y2He7=#Vb0qOv%aa9+tjEu?^e@SqPD3bn zo02s5A@nemCO!$YE6cS6(E=KX5}}I^KKyPP5{NP6W*{m9+wzoevU{6M%jK4vf~`8p zq97;)_VRS;zE|fr+6rX%^$u{UYG9Sx!<(70|LjeERXr`)eb^?H`Yv1NB$z=~Y+4N! zgbHBWfF@ujI00V(Kf`8^k2o{ZV*E|7zDAwRv|{!akuegV&|cUG{9R6vQ{r2y0T9{9 zIWc2z6zrJ)DK0QJox36RQz5ZMv4A+$#zFYlP?!2%4h|5*Q+bCE9|YJgSz^G7PY>kV z)gfyQmAE#rB$<$YQ!W*&2SodVFX}hpf~SR4!;ZhBh`pZRF)l=G_{c((5E9-1`Zf#G z=wQPPUzLOGO?E;~l~{ryRMsaXM)N$kfa4{}QyK8#PbDH+I`*H@ZkX5o1d##^n59rX zu*-mAlGxoba!BeC#o_pHu8Y=9Tu)r#obG3f61AX#gld}i^uJ~~I8RJ+L;~eq!XG09 ziF;sskQmnaazoHuq~3{O;w<>%G(fW<#-%2wHr0;;q3=FrR!0EzDn>GaBA@8Hh@~^~ z85%3qUKPTNDUh+o7B$ULJ2DHz{-uA?0H@f#6=q8KF_sh@~mXbhv z6z6Y~8s<3kKnip@q`W9)#W1|{we8yeea#Eb8^~;Ay~QZ zz7Ff}#({Nd{?KI+(&p^F{*{WQXEGrpc92h@970xbQsZ@&QJQYfMQMDC%-83-cks^nva*ps5Ya*6H)l3&5|*X~jhpl<0lJ{-=&9r0PKaYs3=^jURjiFn2)?mRE1$15$Wp-z4<5lWfm`Iu zNmmJ62<1&Mw;8i4(KKEbD`!};rU626*AN)Bx^FnQP8hV`s;AMrp(=#_T#g(1cNV$> zNH?Fk8P^3`SxU0yQ^i!(@y5khdHAlB1TwgH%La2^*MVGT7vtPh2X9SnvA>f^U8)4I zhYKOoMhuOVDM~HZ*>Px;#24Xj{oi&lIP2Jbj;IFi~u0G)!-Oy7v+rH^Pv$1Qp;rf_Tf;+C9zs zC%N{v-jSnQ6y<3O_R7lk#fILIQzz7K<7|MpvZGbG_D8?v0- zJTR;Ko2w9O*i48du`yyjO9ABxIfY!)o|#)s#Lm z*OeqdBi;Nrc9U%j%rQUfUk419jiJRVIzF8SAN%8GV#F#>(qD~#nbhw+&qgkIn}Sm~{W9wM4YdQvT=QR$mL=19K2DC?Tp(1w?T6 zzoKm*lXs%;l3gFvTi=(mTKzmK1) zcKp2Gw0>(C7l;>MtVa72TzNZty5}*Opa6^Yh-095I@f4lUa_czN)KtAk`jMH6t-g>!|kj0_jYPn*{OGzV1fvuEEBY7#c!?2yk70deUX{g+|*96KTdSt$1ewlv4I# zKEes@FMoC;SxB&iZ`#@aUUbyK^S?e|%a28Rq$9qt)yO(n%X*29Ar;**9wnv9;!mcz zP)h*H3;BGlb^Ch|ZZ$p1 z3tydSKRrb3MgkTyz$xaeBMsn=z~n38+@fwTO>Ih=p@0}3m6KS?KVvh}ctL;>CzA9w zf}z;-v&$FA)Bu!g8WyO{z{fy7vZIk}LCmqe+oSrB!R}AytXK?`9ch#TIe(3AGfiH2 z;H~bG{JOJP^@Z!-@ua1{ihOPs-tCL8ND4`UyjI1>P&KxHv00M3ybW~>_o?EH!}hIL z-6`6J9pJIlwYyRiLT;K}jp;3PtToVM2WTw9%y3BB4Z3usyc7>ya;QIS67J|3_*#OV zvc~%MsYHjPfja+!S}z$BAK!xp!Ry&yx+FWZe*YBI1{5EKDeB9K7@7=cHK6i74Ou+O zN#egBKu`Pw3aklb!b>!`nl1_kMEL{=nNu=pkkwq$f z*Cff$&HZR8s-UT#>kPqm^wO8{lKXg9`7@!5Q1XGbvCoR9rbG9UfFj9k5jW}T#6LN% z0|a8pdnZe@xDeR)g~p5xT9ORe<~m)Jq%o-M;v6{jHLEnmwkfzq7aV zZJQk-AmA^hrjB0&`61Ea{<5C4^Vs7h$j8Yte1|@=|7TeoDE8AW7bfv32aNelP2lHx z<%x(+eB!>TlXtUPC$U4|M`GN&$ru7DOTjj5F%c*K^rSp#TJf-b#Ta z2@1e-Qo^i|C<2+qSbAjW(-q(<~9AOAy*Egb?I)Z3=e1wK z*PM?kGgKjsZ!fP7v!-F8a)*=|F~y*b6Y$3wu(=?T>38^YXB{%>(YTl_Vkr2)%V$gN z_@nBo>#n?C&#NHdg*2>#JK6#^^+$f@4^Fz{oXbwlTtdfiX;Q-h3k``j%w4uuf4XRr zmHuS~9!TnWA)7^M$wRgtNx9s;P|DgnVZ_Orz$A?wXO8Kd*;^dqm^0tp*U|=l`5bX- z#|+-o;_v0-kC|scOE4acWIYQ-QK59F^CkbcqT58+nHrq-8&@Lx8YyAIpF6lNXSY-O zs>pQF>K(QZh+yp}DzdUtyXfbnV&)gM(#QNxEr>@dkX^jl0R zGI<)&)Mob9=e+i{(XYBEF7EMDj+Y5gT7po)&)W=}PqI zaI%Scm&F5hc!g$-$e$$#hY+-%$QQa|^2J$IBq`=v%k95=x(8V`v(CEAH8~&@?Y~$r zMUA>7cKTXaezA--(37vY4&#i6Zd%N<(9C(yVYti;^(k}1LlQT|2zqZ;cqsl3Gcw9| zZmm>SFMb#wT!MaM)%GI{wZ$O&u0#tBH*WgpLlSL7iX>!PQ}VgbnQ|PbsgAntREq+>zySt=L~2m ziI5}A7FZ>0x{N{CItprY7`o}co0;FtbS%#8ikkelKm+OG}hhvab$*pASD_6K_A$WA#$#ptiaOA~%m!&K^Lz zOM631my^M+qpgec`IUTSQW3v^jc)IC9^3EsyyNKp31I5?r5G2!G?*$iOB`B>Q`=|$ z(AGP4ENcUt?pvXQMRqUb_qZ+8xv?KS?qRBfQ#IAuMm*NxyLicGwK*$jzxRazL&KBT z)oYZ60JRH7Gi;ckA)8td2EdynLK_QVN9GF48TUuV6zOuPs6%`v*JnLxjp6C+uSHXj z1lKAHzM~o&%yfq;DTp6ZP-Ud&nzC(59LhigKQyAq36k#J6)t%d>4j*BZ!ye~jo{IcOn#P3&y$nXj- zU>6~suLnX>$T{8|lUcuk=MngPKl@F@J$}wncLu*bcQ6=66jCYNZDK|27m!ATpFPUU z;g#(}*>6GmhP|J_ctR^;AY=swd}|GaM1n!}|DBWu9c*VlWdG3DJ8JXWcRCZEe}@v} z8hQEbm4+nxn%Z^++TmTwEFC;_w%9?sG=lAB$%0L2YOsqDELUk|`N8~u2C#nr|7olo z8^-^w!Kl3%ri`+m*cKH2VxgAz_gW2{->4nCmK_N;e-QCpRdgWu;}a?r9L5_3oDK6W zC4Yn)5N1j+Bk*f*GjFyH7oYIV#^%Enn~rK*sLQ@lN7PJUiv~WQig~`Jm>>N!$CM1A z*AKt0SV++lq|1~RfxB*<0fEyB=i8=e z?TjbW+lV5i%xLm5!GJnR+O_|1N(1_~Aoo+UI6X_A;oMjS6qlPiy3;q~SP)skPl<-! z5&23`Jwh~x!G5t)klKoRbWaj_6LEcO7fm~d8t3RveezTRmm}Xo!l9QMUK8v+uS=;| z)~AaQ;EmOx9+QJ^=cb9ZnPfF=w`IY?tuv7 z?D6OAygT{*rkfgUce%5VZtNq;q;Q0nhskXn_38R!)C!U%_A$>}cZeEtAd#If+d0*8 zj{}6Zicuo7urUEVlU8UXfM{Kpe=7P9oq+4;By0_l5gAeM$>+AAY(CFiL`YM5w^#=q zLJ}do4+Kg1rY-DI4Le0qs{Bh5QCFviqUm7x*u$&y=~>k8Qw_Itz0xCU);I2BIYQlFuM~!~{1!sRT24FeSeb}v z6?FnlX7LeiF{q9hp;&YZ&BKa)sru(xCwB6~2W7g%%^g9OQN<0kZ9%Mm_1ha3)=hJn ztccL)(-T*F$0#xc5^uX2M<(ynTtt0KeV+3a?hnJ!d_JbmN?v~!%o3}`@oy;Y^>Saf2Y%qA zEv)5KVGHLt&|KhnIPd<*f{|}aF7sAc4-2hORG+KLCqFyeJxnB}ty+T#KHdhU&1cDb zm5h8%6>mUNH-}-oH|3ZbyPDfv-#7G9=h+`X0JM=~QFRq+3R`?YREL^i647?sa0tuCM-p`ezVwx$u3%RBKAcUAaphfHmZKY+_mB!q|ebKFjB6 zi|y4fJ^*(*Fp=%CSepM;o!Xn#??M$Y4|xES2fl?Ultx8+ER{*)sBzj5$ABGZZ38hepp!HRma-%sX6A{_oXas$1m1e zTegv((_Bbz0W&m%902;UY}PyzRvr~sU9*9?CLabiJl&^-HL`UAGbUpMsi(S)Orm>o zN8C&evks@iwV`HG6mS9Yp&N6W)6Up_Y_;~)FA0VzaG#aG!2upkb-vNiO3kX9o5e60H$AKuZf71LB<9+LB9`dIk$rdIEU?IB8-R^kZLzIn$)`m zk)B;vdvEX15vZ+PnNy-C$XB@(gUI9s(kEwtN zdyHr|_bF{g9)39OLA8_B0?B5x8S#9jb*HDF3lq7?u%YsB^w%~i=F3@H(ZL8?VK3in zg%$UfrS)Bx?Rhq(y#HAF+Ds?A9kcE7F=Elr5 za-_adKr+VdK)*z(B9pa)-i}c3G24ON-D=y;0#57z^L4Q19m37_RU0H{os+$5`>%U& zzO#C!U_U6|Z4SJ8a29eSWRZkM*!vO~6I&%IhZ^969|H(&J<&?EwaMLZMY}MSuhvvb z&pQ(&ollLYeiB1Rai!(@FOU7j`MAgY=1Y}O7U@@nFK*B|I=x*9Ocw}V5VCgluEe9o8Bz4A(G z5&zB84V7?+E5MhMn{Z0O*S@PL{s|Y_z)Jl{LBFdxCxHJ!`gh}>hgK9Zq<-{MZyR)>_La;iO!o8@Zp2e<^|spo#GlbMd12Dsdbo3y zkVu~X6s~r|DUuIy%bFSHLts!peDscY?~;q=f3=IOZrFwU#NS*pZt$?r;^8*z#z4V1 z)I1S5;pws&x-RoP6XYe-ARMzSqXxs{@t;45*L%Ex+w8ehfGmX4+o6)gyi3$EIWDPtDlYozg91m&5z$ZD_W2)?fWaY>tL%Bm-MC_KNH~z zy5&Fx?_Wwm`{m;M08f~Qzgq$?H?{YZY?3!{g0NNGQCvE)_;qllo%+KFq6UlI@w@EQ zQh(!P?5P~j^2VG)Z!ZM!rG2=X-LV@IDsvMdhq8QeeWiYTG!kc^At*JtSE#pfUnX@E zJ_F(A|6Wsos-5riRicGiRQ~ju$)uGkW|BkCw>nFhw4XW~MHf@Z{8gu?(%~`q7$4lt z)RCQ{*zuhwWe9DJ;ITIk(r`oDZt1g3xHn z*m}l2JLfJoOy-cS`m#!+Ga1eUw#Gh|OZD(&EYL0jl>BgFNvNkp|FQz`Kc!;Gg39^L zGsKvtXrg|7-L!-_JjcX_xzn9r4#!CA<$4LUmSok7w5Kep-(+MGb#!_N?M|;_?3EZk zpZg>`Q*UAvB^fOp+IDdVLt;=W{1WC^%ik;&A`}{u$7<<05mE;2_bF1Ab>GM+m|QhR ziH1R3z5cKk0-rUt{ z;I`oGjysemDtR4Gxp`$aFTh!DsUpsX2)KJW9B%XHNiY^?C+UeF07ENZ=s%GBiBXjs zw+f5~ANP148JUgVHWc6A;T28Xk6YI7X7JLudPBcv~JwNJ*z0Y#2n zdZTaxGb=LoMGn-k6&Jn5TEEGmMY@w0_9%FR38a)XeLnRGx3)wh&4-d$5mhJag!=HU zTl^i@D_)qo1782&GnrA_R<>V z<3=mBq*_wI;~pvAo1HW0#Ze5NrcaI1#hI2h1sV~C5CIw&mxAy<#5z|f24iG92C@a9 zcts{tijJEJh`20AJ~QW?TMbA1h7+EEykKu{Tpu~+j@)OWgx4L4?bT1zq|M93}8PJqa; zb~6W4bhQfFwsS>muaw`iLUyZpo+i0f6e|3LNrBmHz$YIGW-WX>X-!$41(y#oIDfD| ziMd~T>#w(=Q5#R$8>Wcq@ARp?qUIzp(48Mymvz~FQZs1b(1E)C<)^0TsjbQ$#TjBn zkq14)D$^sgu8L54TMDmN;t+#q@L87gP(N%B_7+_K;!ui>WRe|}r?)M6-ZOJ(Cq5RJ zaK1T^aZ0qcdUwJ)=Q=W%fRZ9sFSHn~O1>0B#r-AzA;UBn1@pZC`kt89JrokVP!Kmm z=X@mf1i0Ja#hD-2>KKM8;pqh6z3s)0%749IomjBOLDM95f>GpgqI?-0&SgexmSO?9 z8;Fd(XSim!i?N_-0tIG1bhB(Qqyh^vZuPtUr53!zs1RB6`N$4$B>6Mx$=+yD+qFTT zNoX82Ghejj%dA*spQlyfr2ffP3oHg7DTounk$$z%hRBmEIK&69}2Wn0&mLQQPHrlLr||`$b#Ve0Ld2O927$ z8&0TJQO`(ZdhG4=r~QhodEqeC!+le(S1-bKQX=V~k?Wf)-yATcLXmua=D|c}Jt;H8 z0=ca&>@ZrH+_ROugato(%0^RP!4pt)<$$eBA;p8WZ#D(NH&N}f8fy^qF})6vJk;P3 zriai{77M?TF4HNvqnx#J&l^Z7HFe4vPE`w<;$<(YO>Jc<1Pwze%0rWXzCVa_C`Cj{ z1?ROP2~ODN?e7^3RDZ6_Y}`IC;eo*l*Gest|3UkKBw4RJI92MC>C>NwLel_&lK7q} z#U1dA__&uL0Q_^qRC=@C0axTajkIVx6tqff6~3=1R4tcTh5+6%Pq~RV%;y3qN{#ds z0lD781dx#Thth74+j!!BnGs}fj+e{e5TWZGHRnCCWEAF8yqxYZAxN5BW8zmB{>v+K z0eG2g;-Mqo3)_)iAGkTZAT_2OdJwTcB)S=qRDOHY;Mdlcf6mDIc)u1jZ??ujbAfTIIa zP?I_&9^W8+GfWOQKc$Tm!^w2Q%9*Ws>L9**)@5*zaIV;PxIQiI4|9t$e_dkmdh4{~eP~d^xQ(1%II3k9wsGatb?G*;Yv@p zL2G$x1e&;8yQ2XBM(`@t5JY-)dAxjfrR~!kb{^Lf{hZ6k0|1du6>P?vAt!;mXtD** zuieg3IJdL}W{Ftk`V~Pi?_g*su1d>@c6x`Zd>xl;(y7-TR~i2!l`cqk&cmR(r2+`* zjIy@jp10#}h)wfDAi)xqqQZ%qnmeKAxTl>`+$MqrFR4PveuM)etryNDa1u-dQdK?L z9@82d^9zP&g>CX7_B!gO--(Y^AYPS zD`OJh+ZK_e?`9NJ7W~S$gic z)FoTV@-GgnPmDXc}CSG+fcTsze_CKu91iDA9kC64|Tj~`*F%Y}_U&tm^f&$w-w#OKNro}#v%jk`Zc5tIZDrx=xs04+}sTO4W* zf>57PIe4S%Q&Z>C1;9|Wf|)Y?A#$3+ZInn3Tjfj*YPmSC1c!+7CQL7@S^Jc~e)7zN zpXuzW{X|W@Tax0IpdEoLp7r|Vc0n;LGpGdX?({BG3cK)^5N$nq*CdrMJCR%jt9BQ) zlv)Sd)sd6nbb$rh?x(%kVn@TH>j{$&UR!XJ%&n_7ZR?8c;>Q#(wU^yY3y?JzFi7`* zA-y8+@cDRgT}KB}*lGi|T(V%z?Mq;=LFh%8*Go^GKL0CgM0!FwHD{ey;oJY#hzlPajucTT8(e^te*LeFcU$f)7*9`g0sAhn`;opKj%rZO> zA}UlY&>IM%#5ILFzk=#V-qR5g<)6y<YNC+~UP-}kJkS>3&=t7iS1nVK3P zARt^b7f%NxH%l|1|H9VNjOl;e*3#&Idc_vtV)VcIe?eqnYUA|(qd-6omL@L$kN-b} zcd&G^{XYTxUnaJ+u{Zgj5)}jj{%`y*KK}m*q*n2tBC)iz`@cp1uZs4c0D%0@^`FBfbv~)1B{|{k}+?YfH$^OrVYU%6%_@4;~2<*QJGXGyfbg=ZW{9gqW z5)$%1K(}YxSCfBP3wn7e;s^L_cTWqOh;OiO90%|ckjU}AriNX!9_S* zgBci#d=guh14TWOxC(*haTv?M>N?ou5%U*6?vA|adtqk0u8-^KN8vca)9To7dME_q ziB?dbG|%07?=~!2IHtsuZ+A4MJ;0>CIc}D(-)%4*oWi?jY=ar!Vk#N_A1HyUkDlI= zn6q9(z}l3fFQb;Pgu2R8%E3tlx>S~gBfK2uCp_}Hf13Ztj`CP_C|dpY`|Pu4r9B6&oc%-C;jQqdP*uM*0XB<0{Yii8_Nya7CJCX znB6b~a{S4!neXwzQ$)mO;ibJI1J-7{1g%7X z%VI-q(6#L(B1abg@%c@nw?kgRv5VP#9?Hi(A>+w5hz7m%YhzU06wcZ=128~612eHB zV);@El(TUN%3lXh2|t%~s7hmTbT+5P-gIbJWGMEfV@LP@?BJpI;ZQtinQ`sn#IPS7 zD||{w!oJa`zk_ca2Dh)Zn1Xn;IsnuIZf$k%j=9b5ckH|AP15h943Z?GG!L<7E-9Y~uax9I1&K)HEx298HZUOzs2kht?8z{c z($pTwb(roew_=eYYcp39c#q{n`0v*fOreykSL&N^ZB#NLCn&@lOMBVx9q zkSyj!F@0?xzz$}oncq8WEU4dpYzG5vrUA4MMBa2B-HG!xQVMB2*vhu4`+i=amgRI=uPY_SQR-# zuZpKzyGjk*uHh1u*S_?!;OIim4SUTBQF?GGp5?88Xx+E~+izZ=29!F9mm0ws<4ji6 zCy$4I|4hR;c*x5Ff)RR1Z~y%QD7Fn2Z85A<90jZlAo9UT(>Q$CU|=!iCSIMayL(fa znOoqS{8AE(@q2?&BcT$yV z*RE(~=)0lH&KBx$-*0$cb~*b`NBAvGi&lp!4%bi>{5t9kulNIVlE3qqj+j?kAOAW> zl2KKWukT>X_})nTkvyn=Bp(>fuAMX7`HyJvH$Q(vU8MtFRTMptPS6q-8-7K4=3NF_ zFgbCyv4i61Qii3qKu&PdzTMs!)@>PTh%(*+y4=$bgK7x=zk760A7~yifA6XW<0K?2bX%lZU2tX>maRzKPskqm#&(uul(Y*mB}t@pM2>5!RltLoyAt+4kHu*5Pq_4Frw(ow z9`GzMw8(L7Mx_cfL+d663SHu>k+oA)h1Hi{t1?N(lwOP9*!!Lv;Pa&Iw6x8hLY^rK zgDEg7r2(G_zU8Ei1F2jS!C>4WwyZXwx!dc|>N77BLC@*|FJ>!iK?>7#$TUR&FE^b- zDI57jc6^%6mU8)A7>tvn-4X(ru{2{I9FoCtP`k-iKII^lG7KnDR1PpvnlTv4++Fic z=vK%md?AQtYps&uYlSp!ld*0C=w3>WDxJusP}c(s{Y&<87FYSt6|%uTlzXvbXXDk9 zAFc$3Kj|5^_H%Z+^!#S<+miz8N@+e`zDI$oyOMCU)v205Qv6doP_`E;vA+UrgKFd8 z*ycL6$=oG$6C7^I;Uztu;?H@qz2BW3ga?73*5W|gq9{tEKYLz7NS!9^Tbo&-pdGR~ zyl_vCi=kT5o~z5fH@8bDlLb;bbKY)2zb4o`-&wVHzAWTQZk9TWTUQ|Q$(1GBsNPJj z?yO4|eU~Dt4yQGr{Q)&BJ3Dm|WmQBu#T$0;i2DS54M~uwAOHaw)7rV5=dtvh5qwDKZ(kBVA6_pdqxc4f#F z(yhJjTP$zk5#9JKsZ4cY*+t2obC+a_s!UtvTHx#&_PiMcA{-xwR(CX7qlMwEYljMV zdZXhtDQKm?@IJH$p*Zq7^8D@%r>&|c2qH=`ClJ|KU0PgS7j1=3h1WQ0#GQleI(^XX zDbf7WZJ~5|t6G(8LdX((w`L$mDmvw#ks+qo3;Q1)@%|X|m=Tp^NwJP>FPFZ~^!A1U zx24hRH_xr+=@B7ELH+jriu#`u$?9a5dkmFrkUurB4cUyE?Ul+} z=VS!9@Oupy?-a2y^@4?{@@+BJuy!RYMOYv<6 zh5W89X|-*)j)Tu0!Z-x8vBmnk*VaHd;&)mDAkDGnTV_=DzhVb*Q7G_q|T?As6GNqQ(GFL|98 zgPlVS6npRQl#@GiTK6D8d(P%N3FjHyyoXFE7|S_TCzGZ74N_#n=}<>HnBVT@=EB=% z`1Fwc1m$&pgb($COeR#%qoJaOLAPL8Q|~{ZTn&l8b&1~Y4|&!|C^s_S&H^%uC+R_~ zavg5uX&EiNPw2ceSQXb|!a@l__E+Cy(-Eb;wSj|qcA7vFptcR&F&ZXS_CZyVsV^ISke#ItHM0^)BKEHNqSCKNK5d< zxwmpAm=yOy;0?sQpj&efms8dH*OLCeX?m+n#@~G#38MtU#dh~0F#S*wTWp$UtRu6w z<{J-qc}o(@g^z+f3Uws#NDzsKW;wBs87d=MNEwahoy1|BuJ3sP;tmpL$WtyTPvuLE z*nZ4OG)4>-6D$*h;W$2tcish52ywJ#&C@*DVmmInlUE?pAh5aUQAh!vY80*h&?e|S z=$2E&fH1hpk4v7H(K{AR_R{%XCWgWNobFS-8j}2WvdiCsRN|p(p}uUvku?p1oxXkV zq72xBa*80$Rh5$kuhyh$U;EDa+lD~iBqNG6iKuLZzrEzp za32uBickXT>-P;_B(s^aKa(;?FncU>1CChVe#Tgobmd4fnar6&50KewpXh0cPRcu_ zvbSJX*g{jT#f%EW;npt6E-B0tGFBevq#|Mq?3acCZRl~=w4R3F86V@omrYs^>34>tEP`1 z83%%HOyEVsDWH|7FwMH0vW|SxEjr|dU-x`Nd?Oi{d(4o1nu$g=3TZD^rhQU|n*vJ4xLn61U$eBfie#0p^NoW2@PUyL^?k@us~z>EZM9S~E9=C%b@<#PDHZEdBXDhiuD>&B&!|&PKP3$?usk^0N5kU(R)oAE z3mnXs94mO_j3Okd;(ZMWVfH&J=Bg8|-0Hf2Y_>eWS_Npjz445bA+t<4O~*JT;JP5y zw|Ph*(-1{PKbq1YMRBi0Q6@Gz0(DY;h*Rhh0MOu5#nd094Sl2*4ugMD%woW=FN*_5DPlLni;AcX+PCeq~n+H;bJm>e;G4Z-Fj~ z5mt$K=tDrT;4_v(mi7o6B^JyfHY@)n8u&uf*~E{A=WKB#A0A@=3D2tl`vU_?0e_7b%gZNgkf9JCf^3UtaSsYpj{Bol zr|0c1v1sXce^rEOl=ZNhzGt0(wVvN&{jTn`Q}$0kW_Js?-ux2fhQqziROxf@zcTPD4N!OP7Yl6? ztqy;D-$wZ}-i6^RAa&HYkME+4!ZZ@c@! zvA%eVH<<^9v5t}A@!BRV1wD9F^_|f$h(n0)4_?4$2XIb7|vd>J&#Aw?x#&=Js&LS#9H}V>o(+sSeF#2EgpiRe$(2HX1u_*qpP%_Uhv0IV-Y9C*7G{7t?`zv;ob@crY?_&Ub2`I zPjc+*+t(o3LmA6V8ktpC)CzP0h8+t_NICQ3j1e#U?z^ZlJf0mRRqo+di(;1CrPIeZ zU#}$tG6u8Cc+UeQz+CbnZ=oa2W`dfK2uVpNE!h>TPZEx=!g(>MGKfHW3Av7|jKdBO zlEA7w*@0B5-2M#r@)#1ru%G>m9m_rFh{rH*!6*cF4<&XGgmua5#(Wn2Fn~wpkETNl z@y@Uhya96)CoBzF20zZWE1S@0TB2+8BC|Z5MQ-_mnuC!+H(*>QxCa~n1*V?W9s~QM z_v03X=g6;<>)7Ht(e4k7gsxuvP(Tc@-k-fU+bSzZL1h;;RQ`-%XOXJ(d_gJSRlAFG zDtW1$ILP=HM5PDg+%%;z8|>TwkMpX`;ERp8a?5WePKB_ z>oNnjR3vReklUP?wHB?y6WDxh!G^oD2xT~qo6EW=?3~!LhrYnql^M_BM>N1w1Xb&S zC_Np=_#KZ}z@O|c_6yN)DdXt>RhGHdl+C|gGQZ)th5h|2r;N@}OGHy)Z)HgR0CGf= z7Adb~nj^nlH)#$nTz?YQkn74yo)y90@CaoFW{?@`h&(Jv*mKbo;nXTgCp=g=EHE~E z5ZY5TdZk2{WOAo6cc6Np#j^!0<+^%L!_zpT76+>sH993fw!IdC`VV>5# zCn9WUEe7oGER53nuS8QJXWMaZ>ij{rEIo_|DKk_TepLk>zg?fPfe%pv6*UUaI)Pt(0F26B9Qqs*4-m!PDP7s=c(k(sLikUJ?lMl(j@qlY`$enCjbuLwOC zw(g|%gHCx-f{?e@bNhE61P>H6Y>$Y)h05zUP?VjJ&Pvn9J9CFNxlDx6axZ~TqlhuLLmdu<6G}(BFC6a7r z>FICj&>K}$cyzn14xbfAknUNf$J099g2thv^iX+pic?FC@D>jB^-kyg65J$oQ zJOpdqi`A^$_9i5oiIpT)4if`JO>plG5~i@Qzfox!c7&Acr4jVXjEL;OLnYvkfg+m!E2Kt0uj=XT|EXPwtmhiC|3T004Phih>sjbsj%?>00eE z>c^sF=lzC6rI&WikE7D-vrfmZZ_(++;{#NLqjY*~E3!KytJ_Sp&wpT ztxh1{*N%U0wz;PQG&@DG)5pmfFn=@RERgoxn`)&`c!ci$OVK*7eR?3ooPjp!XvODA zLLDheNzs(d`H4*Ws!+U;u$8rfD{&zjMQzzF9IAX0fu|FYdm4V9U`k2Xs)>Mk_v^fD z&K>B)+yFWIA!iL9z#W4L2L5*d>#asxYfA#g8Z5TNjLZ>V!P&^)8|ECH_M*C-!kb9O zX$KR5UX{pHe$rKL81$kLiT=&G^QAV^gmhiks}YI;gD(6kNaX`8)AJ)bYAMqSuJfCj zY-;9OW}A`0G`w-IHU$qGwzg|BixeydWz{{#xC@xEM&jO0T{WR?Kmb5+(>889|1*K> z^a%h(s>F+0ZR>q*7yVeL#QZu#joPR~M5#a$^ZSFqzA+K+?3^8WJ|*7ejgueJ;odCO zZThpn_?|WRMYmXCD-0_4Yt@wI-t~F@)GVz=B2x~_frE_$f0Fu_b?NHaIQZCvo4Ji4 z7?#r7ud@}muGew4r!twXp5&Oj!9fF4tS;gn3I}1ZLs=XA>wNEUN4n4Ha|U&rLA%dk~HoMPB%WI zPm&l+&@lJbU{wj0&1>&ZjNEEE){t<16sXlJLpm{%hzu^hu8<>E3(9<+Ylr zqXTK(*VjLqB@K|id-%yAf4)Ipg$ywp>TzNhTiWSLoIoe=i_yotm(A3qk`M5-1M0@u zb6*@Kt0(+CjTk>Gr2P#dx^33)$Uftbvhv&b{7wzjdZDP(GJeVUBwLlUaaTCMi08=)1=ED-8;9E|vTc#X5n@yrFzN7>^b<~jIrE6r%d{<`Is1Q89xh2F+EW+Ep^&eLC{ zIsS1}Uv2h}HjitKRs8+c)rMlmenOXjU)$x%A2vJhe{xj7Mw7eyQ3_)8)hqB{pKofR za^|Mhr~`)hm?6i()ZvL{lZTXF%8?AlLAueTr+ya_K*+N4iygNBL!bir6gJ2C-uve4 zMr*rB->MiYMD>%hv1FOHyYXz@QN4izGhq}NuXhg1w{K@2$Z&J4=7MqrGn`)w+gn`; zLcH9h15G{Hxp813U5Tu8n^ZBR498c zix4)W8E{TMzfXkAofA&T+5tPJ+~F`0L?mCpUt zXkb8wr=Bb6y&V@?|H7@97x=^CG)cVeUimIF90cOWti2l#f~}DnELv%BQTY$OYx{y% z=S#u09~pt)C}B@OFk<|TZebCz>G6}X_A_!m5s%#qdW}cFD}(B<9-v2R6J=~CH2wu4 zG7yQHwP3|tHr0-&^4s}BT9CUj)At)!v%Lt2X+9r`&VBb;z3zvkj%c%SCx7Di{R+o*H0+}ig(*k1+Of9 zQ5G2tVHUX3nw=5KTw9Gf;~HXzXDW^9^w(i(-94|$^q2YOr1C&wl-L**rd&-bHJ*Gk z>^pgTjcgVOV{OE(==DR?KO*iv%&Xp6Poxcyb>`pL4{ISY1jF%lUe|@JXW?p%kADnQOg0bR!G;(qGZl(w5EYsd-YZhqQh<8H%r*w}5E!`rOT)ug^`l@=C9v?gkmK zI{Y02iW?j=+KN5G_w|R~W{84kvdjyp078=N=XH_D3R%cnL3aFO)S8@wB#83;lQE{# z>B5uJ9>+)bIqTxzGCs+ZBYWS*OxkFrRNKNl_4yHtuM_5e^3m8k#x)ON{ihv}p?pk& zUKG4l{$6=zUGgH7G(IlvT2Ps5vkKDyD|S&y^eY1@1CX1^a`Fn*;zR;oK350~f(qXJ0*12Z)DsSNKl4-->u}!?(S1(lDL`cO{qbVhBpikQXE|wCf zVuIs9J?&5(yVktaseF%ywI`Gr7VUmWt1vCFTY{ymbiQvekG!bR33n$M=JE z`YPMBxkyX~h_exKhsuC92dHXOxbASc*lA-2U>s%V743&P=NY+9?HK>5@=~-LYrr%| zG%mM{gtvTslRDRG@9%^bHZ5%G_|p8{cPM^i~Bk>aNr0P#|BFg<2iw zaVY?HL&aK+F7Ta&eNeQ9!p);&?ITe)b!%$q;$`fR+}o1UR~{p1h}!-P6OzK+By$7%XtHetu$+ZlrMP^H z<5$FQjq~SKEsON0>8$-k!03j7#sHHzPLBnj9=><{TGGE9^h5yU(G(IxR2VP{I95OA^q6j|_kYg(*xd=P9$!)Lg$jS!_F z!dOvk_l?2pz)N^m8TSz#8{YD|zu*bL-h!oJR6s~8u|E1A(!D_KMl~!ysT)vzc=0VW z9jwWOzgwYwkdxD7+XMe-+9uq)j*uCdk(6@opM}6B%1#OcaBkhv4;XJ=%jiS&1zQ?b z0T+CBmo}qHBeQ{Q5iGqzp8CXhC;YYE*fA_s+E4n>J}GU44#BmHXUgNVuUOeJ~3a#$H+|{FND)|Hq9%wJ%J0Y7DH_9e4y9+ zsB`iLxZtDEF7#Txl#Sl!7Td&;oEJLE%x6FUG|E-AsrF`5->4H2QjEkme?gq@4*+K| z7>0%h^0QWd5*uci3#LlVrQx%UQ$$T6uaXsuh77gwmljNSWV`Yg2@kT<$Glqu#tTo* zptUgsD~Ux9S0IIEiz`T_0!9$Q4pNkX@v2t3;oM^X7(@EB>fvT?Xrf|^ltGA~21*D@ z5{h$!y>F6qo~EsWtwR3FNYABQE3w(tWf-Oss|iB?_b`_xWFX86m0_S=;W_5D9mrP< z4Ze;&*-ZCRJ92WY(e*aj=6*(WABYcnSTOI`q`NsKq!$VqdguBpuV zU68MG<=Ek0#$ZcV!3G&0eX12b=Rx=o+t4hmqBLGc0f^F z#B+T$(*Y6Vn~?u-I#jh1V{xhN3p&ZXll0qdy;)@FS>YB6D)uqV$G@i}khBbAV+U%J zN&o~uS}OAQuZbHn;#76159Qj)wy?fpC4`#Eq_{$`pOISFg5LcRJ=P8MI}L=G6!H;% zq>To#T>-l?7cb(|4RfmsXuaXoT3e_k1=08>(TYfUs%;J-AVQPaq;?dov|nDSDh)YM z@(k3_6sp%CCy^Xd-S4CPJb2JhCn3>Jb1VBU9Wu29Z+qA0r~zhZLfP)CRi)O)6I=bj z>E^f4=wflu+cO|z832y8UmljN0vu`H0|r^gc4`}zsV&}Tq?l(Wd`?hj>s3LNFiDfW-) zu=g#pYrtQMl`8&!p`kCfG(Q!fmUMx6K44qFJ!rY1LNhy+wODeL)qsn5$MC@P(Vyjs z`Eq7LKN6&hE(!M6fXhX|@QKUUx*6QC{?R4QY~PS1f7us7B(7Q5(}?22O+1dc9e%CS z>b;q64n=!1h$MOitTYv`V(Bp%f_A8RXj;zJ@Smeq{${7qH-Zeh700 z^Je@hu>xZX^?(Jpvg6ilWS&%U2YvqqR)t~<_d)hpF{1H*0xXR5L%S20rb&>wgVO{0 z8_Hh}IFe7u{HjD{7HSS4UR00;k%3aa8<8nF5WYqTzW?A?x_wZHdeEde&kRr^eBQcV z<#1U{mE_Dd3A{^^C7KSfwEwpav;57MjXZ(TpQM|wcQZS`B>FnX zUq-SrhNzhDGK6Q(k_MB1(gmLaWy(Y3K%#nxXVTJ?#L4VWl~}t>Ze-K)<;I5RPtLvs zcr2oFU8+H==a`au@I~F(q2gxGCxWJR?y#ioVp>SB<+Zq%Q8v!C3k5(u{`UfC+(og< z7vO{#ygjM|&+}lHg4RXsLbWik_9L!eUe4|T$=3Y35avg+a+wn*pS?&D33~I4;(05A z-1-^HECWn&3j)2@OU`8J%k4G9*|5aWSsQ1zf#yGV-(_8C!pfEh=n-)eJ$NFUBY3+3*O%^woq*zr z5tF)>sn5UQ&TeYP_0$uxw4kY&pv&#HMD%|Fk;0q9WZZRsK!xn%K&aN8M|zG+nN2j_ zuWv}&9ooLdxI8~pTr1>c3$Rl|PG$ECA3neR?+`yGH(@1mY}3zMs(%k9-5HkWcR?=T zwY76pfM`Sz4ML?>S%-#EGCPv(1XRmnlIVmklsQGQ5rOSVJ+D#q2?;~LDOFh!KO>wH zb5~2d$>dF`nOcDH`rfIa7ky2yyyh+lM@tPy{S9fn9XYB-_|7(#|1#~i;BX>)flYym z7D%bIG%O*tDHH5tSpRr)m@&(DnV>f#qd@)zWR0q zQ3}ts9jtD8Rg-A4sfB?Wk4@ZK9}521-bL(g=ZpOj>BwJi%|5p&s5(RDCOTY!E3mZ6 zfvIRR&H$0vqUD1H8E0N=oI2Ng0K62lbAK5$u}&lW;8ll3K>ubcJxJGK5v_@8HnKut zpsv_8cY3mFR|n1`Ih`~%5%?uNn%GizR6D5k^Lnjg-7N^(`72yHw9PoL&^rei$j7Sd z?##a{I}_-qHh<|YmEPENI83gDUqb&+)x%bW$RJ@ghBj3brA0;JzF3wCB2a*%H6>zO zr>&L@e0uZK+%vZElTx!aPEr|564mJ}n_46|Rsm=*_s%gzjySI&LhUv!HM(|jViyk1 zJ{CqhWLL+~OBr2Ac<4Y66;2gsr~|*@7q)+kV9s_{ngglZuNRRsaYV|!zlpO|k>;RA za4!HUxgnp0k-%Q^F%56e?oOMPa4CbZNgpG5&170E(f(Uc=ZaquT#M%ieJozq*KXB6 zqB81n(AV1p=`_N>F=lI3Fp|(P8*1^X{ZlQmly7LZU|q7I;SlCWp6IE?oMpzu&7tJr z<~?R-Uqm^wgtsM|u@H7(NViU4dULdD$C6TA$2+hY>g1U>ci3=R5huZ#B)Suwaode= zZ8e;}O!`m&?eedBbQnyzya)40NoG(Gqfe@SXWn@xa7Nd!Mp|mA^f$Txl#Qda6$?=? zXx)P5I32pjnWbXOqeq&h(O-r{$}sGaBhhn<3DHL(&F~dA?Vt{lrhRuAXB?C6jV}{*>|iZRy;r(Qr~WU0=yS~ zHd@6;3CfF$Vvy{Fo~JD2-XeSNK(sdS08wzxMVh0o0a_Zv^)j+|TF${$L$KrQq+2wj zS0AkhjqAXOaSKN$#SgG#-5;l8_1Sg;Bq2d<@%Cpq?rUe(XjxiQyRfQ}zO*(o_dC9{uQfkC#A!MEG?%C@}CKnLH3)&7z*OjZhXZZ{u zfmhdSeqHk7y^lw>l_E*|do(;438z%Wjro_)|V%!w3SpTdlYk!Cz1)fcNTY|d-RDJmk zl9n%#o;b%XBN#q{tonaHY?I2PU$$P^t*(s|I{8nSaeb)!hu3*i3MaS!S^KcVlRLcYO<;*v~V|=6Ep`>(JgJ4sHxp0FQ(*c_(c(=mqS*sdMQ7TBs-?61 z#K_mlFcsjiCOEXG)zxpZ=JNH!LcIqFZBLt9QWW@Xop@zT_yY=}Ay5r}P~Fx#XV(=w z-%e;}GCXJJw;Ut} zUlQDyDc?#vQoKO;Oep~{dewXvN@c%9a7vLDXTL~4>m1L|9rO^!_dRV-1KVj1zhzd! zg5KNyGRaOyKPoi)RSg+@!yc#_1}Sz*18^Tc+H6teQC^_0`LC{uE)tYaE8~}~SRJUZ z2O|y}%7(=g;%~UB)(SS=wqg@DUSmq$$KqVEW56-v9kj2&ryj+)>rF*6vgnx^_QfTAgn@s1qGxf5l z&vMY9yW(OoNWQF-b>r&`9)=&l{E1+cq_N`*Fb=D9PqAO5vPSfsyT%er>7f<_JRxND z^durQ`-$z{4q;v&lKHcQv)E3-=?Gzg?(}A(j7vpm}GvFUN4e*x1G66UyO#Sx#3R1ajc_@Ob z^xRpefggopu!5fxlY@K&uYr1JkD-@-E^1 z`h{u&-r}a1!*^g@#S@&1u8#8luw{{4I2Mt$S6$=SlQY<HGt$|r6Mo=X!BizjGTsTo{d1B&ZlGuVJr>^P_~A9c%UL9sMn)-3ai62# z?r6Q*2k%L^S%@C*P}h?3WvN)QC31bs4O#E(<7uACEOqRMv##@$iw!=^Z@$U=w}i5z z`TKJozCICMXOCS&6{NQ`L$29wjBZH7wL43m%-E3X?;Lt1yZY(1t^mINF**^jk0A{T ztr#>Hy7kYpFdITX387WyV0f*}Jw-n@G$qH-vJW%W8S_KIxURG+EM_(ahS*;2yMIc{ zQ3vWv0!b^8cP-7*-my+-_U?QNKwy60F)*TgPMJA!cBkCw*{F_(sc&j@g7i;RtYiuF zvcz~(v^cLmK^K)6F15~s<)^|$wU2W~D1eHneQE{8rC)B>0g21@gP283R=|3$k^I63 z&`C-Ln-{Z=AFe34%BR}}q|6kXJA4;7e%l~)_)^Zek%+lHw?-=3P*$3$={RI7bq8tN ze)mZ@B`v|cn%f_c z#~~q;enWpoWZ=Y;Cpdr;57|x&r6c{Dpx<5{L9nJIMJ++7(InBqa<9D506JwNVnZr+*T zKP60Qaf*DAiIxuiHdI^XIG0Fu_7Tq+70Zy6`F8p-WkCGr`3#ZEf%Mi#)3(54#mrMm zh_06U@9c-;a$OfWGbPx3>T8<1$sx(OIIF*mU?<5{G}vGEeee~qC7T?xmwCZYU?9Kp zYgNg%`>r4n4dc(17Te5^zX#$5EFVfUKpL9L6#Fjc-DQW)GxjIu*TM@N|I81snFig$ z9J$bdNDv{aATgGQoapHO(DYDFKX@)Z`>vL{nqT3C0^CmRgft?z` z7;_E{;4i=l@H>rqQME$mCN<>Vg#WY-22>B;bohe+g)5<57r_c=p@Wt-UiM5PJg>Hx z9KU2K@D<@QfXDFjID9JnbnB5uUPCs0^JoiNfodec%<}Q}JH1UOdo3h3mS|^-D-5;C z+=4CGpH2XH^$@8UjrC>G&AY?XJy%v>ithY4!s`d7wN8XDERfMJc(zejHH9@%yF3tSafZjmt=h@w-Dz7iyyK)h;XO*aX$mhM29d z7H({jk+Vt=G5e{$%@e}(X6867?EU|Ef1TAi^cSSlWC>c9a}eeSI^%0lI%%Hbv-@e| zAJ-IGZBGZj%KsH_XD~?PshQ)$&GL}q4Jmu>MX6vj10;!NW(NP!?D5Na?^JRhZW1ti-bt)B?FRN|J)|z6?zIcV5=a=smvH zXVmPZrH}=60S2ywuL!WJ;cryG%Rc*b(SFBBfG1QXiH!>=t*L3w;5#SUTXNTTtmBq` zCO`0$Ye7keooJ(>5=tMAQI&TQC5^+U9w|ex4@xKkBMSmx1{HTR1v*O?n~iS>xyDba z{frWx7Wh14DU<)Q^)oM|!(lG56y#^G_6+zu%mn{|f(CZp*+<^Q8+RC@Udnp~^|6G! zhi>lqmqd^H@0H%4mG1s3{U=XuM!SQKK zA+sz#urWoHhmY0_h`C{`WZMLhY)+4ouGMbb@A8E4Ri4y3H5t*5 zv$nBTg&cZwih}#ivVym)xlh7HQ6fN=!6Zc2h<09(W%u2XiFQ(-&TN^ncDTaA!Vbl8hw zIBOndoMB_{3P#D%g(1$LE!*CP#f2Es+SZ+LAM6dMlU(G?oTChPg)+TW_Zq*SAw4PL zw-gV77PipOXb<>6kYI1N8ROIjm-1}q##Y>uT5JaGQVBG?P3intO2qcd22(}TYC6^f zmQ^Tt@h5cTw7)U-1PeuhlX&FZ-9`u>m;={^>(GA>Alr!aE57DP<5BK5{Nqy6h(rGt z%J{`}Jl&ZaOC?WUQEI{`wAy3~jZox?tB%uGd@%!SZgdydP`VTKc|?F-q!MC|%)+~= zY+d+4=8{5Kc(ZXTom@$CGYSibtGyX}MBi?$d2yRMlbHIF-K8#~3E(Yd{DE!nl5afb zGLbDacys~=W~DcQIB>4a`6l~NoY^jE>3$g9wNL?rt zR^kP9cJbhSKa`Z4=w6@;2d=wcd{g+V>IhjBIw_XcqcI;cjdMl%61*LM*E(Qb2#5pA zpqoU`NMtr%xoTzeWUN$4s=fy@4CyHQOejJuC{oYesh0W2Z#|d2_UkDx9=b8C-n}*P z$=GFq_z6b8JyR_5M>ZB)E{gkbNQ}vOo4>Oi%kQ};RpY5PA7VjhKgES))B6p^D*89u z$(x*4j43XyWQ*E-o%NJI=l~ImluRK?k zMdr;iw8m2;bdIQ2Q5K7st8#6Pn=4Z4JgeF6fMP20G4J^K%k6z4{IhutkZoQdQD?C- z*L(am8I4wP$F}S(WwIL&BMhLwipRhu^ZgfbN&n1GJ9bpGua1?HTUXFoisaI*cwswv zCVmKUQzfob#J4$L{(ygTi5ABsV1C24gicyw>3~3SR2=gb-pT zzxVO_;1RWbh@SuZgZE;%sZG*-<4IE!RvPriTMly67DSvNJAms zg}F}K3dltUX>2)%w8OeSA{`8j1vDwp5Z;KZlg%Z_d(OOyV`4MlWGmt~jTHVjeF!hP zLynQCuy*vEe?zyJo7X*)L-)YIP$~nZ;DBq7pZUT0oLF@W(;YyXV2rY(wctTipcj>kK02FFjm`cnHD)MOT72{Y@xd}P^rS~2ap@vP zH$|5h`?ItRvtjF!=#Mm~0cJCffehW=aQrP_s;Ju{Fp1rjR1Xio;TpSnLaAd!_gV~# zA7i>=N|I4Y2A|@5Kk$y0p}YhNsz!I);^ix&`_|;O4`O2+<_4UM_36EuSWCr4!H#LO z(f(KB@(dnzW}wf-Y;SmUu$st(0KyUvx|Xyj5cJuL)=%{wArnL-FrH`HfKH^lEDFA$heT9*l^6OkAKg} z2{0l=X2`S4Q~K|^)DWgUKgx_V*pZgZG{q&yb~8blT>3-1rUZWw1F{0a+G?QC5i7Zp zAJBPLl6g8Ezz3KGuO~ctAQWnTHbkCh26mXz;B0^VcfoQ!jhNq(+Aqz^k(Xlsp_+jn@PLW@D^t`1S-A>bd9~}c zstoAB|FMh+y&|Uw-pZxry6y9K?3a-z27j{#;xgn1SX5msz*etfs3rozQRhM^979_j z=GN|^A_2gztFlu)Dg1|5Cc5P%#ouAJx##1yn+-j+p)beO10t4%jUqb<^sv9&U9+cn zLEDKgG;w>;Xmf}qUceo#J#{F<0U9SsMev5=&BOi~k83Jskz?ZUJCCpZgbX=pVGE%< z^zpNR*wtc^wy1suDddGOvnk5@Ol|b{PiT;hKiUHHXD;WgH3J=U3g`@PWX5qCTV=ta z>Z5#&TEVGmLFQ_a6TU7ZPecFTbyq9($-C&MW5S=SH7p#?Ac|?TUvsWmPOUa45gBj` z`A8OCb49R-&&1|S7vx@mca4`W=2JeeH&gEIrWs2=rD9;#RMfuw*TS}%KfL=RH&kOV z>$NIt+(9@l%h_1_3RQ9B@FgnlvRODtBHuWh4@NKZ^L%rIzhuzRth@ZKoAkt716o+V6^=x)8(7Uo^{~KSkIh%`1 z=3uWt!*@VdX0N;Hz9k@vP9F|@58 z?K)Q}GdyLkq#52B_g2N>+f@FOhj*ktlAVNWS_SP4brLkn|DICI zaSgco6(V<^2k0?SEn{=o{#1PW-Yesev&yg|(bSEW|K~#_9gj0~@P;<=!5M~eBqFvq z;9uR7-NIb{{0G8yfiWO6wCsT3(8e@~0eOh6+It{MH%dUk+`~J8>VY<8-P?QOi)vLi zi!Xn7LJ;o;{y0Q^@V&akCo#8>TNMZDYy`B&b+gePMv1%%8KGuCjugn=Ylj;6(vt0V zUVDfBG2l?S1Fiv2qjo$Mmp)KIkq)<{4kT8ZyK&F4Kz<|MEPA#I1g$KzosD3t=(LX3 zV?i;q%?Sr}s7@Ip#j;6m7Fgyo(nWwKVOi6o&8>2}gFQJ9+<&wtq11ouXp=+HOon7SniRiGda_9+l9>8HxMZ!m8W+ZVIh!71k6-w}V=UtBhdLCzj@d$fG z$E4S4a^OBbp-O;SY5dzni>uU7aVNa5R%%J4wr3~_57`CxMHv)qj%}CfjulyE!KXVZ z(o5l+m0Im!LU87_D^a*n;~`0h+ogh@er!iZ^9gy*c&9Q%@;`p>ZrhW0137=tOityH zSnp%RUbu_IG)N}^R!DA1LoI5m_6D@(n0Brw6tHrOa3i@dWFOVh9;vAV`_nhlMq`rN ztcZj6oWp)2I*-hWf9RfE_D*qYhIRJEux)sN$}tR>+4lj7+yxo&xvpa-st-J9Cc;bO zQhIfyko$a+o^$Dm$uHD`_UiikDwZ=wtR7Dce`<}zJJv>5V#bT_Z=H24`MY5x`kkVw$Wz)ETY`xDJcy=k^m&YmgG@Y7ajZ z`U+6jpo&RJnX}_r26=^iMGs_@70@IcHqNvXJ~+KCO)=kY=o=0;=7w?=>`S?eMXYZr zM7`hub8bX$UMVSJV0C|tNwSKcGJbz_)K`j$`x?h|jw8$cvzme(T!qY8S9|{C<9yrhJ-iu+n3hnII}1XyW=IKX=i9Q}E?paUj5m8MpClPBFFIf6IHV49 zfS^j`xjofC-@~c1!=`Kum7^k~ZxuI1Bb#~% znigs=(MRl+>FJThan9oWn6-OjepG;DSgt4*2Avi06jRi;IC|3RI*W-H1;H(TR2Z0V z)z`D#RX>^?zF(ag&oFV#Q(UE_jbmjm+E|&bV2FjSA4GEmiO-sTBYS6Quj8PDzU_68sioT4b)Ii3A~?C||aoXOAxAv?1PZcyKYQmXF$a$&oW={)k~E zmk`QhyaKJ+NY9?YKB@~cBGmvbwZw>9ooQ`ZY52q8&7!0if5eycQPFM!9Bgn@;RYqO$Mx$ zN=TUIz200PL=IEU2f|+QN(n>(&P_N~r1ArPq05FZN`YFwytQIbzVvB+4O1VXqSBqx zYdepa;hntWG{t?-W~)I#nDilaj970M$L4Xx+oh5ureL^Q`wi{(=1*Ob6Ee8VVWgSNiXNy4&4$I%OAHBjI!UE&6mE+C;FqVbLI9LyoRCIVY%QlSBeR)gw zu{O#_^qGfA^{3tvokq+>1oMs-j%mEP9Y!M0hxcx3Q!}p*qRSCf@A} z#Sq}(AKx$NQVBgr?4Y3xQB7n<{1Saj_|jrRn6=x01%*w1=bqhvIC3=F7mYu^mYV*d z-Ra;z!2iZ8y2@(_^|eApV9Zzr+qybc3L_TfxDRsURk}MN`+?V|9U;Gc;G)td&jF^% zJB5-u`Ne7cK%(>(J*&wC86Zy{lH}=gRcC#YR}(y@#I8gn53|f8$?v1abGtx0 zaexAyf$@)A`xHxBhZ9on@dpOMg(R6N6J!ck8CD~ZM?MOZ z@(d>yx@|vQH=6Y|h#XsrQC6+DpS}E^8WoV-mhV_3wck}km?nwHw3@UQiN1c3V;@KJ zjtym2ju6XA3*${+45nes!8XL`D=u|#0YqISr0vt8F;kV)yy&%VYW8*3(&Lw`VS@<${+2?^o#Q|A6COaD1jEJZ&?ZOV*7kM#tH+9Y(Wu+Xa zPW5K8JGiG=FD3K^w#%aF@>$3os@bBk`GDj#qLVlrf!0}P<<{5r7C!mQD>E#^IoEF! z*>-;@2W)MOXzykr!G~J!UUkP@nm8occMONMW{@Xt-%CG%g!!x|LRdi~wQlMJ;`~Ou zM4g+zc$bFE`XpPjY){||rgDkFj@Gpk>JA_pZlM=L!>1ta;g{CR*`XzbluHuAtw?!P zDfyPXbNCXOKR6J+fr_NA7W2jM{0x4Fv=>2K0lXBcxp3IWr0w3sRNn zb`*@*f+Du@Sp1aC1=F{?B!lm_*fU)u2;ocXX}HQ%Vt5qLrc5*jV@9KiqRO?a0S(>D*3{rz=($8NB$KEZTIW1Z zx7D4E{Zpn3*nWf^ofapdjHGdTT^C8<)gL0wfCL(h=NkqH+;AO6U`c=Ee@h#^e`}*R4TO10-4~B0b}-_mlg2*BQeGgk^uvTy2idBRYKfh z&cs;-v2Pm(ygb|V2QJ4EBOsUbk~-z-+gNM)T4SC`GE5GB$M4+49Tu1`bbxjIxq~xm zu(NLZN;;d`>@WG^I*Z+I_rk90Hqo?i!iYzcpG?MQinN7WMa(kL-mdeg{qpdMp1>Ga zslzm?U5~OW^&$Y_8U51nKsIvvpx2VEa7YwYl& zHH636Gn%5-%R>Vra2s0b`j6W$T7dB^gBv)h_Wu^7v-eHy$G;LeI8WZoRs8`;+2Pnu zvB}QNW5KPZN_A)3e}YKD3Fi+{V9UGfC0j%2`ksg+T5@%)_$HC@lMO zw&_kqE_AM3h$i)~6vzK-}%}0q}0#OwM z+I35@dfH|abA?E^TU1_=BIe>ERhlDPCURhF#wJ`cWV*&08Y%5(qs3>~mtl}saPd4w zZ}3nm`AsI^kezGkT0^f48(V8v;57-!HAJt a#6um7W{43c%nmki-wv94uXI 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 W0zdKU6;Mnha=cZ%KYH;g>S*TUV`xAC literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-oauth-client.avif b/static/images/docs/partners/apps/dark/registration-oauth-client.avif new file mode 100644 index 0000000000000000000000000000000000000000..819a4fb64aea311c0a1f817313a830a4b9a37acd GIT binary patch literal 31961 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 d8;UZv+w#y^GeI0{;XqAT6NBI~74h=nCTRcw literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-secrets.avif b/static/images/docs/partners/apps/dark/registration-secrets.avif new file mode 100644 index 0000000000000000000000000000000000000000..7eafc1cfc6b74d41cf22fc6525978410d4378e1f GIT binary patch literal 24871 zcmXu~W3Vth&ovBh+qP}nwr$(CZQI7NZQHhO+j`II{=O%jW@TkE)BNi+NdW)=aLimh z9Sq$p%>e!rTT3&>|Jk;dhX3QMwx%wI|MUMRgcc??PX9j>0Kmc0*yaD({}16DEM08> zj{yFsi7ajGjsM3)1ONd4TmO^K|33m4(Ei7WEiLW-@6iAAqW(urf&LfuU#y`U1LOZp zHA@F4hyRen(!tpNKZG%KV-yY~{l732OJ@hu{{;a6fd03E7XDKR4wfF4|MLJtKtTKl zXqFDP|1balk^l|_0tNsuV6`hmw7)5WwIE0+RICzdB%N{QUqg z>ID=BXx6aYy%6SAljO|#!m;Ef*a(jlE}(3Mp%Ls|?zZ9_i+agA`m$e%`|b}g@W zGyFVn+_DtAj|Jtyf-ticb1owi$sj_N_3M2q{#JxMQ5V5+Q_g4}OPY$aUIUO0WRjAI zDHoH$LEC1!zmkPaQ9X-gUh7?2YO53Y@20vFuoMIbXwxC@B`8<-2CnzM`X0P{F~Eih zn)e*LS7~zS0~Fc?ykK$L5Di>_+#bGwy798D0}vOx9G@G^R+XjCksZ7CjT)N#sjG4a znWZ{odu?;W$tptPdBZIR_Y$tLB^JaqdZ*~V%sHs1IYIErJUnQXHULgAkglT#Y_sl{ z&jM|QX6>f%Du`eiQOj$9Mz)a6=_8CeesF5c$LUx-HYIGu;&^6n{EvUb}b z-GQ5IXw{%!K5PAXF4A-EmPh*jzGnsN_&3$N<8z8$xm0qprsK2*G8F$Ss%83@_&tqz zFlg_Koh&xT3|~i)>NX%S>1JzY;|?cUAFWLvSsVONxtLLFD9W+|bBgpROK!jB+!3S3H&YOLo}v@@pS zZ#W*V>EP~)QmuMOAd?=+Q5wkD1V2L1h$Chsz$1fi^}LZGX8ykTNb4)gsMnmuuR~4W zU_bG9u6JwxsvMp;H?eL_Wlzz*UunLm4b$>`)nH!y^apLawRGEzj^g{iSd|ITRy+6F zRon#9@w1OOZ_#2o0o)&DJQ#hV-u0OxMJ)1i)jpW&VT^55^CE!N+EI9=?x*K%;2hdqs<+xnuB_h|}Xt6fXH{jD6`1pSwKXo#s|3 za@d?{i_37V^w~HScd2zuGNdze!Fha1H-0fu`ESZH=VmiJ!j`PI#T& zP5cV-+8z@n{1#Qe6dk_@sK#A!H>$=^!P^kwd`eA^(&<%G_yfMZm~({1kVMTfJWKDp z+)ARPQCv0UKP*eB!KL7p{60=4MFLz1W>Rdq9|X^|5GMZPTcD`J!K%eI@G~-ccs&7o zQA&44_=hexG44HZb`dkIrD|Rn>G9T(_`j>D>eKX~4=0j3sf{GO0ruCM?*vvfB4vF;GHJSFH-J zivoE`evF)eDINUB&-Y63cTcAR*@GiQx#SLjJomRwJun%sm~gC6+L(b|c}m<24sf@FvVtn1w)1!t<8^Ilv!cx)gRSO7>eq!9UMU$B zC8OkLV}$uFnswalpGgqj5Kglfdmn+W@FkC&mB5Io)=dC_1K)|33uXk79qb3Z`{ zu#~gslC!(X9o==+ywEGp`+N>rqh98kh-gF#QjsH|HdmSxc^vzBT!zKcHa>jnF4us- zEb?lH785(I+-as7Xu&KMa7dbT|BBjy^27Ct$HU@ZfZ+CVN@nnwbf z&R_!(Lam~2U@7M4oG`q;Rq3)&EN5YwCKN0!MsEIs_Y_SSI`ukZph3=6wr72%H|2S- z(#aZ3n$Kqv4wyOV$vPQD{|tI8Q+hB+NyA%(E$k=#i-CY-U$GO8Na0i&D%FXvcY37d zD6K~Gp;rlc$9NTgE_RiJ{bJ{+TUn!4^&>QIwkc71G`lPN*LQ!|zm;<v%#t!1s`COx*%go4=hrtWYFWyKcVq0wMC=&(o!k9=j#Nc ziZ;`Iu{84~wrJ`UoB%X>1``Xq=G|wylnEG8hYwKzx($G*Pv^9fOY$Jxt`vRzuyw#u zyY{~TclED0H@>lx;D|A)8%KvcCBJ;6e$~BFZ4h0}RIVw88wxE){OS%k+aFwR)Ni@R z{8}xaNW;WH^kZ{+yKSw7Ud7yC<6qR+*O?JW1J+-PsA`WT{PM(?>02I2FuT4As5x=8 z-qaM{mH7I>U1tTVJ5gCsR2pDlm}0p&am5n%G#d$nSUXLe8{bLWlD%6tvq%Q8OVftMVa6)`dnmwy zS-Rq;j+YI~MVc`{FgWc1;pE!p=9~uF&R~d9RSv`q%&Ep{pjJ-f&6i36d((V!sh7A@ zJYWxO4P3r5KKN$H@=8cD-Wm{04>e*tza_-KfO(DB3>Q%-x7xFFO>F7Y^QIAR6#_FyP3o;JTP#dveY?g5R-I(}hAU@y?(p~NCW zWslho)KQif5q?B9kXrHOS;i~OoZHO4vaA{6q$nDA&-J9{A7HZdWpu}oj4?T{ywExH z2HCfbU?U#McQwbE<3+&_X=Lc`rnwEH2SJy*?em23rd$fuYy!cdm$NV?TB@ct$13V8 zc1J)!FQ?B^IPv~--3qU%4+x zGP7_uN{Z(!)a$ZhdjrzAyBesKQkNEyz7tYEsh(h!p@9rt=jp9^Fv|&@Z~@z+OB(8d z#pWgHa{i}&M1NyfK6)>Ud}VL2Fk+U{gA+*zg`D;|_jstOAYqTaE(#O= z?Z!Zm4xq6iBgsRY%NV~F-KAG}Tb!f7lKpEj;K_1o@67oA$peCdQc)fMybr#+$h=3nF!RpWG; zA|xB1o=4n8{^OE;PNRgE$}cVbFGw(untXY2(AynxP~FHM%Y>?e{&Ax4CZ{X010hn> z1Z(eE3OcgQUUTaX&?+;m)nom$^bui~r-m^8lEl-g+5(vh)Rq!zjPDd{pvu>66yf)G?2ta()N0tjeq zI{T)79EEr#Q@&q_nAyACok}wUrK8fS2Xz@AQz0pM32XV!613}1d5){&+~+M!70M&g zf-_Pc8fU##Ab$L(K-x~Sq&3L)NAb6**>5{gvGM-v>kg=BckWjXk#9FBSyOvhvH+J`AwDa6dtjuEaCs1{PMJh@; zMhS4;bJ}@}DFn<#F+A;Ear!a6Z8=4Fa4(O6ij z(%^pMj$ID3(dgoC+_+X5ck?hXK8_@}Tb|?A9fYVw*4@DEXXIUkod_TZb}-fjL5@|@ z86kzf>qtbCTFHEMkh8dEFjxSSNmNPcw2bfDynG4%dJXp#du>TzR{$5+KnHr}%dgq3 zY~6u^JLoVmPi7m!`j+sOW4I;ut{8BfxNF^kJM5|mr?cOE6Jk?5bM=$ibW z-aB54Zf^b=q#*S#zJV_?lnD_oL$}};_LpQG-|6ue6#-^IKWIpvk`Py=6ovc6i1~cy zTp}H7r8R{^eAhXQ+kPQLNlKXc8d?8UDf=nW9bXXcz-{vaskK|qmfZh_0Il$su{bo8 zRFsdJP2=hdY0^zgNWIJkC6%L?p=_4$Yxms$!GJC=xMGnxne!|ApeZ^W2h&kM^!_yC|Z{D(tibhYL! z{dYnYGgS9MeDt}s?mL-MxzUvpIx=k^Ew3HIf~5G_X7eMtUIk>?pN=i;^{%JY-juzy zFRM91r|S`BR4MP)YH{nYR)34-w5TBoc2MHy!AJoM&Dj)!8J+TU@ZXbfZv09PTX_+v zzDUGophdT3W_KWUN`3y)pazMWY%3!NakO+pO%R&fC311kj2fWD0PaOmmIsiyfRMCu z_19=LL6IoKO1&+NLLIkb9WT8h*Ap~?dV_X^90nicrM3Os(lkS5H7$7Vj!`5TvghCs zntBisRS?sop<>uHi>iM94cU%9D|7Cw-a%y#qMalZ>AEHrXS0{NbT=cno~T(rDUgvq@W zJ&x1@dUL-S?l z35nupSAN<*TRvZSfE^>uZ}lA&`XH*U@hw!c&Kq0MGN;mPc%cU*HQ`Vo+>d{|Wq3LJ z=Zmz_93Ui9m)3c8myCM|ulM6dWO^L1jqm9Wz|kc-2_Ezz@>+N?VAvPcILX;s4&3;6 z+3UBl0tDpF3vbPwvA)%QT7Y=Vu!154UML{fc4$BC6Epzf%;H@fu?jEn8Z97-krm$O zB9p}i3n0m>j5EGNs$ zhSG%mn&jfz7j1X^}3&G(&+2t1upY1ON)P0sUpgFtAk2WPEEIwuB>4ltJ|9lH=E2dju zjN0g&G=$x4>ab5ou+_gnd%w`F(7t^j#IYJLY^sygvh|+1n zY4vIWKOf_$gLq;EDF7wf*C3PN;%E~+-L`9I2ApV-A~<$N56nSs7I5*p-dBO#m0v$x z*#`c_*ASKt(R*?6f{6GwCSBo}R2&U*Wu+)hxuk^rJhl79zAr*}XE+g*j{^-8kJP*B zz_!*yL@g4$h|2h$11!3G;c5E2_|!miqDJfOR$G&PtUg5THA0qz55?Bt0rrP?fUV^O z{63G+qV&{ba~UQ}>3~bIG6|cC_K$4Xj0l$-Dsj{Fw4dOD4#hl{MAHm`VL(&2(nOh& zC{+wbk>ZJ)PnHXP5NbdO^|^YSI8*@r;$DP3DR(7oW~|Mc+z;v%@?$Bw9x0FRxJ5(J z(2VAavXwNYAjYh?e#TM=ybwNs#JlyKxWRd?QkTLAE5sXHPG6w(5;tT8CmED=nY$4Zsx99n08W5QJm%6kWMP5W+?RiMXuMuqJw-9SKs(GN#@Qs5yCHbAMh3?EVN5) zLdfpo`_5}2nStQUpkA5vg%w!K3^_~wTWrH@AJ|ak4K&`cHWK>GgJ;e$z=9L=Zw(>S zvkY50Eyuem{D8-6g+$Tg=&;u2DRi99P7ZaW4}nfbN3P@@Qihdv*n6VSfFH&P=RS@6 zf)_&*mvTw9Y2Y&Iw&|Wnq)@Gorg4pP)~bVK)%rZdHt;-yJnlqYZ%iNu;{uZ&b_YtY z%s@Cg1kDb*U%TZSU4*R*KAekRX3dKY?2WpaHn`#Uf49X{04Cl_QbJDnST;(YCFM)@ zk;#NS2%|xdyByAya%Sp3TsH`k0p+&0Y~?6D6gooKuCeZgUyE=#3m*A~X@BJowl`Cs z8sq>URUw0>>|K6HWk|`Hcy3}X0*~p{ls!_oMg91Dh9{^mgluXMKCw^^YUHodpiTgt zf{c0Po)p3mw7ps*#ypH1bltfNF0#-SbDFHHTkq-Fc!Bb9+(6h{zT0`cR}q4v zFYVJMYotM@c4$W>w&Q=M`LF0xwzp70;*w9K5REcX$ zrOA=ou{J|+_}QpX3!ZSz;Su$4)(EoxYjrQgF2N1Y&we@Djdp(y`9MxC*i=&z#}_;I zE={!3tU-8FwTa3EsOwv(Cd*d6TyP?VKs%-HNm@{M<&a#0zwe{rcHyi~P~oE=Jt%O% zseb8C?(;&#E9DTNkQZ6O3QX=4y~l#O9hZB?otU=%tp|qS?bq`aeqhVWGRSM3odQ3c z^J{{UBnI><;qJ$>yDlT_bzs}-Eq|4oqmkrz(c3>Zc$Mepn;kSn@*ipdRWo!5V%P6I z%aKN{C(}g8vEu@yYZZ8ywb9Fh1I;1S*(Z>V z%Zb`8hntxppEr*veK%f2Prj!BOgtZ6rt@Pd$r_(uNA_uaqpZV4|07Ur%wK^UV~_Z9 z+o78Vl~(P26v;ckgF5Z72*8C(@h>J=kG|(I3Cb-a(X^oUj37%1acxELT^;`0gPxbc zhOk1%=8?L>Ho<7Feah1uEI#S{#83H>mRO8)SVPzn$p;Oll_dUwZ?-wnQtRa}BBu^v z?Fq#&@k5B=1XaD8<%XxY_Zrdvc;w=Q_Rc5e*PEruU_My==2=z~12{|-7fyConfg*6L%vAh%h*9#7WuDRjqe%Eru*w?~ zotl~_A<-VE=&Mbka^@zB@5^cZ{mJNz?Gwq?mj0Iy?1c_%JoRrMr3^eWUkM16MsfzHJz2&M@6<75~O8lI{#;ysDjB%g1Sc@Lc$Ck1Y|`{l)YUJ*iIL$M5XpEi3x zp_>Qvm!tDYXx0GdJ<&ciNz|ibsq^kpdVUxtG49iWY1AkS2&D%yRedyFh>+_BlH#qM zGQej2);m1AE@^c|tvhyn{ZIS~ns}WlDxdUl;mSr6Ki=46ulK=iya};}wYbYg;aQng4g31Oc*RH{&FLg7X8Lib5V++{^>Dz5wxKE^r`Ox=5vB9 zxdk_Nq>N1^#C~@{P66i+I7N ztdze(QB>m&q}c7|-d*x?WMD zhkY!@<_zYb0!!pn9Lk$o&Ypk}!YQFt6K`t$Hs5bc=B(R3V$vGp(20wv9GYeN!zaGR zC5jt;?zaY#Qv=`tGDxeRhwhK<7G*bV1OgM`c^z z((V$NNz-SDs{`ZKiClgz+~9}*!2txJ8!FoCj_%twpHm}}gV>-g^B!`p<wYGXDc+F>NWjYXDEU zit%QiTv3(AhbVsD0`)LUi9Jpjs!$NDq^5kBzjF)boOt)&-tz$vHBoY;hsQmg|0-U; zCCGP)(2I0hvnI5}XI%zmPpQ#%SGNic>y`V01eZe_g@fK9vs?Y|)?xgSNy`1Rzc2Y7 z@LknDXy#%8kIcYl+7;7uR$r`s+!v&xOd<$UB$`}CmtO#X<6s>I;UB#c@3~c39u~m=84XHW3(HvuGlxLhMBopkSNy5qleOa+p+LoSlS1v!eT5V$&j%)1#L(pQwWJ zz4Ord(jF{>w6N-3(M-m&nHyOaD9Ma=8CbYw?XNvi(x5?&-xjeIY>sjS<(9asY0lOx zJKrzPy=e$sXq+>RRR+BV$4V*FI}Lj%MWY>1Q)~L?fmkK z5DF|sZUVNkF)>im@I;kuw@??mCN_qg`nvML{yr4&#!1#t_n(k2F-7q_Eb~|Yo_cv3%=PgOqd5? zf6+TMwnGj#V{plb^Cd6M+DbiK>|A)frq7>xVqTuTn@%qoYTz{z+#?47wkk<;;Q=zT zgbjceAVkyPV1ykoLL2r@$R838eRsmj5ncsEDWmW{SIgkO=poQb4GAoD9Y{+2uSQ}$ zc;fQui|GNn)HQ6Te=JNN@T!+Wy!qvzOl^^&*2UW~BP5n7XLt>JN@la7q%P5TWkHMMb zG6_YPM&d!5I69N=K%1xajl7QB04|05#RS(SOlcdS1zcslzdq|@i^~P& z(Q2mWFMzXK4PD>Zuh&G%f$frqH3+@{5WZ_8)D+LFQzEAC%xQsg9xP>7o^AKPrhuIL z?vrkguIZ#j_QX$NrOI+f{rd7viPVdmjs2WJrvVEIuG2f)623 zaf`wUgfoxvy|%9;Wm!ilC-+U5Eafg2a`efc%jiU(qsToeoBlv!>cdvqY0FqCB?+uo zymQT?`_j0TMf&%BLBwuOBJTMVEo^(CMisMbh}yM&CO(wJ!z}?rmp(z%+nNDhaJQKW z2yT=jK0WrN2LjgHfPG=RMW6{xP=5%ohVHtHHm#X3dj6Z<0h;Pn8$7zcQD|@ zO1xiYOtHs1UY-9-6nReLXL(f@2twJ-89Tjv2NkKBoTy)R48T=?p zWjXysK}FYB7Vr zEY28HHLzIj%QsT3ZJX?Dk+msMCP;Aq%OEJ>FT0bG;ojke&M2Aua^0y%A2&SOU~coGYKa%UkE2t5w~X2=j1Wsf5n}B z=O$ZY{z^VgLh5;J-_co<6>dZ#!u3OwX)?S4EHlODFD+@mtllzXwGd%foKz=27>Wwm z^_thAI)VTm3y(#c&$s}#wq zQ&UR1S!P#!V@ptjIs#h}la~fr+Z*>E0y+2PPpA%$FJjNssatN&qYW)Cfe&2t>N$F8{KjN96fZ(s0}!M7{P($g|9%^Y#GR8i@! zYUbDg{G*rt>X#H=_D|_JH}rX}7@mA$IjbYzMSo?hq5jK{Gm!!WRQ;`}YtPbXNXqE^ z7=6Z3C{r%2)O_aB9yI#y!mJW=Holqji;-4ywH_k}JQ z9JyqrG7iv8jhabvZoJ8gxP0Z7u^BG&E}maR(1KOikxkw~*!xX3pq=n%5){bcl6zF= z8PKEfj5Kn^Ug3D67hV0rC+?WT)!je@8K+xprmxWU$jVj{b{;5^g(_YhyWDVhvEQy_ z{GT||?Ay*aW1$P}X6ig;&zDof7#BhiL)&rAepR`nO|!cLKn)kGl-e8cD`5?3u8@8e zFf&M_yO5JMVfPRBl8UOYrvul&F-X+icO@e-{am>edv4p@>cmSqD{FVPaVX&!U9iuz zS1)+I#APb)0lg?uLDC2C32-aqpb5S6Kcn)ZI87orjI?c4u&{6`X<=vbQ~cC+2fcj8 z2uO6Nn(okpavE!wPrEERD^Ib^v@juFG)2`8mR;eNT|uMRh;T$T(&Fl*%;5Is5Fw*k z=l#}hJ`RxKScfpEi8;nJJ0Y4Kn%hUD`lR@ACiQLW4R~Tq1V4uqgh?UPF|&{L5<`=# z^pxlMp$$=+L#t{)6!5V?WZK;AT^IE}p>F+CDeQ&m1m-wO7A<)Om80~4hEsF{UQhDv zG^eZ%FrAK+%iUEuh$=`Y969K&n~6&wmryHsK+`Dt*5NA{d6*@B6uz;tt%x^eOkLpO zIgfpTp&T{ZsRHK_$-|5v|EwL@_leu&1H%ifod9zpv0#ipl3t|AjvOM9COJ{X2*+qR z%$Nvw&aI24|0rMVZO{iR&Ma!6FwdL&ByuPAq+L@kX9SOO-`7K>ohVAZs-(_`W*Cq+ z^Y-6)V`8??(kH8*{8_QkEf;D#rMu!*yMrs{$5=@@{Upj5W5SCu2mkhJJK5`_HDhym z#_&X~Do>}4;g(ZUWDuHlkav_DdE(x?PQI7JJq8C?M8JBrRlb-)Y+Ka>=A5&(o_x!- zHO9vhLt%V&gf%1$7IJUo8pukgF@;|60o$At-0?H$KCQZvQ23bcFMId;EEjQ_dVtC ze6%i2Pd@(3v*|KcHSf_7{DgtGTf;SkEU=Kyq>3h#-JijqK3+g>b!W;wkodM#h?|ZS zVLx!G&dz`8$LGq&hp)G9_5KKxWGuhh$D3b>EPX2dUG0AuzVatvscFv&vaU!Z)x(ly zn|;*k5h&}~Z23THkIxvqIdmts6qJf(Jym~LVs~|Dc^rRn5dwH2I9cWfAg||%$K})^ zcC=Yqx!jM8XPOt7bBGZjPrP|(_WegsAb1yfbyGgP~qMI!J@(!%+hpVZ2vgu!Wq zq;*8Tm^%{2=oy><_br*DaC!jEkrPQBRV75^o7C2-r&UrxE-Xp3?MS^#8&}{BE zDMG*vhXTm&^M`0(*Byb7iz8U8z$7<|6<`QBP6)vT&uod(tWKHviZsZ*SPO4775rC1 zN_cU6ELsfdC_hx(r1nYF@EHi=RF3)#D?65aK$+((1}r~lkdO(54W8YNqln6RK+zq@ zGp*X4UMi60+$s4ki`+GL4PRC=TP+Hh$7_xPX}v|;6x$!9lz6RBg4Oe|tSjw6wgoU7;C+ zF%k+~mN}ywry0`9C*~+6;0IgT*$V!fRNoGLAlrx0M2m39*i#d5^R`%XAo*HN-}s)IaICC^?KB z4H)DRV&Y@`ac>4pop=kOCq&l1O^9xXb^~kWyTOAio*Qi-f#Ih|x0EQgCJQB(Ck#V@ z_iAlu5GuELwkBBk9`N#y^kQo#D*n4u8C&OwgRZVG6N=YRdQ1y)EA~-}>AP`oqvh5a z@u|I==ur%tZ|JA1IjQFx`*)>IRgAin^yu26syX!n?HI0(O>(zlqX*bnD;u!8CPetNl@VJbQh!qX_6cXH~% z=zx|xkfxfZ2Anef1uUSks!d7Y*cZcFl?f~-ApWS~Gal9`OE6M>Q%+Ybnqk_K8UAEd zhTZv4Ml!C5Ou>8nj9moAZ1kEP0H{xYxy3X}R!u&Fxq^;ib@l-<2xKAnk54C9NI8sH z$IUzu-!rZYSk2mQNBgr1dHP2|(8eR-*p^lL&RDE->>dEZrJ#NC3X^*B7r!jBH1X(H zkmd?jc}GC`lAhsX&A0bmvg-Z!Ndl}J&&419v_9 z>+i(fmn-p~V7VWj-(HEVgZGwf`18N?Jm!q7?!; z;eVSr(Gr4)6{DdE#ciF5^eJ3xQvd_7uJe0I&pzyg0^Jq?6eS0dY!KUmc;$FtE9fF>yi~T0!{X);Q%}#ahGR z`%KJ?|22lf&a=I-z2DB;qUup+zHM`5C_r+C)NVpPdnA2@eF+a%?a+uy%7S_~Aw{)8 z@>!MHh~38!lu93P2x7mTBg*m<$P+JrSHIwatgrtRf}~5N!)L2IIZO8tIdSlL=8lta z&H>0^=&Rpfr!9{6ZP(&1Fvj?@K@GqiJ^{+r{*EuWXa}tC_Y4hsa5kZA9Q1T1NPcPL z$)=;V*kxt0Pefak=A%taAa71`y$f{ieko<1jZpA6P<>Rh*A1N)KMCW3W{;fX*5u!lA_0gA66)#H`JN6#9L?nWN;KLPd zlE4~)+wsd-Rb*u73$2OtVL!_K8fMk=#)_9xZUl`d-&M%Uza8)B=m3GGM1ot>ElJE> zO(32hgQF7V^-!7Yx4M9cn%k_jQ4X6^HZy>^x$nG(6+8SDbeF`8d$OC-@L5IY{ELTM z24;n(Cy2!be#5=b;Uls2*daCygU)`n9C$Hfwn$Osc`x#9IPiekpW9xwZa=IXhPS%& ztQ{p%ropxw`nXc0G#m2SbPRpS-CC}Wc^=nZuuUwY2&>iLjOYOOiB)Ho!~Pkj%jY~R zZR7?ubjwKFiTWffm5$_#&NzW!dyf(wjXg)$A5V1UvR2b6DLbZx+b|l<+#??snzGOYG z9~YEHG~QL=+^i({%{4wa{AGKnEN8M<8s=HV4-P(7uHgSDOX;2d;NTTttY5ZGWWa=n zHl|3=Sf&&CLTzzzjwta;FLRognJhny}utz1*!42UN zZWG%>JH7Y4-pdxw{ZS2BbW1Zt_{StTj$vmLFs+ z&RTTJGX4YBUOO!2SeUm+I??ph;&7 zOhr~TB1-DxTV+_q|5~bgX~Qt!Shgd0hxfu|1s^9`&p!1)R03nzRnJU*_gsY|bh;R+ zx4ItABKY4dg}(VOVP|rSLYWj`)n8&HJ|QD(FWVDL4?-Z|o_|F(B6CV!sK@jOzau4i zZ@ShOf10X=1lGu>hOD08{IAvG-sC9F$00p)2Iw2aOXO$3`B1w_&4%y?`IhLRk)MIu zyKw6-s=l}0(;M|+^veV*awN$SVF@lTt-yECTtvpAPV@8mM?KEKT?Rt87&B`!{Yy~q zKivuG54m^qoDl5Sr3mnAFae_3{Rxq9ts|lx4FE9uQ3^Fz-I~0Iw3uKaldOSJ@!N%a zepsKO32`!MGufw4{pB#bpExS^Sso5FjWEf=Uw!vsd#|tH1Fnra zj^~iD0Z*%-e*{Np^9YF$hd|b3&@o@_N*Or9Q13R+^T5v&+|4y3M0$H>FO-?O3uX!_xu* z1zq7T23iibHA{+(>Z^4HGTk9dtXWfa$YU%Bi*s)`A$eeMQ<8T9zDsqC($K|E?H(O5 z3t#NCexHf{V0OCc#jlCnt(j?hkeVq~omKi=4ypgT^P(_6j$i?$*c@w7qXc6ATz-Rj z2iJnp1C%R~cZMVIT~Qy1ERX(zUb2(^@Z%;A&ieBGh(z2ol+84Fnkk9d-73HM7~W=f zLiP->e$5o9n5iQONa2yo??##Nw!L@k-SZ_m+e)7|oRF@D#w4d|eUK*0h=}`>ed1)D zr651=M^?rsV)~e2w#92Bp}VkHi!OIJ1%ov(L6sJA)3y=v$I_5MlHtf4iK?DZ zW(<`X2IlJLEhI1ffFYz=%*-tZIz1HXau;Kb{Br*)Z0NsCzjGU}TOE`H!L!Cpr0?L+ z(&CKiy+8@I>(qkHSgXRGV&RM>qVOpyj=cF$c(u1tS6dzvKoSoPT z8&3&`Xi`(>Nmh~9hBmu~(8Ze@B3-?0yl4srdkiyD3+|y90@gUGkfcJ?=vo(pbfX34 zA17#+j^d*j@Qa^H!mA}NVl9O5n@L#nnS1!FqUGj%@*}E$x7Bs2)QN&+6qZ$ezmf{7 zz1w+S89rkJ{|v$r06n47E1Zw&Km^`iUo5@0hdwha@GXQ?!-6(NtS-s#lD|3QZaR@4 z`JiyGGq>@d?p$m`VH^>m2jNc5Q2peS=S~vnM|0bM%jAF@9jWcgnUrr~IMHR_>wx{U z9E+LAexc38SC^qV|#F_bjJZ5(A$aUP>!l_oF)i7MZUh7W(G z&;4HoIOwK`J)}E!h0e~v_Yh!v>>x;i@#MGc#^Ho7?#27#VtkF(B%sh`dfk&Yefo;r{8u?qST#*lZ|kzo)HIFWiCPJ^A?=7Ve74);Cgq{89*R|C;WSwq z4uYS+8N{`hW_b+?3iI9I$2GkwuZe^^^n=R)MR2B`A(pt-Z|~2a9^+sB-Sia_SzneE zJ=7qr^8W>~AWq+;CU&>%!gpfaC9}OiSAEhds8la4#k#JLZ2n7KY;NyVgf{w)S@z3Y z6@vV|_q)Rd-RI=iZOBM(G$JB&8V@BsSVHAnZDgZ5hx8cjWJFu{ND|))B`NFb$qdwu zk@qjZn9sbeCzv5YS>kQNphpThb^}wF>pcX!c3i|~3xy6ERW)FFGT`7ec2pvYrzT+~;yMb2>Ao=o$FJDnL+Z6A(l^n{lJZLxe8{$zkIY5>cr zH;RbZ5HAo{H%CG$saclY1wb?TcwLIaLLiC_;+V*ItkmI(BxpgYNgWhTk0s14Q!lm* z85}u`NiKoa>3;f?oc^#&edKW=sEekxE$q(j;f+<%7G?I2fZ}Ox@J9;Vi_}cIqhjWC zWGcg_JwR(J^?CnbUbs6`?eeD%!29ZBFwVj0^J;WF=EPS+I8j5ZwaQipd=mN&V>$qW zayMk0geozTD?YHqMuPi(%b*HYYJO}6%HtuU@+lfWr1L-txv6KtTjHj|6Rn}*glEi@ zl{I}c*QcaDT@@C6uh&n}3zwagw4#^*LI7r;Q71#+y_(A@)leXWg82sA%YHN(I?iF2 zn*hTP{dF9{%1-c|vLmQDUXtAys@wBGTH&H<5bY^K|^&mc}O5hhXBUBL?V zFx$AGa55HyWQudt0A+%iD+;Cp_eu3|CrBv(F`@`P%RiyX^i~(%kshz_E<+u?xtNwH zfOZy%wLx5pDx~!|ddV=OsblMnb#UTBzcF{LcgHp^adMX!oEFkdxtVw}Vf)j1Yt-e#2JD*kB`_?p`bx0h5FV z^wG}lxjQ}c1$5|3bjVhfp>s4t_s$`#Y|}`EqCNK+g<%to1~8P4 zx21*bffg*sW{4-RHN%S8i)sA*Q|BW;D*X> z2K^6Bky!A!i5voi?v>*Cd-GmNV;0++>Vsi-7~Ie=VVk*qr{n?pEm7JoXG^6fV0HU! z4Q?A@E7+Q~0>9xhcD`T&u*zwSTMrIWI~G4)llw$HCB{WU&y8S$*^e( zr!P!ju<6It1k~{z1LS4lDAd4D|5vrk8CuP-gFRkTAnWCkp^bD+qFYzLKlhnnDqy)8 zvD|YflT#0cc@xnP>p5>maQw!hN95jOOeUCcw#|p^v{MN)Y^Y05v|~A2zL~sP?SY=l?oV)gy!wmB8!dt(zpzCS2vc_8mdJp&D9SWiPyIwdQSR-4t zC|=n%o(K0`jzVFolGB!Nv8sdViPL!YR}ofFt#nElUlzR+KY0}PUR?D2e-lt@R4#^g-D;)wh{`mbOR+%=tDc_ zTdXh?k<*ts3lp95`aI}IH4xSIZTMG1h4Tqv5lB@V>9aBVDLNE~pkPWy(64s+xzAk! z_!?jgU2Yq6vjIMl2I16qy5>=ls{>OS@%%!{EhD!AcO(*s9DSti1q+w@nohS~mEPA; zo;rEu*cjgzHaj)w9X=^FU4k?SbIe+qci~~k%DeVHg^Fhwk&=HgZk0Mb95{2MHq-q5 z`bW67LJ8Hx$U3BF9Z98Nl*dxr3>GnrB4I?l>(hgU&j-o9NjO|mq(qC zl_9Bvp3+hUU)4TZ9=uCt`69uT3 zBbzACm?A||tJb|IX6#VbHHAg z4Tx0Tc5&{t*BT^bnPXp(FzzOq*o8zB>2q*B6yPG+*D+jyiNyyvjo)=MGQj~8Ez+ve zPdW%)HZV#}e=Xo-Bm@Di+=LA?OYn|#i=YHtDC$&2rDU*6a3^bZ6aOw8ROG%Pn4K}l zX@>ohU_~oBxJ$o$UhzLKxO>Cs{lFnB|3K;t(GW``Df8Ei1hBG}34jtvPGuYkzf>w* zn*~d@3^GoIwNHN!-N4f5?5er?8P2OZGGyx#jCu+i^txugMjncI5Jm{K7nn_3fEU+EgY9Rt{wkgX11gkifgx8GEq<^KvEDEx}=Ung$cgm6BAt4joICbUZUX{&WOG7>%%>5AtYV`EF!D z$lmg-#cVTDHj78%OiOM>j>?VC-*LTY90j1Pn_YRsEje-`0Nug|NmVxa4-He4Q+VyP4y!{!i> z)6%>6$}ZhxocAg`9O3!;8rKvE^Dk+$-x9dwtsCDADIX}2tY3~Rr&6r6;ZLQmLP@Ie6ZJ2bK;!D_5k(!R!(i6 zr1&%hVU(}FE&t7+T@B`^Gu8`w=*nO@UK zao_L-jYH-ln;QO%d>Y=>vPM^+n>}Fg>s{0Y zON}hh3~89e{{?It*`licq5il`sSKw{E4h|{@Sku84dbWrKEE5^A zYsN7N`JFPS{c{*xeuSZx6CskF*W(!_batFo^-+E-uT7+{GN?ahIhzXtY9&IFWFeta9N9#YSBs9yU{O<-Q((Q!^*%ssgZx=xZ9yf-WuyK^rI&-gCxP z%cHz5=x6YA&iJM`Q&w?*LV)U!fgv@_PAel+k?%*>REpS0mAGDOvlU=N2wP4xA5Qq& z%+JruP~9f+6H=p!8~}{PUUl`u@4No2U~2!)Z)y7CC2ADO zme0^wOq^vvSv@OUk$VLT(#c@pcm<*f?OVIsCw|)(1ZVa}C-%s!xq z6$t83&0k@+mB^A8H8;?riH5u)a!}#t)xw{A^iT7A3?NgsrW=^WI930@5Jfn zSm3Qdz?V(Lf`3FpOs<*NTENW-XiMl9Hr+^`Bj4Fus-al%38uuvO|_dn8q0M~vE#;5 z5M8lV&YF#vIDT%-np7mswIM63-t{d;|L z<7Fkmk*>?cdFf(oi(`@dNnDw>OA~GJ4Kbza1I$c%_u1KB4J}A!bVoF*%#%{ zi)DHN6mfajDEN@U4-jp48TK*4O}7LC-wkNbPGaisch4JAgzoD{^p&wzLM6ZhHXc$- zstY0>J;~Md^2r%zCU5{orFNAtakQ8Z_N}>gW9EU}h`^LR?k2q|l_rVXVxm1CdEqde=DFQ**K+UROz4Zv0rs{0uyjO*qMPkkr$pr6Bby;t& z!oGMG8qM<3cevxLxxXSqt3=NJ1k#k2o0=eN`Wvni0kl-F^bl9+x>fu4&i$#xnXG|! zM7DR2o+a^0gH}bboI1)~0KX#4RN?gfo1dR-9iH_O%ouHL2qITuPcRS@|0xsux6>&y+vvGB0Rav*EPeJS54UalqEmG&$Rd&KaD^RDfB4D>^iN1!F2 zjjtE~KRbweX=FqHcC48$I#-QFRaD_?qCBY0ZwkFHMu0v?YuBA{A1 z+eaTsxyp_$oE{rva^~sw>mo!3Xi<^dEpr{{*G<_=FhjL7eB9~BE_1(cgAgv}@CWRe z*9*7{o%ZH;xlIGwt$woweMOhNbwwtIyaI4EkG1sayt=E!4Sw`vb_aw|_xr)&S1?g?m${ zuvAKk?V<8Lr(@`uO2ReZY7-2~5$Ybs#yGfSzuTI#rz*SdrTg~S6o>mQYuX`Hk6=UI z0c-(QAz41XH?a;+()P*Pc?Ey4r7=OfaG(=CTQZnVNP|k15N}ppj4e9z{nB_Ag<_GPD5J)iq(gqtwe0hoH2b${T|YrR z-369UqBVe|R9t+BCtPN)d5%R2^SDN@gjv;;p`hms$mj}OL_;O2BaLfPD5 zKS=(d?$qnClV%ib*)ek+V}l9m6oaNQ3$%awjhLVP=qX)yGy{V1*0!V00-57I65 z5-0N%yrd$Qa%u4dFq5D`pU~5c5=(07Q(}DJ*Xa;B{tX(Bx|oh6-bIq(`R1pTk;jgr z)L^Xv>_Dct3N^RETAT6W>iU+W6#pyn5fu!$iT#{L&}AuY9uMUlDwRGzWzZ+<;Lh9<5}jI zjjzEL^2Gv_s4+~{sp~TI!>MasAYUdpGjjKN%Sa^Q&k68!bGR~VK)r7ogbxVMPb&yS zR5i{S%gP=X;BGZ;1}eu(k>8v8d*2~^n{2&kOHOS*xWo1$sg1Rv0Ua$%y+fCBLB-NUg?U+6F-TfJwO1b=5@@HZb(G zne%~ey$p1)1=^uT{-qHh(TL5le}02jpoGt(#MpEsXY!tyu($^Qw%GBRDcglkLk!g_ z<0Iw`++ukl$iSb0dHWCj{r`M*C&Qyn%{nJL$>!rwDncE=b*ot-)Yx!>D@E;gzZ|Xl z3u;`%6<-*^HuPk1wNKY3(%z`25NUGN+wJdANw$J+-fzHoh*>ENvHy=DlT}@)BAFr; zb;M1jtC@&F*EBVlm)|I7enK|vTNbD4r|V|)rQo;AtDf9K71i_w zz23{|(bQfAgdR;d`e*&(5VeMz1k6qJs9J?N`ea<#SS{4gk_A@l91%3)V8-OvqD4ud za^Va;6U*4`CMa*c3g=F6evSW8 zh+pAcZ5yn9KQ3RQ(Zt1H`pn;s%RKipHv<5fdWJnLrB@?ffNm<%ot!gyp;!zH{{-xhXt>H)7lH7sB-)9X~J(xn48(wfwfzBSttq>nIV4l#j zXVaM!AxqtBGm}iP)iqS!w%_-)g{qPvCv?$X;0*;L>(Rtt@7U%jvZ4~A1W-Z} zl!ur@adE8i)RJhV=}JV}ry2~UItz(Hq!@)Q2c%}liAinyknjSt*D%`0eDzA*bov;c z1i>#TE%+K)%@1_!AsCHfKqXWJTgVaY^Q_?ChDK69NY;25QQ2m65|le4C(q&r&VqOu zSY}_&s3I&8W?_ZFFm0;E>HBDqnlrEM!3PQtVE+#&&j;iJ4by&u*!L*8iP8h6$AS0I ziOzIQ6>5EeH$%E!uyrIcy8~nkfvUCf?k%}#-@ady|8tH9r*{Vy+BUG8LT=eKm)8O?bTsYIt z5pC^at@#lV*{zJXuy9sxIObi94E7u;WHPRjQ9XP%%nU{k2klEFnPqB~f7MFih;lHf zHW|_J+ z9r7_8MdXyPottTXx8ZdREd1MZn1AM;s+FD_$~EZUi28=IOSJ&lh9pN&u3+-FynJq# z!g~p(w$6qj`+1Rh|DmSxhy2MavotIqgYmj@ee?1d5qx${Y>j9!`YctiJ16}8)lU9% zPSV7Q@)>pT+(~?~^4QnW7$qQ|+|UHzFmb97UJ)PQoLtRWwNzJ%BMK$Vm=tc9dg3z# zH@dW+(BAxKOa}7S=P4GD)#O1!TJ}^D81Yn)hasDr_VanI18c@i22J^XNfRpeCHNh1 zKR4^Tj?bT_45nj7GEofWTis(O;kaq&M<>pq#;7oF$x$7K$s8$#Wh=HN%Nx$c4gCD9 zKI{EtSve<=m(D?@ThhA5O#n%>9y`2}#jOY!L@6Su4qjR;Wp`=7c0L-&NFSlnmTMV~ z!Q4cw8wJqul^1NOup#H$X-w2zj%S|ftQ84BTCa~qElrbrQwg>3K@MuH5^aZBR_A?@ zoDblq(6Gii5I~{#7T_!_z24jL1UM=K-sB#uZyaS!!>8GXf1)@;SR? zBCsWs_WD=Wz0!$oTJ)bUYCF{o#WwVg#P`d9x^*3{CKl$>r4-h1s4{%p?&11VM8=CU zM2w|9q`M@*1rd|dr-6}E<_mg@i*zRX{VFgX==~uIIN&WQZ`Ut z{adb`?g2*NMfR;g9X5u9uF_WDpS^$m2V_vF7&krW+k}c-ngDP)>R9V)m~1oplj{%| z+gPI|04ghTE*1B#5%}9lJ9;-nFD#2p%Ce*LZ+bM59j}=1t~y16*1--mba#tIK}M&L zHJqt-^Vc=lbNH5tGNI%aNKx}(AKQ`e2&QEZw`hc*SvK$2Ah(1m;uWAHP=@B$40WN! z>KB6HM_m*+yYs&xdV8*rfu=X@CKu?nCf}7KvXl-k}BXJMOANbx44G0r_zdqun-G(3Ga$4j%E-|Ra~Nt4veSXzqxZlWf^ zy=ypG1uFfVF7h+isqA42^4(4Cm$0~qVMg#R&7CVh`;5kUD76jb?vCON95@n>pp$+6 zQ5IBmqB$7P5Vp!M)QE}?psNXZ3FeIi9@P0>y-cnxR`U9X(+He>JYiyAVoFN%XR5Dm z-aP6Ewv#HABS&3bpowYB6Buh8=IzWv2QLXT?0p9$dQW( zB1TKq&P`+wfwiU}q$G)b^ LUi@zkF3ANPh`#I8 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/device-code.avif b/static/images/docs/partners/apps/device-code.avif new file mode 100644 index 0000000000000000000000000000000000000000..56cd50b08c1b2487f7558ca744a4873963b78062 GIT binary patch literal 6250 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/quick-start-consent.avif b/static/images/docs/partners/apps/quick-start-consent.avif new file mode 100644 index 0000000000000000000000000000000000000000..ef3384a9726126d4f32b10a87e75587153bf02e9 GIT binary patch literal 11628 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 IcbxeD0avgZ$p8QV literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/quick-start-provider-setup.avif b/static/images/docs/partners/apps/quick-start-provider-setup.avif new file mode 100644 index 0000000000000000000000000000000000000000..9dd61da6511ef013c76503f97475d2e76f9256d4 GIT binary patch literal 21072 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 Ht}#-OZPI#p literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/registration-marketplace.avif b/static/images/docs/partners/apps/registration-marketplace.avif new file mode 100644 index 0000000000000000000000000000000000000000..2243b76deb661efba6c03c3b0bab3606a0fcd224 GIT binary patch literal 25620 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

6i|7(MnxR= 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

4w{Q`A|l*$#KM=3@qCDUojaX(Pf*4*?s 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 JNuu6!l%SJKpNjwh literal 0 HcmV?d00001 diff --git a/static/images/docs/project/create-api-key.avif b/static/images/docs/project/create-api-key.avif new file mode 100644 index 0000000000000000000000000000000000000000..56bab6e32bedfa4d2bbe28dc9dd76f90dac666b7 GIT binary patch literal 14966 zcmaL8V~l8Bur1oQ-M!nkZQHhO+qSjawr$(CZJT$0=broPC9hUijT)6o=1f*rGDoT= z0002Csk4W@fvbfnz(2FGFlG2Jwy`kykFVI6I2-(z|7Qf|#@3GiHv|B%w=i=4fARlA zIC~3coBttz|2(0EwVly_Oqd@4@Za;Fef%#1aCrY?L>3md|Fh`-WKsVS6QKX9{?!_| z(lh)Qs#@4P+W$j#3wtBGe+XmX${-X#@;_xL7Ebmi{}llMfc|@d=Knbadkc4q|1!W3 z5D@IcSi!E4VTgt{D9YaX7&|Zr-!(sgDK`A>N8=ws0(>wV6F8 zsGxg}HS{!uK3{g$iyjx*Dh1N5iA6s_EIgfTV)MxvS8cqDm__t4m zHuE03DzF{4Angwc;ZvO=H^Cn?P>uNYk?09x3Y+|p>KB(YD zoe82{wx#hq+YoiXtlg!?`j1M<@=VDjzrz&~$Ugs`mE+R!BM2jY8UX?l9YI?|zIx06 zx;)Q%gLo0|r9Oo8u>psFD+ydToYvp9!j0XOxh66aO&)B3tVLfSi>Mc1wM>frhF-I2 zN-l{-4NdVbfz~I^I_W-lAKG@-M?`8ywL;jwbreEyINfWV20f=?@c`u*4t5Dv=O-)} zh^Sbli2c4pk9*aHe4B&owMM5V!(kRra?fF4u0dkm zIw8(5sM`Jr4FWP7o8D9sNSzq$G9U+}q44u-WHr$Q#?>i7pdyoZ^-;`7^pV5{)t>*l zVf?aNOJus^p9pOoFn+Zz-_q?ndcLdOM&wq6hOdSJFKO>7Kw-^zCmsY}c_95XmOALH zs5dXDvv1RJlY4}3WBUYqk9>I&1py3}hbPHXhoQOMJJwjJdN7Z=$LP8e5X&>H0Xs4U z>BS6)>5qkgL?h1)B={>nzgm@R?%!p6^`q@WJ2O5kCucSoub%xDnNb_~WZQ5%8gX&e z6HtSW%@`Pomp(jK7wq>!Q{RYS<*Om;Xyt4E z?sTZmYEtlUl3S)(y_hgyIeot1au$+?&nxYz_pQpNeri-QUa$r1Pi+qPxq(9#=GG(j zUic3^V#(wPlQ=ON*|w&KxCxry3S{YgxT~S!J>IA5|DcpLNFr_g#PW0o+1}O3+~a|d zWWT87j{ccE9IG`iZA3>kpXdRv8*^tSA0IIc91yIdWBK~R$i!n38wD}XM1q;m^f{d> zlb`$&^oB^g71fV2Km1yxI7V{s2Tn_0tQTBdo-xNT-@I_^(MQgb+YUkuy=>9|@D$s8 zE)<1j)T6GmJ$-^|!u__=m>$`s#Rf4uElq;*D-!+No~BTMR+Qpa#JjX2<~<^PFg&4Qjd0^8`+ zh>p3|%Z9R+vWi*M>7l{86gfN=_N2x?Q>N2Hw&}`E!49v}ESKmTVeapZJZ2>MkXkH2Z6jZWwW(YHP9q*2?@Pmgu0 z;a61k?~89@u!RXP$WvOjG53tHQfR?8 zvqNP7Uw3E`8lVuiY9TSov~OIVs-mYzGYYp&8f~8$QKzGFtY}%3po<~d8ivQ1Po{Jj z`dz_Lc3wPoEa!TIm?dKD_!P(&F$*I0ZTT|Yur`~nV-x}L_{}F6J$|(5guA-GNbi8j zaflTlfs7~DjVU;_0d)*cT{=J7vrFcim`wd&^id8QG#X1(x50Z zk!N%p-ev#dINlxBk)hJCZ5Iv!(}p@q4PIp75q93rDw~Y}7hu!(gBfAD_pQ(ElG!v+FIK3Vobx4(YZ| zFA&>!tuN~oJ%t}!S0A7sW6j8qT5I3ln9aG1e^G zEn>F1QHNc&!p4uT-A+Y)VC*Bf10GEFv>Unik#94deLiTcV2E{j) zz9PGse?dP37HEy4k7A~Iu)~>Z`rH67qfXFmR2bRx*L*@tERYq&xJYs)*q9?t8#X@0 zOWEBocp|@+S)v$&Nc*p=y}sUV$Rr?o@-w2UC&CyD5;m&rDch8iRB$5kgPATSx0s#ivWiZ(2tOz$!=vYfLRcNi6ACH}0{kYstMLV5 zlCopcaM$9*w?3H~_g|8Ck8n3-fL{vd;Y$})9!j{P?vT14c~&gMI?kro24I-JHRJ-M zv2FMvcl5W#k|ExPLDELDHH;%Pr+crUsbnoJ=(KGPI5{+gdE8b z9^*+md+PoPq0vERT1%+d0|$O;%Td}hJ7i!R2|^pLgv%Pg(9j<9K7Gn#V<>%EI`i|D z=r-clW4?M24#=F(8@OD-cdL(#E{i`|k!)1|z)Ip+Mp81weAXtWVBVwKd<=r1!?mhz zOSDI0xtQ$7f2`4@2e1+yr~Q_^v^y-qs?#`hjO#KdN=&d%lhS&Oml&nMP?iYqOiy)p z7wv4bN(KlqBOrYluGS~$(@*HKDofu#qZSb)bSX}=kGr~{r5y$%#BT$0KXWdSNw2k1t&i=?H2=n2wFSkw7urYxI97}23cts;)U~fsw9}RD?4!we? zh0HW(dDDt$II&jfThw$D4t0JfyWJkN&kLHDdQs7WB_-Jv>6gBP+uXjQ5lcT0!1KHw zqy*E7yu}D8F}To1f+41jV4yjb94;kc-^b7E8M?Q!Mn|4MJ z?_1B4SZosKkPfmEF7WM^?O1s_SElkKjGCpjDYE_3Lln%@>D>6FtE>OOKPW)gpOaV| zV8V#}KDoQULkwgTCD{Ya_4WQH(G_93SSb9*wIN3K76!AX&c3#+tinr*FidN;Vb&#x zx+l%eWhE=%H0-J|N@PJ3Erc(1g78r1hNfMCj$4%^4mzgAl>zNV~s;(M)^ zz@SIQeN07MH>iPW-n2kZIPsH}(3MJ(Tj{~dxJtN5&WgxRjZ`lG7ASalH2aQBp=NUh3nQIt8WX0oT zVmRQ|VJ2WFuZ?G6muKG(aA)iExY*6_f~!%A=E=T~{hW}xVT%N2A)S%3I4!4_JjF9(&vW%IEZ`Ig4F#8ddC_46H+Hv+62hdn{b4gfeoUvB^f!pF2+QlC0(wjhn zd&^vj18kd&@yb|A$PogvWvbuX7w^sn_@10i{{xm{g)+dEsm>=x={79gWQcgM1=^3R zs+a&ldCU5zpq_c1Q$cyTCyFs9Jx8V`^%}aFl%4qnxS1yan!wMSEy+OFx;V(j%e}Ku zFKP_kjXnr4eKu2Pm8Mi&z(IWaiyex>emj&e>>b!Qa3+FD9~QuWU!cV4d{Hnr$abq* zWn&IKaj@MLhnN{Cz8d0x1)&UP*Lso1q|(T;MWZ=npTEg9-7WUM-~t=KRo^OS1KO<%rTttw&-|nzh*pzrLt?Ujj(wI0J?G-*)G# z_lpPY_=Yie5!bD(OjCW~B+r}m?j?9Nt#xIT>TCf*o6oPm!8-MQ{F*P%Uxr%bO`Tc& zmXZ?u!3Ix2`m@rs{5~ehJ@jU?P;aUkoY2$r{)+l*YEX*7yvYZgmp4jXI)2>R=0vd* z#G-!!qbd+DF4i!RlRnsmz1VH(+Ip3X*H;Zvv-pikh6JZd+H}q`KJaf08wr(qa=(EOKj)Xidf9h zQ|Z~N--<>@7?ZQ>QRXKZ-|`5jIm%i8{B+h24(r!U6&cu@MdvmLetMgh^I*k~8GmzB zKPXr-{M!a+`-0T;9^kdHg>ns5ycKp0X3 zGx5T5uY;j`uhSqMVK1_#+u#%kv{u#}&v##py|ahZRlw)Suuh9To(6#e9ux$}7Lew= zoJwpNvry>c9ZVeBKsj}N6}I}(~nzd+rZY@qIYV9BT~y35mrF^HodW*X*!g{pdId zV{D~Q%p{a|Hfv%+-fWZFi$GnUc)Z#%FK8P0a9Vji#&?5+X>EUHzdra28$h+5XQ05M z?exyvG^w}$ko*jALg|+Xt$uZv+X|2G2LZTF%=2yeKoraz<&%D(bCaS~Hz%}LxYme^ zf64CBtNcKT#|C;yCA=N-j4m;rMmKp4wxQ5tPp+wi2YxzOL9R`ad(z*-7uVqNXuyaHScsxVjt%@!3pI5|a= zTb^(OdxjVW+FrRKf0O>jt;Nzy@auM=j=Y)H3dw9N%g-aPOruZdv;;Xjrrcm#v^Y1ylKT`#o+_%jv9>H z#}-+9J@*2Irp4|7@pl)izF(4k+>`#9`2>C=1K5Eca~^VT?5O(@bZMk9b1EfyQxdLJ zo|tGr-49y%5My7eK3lq}hr31^GF4$u1id>Qzf+-H_5we~_9U8URq2aKpp2q!)?+nE z_E!?RC}z4$wNH+|JZDxI&+=_YFOt~^8yO*JXE^?1k)IE9SE9lN@PexcWDuE1Z|1_a zyz(uA#C9E-v(NDN;R(f(6rhGoxPogD0l<0o&AdW%Og}?eZM;dR-}mdZ6?4>)tepZ2 z>ihc3m?lIM+a!=zSW~a%jXmH#)lU^;wg{cGhT{g)!BGh8Sm5Q@QQav28n+uDR5M%#K1obZ08`7k zH^0H2M(_psgOr2+iFT%@-{U^Ew80KAG=gky#|$-J0>7Rf^oP%nmw1`77i8#>%p_$1 zTd7)CqvFUV8A#HL3nAb)nelX%OB;~v^oOHHL zy(tG!b@I0azpqtm^5~Sy)@6l{XV48F0F*3rs4PzSR=@JSv44e%aRcW*yQ4v5TL4nV6(8=CB;&c zq9FI@tIEbmrTpD=6`O4zG!((B>FP?Llq73826z3CUJkOzYi*8{`wRK}&}*1L{+nNgUu(lL@t-m#)%6I0_Fz0Rgbq_w55+Sw?% zD4}nS{E5_xfxe3OVBLr-$(`qN*fNc`K9Cs5f+i%qGJ0H?gLZbm)YampK|Z~zHSsI` zD$1l#D6GtKuRq%y7pM@+XC@3#|Ly^SM7J?rAZ{^2a~v?8KD|n!pgk@P)GZ zoNUY^G>9?~Wc)&%>a>b5rmMe#`PKVXWK@5s!^(ykPgQxQP_>BrLe%$5iiIvBq~kB( z-m{r-5nIiC{jfoiide!-XCl8y3zp$gR|9CT?r$4bL)tkUFnM}U^kf!8l%Imw+4y_z zIplzD>LZwREIkR)ezk_f^DVeJgL{Nn=p_C=QS>~mMQ3cS zq`}i!V_Ial_TI8;>Ra3j6T%1^x&Bn~u2_b*dodcL9M(FBimtf^<|w>*Pjsb8UBeg= z_$y1hbi2^YGhzx*VdTEWBeI4~+@-X0M86tEFXuiQNj36jeJE;_$}fFPMnkUgG;DWUD#1+EEZ(R1r#5sIbKe{qP!q?B+3C@Yr=*=tgbr z_HgI&=&D3LaSM5!odcP(#I}6ODG>&L44k_7)tD~9egvGDrhUEE;&_LL9XxlH!D!!< z89o)^pxwe@H7{JIjAl%BRG6Wln*u{D(D&oJZQzn8k>!%bJliHp!Cj;HVKC``swU@#$rI`V zfVfc3XPS0Kh{b?vE=b_tK22aUFuUE33<+9N)9R0IGuZ|6z9IOUl}R9SorlEsS(vn`yIye8(X>a{?Q3q6&}z{+T|Bcx?#8x5T8r z3}GKxE00MOafmi*A;XKpOCNwfEVi)sICk^n60lw}VH?jyL(!N@?P#A^lom{;wW4UjzuV}57Dn`;5*l^lP7m@1!Z zop@eR*|YUt3~@wZ8=2&)8CiHl*>?fq24AM@C;x@<7kR$Z+upPeVd}jau`$hdD)RWX zV=^!_+hW`KaGTJP#z7^sq))lAEP-@0%ZAjIScfSWm}8V`1+Ze`00DcnncVPFa|}&& zUHv2JA%hD=Hvt=UR>6QA6@XawZRjS?v14C@;$w<2qzQ!F!y{{yIZxBNLUC+(PlKpH zEIiS4;(P3Y$2P(DD`>f$nqQqo5PddC%}D3XY)j@-A$3VlHf{bJv;K5JA4NP$;f>|X zd_7v)Cy%8ZG$30h^;T$tLrs1Aa=v4VC^Ji2X(>}T@T4G1jf6mC(c||zdl7kL6c*(QySDtjyIVZ%J$(SGQ!6vOCOdb8fK&1yk2J9=;BDQ|U8o0O2 z@NntO4TBtAJO@T94u7V`NRM1zw(8U(JkUfp8H`M?dGBH||K)U-VB$~4@p@+0CUj4> z24)_?H!9zj`ZFKOcjCP;y(0<8_<}wPr|E5XphNIKo2jBUR3e*5>r1e=BUGPS+vPbEL$*>f z0of>j8M`2JSp+Jipm23o5frOlf1{NuOBm4xobNby2>Yo52AzZcIMN{)UC>2fg%;u( z7WLMl^#)p?ikWs#4al#o(O5*lS(<>HjbN3Z72&j)@G3LWDwC%O2*F{@?2-_#bgSAJ zuML0z%jzI52C>18oC&zK%FyD5hM=cJZ~Llj>{=-sb*|14)7wwN^;=LK9N>ZtX&`4~ zcv3r{7;m`S-=+t7Kl!lD4d~!i$Db`DXo~8wW$hp2`a**^GS;4kO9;j5#YpBXiRc-s zUV7l~xAwm@_;ViY#(%qA{DhA&^8vDa`gre}ZO&M;Sa8_=a`GNLWI^o0o z`b_EBPbuBE2)0PMkzwAC7>6kZHvROy{rU=LVS;=lBYOW#2B?Vq$dLFhH2E?DZYbgh zDGQfvkwer}WR_m49D0g_xBNT8%t8tH%%{IdsY~|qgB#`6zceq9ZQMyJvW*x&$?M~b zR#GSgU_xYCl&MCUZMoBL&*`G}=(rJ+e!VOFi?HQXg#NyzCId;Zqz|1Z%98}Ujqgh?$Fn+;9RCzM=#}(D!UgJ343+bvES1K%oHyOFQ#MY z{vqv@Ez_U~v5T_d_o->-4ozwSDKaVAnrP@4D zgmAdc(s;Gdq~LfeD~{et`2Z5HaBJEOq%yQ11jGVdvJ|v~@G;>jp-9Zmq8UKdf!oEu z*GCYFM>uP#R$+p$)_z7V@UJu^?(Jw3tw41kHb{wLlUdZ!QBr?SzS$+H-q`)3%h!&9 zHY={_fIMe6@ANDc?h#-QIO2-OeDHO$p#rdBlw zJ`qJw2xz$ClSIj%VvDMx(mfQ6zOwLdq#4IY@$z7MGC7QeWV4H~X(HG5C0VrT6^?U5 zp*eWGc7vGH?t+FgL3wJoDdGHW!W~&!)-q_J86NaU%%>0Nn3eu|2BH78@|el|U0J4x zuvcoAf*aW}l{_yD)*`k3n;Ij8@{7Xl$y%V{)V<`T`J}u)=JFKL1+Anx)=tvNTNyUU z9EaU0OxFbuhuywyRL9L+8TXl?q%A|$JUl+ZRj$xL8@T#DZ?>-Pugc-7Z3}!nT^-z6Att0i2Fu*v+9j8=_x@=M_Y!@_ zIBFzyluy;v>+50@pz;J2-{ZN$%8o@S?-kXT2AGE)m|b1@mWw(o=m}9H+eo@dQ~=>=8yPu-Iw{YqBF(xTZu$ql~5 zrHbo{sF62e@sncsksj-e2lsp1J`lzF+*Zj+>?*G`5Va8wF)q*hvT|Hz(*bt?CA59nza?t*~gD&7-W8W#(R;55-%x+g18p0MGvQ6 zXguZsMTYmN+|oI=bl&*Jq^Kev-~aZ2%9wq1_>}7u&*8br%U1`)C(f_9-(9Y z_I9tg3wM3T$$a%^qlTXDA&AMjUku~!%1#FzKO^J&#fI0P-ycCKt{Ay5f4H5r+{%U)D{Zz<1!0T|u{8U|3UKwXrc2cSIlkyDVdB@&>OC=d)2*wcCe;b2p%4)f!c*kR#2{{k zQuQm)Zjb`7)-hsPP$|N1|Bja0s^+-t#{J|*+50T3-OHp6`vuBoj8o2M-~1Hk7HTdNG72C9m!_H04`E)lDF#xYNxSC?8uLLSl6|VrhV%#R zgzTmtL^Q`7fr?>J{=t%1swzNaDW+bexJV2Gg|PuE{eUEf_`Aw# zF+ktfN?n@58MsFsIpU==;@8)%3SIIM32c%=C0SI5-ie(7(tH}Nqj&ta2)I_7aJBh+ zFk$NHg<#oU;YEBW7FRl%j|o4AQ^H4bu&aH?_F8 zdyeyHO5}@Z{hw60xG3SZibimZx$sNg)l!libGALYQq>{qC5e6dI?Fl5#SLs;Zy~;F zJ;#2cy+%LxYiV!EaW07B(@h%Xm;1oYTYXL-|G#4QhWJc{#)PcI_r4SJQQxc4wcWbz zTHK1kns8j14o*gjnkrSq_Hm`tvlC>aWv_$LFw0kFvq&FO{o(m{E8;IwLHmf5(D*c( zWXJB8blu_=l2-fgX1&KKB<3ayJ(wn&z#Cp`akwun?+57KSz`lF54pyo?Yb19tb)qKP+U%|>L6k()yXk-i zKt*BY4`~+lr=Y$qLDbFtK0Tr;%y5Rg0M0}^thlNsyUDde3y0&aPdE!$7u^Y0)`K^^ zV{y(q<@2xzn*FU+iN52zReLW(E{VP#uYBV6?Q)Xrhcyr>vTdj#$3@ge3Ie6SebSpw zsGt%GPe4CR0Nt9BpWK zO`lX}AlyKcUur_1@0&76wEfpP8RU;QdaEw}n|kf8Vd?pq)zHIXe11Lpy2_WsR~!>& z@pF+6IGpq~EFgloD%~0#Mww6euoa2aN=S-wWvRpuF0bUzDV?q_A@Z8XBM#1fFKN}u zyPQ^C(FBWOPvviw$nr9P*GQKIKxz0c&)}C^E)zCG`4Gya^AZn9$w-IToQD-HV=6Mf z`G!}W9Rp-Vs;VNxsdsC>^OW#uS@G!w1`aJyu+R_!dIJ)a@&ZDAUc2~^BKp^aY>L)2 z%0E-%SEJr)Ee8wH$xSA)G{B&yx1JOg@}|+iP+4$5nchc6+E2a&8-AXUbPgG6+Z?H! zj6d5%rZMwmYE-BOQjF&E<(kRGYc`?GEqFR@{LLy=m!KPexBKj7yD&(4{Lzhip~e19 z6=jV=DWF;wO4SaYDW4}Ge<`vq3n`H-q;+d{+umcP*Wo)C{4w;eD&lH-KIuUmT1&NV zx##cH+Rhy_c3#Ikh1R+BeOEF^F@I9D_WLmtwNR>o+|hq#pX>`DDvNpoH*DaWsCXl` zLsdu0Ax`CcE~0bHCRs+m2xcaHG$fw#A>U<_E0y|uj23BaXkL>TgvDQPpc9>LVgu^S z^yQQ4CJowUe_9#iMSF|~y~PDQUTd9-^OBGxU{+|xv2mqya^i(uhqrnobigNi_nPd_ z!eHe|bY@OCKok!zCSh_4nX@2ouo2sOc0RI>K4{t2jH)5z%fe6=&sYEto8Qt1dC;9X ztGl>!P3Gp>pqv3r7qI$_DEHK(Z(T?6!HEavC}3K*LrGK}4g`s|+ux{%w6nRH_o-X0YCX8L= z=P}k8elERAx$X8e#2^owK`mgk7iQt+AY#7vM`em9qyx(Mq)$yyfzt*B%iGz4g!_H65yJo@IxtbamsY?Ggl&eR+A?jxZQB)^@aKhb+y0QrdEcpOPla9hOq<2KWZY#fklx~yD)%4f^micWK_OfAbx@-F5g7#B zl}Q^hG44tcc}lW?ZkJc+wC-3o=T#MKGAkEstf-{qAH8&ig#B(+T+)wJVJW$v-iXs- z`L#Wt$_2mmzegl%xOd{qkeziy4#IA1N?OQAb!=$qq91T=E_4iYNe!!pQy$GZb`m3_ z>c-YJ>ywPr?h{dGQ4d8+!lODZXj)Zh^6%yPUW;cs}JMs%o7Y7C`*{i5-yQKsIaytUPVJjw1({ysxq5u{HSlz%0SQ;19-ozT*k zyW$)s>7WR#RnDEuewf(5^lF)opTuLxbRcj{_#GE+#dq zcJrh>l-+fhw>C?w`XlPxS~RF?w_(#;uxe)0p;nd?+4p!CiFu(q6ltQeXlArpfHFT( z@Uj1zFT)oCp=#_8m=2}n;6;*Gay^RUY{_<(LANT%6O%6}d;NvEzhd91s=Mua`gUzT zmSQM!&861sNBki$z10}3OTcPdHL^_@Zrnmn}WSzgL+JJr0E9c=k6_ViiA~X=? zu$1pbg5<*o-G}!v!x@Fcd)ak_&_%MPHP>Lq+CP^%(uu2zz5wIW+U~nE%4A!8GbwPH z<5p~$n#=yhUMms`WP-Vu-8OeVVP+a-qZ#=b@5W)mMk-DDD{o(q+0jO~K~S(E?R9#q z7xS>oCWYB;kseI?{VsdPpfv}nsxDwUgjSrs@)!tymMXvM*G!vYfQz0)S`aaQ zVO}>xxoW{8y1s#;PA52IBE(YBDD}?EewE@SXNsVMqiN_1V8;tqnKaPWzQAt0qa`H& zJIH(sBz!O_(xK|s!949@{bMd%!5J{RNm)l!>vHjz+}8t7qlEUTEFQ&FH5=a%U-HcE z?)0H&9WwQqI1gxxC?w+f$+|MX9621G2R*=PkXwKo$<0?}7vsT1 zxemiDflzy8xEif4@8=4`zXSgSpvcJnp8(S_Xx50Q*BC=|-|A@I-bIqLosT6}PKLnq zi7VMwZ@)c1&vU|qlQQ}B=?%!lt{-_Zh>%e4ZW=lZ!U*>=uoDl{-GfXo4y>Y50 za&ZQfVLj1q#S`F)1cyDu$SgJ7LX=!4;$h+ii5OM$&^tX`^|O6l3I`lLBY(oog{+=j zHr-YwEIX<@otE-|Y%tde&cqM0FVW15NuF$ha$U6fNX|Xbs>Fj{lFg&%u3PbMXv;xK zGnA6fGe>mp!1g3iZu2PKGcl%V0Uy2jlOnIfp1LV=_RpWK8dgu^U6;$PAah}2$Ie1tLM&(ru| zyf#}|hU!ZXkp}}X#vcy)UW>K2jX|Wr!0(j`xqX4iLRC0a9$cnF+$|@QGZgXYQsD@8 zJpfnsko8%ONoJiU44G?K3pQQ)o+B(qBkzjxiw}|^7keA*N4eOT8EvA24HX6n6la$- z2iikv@n&w;Fah)A{*3lw=z8Wo=-t#FHkZ1BjU0^V>x+c(-5wR!RQ^=Q7n{O_wA2Xf zQ9Q`rXc9~rp8H2Gj!yvv?cezXM$9xvA9fu}cn3=7QG5XYhiaV)wtgE4FVYofUJ&1@ zuA0?3$W$_?$c4al8ikP;=jR7EeYWjF07Zf;wDEYgz#Sc#H&^WEH$ei!-1PJ)S>|^1 z?{5wi67?ebR{%svv~EvN-bmV|A}8~fXnz96wp+DR^JnO&3F6d}-ZiYZ6#~pd*-m0F zN*aO->P=dllzC!S@u-R!fJ{WhlF(Df$PG)-Uh>{gHb)QdOvKnW`Rdmg6cs|EuKAxA zziN~3gnR5x9j4x$UxExkzTq6hI!xgEs@^aN#oPXgEb8k|`HRQI;)($a@J?{$Mj}Ztris?FwQZs1cQU5|GPlg{b#%BM^{C*3CF98rD+n zb_2e~eJB&uReacgcOsys=!Am-?cc$x2}vG%2v?2tv0Z%&&qQRtA&)DHe=9+Dd-rDi z|3X@~%}0R^l?FOSdvS{kr{QO2m**Ho>Kzdi)a>;DR(60<6s+1R{;+j&dHIVuE3cr? zTO3O&O>S@X-S7!2Rm!=FgB7`U<(Uc=hpEzykjJ+K!s{==rnuFsMBowmEn>+txL)7i z6?A_?r)#Xwzua)7ABf^^g(6kWq;Wt$uYcz;iEB%}kVt{!(d|CuA5|0RM}-lgZ2QkZ zAW}1q#iculp{Dii=G&|7`5GfOB%LQpk)Q@#yapt$L&4ZD=+YW0C9nFWe7W4MuFCVb z&N2c6211Ap_?Ypwz{k^}U z@bNZiV#C?Y7Rv`WSjJI)0kO{2tlBlZ`l`THZ*0pxukBGGiNY(7Gx@~GuPifAEEYZR z98~37tZ%a5HQQXyZ590S#?tiV=V>s3*p=*) zPX_S?oIS5NpLu}4{EpTKt&{2r6HkemEkCZv_VeMkXj}lG9Wzie)n9wx>ki_Non(c& zaGMyj#8fW{b)D#`_kMPW2lKO%H_R)C(sYsLk!=eSVs3kasM4HLnPifM(>vYxfU)}A zVAiv52Gw%hR-PQ849SQF(fsWhoi#{s`vWnDEU9FnA@0M#MDYbDOs&JOAwhK_sJ?4C zb(rUjH2qZLSZ5N2Fi`@Lyi@Yl^CmmP1-m7>JH#_;Jpig9EtTA*7@_MLv?g8SGY?s< z#TTY@_)g!>>G+&WwWD1G9#j-8QEfT4hYchiRpN1Kd91ej;`?W@WR!&)V5jOnx|#)PAGGL30d zzK5;ezf-2|GQv|4p1#+WuH>q!u>=ng*_foB#6 zCYTPJ=5sC~wNL{Us4Y%~66JPV|*WVOt@i5WK?51H-YkZBnsII0{ zUhkl(0uP9nC__a{pO^S8YYJcVJQh^Lfr!x@O4G4c$%*Q$urGlK6n0DTjJHUlOr1 zXqvhlIvHj;#QH=><#ZQ;o z6cB9u`ZNIh<}OzmrMa~GAQM6l2^z4z;(6%ae>o`bqBVap7eac0EFvfIAR%Ys~HE^K92PB&mhf1Ze{CH>MoK1H@ z;-1K&w6vmMUR<}KOn3X1WLQ{;a(0xbm);2_Xe|WNIyFS!x8~9f;@Je}cra4%;f;DS zR6fa60&BU$0BYrrG$yUl!wtM=U*SDiNYc=~nn`$wWdQ>l|q4jN%!d&Z8bUz?iRf6hFS;}?qEVJE#_CvwsCEjK0m88q^NbB#?T=Wee zwyY*Yl~JIpe2KDYVDi2Y2qhtKGd{nuB$L2Y4J!T{O}d3^(W;Y6bl1HqD(setm**i} zX!N->jSSi->HdqYlyb?1?J3@}husDTx+*xG&4Xq>a--c@YZTfuKiM!nYBX1NrR-6@ zc-uChgbTIwjc9Zllixt|4_Aspb&?Kb+5xT>^VhWdOG*p}$}8^fN7*;ygTT-NVj!Yz zk_sQFS%qJb`~r$_Ac-a(h{wSR+p>9x+oLtZ11fu!{VZliC;vkv0gVbLY!LAuMEF5$ z!}|m2(1$b?tL$bA%e23Yg-x$CRaC0C_rIVxhC#A@OT1hg57m%#t9KEJFQg(jKfi>7 z*6UkvvV7Gv7Y2pWLilao&rOTsLesW{0KNM>dFfX~);h}!4tOjb=O=}K-7+w?3!Lr5 z1ntokK^hR!Yv^$Yw(ZKa7nKEl-jBKzKBB?_Vr-1yQSG`2RpLRDzK{hDq@P#B?n4@` z4-nXCUBRuPrO&T)gUfNi*+%jI((s=_!J@cf1j}{HH^|%1epU|VA!AH4lb}Lrgz4j}i7B&fq1)I-&oz)j!UQK%~@clbctq;LNQVN1# zIoL%9x}{ei3u};L>WNz&BgjFi!Do3Z^mpZ|KqE+rY?s6i~nbY7A7`M|E~)G;9zO&@_+sRi*OE>F1G)N z0RA@;S=!he|Bs0X0092i{%4>69|DBh{KtqbE$#l#r2i+1`X4a``k(4Qt)UwOZ)KQa_cX9v^&i2wjV|LZ^t{|yKZmL8V>ivUAFK>P=2 zmJYW6H~;^V01gBK1^@_ku{AMtK>~n+;RyCaw`aqPKh^qBkjTl>-6b1E)Ph+V}$G~ z*2L{%!Z7GkxxiZIoxiA@d!=8B)8A9VR6e;xZG5rvVvZH+T$uz91K5C3w~*lnur5|V zB?md_GQeBISw3Tj7p!= zdR1P8Idq{;T%eI2B{ej^E4e3;Ik^2^Nl_qiPK+xp#7t(u53E=gIG&`_R75TzCbMP2 zz%Roy=gvWOMc|*L05gouB`#X`b-$lniJ(UhKtc_xG2G~+r1@}B&DU+g^qw-ak@|LI6^WmIQryP_;J5sgjjwD6V%8QRdX z_=#8DcD^ryuU3?~9@*xcD<$n1sST&PZ;YF$ zANK^7ubM4rHacgv`@m1FeBXQx=q?CsY#k(rB{}Qn^ z0V38OhazE!1K~Od*PM@E6g?vuj!VBTQV+i!+RdtgXkKNC;;4AQr?$S52-L#o)7GWX z45O*9daf~5i+A9UO)}MWA~z@c)Swq%TkW1L)aqmSW<$UF%gv!iFGMU7m|P`-JVg5{ z@l9kQvdplj>>>>&otfNPe~r0BEFF424{kGAu`LRB`!@)mjq6CXS+58ZfWyj-a$cLgR4jQhP5#&=U12EGgIe zc9uPZ27^lRyRQxiET$+2fhmTM;?LB!Vujc_Rekm1T+BK3^w(*lZkY(7_pn0Me z4T*2G-m~Pi(z%F1N z3O)m`aw6)1?PSjA;8ga}jW`Xvf(zpPQJrMo(PE0-uj>h-!%=9V^AXlTwsE?Ac(cvF=k=msUulF_@` zmAXkzKo?4<_R6MgNcAmj4((Ww9LntHr97}RIUAJLzY!~+IS3QDcU>jBbhoYVel0P+ zj0+udrgm@s(LE|8-z2&WYMJP+`7CYKL2A-IhPU+s#*hTqXNX-jKo3RwTcE;hOwG#O zSeCC3V|-6nUCXA%{}!mGG$Gz3sn)a{UuLM2mqIF}D!n9K2k90#&*8b|>Nbp@`oKXu zauX$-uRa^7Y2P3nXccT&rPOKp&nE-hVn|QB3{=mzcjIyid##+S5n>(zpb>p7q|%p= zO8^6~Y|+o92UKV%kFwt0w#&lxDz+nau3(9^1{MZwJDj9RIGCW`%{=aF{YY%g3ls_E z>hqG2us9E^yOU{b>}Gh;G5ue4q1N6Z8`Z1rh~wELfhWtltU=EYkT=~ zT4qP0BdBpC+f2Iyg20kJS%Z-frcX%yO&qfxeX&3{Tx({Si#I#qNoqQ`;JrPY75vv5 z)5Rp4We0;lbJ!aKea^`{Ro zMZ~6_iJa9rV^}sL*Gvf#f|{v@$c*pbrl7>1=T|Q>EA%W%kLJ(hZA-8$a^HHP7eOk$ zJ^5hdRf(E^k-uTwPJgeXhRou$a#4>NwGdXrA!fn(m5V}!^1}SPsHos0Hbz}kI4zRY z4D9HVgELM}Bdi_zcd~Im#m}vphUh+RX+gT^(@R1&f;kJVdUdp`9pN=>n<$f-XQr6P4f4J9QkBLjgwwsoyI53ao}PI_%&V z8WBm0AbdLQ((@?i^=vs!aw~e>TK02MkE9EP3sB7M0>;R~Jp@rKH^F&KWE~tX<^3iq z;+iJJ;dPGK=RBJ@AMD#Lf7bE#Xa;3OkJOn61BAfphkXL9o^=<;MZV&T>SkdD!LePM zf}vrvYSSk_Y|;!4@IF!O-t67)0&GCvK}xH|cvb}HBr>OsGIzFS`n=!!stMEs!F`kH z5^{!#vPhK3+aYLlPDUcn2voJQ&D#ozc=i&m;7OLAdgX&2wDACusI627@5LCUQ34yB zAW=;*Laz5(wwN56Q^HZG>H1SW2ZX{+>}#p~wP4Xn6BHAy(e0{-I}*070t*hr*B ziXlX&cZk{0f~u!?Nl~ulx6h~m-~QWR`!PDw?ZwIC^|W3 z7Axs+9hpQ>(NVGqZ?3$)En<{V`&PuE3n=<^MF@k~y=E0=8^j*2NG#LS;|DUnD}tck zw=mul`Npv*dsR^fh7c9pa$K#}&=H`p-6`*ZDEYigu3O~>RQg&?;2B$JH$nS00xlOk z(PVZ-$?4fTH?65J*nHrp^Lppw&a z!2Ke*IO}jHpt@&cbDGhP#;>SNDr^IRfr1>x>+#&n4SlN7x)j8a(#>|@UoR&kjEd(E zUcCz;Wm!>`zMHww72!5P_Og~E-u>q2v2n_i^-Dx&GRMwjbgGrC;@YN;+{YLD-mB< ze(-Ccu4f|_0e3XT5`q##hYI>na8EoSkLRbuMa3_1^&V{ zzJ1fWwbJVV23OVl$W2s&JU06UrjZG{Fa&;|6H#}5MCrD$c;j=Nm)QRa`A=90=gWDOFwYM9n-7B(&h6JB|5HG&WPMd7fj zaS8~%a{nd|an+Oj>DL*)gOW6G>7Qv)iXDr+Cmqo5}tby#V8 z6mEkm>`qJr29*}c*U8qLZngsNtC&$xli?6di&H&EgD-OwSs7$-hr^sRc1(a5i-^{vG9CckzsJ;=K;4n2~(@SM)z5m>`6yPfvU|jmmiVb$+Z+76-{%AEZe=)5M_98=rzepP1?n^CG{U#0e9rnpiNN#^~g80waQC_`7`L~q1^VtQiiD1b^-8ZWJA3Sj6B>g#|<+gKss>I5lb?-rk@1^lx?@LXXP4df)eTqSxqzj{* zQa%Q^IR)ZB_4@EHX3dqDvHBYchhh~mWO#Wdlsi1XjNmHr3|vGc36QMpl?_rdOE+r^ zccZFeVJzT2U(r7~m2p~NSh+Q<0~9AtC~rb?=<3;mjIb5=@Ay5ixw#b`AgSFWo!4khF7F0v-v((hILC^CDXt^fXdz^%hFn*ym6;64-v;?z^s3 z5~j}lJQ4Yvl6HL;p$I2$IzlK zN*tI06qG0Q@aOOOf_dnEObjm~91}k3v=DYoz~ZchTa$oJk%Cr-!e=jciMk_^p7vs) z`{U4qA5g$!wrL8SklReljdPfCa1r+U#qB^fvoNa3B&=-cAQ-`x;lUVdngToMq&7vI zD?nN-v5=Fs!ZnfvG6zBuFXl}rS_*W;`9|nmt7Cjt^(F zVVTs@Q97xF0;U0yKL9@0@C8-uQEIu6EYoElroN@v1$zA;qo$4M8lmWm+_Xy7jrWX_ z{?OPoyiBk~jlmyP!|y8qu5bQ~p)9GKRY?kw40NQ{f~pK+BFu0MWM|InW#7w}$k?ag z5xbN2D;x(nrhyegLC5LjuYKFZTnmtH9+ILzQBE5J$ynj}c3p>;7P6#Yo-%GuMPYi3 zHET`Ig`31IxOp9}ViaE7t~}(eoi0f;0$G=R*@aY#=6MJR=1>g*n>StKrFGd+(k7FW z<}%EaeA3LwlS#9N;Z49>%IEd9i4IHLBHzN9id^P_Dsn;S3r7esq6m%#)|s+~MW>!r zRa~%17y5<|WSHkIRQ4tN00fYd8!ue&>>*%sDb+QqYU;X|dnNCw0{WPu&*wuVnBesN{SW^d zh@>_*mV$aI@FY{zo%|?wyr<6t13QZ6Fodd(CfOG-){3R?d+-r)Qw0j>j^82V)WSaM zu%$W6^J47Q(ku;5g_(qz=5-5~DfgOCl6$Qg^apk;l}R33c}n)kh-3j7`A4y2xTiJy zChZxZ>Uqv85ISx5@GmUE+#lW@blVb%&;M=v{94?}8xahjAU8lIrS9PSaxLOoXAWyU z-5TK%+Yj`eIi`8!Eh_*?nZVD)2MdTXz&_0?%`dt_{3)FKpwM2t z2UE=ZVx9mwVfD3^4;Zmk1K|H~{&#o8`QGFkaq>)VR8a{aPpSBGOka!Op=G?;Y7S5e zRSXoBAld^6=PX&T1_2DIZx@QiX_Vx(A7LSRStWp&_ZyD5lhZBQaInR4f0=WeR=u&pv2UB%7VVfWSr$ zSauWRDq4hRXl){>z+0g)quEDeVlSXa@iE(~cbb;UzDNN3SNxI9dQnWH+JEac6T;z5@GJ@2_+oL;*ohgBQKE#3a8dNTl3DAP>h z6&HzohF@+Jx`kHBUSDwibZcd{k3Qkwtr>7&9b)n|XRI!LA7R<53y3$JKVi|k={qF) zGc`aPceQrw7Ge_GrfzG7?8TBY4~tLK5;V|LPz=V8d?d(^r67M8C}O5nDcVr9h|k|1 zj2mGk-I*A`xJY;|`e_%s<8_{!9oC}k0<0yE4G`1mPO4X0_OCa}SbT&L+lb33v%aM=b2s@${rlLe;Sx zBM8DEG$ZPCoVU*yUoCWPhTOHn)nlv;x0QU0J+fFSBv(8Ld6~o`Wu(Y#b!Hx}zJ*;U zCA%i*4&~=k-Miizcts?qA?_bF2qm zlgTlnJx_5Nn%N*{Lr^QJ5oAG&yD*}0|DM1?0#qoCY$Z0q50Zx z@$EsIcYC#A9oNCJmyW9sMf~B-m)soTCF#N&2!+KmLg5G$b*fC=XX^K>p7!KV_FZl= zhBNU8@>N=uT2$}swe#?ASDEC>K2CN3~_ zbRrcXfydP8F{E(Vtxp0&@BQ;zi;$}A&1SehCFD;e87GJ$MHQYco*0O()GyWapIK$Y zoNsrpD`2R8J=d@KGAjWj(>l9Okx_|o&#kk9U{20>d`S}%rTs}Myr;3J+N=`iFObC{ ze8OKpKW=zv@?L=y87vYGCh5k@<@U@pM-CVq4WQBLh{L>gMu#yiR1-r8h=lQ@FwQWt zRxfKsoCdCpV@m#HAWPOUm=Jb{@Ck2x_)>@~gtm%xEn zANUzy5N59~y;cu;Ud44tZ@@yO%%1Em!!FkV@rzI=NrP{DUUH-iKjjt^Vdti%$bE}u z$MJfSxCD0`%7b7S-zT3s(f-8;p{CB(Val`1?Jn{kfcDeeX}b6d;G^VGwD+Y&hIX4` zQ`3dXEo8b)ob{lQ%bZpCFD&4S2nkUi`p)Keh~;nT$FEcjMLqiVUDiAAnDpSAEXU7OoIlT9&(y6r?OJ zfr~)=(YD4lM|)#0@~bDRxxVEReMVXSs&uj__fai8*apVpR5wio{tGxuvT};Qe**py z^6GQu3E_O)#0i-(rC8L}DfiM!5u{@MH80`vG?%1l$YMXN%EojyJG{O7cPR8FjKp~Bc1S$j08iovq{`7nUECW`>z zd}z&ndp>Aw5u$+}vbQD9AzTzA;1fR_n<2y@KounFfKxzN~;;)|A1>mQrhct>Sh zANSXuK8dikhoMh0c_T<|UEO^o(t1rkbYRLFq3HbOWR(&%&81qRnR ziEeL4t-r^FB9k__YL?YvLBMhb@qX|zcL&1l1`n-u7k&F1e|0W6~jMb_qQr< zf;JL4(w2_a@#Q9(w=qlL$C}PI)c`3Y#&f0pcRwc19?bTO{DSpUHhD4gq`en=kRFce zH2(~SB3NKXFu?g8Jk_d86^+3m^7!t6J~!6*qG7NW++SNYTvN9o4OI#eOiAFw+$-h3iZHo>^R`~k^_GfEmhA-eVUd(k52eVHyn@dYu z$+WAjfDgy5|)SvIvARVS&COb;eMqdES0cSGp6t3{F-&wVGGfCzI;9rw2zDf%OY0@uCH z(J!K{V=mo7Evt7?dPk51Rz}EQooA>9`bog#8#}EhMs`i5BP)dD8J|#$Jmdx`ty+IO zjFj{uN3EbL9~g~T4D*SY_@H-E{4ce;@J;EvcrQi^>fD!#v77>ekiB$Z6i?fz#X7eEK__G5?*ij|xtzBymj z-AnCzG#oAsoeEvl$MCtq>A_jRpmxR+q9<8NXTNm@_}eRqk6{m+hVj2tG>pR{`>%-9%Ty_*Sig1AFf z2&P&(iiJz@!SK~XgTLz|hSUXQ8N-uJ;9ntAdo z{Ny5R71oMO@-f2vB;^0Ul7&2SMEh<7`~6Xz-g0Xhd%(|`oR#CmA(M~oRD)9C_#Gs* zRO4p;osh%`XIXb$6FiEjMb^|5ObW1qHJMdeCYtx>R>Ac$)1YK+K{!1;VUrbg%asZK z_)CYXhBY}A7~FGujvC=oVU($eDnGJKkapaD`=OKuH$j>B8qgb2!57dHOly9uM4RLI zefLm^nG^3)hzJ#obT{=02hu~jRI?bH`VKnFzxrn$LcNv^DmB{X_fsJ5`Vjs2usUjY zo5doZg@vZ93MLI5{O}_77~m9p9ePczq{oiJ!xU)y;eva)A^8m}rE5J=sIHA84p%nS*YGJ6YkCYs##qFOG#!kFmIV6DSV@jh& zKX=AYMZmZVdzo|C%xS>ypE+Zs1vu-yNUCYDArbU|0@nhDUXm= zzAr=Q6R`!gV+|W&`=(o&u?|b*1*7W@57VrFs@gB~DM9B$PAHXg7qwQV8QlaHKg`AJ z0IF1Wz1_rfcf=x1djwaV8`ntTWE`@+1AsCTT*q6XEiacOy zqJCEAMjDFN27Ivz6v{1b$<(F9^)zGFybHw*og`Brm0(N*U`~vTTGuWf5yd+xk}R*g z1(!*=inY@6vf{s=4HY)o=tXL4T2RZePTl&ny5vW|rapqPK$KBpY!qaf3bv8R;p;GmBW`sJamVA>W;=1byO$_^ms{o(VpTro zQ6YU7;2F!%BwH%=snePi42nG%1D!jUO)GD_?)#{>Fyc`1PlxYA#4uM!k5i~ecTKtZ z=7Dc*6*W?VKsVkvgdEqA291Fa0@p4LtSE(?VyidaeN)9GW%oFY$mnTp%E-qwXmh9^ zEa_lOWaSN%)c$?2WjDndK5)k8NwZ100enEwn^u&ca(hyhA?>}V-`rsBSN_54OuGIG z(owRI0X8EJjB*8-PBYBy{o>U zWilrJf}d*3I7j6su;zUZyWvg&)uPv$f4x?g(0{E6c?q53r3QuySTZtM5BB<;*++Pa z>uNW&=UEqji{SD~^otpmd<;y(#<$*2D)M!Lqr^!;n&c?S^~u=-C25FgJ}{C!oeMyB zk8YoK;CXJObCkSZ#7xs{&1Z2LQ;;brbdlmK=G(-~&ejtJS9xZUG^6Jsos2}5e{?k4 z&lTbXk!+(a8^V-iJL~A6y=4=fx1UhkP3MP%Y|!p5o|8qB;Yz%311gj%daSLH>bP&i zwfGNilsoi0ie>=cbKKy%Mxhq!-}J}fJ8>yeJMdw2GA~HioP?D_iU`;Aq86z z0(^A`YuQA%G75W=uwD)SCD~cJzfto zLxQPc9GYP+bzEU;5iV@Ro{+2Z>BA5j%IMY2b480$;pwz94}Ek>6Gvpchu|ma`J}=l zhmkCE^K&<34fF1XyL=7SlUQ87VB(t~KI(l=v=lMos!)rdcX?hg6u){EK-jX3y$^!K z-o(5yeO6LMivy?#3HUR~(mfa()t=CS`m(R++IXqeMdexClaR1&Ol&v&>WEZqwa|o5 z0%&9r!)eXq#LpV8P>buvQ9ua|e!lVvj|1+?;|2d&M!SwesoQBFm42xsjcnUarM>8( zshOOM3plXc{r5_U;bpj$0$kO^L|(&^QYglR%^y)s+UwQX6XJfKb^GdNwJ&WzIo^z+ z^gcR&qD7#5m75A-!{+|@IHbyWAAFPifkqpV-jZ%9M>li7-ZN^0+cXS{)4y*bfP&LW zv$>Tbc3wuOp9CMQp!Khqry@k^W*7=W^xJ#Bo>cKjHwU3MMy7-_P}b11u1cnE%@gaB zW~EmtUmCBjJ>59QUjN3Nps&}lZx~$Jr5Dm6^LY&Gcq!%^L#{`DG;1a=5t)AZsf2d$ zEH=?+N`KczY^g6^gLJD2b_`>Jj7M1cnt*kH1?^7Mit-YiNY9g@{+!QXZez5NCXegT zJSf6-6!VCTjnoREUaWxyxpQ@daF!MU4e=GGjm?QXel0?n+zT9JhxK>ond9NaPFig> zwXYOt984K3&pT~_Cw7LjJBV_ufm4AQt~`5KmB|s91XJO6S4utKol{1ZPKaVw=VC+0 z5@rgpyfMRC3wc^F-@KF`nCNg6-JbJFCFk^4YIAg4{F;nL{1*zLUok<(`YcLmrf(EH zsVqwyM9l%)rnn*;Ze&Rlp(l>l5BGu&;$=73jg*C@bw1kUue5Q=2J?K`p(Z*@2f~y? z$eUq52HyTw=aVaHZUXzZp&&B8g+af?lQisJKrHlf)Kew~Jem26KmT(7B=L~4*T}R|5zMWPG(JW%Vs+2Y`FZ+gAOF%vda(maKwACubn+H?1-~%D zI7Xg;hZbuTO1LO(I(m$6TvB_*jUaKSMkBH6Wg@Q>K@4&jWE&oq=QljPC6T~@l`+`B zUS2Df8n(|oWAV29@9%em<&{M>uhDo#5V{{DGo0|=Z_vi;ed;CEIT(%jy&~8aMSEIj9m$EO^>LFQhom(~Gm$cVP3thoz zbnW#TpS*4IA90}1^U<%6u~qw1%JUl=1x0lNXw5>5GNtqurgXms3a2EDr7G|5CioQ7 zHsqJ2d9F=TEh$FLSE}W zSigXijd9Xmp~@s!{SH*aG&`MC%>j>+!aPYKbGCNo*0RC8^12o|+MdlL>P2d=l6p^?Xk%Pr&)Gh#=q<8Uz;4G9svsp!0%VujYpPueV9t3AZd1&>~ z7<-5@Lf^yMcr#BowOOr~ZQTwco~$QecUZtj zflkM@WIhg+zRgPVVLn##&`5l7|E5XP@b0VFT}$7>!z zdM;;iM=r!3WC;*;;3ZJIK;yP?)+b8L7o_V54%s0CgBNj(`!zT}^Fd?2(WV#d3qHpd zM30K#Fi7No3z6kn7h1Zyq8as=!)E0)Yp$KI8wkf4#7;bFMZVRY$sJ4OfS695vId}+ zs{Yg7b6ivbnW{`~t9pdT--#TYbfw!WezO+U8z``9zhbtAepX*uQ7CMTyGQW$ZwU1| zEido@2wOpEwTtu$28RE-oyT81fZf~uQ@A%0ibDp{iHRMUcC1`~Fo!w)VxrI65DD?w zFc7&Fin2gS`D8C%NRCfw#2;%jluq6@MD>fBxM}|(6tb&e?h$9exdh1%a3e4{umQ>gtb}w3aj$ z$>YKj4(?uVdK~>IM-l3-hui#{5^gJf{S-yZO@6jamQ+)BC0R*Rj$DcOW33qJ7&X$i zep&r$B5*<$>T21N3fWWdzU!UguI*WFBDV`|(N>VjrWf7>B727+z|0#{Bs@fe?>gdz zM*fCKPyiq(T1~Iz7v_HNk+vf&liO{0OkEEsk#Hww&Y5Cat*2lMHd3ti^^OoM1Lyu# z|4?G?g^PTf5W)gY98J*ZLZ=IL7!K2vbs5l5Ko{#tZX9eILl#zw4&_i%DG$-{oVT>7 zFAzx3J)h><6}z7#R;X=-uK&%B=MNgkheO`*AJ`S)w$CMDC~b8~Iof--Qa`EL58GH` z0H?(}yGgkCk|BK+nIP9Bfz97_Q{&?O8i3TVf~IT_=kM6=1`Rd5WH{6a)ZKD>CFfH+6lsR-GDF?f8gx>S1(jI1A(Se`x=I?8E0LJ^QePe9< zGrKhdjP8hKQ@ayySZPpdqCJr#%$Satr9)Aikt#?Y?M19s-#Yx#dzDBU_jyd4z~#^@ z98+RhTV@cw&q}cADkJR$9&kQDrsjlIo0Fa`Py2^J#;MBRw60#+A0&@2RB-0I z+nB2u71rmhdywcf3i>{xVH)hRK2 zcuSYOfo;CD43%Dt01jF)io+U`Iz3R)`)gibvIAXUs2iC&I4Omi6<>!jJsNqEQqVV> zuAcx~I|)9+Vt~oyJ8a3ayjPecI+c;ifF(!(p|}u!&O0(BDD^i%(DuuFy9aQ@0&VSh zv63x|*xXUD;Id8SxOLE- z+;zjM5PJkhmKupH zTTFcVolo~%c!xr5IEPwTW}sLPMS61?qI2~g#~)eN)GIxs4QiPAANO_gw;qXHSuDv( zW9A7_s_=BQ(91>)sZN!+AbhO0FgMgK5DE&E7yo^R*_(AND*Iaa+X{hq*jPMy5Ac28 zYo3bXDpMsI9sa{T`kpN>!F@^sZ&@WkAp`B-UREh+^V1~WVS*&d>h3V$<@YXL`dUg% zxh}K?xW}B>5;WK_Bm8N;F@unUbR7XDvY$3TP$tZCd!`9nklhHDf+bx?fiu}2oJc)} z!?1e_j#q(5Hj(L^k~YF#(pl^wOl5gwJr!8eh^CTyxRDVXAgau6#bhR?-O2>_Q#3(m+4L2Q0*h=~dS7ZE zZE4)pv7^+O?;`g0ebJ2nzEh~?`N|&oCJk3TWJouDql9%_Hk_Di(O>hrQrU`Hi4pCc zIx-&`;8C#wRIt}dfy_lxJ0Rhumv}plkNY|&E4QW<3QsXdpNSA>n?jEnh`XFM>+B@Q z6xYZHkrCd`a=&AK)%rbc{6>q9q(a6Vdj}^=T#qQMW{WHdvHdi&}~!(UKc85^?z4P!f4e3s-kjZfYA`R(LeV3HR0Pqo_KQ z$lI-&@C!A6HpwLWvhCAAMfyl5|DDdpjdKN}>nPducWsqL`MT6_8reG_*X3#6>y03w z7|wo4_v#q3J;yEm>;$kq=}1ulLW8?c$u|8WKcRUiYR~jsnenYeqS%9Fpqw~7-`gn* zTY%kPc1V?v>ab9BVy~)5P+>{LcoWt8Qcg|8UEKQ6Gy%B`i-->;d2dRdhxoUfl5G99 zP{@CuU8xFG$>4f22`CdHHX4!`?2JN1%6*xdvDJt+E zb0#~oqr#86iYVOzZGx{H`;gutk;ulVD=ch2=&M@U(Vs`>H;Q8X&Ct9+=ip3!aNDeU^OLx6ED3 zIDlRse&P%lLV>U7qauDasBn+c6VO;ues+B0c>j4G{6r{)^4fI~8uNU7Lbn(gG6;0sR~reRzGb)iIu zCncx8vmRG6ONa@NKUUE8fD3(2M-^4!al{H0L%!fh`nW>N}HS)fosx(!b5Tk zT=@-m|9L(ROpZp1Ewo6c(` zwZh|mPqn~yUZ=f@ekK0O7G+ejx_8Hcw%BTlbc9W*9*n#s8rN?quQe<5Sb&1)-nVQ=`w8oxfq zU_5-H5giPXh+uND8nW*_I&_}CE6yTXR;hFc8`sp_d6fc^+O}paXa zuObCA2pvRMei~w#`q{oyb`nM$Et9F9f)U z8cu{lkP3kDU>dZ;TpVB~{~>qn>Ub|-G@J0rE4gxQh!Vbj-%bL=6f(-jnB^k0A8g;5 z8wbV0(d9$ot?lYOBT@yo(^KO7cPxaE)egtikH12s4HpqR)c;Da8M@KLpg803vfjks2vDSJgv>qCs2CD@_ktcrd^qjrVqO{dPXwW+iue=!XZIVSG=TQCRw zbS(uKGreIZSu!$PThc*_2bsPz_gI3-tpc7s^6pBU;{gcw>ou^!q3KAy8yOy2mwWBm zI%W3dg?OKZi=#}4r;e5_(;5Zj5J>|L(2639F*@sX;8=5oKuU%=L7C=OIu*|V+yD&e zwV9mrJZ%(GBK=pAvi#+esvw&^N!1{AunDok%}Ts#q{`+#Ew25cLZ-rby3V4} zbS=bhy9+lu;RarLRvz#@*L6MFh5T4W%*B?LXu6$+JIY5OA)&wc>skpuk?NeEqi!S> zZS;=2tE|<%3Ve%p(0x10wGHSMSKx^DtHOJ)8FuK^LzC0F>5*rwE)Ki4U^TvH!Aiy$ zNR`!Rcfz=Z?~Vm39rEJYe`E;V94raf#140P+vD9ke)PIF=t3j)|$>|q1@Cy3&Rj#PWOJE6MqKN>Asmu zL@F4X*8Ig*46tO*G0u@PXt!!tE;mu{bxYZ3G!JE4H=ZN!j;n3(Shpy~SBDMmhv<1;z_E@yOWj9BS_6Tz5 ztx2S2xiG#aC=Ya@hXQJijr7P|UUls=HW1Ix>QG|+qrTwU>CDWQ^oWZxc+7~~8e#)> zd+zcU9ICUXw&|z{Wb@gM{CD-KRB$%3zoep5*dzGe`~|@AvDSbgQ@Mitqry5I)5XL- zEocHbC>vru?I4e8~Y_}r^qD_t4@HAYNc5I_3-tn^!oGb(47w!yabmj7XK1Yt$tkVFAKjE5) zfin}gvtT9^mDS$Pp;y2W4aEtw0q6*GG_OR#St2i>kY+mw>-^GO8WSTCclv99@7kUU zfRek1<%F^)Ws`w1*dmxRMyHSji^Dq8s84bAS;Z1Dccvn-)}d(?cDDfSz{=VPT@rJm z($}khx3M_b?a!ZH%@y1+@MV>zk<-Xhc|6(N1p?y~oy=JoeUr`pMuO=tytey;Tr^*T zerjx&LaDLND2PX4owZVm7r2evZWWi0WJQ(_b`MV$W@a6rMliEd>EME624J52I&lEXr8 zV?I6VJZSqw`1kYBgP1-xWq+j3pfk$C)#9-jUR|^TSRzg_s?ss5#izr$`7gW9Vq4WC z+QaphGu|<|8~QfE@{qB+}}J&Ik^=y8vX&w4D8!Z<8;`sbKY z>WoTBa_hI$|0$MmN^?DBLO&<%!uX0Io}5|E80Q8?S~5-;1=6@32XsKYvVNF~naawP z(qG5n2dmH6k0ZGy{up-MASpW}f-KDv+Zf7t+gSsLmHiR=sc4^%d(;2 zd)!Cxdd0uCR%3jwD=MpQ>!m#v69FZBy8W(*Kd}EcumTJ1mf5uovI6-GHF_w#9z%te zGrX0Tom<11KIpScFBMBAj-+jZV3U(h$u>5onS4k{Mm znP@<@tQU;^=WuHPxykH!5amBq)H?X+%2FdI6>4+RI!p4=fW1AbPtgo6ZVGGHw3@07 z7$&nw+b7Om&%W&rMoo@~eDIN$7VmuGUE==2ON<#L=2?#z%xY5$S1Hr3#?pNVXeDL=N^w<=n`}i7#R~3u zD-I?ba8bSa${cMLWd&sWp-CQndq_9S1D`}Bv@VxjwI(HTge&UOpx;wNfRK8h--F%e zgOO=A|ExKo(l#uqI}QN7av-Jz(hZG zSt8~+2?zLts$L4-T4;DheDX-K2|RBn&HeO=xRX5vh$y9>^T~RBQ6NUNa^+e;fGQtw zw3z5?kAApUwmSpfCE(Vu=Hm%cE2*geG_-pldI4100{vasMurJCZv|Ld1Y_wW&YiZR zG)xmy6==)Q+cod>MPyy61kSELp%mR3{G3h1H<{N`;}7nUu*1qt`LK*dPQ&gg ze!ZEhOIy+}9LICD>yJ#9v)k&MPzZ@gQ-EM)c)9ugx#wejGkc=0l;3;kv`pyJORKa+ z9AsA9Kj`ZCW$n`pv^SE!tYrZ*lDVr|a&tv&K_KUN@f=QYFC7&#hm!KdHY_l~c_wD3m+=l0Rp25IVoe z1Zt?U*NpzytO!fLSVIa_kDaXsYjiHP`t`L7h(E)V9|*|G zdzLNcp6##RbIaNzFgXA$_*9OlH-ci7<@RVl znq{bbJueFefpqoS=^SwRPPJ@M$M*vo2c+~zk{zn8T+Nj1_&%5v zQcEV5C(8WNl`db&j+Rqgh!Qc?U`Yt>DAX|(^Wb@${D834;fx#$Y*K@a)M((=0&omU z*s&J3g7WvVF*f^{k=JV|AqHaF^Tl(O=`7-TijOjp$x`b{SFFUq`XK-hncvsY;(Hsv* zve~6d*fFs9Ccl>*k^#A)sjpOq)R_bsY9BAM?&0Y6>SNO^IPEVNE^K1skjYxl|F`BN z8Y#lHxkQIfw~-yln_VOAHjrw8Q~$Yf3`*`fJH2uq%;5Y428si#T|wlt#RU30a@Yx} zm2vmZcmXig8yotvVl}xZ_k$)HO>RJwM6J@>(cIjIT(^k7)Gme`t zvwC9d2MRm5jk{&Ujr8`ObFL!z;(TN~!7g;qp^#+3BrK9Zt6f}}l*#2!zrvSc_LjA| z!B!Lqqd>t%Aa;uu9!hNqmFOo4Q7vdrd>JzKZ7D>ca@LF5ow4FeFlw5q1bFmhfxQ87 zb)Yn@Vnj^`{BP^%0LhM=;XK83LlK*{xR=$jg4{6Z=}zL0n6~|fo;merKD}ugxjR-$ zc~-3!nr#n{D#p9INi~%zDPSH5C9qY+eVQI^rooFid;1iN7--_Yp(Ju~WOqEIT~IG~ zy9_T#c>uO$WY5ZjW>m;fTmQ4|mA-tc=*aLCWyvTba-ke_hzXYGhy~%l2&|N)akgWO z$>U|<9$+x67@+f8#Wn*Af!we4*&0Ymr=wb}>i0}(KTW`UgxLzT z^nuKgEN>zw%q@5n`M}fV(j_ip3=Gz?UQ*A@=u8Hu-#ZgSzaxl4oNVNd&8p{~p%Ii8 zsbFl^kjGagI`J0kqmnnrRy_0$>jIHCHfTtC+Vad_rmS$UhgJN~GOHWuaba?L)CSt4 zpObKY;zY?Gt5|<`qDp$7+50?60Hizz^{QK)cxJ~j=-kfhc-7w##_M|ajj|Vvb;Y|&|hAbJb9CqW$aiUc=A!DCy@bHCoKN(mxY7e z@E`lrPqzar@-D6r|L;S`1(=dMHBbr#k!8mAj*zfzyGBMHj>#?u`dl~uD7Lc*8 z&)})}aLpW17cbgb?L$xBH{R^yL~WSEo3w6KAs#vG!W*%`pB@lrA*AE3C<8TwaLlMVfhLbIR!wAlgmF`GwRO9T zwzkSNfpEW=A|ASqK%GZQ-tQ>T1)r!h5E^HR{~Orq4YmuTxR(f!SgGKtS0WXR~R=W}E1B?=iq$;oruc|$GpH>B1$VkUg2GJ2FsAWyE z2VNiyp@In(8kA}Yf_+Db7bSWmhlLcfj-hD*J^DiiyVK?e(){u~(J041-)TOMSWNkY zg9QLOh#z%op08F0WS=Vt=`bML4=t~5gT17=BjO1iRI3P(X2Y6C+jRx0yN&7fCX7^X(Ch!YI@rDjKeg_{yOs45nr^gW;{8)& zUoIJ2os?@@o;v|eax>1`TX*KY^Ri8|CjOvxA6s<|B8yK?{8rrCwA=P`klqj7skC&* zl?XB{``d~du4YE#xY$VOaIyV7h%HY%HxoaFmz|#nFXoF|jbF3#Evs-?Z^rY2=?8tS z9*;X|vKa=-FAGPS#jrAr@(v%4#yLmmamG7J;^yD`jOVXjDRmJ)1g~5)LuL(J8}1Sx zKakN$foX)Lp3I+OA}FVvrG^M`#A2AqU3Q;2(8K zFutPOT-ICnfp`N{6dTKzPDFzqDhBWfpFGSMrkQ{xlnt(qOWZq_GTWWlq?p?1&79j& ze{!b+wE{!RDJc>-KmDaWhzG!)`j-*=#WtyiS9_GCr=snE5`+qU1+L{BiJ7CIT1${= z3v7?_mO1#Di;}kYQ7F~MtWHuD1hMqo$9a(4d z2;W|h8p8*p&W?TAej@Ur9t4+ z$;F0|=M~MKpC?8huChBS7=8orC0P99g*WBE^jr&Mej4u(stMKOwrzOK0kZ0xkJe|s zj(H-6E7a~#jWFyg8M(`*U|Ms+WU%!gEmM(g#t1`<33er-11-``s#0>)E6sOaeec}{Ownlu9N%af|TOhhpgE3udQ*>oxZ`V2v&s6ex6`m3BP0>_#9+xV!-AkqB9K^zH=T(Qoxg{$@xEYliE$S| zr-iYB%2}sm-!zu6U`iOapj6w~IuTq1?ORQVb=qZh&Kmh)h)9HLzHg&o%_?M*0Rz)g zyb^N06!##?qgH;J-eSL3<=q#IhwGx?Tz0m`gQS&xZKw7p

EtGpyd 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�doMyI!b~=B|Q=b7eC#lGyw>tj@ZWHN1B`YL=)}8 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 V7m3Oo7?sQ>)MBV(Glk$GnV2o2&lmsz literal 0 HcmV?d00001 diff --git a/static/images/docs/project/services.avif b/static/images/docs/project/services.avif new file mode 100644 index 0000000000000000000000000000000000000000..eaa3aa8aa028284b421b1ec2f7fc8b222109b151 GIT binary patch literal 40047 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 z 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 Date: Wed, 22 Jul 2026 14:40:53 +0530 Subject: [PATCH 2/3] docs(partners): revise Sign in with Appwrite pages with diagrams and tested responses --- .optimize-cache.json | 22 +- src/routes/docs/partners/apps/+page.markdoc | 15 +- .../docs/partners/apps/consent/+page.markdoc | 38 +- .../partners/apps/quick-start/+page.markdoc | 705 ++++-------------- .../partners/apps/registration/+page.markdoc | 646 +--------------- .../docs/partners/apps/scopes/+page.markdoc | 94 ++- .../docs/partners/apps/tokens/+page.markdoc | 177 ++++- .../partners/apps/dark/diagram-consent.avif | Bin 0 -> 16447 bytes .../partners/apps/dark/diagram-overview.avif | Bin 0 -> 28423 bytes .../partners/apps/dark/diagram-scopes.avif | Bin 0 -> 16430 bytes .../partners/apps/dark/diagram-tokens.avif | Bin 0 -> 29119 bytes .../apps/dark/quick-start-consent.avif | Bin 11545 -> 10778 bytes .../apps/dark/registration-general.avif | Bin 0 -> 25685 bytes .../apps/dark/registration-legal.avif | Bin 0 -> 19272 bytes .../apps/dark/registration-publish.avif | Bin 0 -> 19665 bytes .../apps/dark/registration-support.avif | Bin 0 -> 17022 bytes .../docs/partners/apps/diagram-consent.avif | Bin 0 -> 15821 bytes .../docs/partners/apps/diagram-overview.avif | Bin 0 -> 28586 bytes .../docs/partners/apps/diagram-scopes.avif | Bin 0 -> 15925 bytes .../docs/partners/apps/diagram-tokens.avif | Bin 0 -> 29013 bytes .../partners/apps/quick-start-consent.avif | Bin 11628 -> 10912 bytes .../partners/apps/registration-general.avif | Bin 0 -> 23786 bytes .../partners/apps/registration-legal.avif | Bin 0 -> 17767 bytes .../partners/apps/registration-publish.avif | Bin 0 -> 19720 bytes .../partners/apps/registration-support.avif | Bin 0 -> 15812 bytes 25 files changed, 508 insertions(+), 1189 deletions(-) create mode 100644 static/images/docs/partners/apps/dark/diagram-consent.avif create mode 100644 static/images/docs/partners/apps/dark/diagram-overview.avif create mode 100644 static/images/docs/partners/apps/dark/diagram-scopes.avif create mode 100644 static/images/docs/partners/apps/dark/diagram-tokens.avif create mode 100644 static/images/docs/partners/apps/dark/registration-general.avif create mode 100644 static/images/docs/partners/apps/dark/registration-legal.avif create mode 100644 static/images/docs/partners/apps/dark/registration-publish.avif create mode 100644 static/images/docs/partners/apps/dark/registration-support.avif create mode 100644 static/images/docs/partners/apps/diagram-consent.avif create mode 100644 static/images/docs/partners/apps/diagram-overview.avif create mode 100644 static/images/docs/partners/apps/diagram-scopes.avif create mode 100644 static/images/docs/partners/apps/diagram-tokens.avif create mode 100644 static/images/docs/partners/apps/registration-general.avif create mode 100644 static/images/docs/partners/apps/registration-legal.avif create mode 100644 static/images/docs/partners/apps/registration-publish.avif create mode 100644 static/images/docs/partners/apps/registration-support.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index ab941d23d9..8d72d41921 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1599,17 +1599,35 @@ "static/images/docs/partners/apps/dark/account-applications.png": "03389413091ae6530ebb592d9aade7248b0b8b1a34e4a1b90c3f48480bf01ae3", "static/images/docs/partners/apps/dark/consent-screen.png": "cfb1385940b821a39a90e2c2010d6a9d86b7d02373adb564e78711088acd092c", "static/images/docs/partners/apps/dark/device-code.png": "e84f23cfcd904cf5fa5aef2642738fb6ce2289135c8f7d74c5b85d36b3da127c", - "static/images/docs/partners/apps/dark/quick-start-consent.png": "2f94d24187e22f9391e86b5029b9b3cf47189b49ca6db8858eca2851b21bccec", + "static/images/docs/partners/apps/dark/diagram-consent.png": "cdf260c28c98ebebe8e553eb8600dece94989d160bece85c1fee63e9cf21de21", + "static/images/docs/partners/apps/dark/diagram-overview.png": "1fd06d30fc53efa69157f3c6be62c991610acdc7c97463e58341310d6fc0ebe5", + "static/images/docs/partners/apps/dark/diagram-registration.png": "66abebb561a61bc51923f42c6f85ec63a4de4ce57901f74072fa3efb50277f30", + "static/images/docs/partners/apps/dark/diagram-scopes.png": "ee95a74b1ab45607c4ab72f8522ecc624471f81b74139cf5288066e3c8fe9c2f", + "static/images/docs/partners/apps/dark/diagram-tokens.png": "99c1951b4640fba1d7e116ef0dd75ed5c171f843f6ff312bc16f2b0f08e2239f", + "static/images/docs/partners/apps/dark/quick-start-consent.png": "1d9b2afc99e93e53f4dd934f7de659cb1f52c11d5f42d447b9910ad574ff24d9", "static/images/docs/partners/apps/dark/quick-start-provider-setup.png": "55a2bd989f7d7237d17d2bdae78d5d1cce8adadd01e6c155ff1c766cb26a1fb2", + "static/images/docs/partners/apps/dark/registration-general.png": "790e305253b5371db9997c07234a9f464fb8b1f2529206f4b737ddca4a1729a5", + "static/images/docs/partners/apps/dark/registration-legal.png": "aa1e4180df13f90e2d2797b2166bb401d05c7d90307bf9553f6fe06c0ecf00cf", "static/images/docs/partners/apps/dark/registration-marketplace.png": "e7af87266c488d7627d5334f9b4264afbbbcdf26f61e3cef1d44685e19008948", "static/images/docs/partners/apps/dark/registration-oauth-client.png": "5cedae65dc096c51c644b7a8946525171a62398b20ffa593db86b6ad4aef7972", + "static/images/docs/partners/apps/dark/registration-publish.png": "e50dd334c7df7d926821ee37c07762e0fea196fd3da8a5bf6ff7b92d21b8b09f", "static/images/docs/partners/apps/dark/registration-secrets.png": "fb81e51364c7ff4267fcc985b9556e697b5541b16b7520e9b5780b1cb3477dc2", + "static/images/docs/partners/apps/dark/registration-support.png": "f2d54e58b11f638401b0f4888dc5f404816dac86584af3fa571f6c045e7b3053", "static/images/docs/partners/apps/device-code.png": "1afe19a6a183e2a0da2a4777db710d2b88e28e3dc51d0fedaed3dbcee1b29580", - "static/images/docs/partners/apps/quick-start-consent.png": "4515e2c9bee7c0e269bc3878bf0a804942b9f39fba103a2feda5b71aedf3acbc", + "static/images/docs/partners/apps/diagram-consent.png": "3ba2989ce6f09ea5c3a0e49665d005c6f6b2fb1b92b624c2c2c30460649f96ae", + "static/images/docs/partners/apps/diagram-overview.png": "81932121776e4ac7af3a93fe4cfdd93a44aa8c4dbc739bfc08a56c92665bb612", + "static/images/docs/partners/apps/diagram-registration.png": "46b85ba2d4bbcb932c6b15d338586542d67346d981f204d36aa3e4f5bdd6debb", + "static/images/docs/partners/apps/diagram-scopes.png": "cc01f8f049ce13956c0311f3192c41ce964f89819e016e61deb29475ca5a600c", + "static/images/docs/partners/apps/diagram-tokens.png": "c1f169da1c3c4abb51936a117d41dba5a71c721c508a1a91bc6cd8cf0b25149b", + "static/images/docs/partners/apps/quick-start-consent.png": "d583752f9abf911002861032e097737cf6b2f0dd49ffd582f9306b72ba4789ac", "static/images/docs/partners/apps/quick-start-provider-setup.png": "1c3dce9dc68df86c0744d86cfa0e2bcb2185fdc52f5fe22138ab8d21b1f571f2", + "static/images/docs/partners/apps/registration-general.png": "78b66e81d64fcb3bc421ac8ae923f03753ee730996c56e16fe3d4aeedac591c2", + "static/images/docs/partners/apps/registration-legal.png": "7d11e03dbf12709c2a349accd813e86315e85cc1fbf74d7e4c69f69ede48d39f", "static/images/docs/partners/apps/registration-marketplace.png": "0b9aa3fb30a5c8dc0fa857c177f6bc714c490933c395c14957c56d27f099ccc3", "static/images/docs/partners/apps/registration-oauth-client.png": "bf6d7c6afb0d8f75371ca261386c06a3f0a8e1942a1cec2fb910a296c2f707fb", + "static/images/docs/partners/apps/registration-publish.png": "734184fab22320d2c473d25ee8218ee6ebaed5971787d1e1930057d0135cad8c", "static/images/docs/partners/apps/registration-secrets.png": "92e6ecff867e92d64aa6ceea0b67a711b7e1d715c9f3f99dc4df10e663a68aa0", + "static/images/docs/partners/apps/registration-support.png": "da585bd47fa71c9277a8f98a2b561c9fd31bc99a11a9169367a82bd3e744f8ae", "static/images/docs/platform/add-platform.png": "5a05bb9d75a8d5270bfa5e67df7e6de20a9fad174476a112b5bdab72e7bdad30", "static/images/docs/platform/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", "static/images/docs/platform/create-webhook.png": "77e08173da6ac534524e025433cf75e532d853a135944a7c6ba2278357d88b2d", diff --git a/src/routes/docs/partners/apps/+page.markdoc b/src/routes/docs/partners/apps/+page.markdoc index 6808f9f706..3d41f35baf 100644 --- a/src/routes/docs/partners/apps/+page.markdoc +++ b/src/routes/docs/partners/apps/+page.markdoc @@ -7,10 +7,10 @@ back: /docs Appwrite is an **OAuth 2.1 and OpenID Connect provider**. Your app can send any Appwrite user to a consent screen, ask for access to the projects and organizations they choose, and receive tokens that call their project APIs directly. This is **Sign in with Appwrite**: the same consent flow users know from "Sign in with Google", pointed at their Appwrite account and backend. -Before this, a tool that worked with a user's Appwrite project asked them to create an API key and paste it in. That key never expired unless they remembered it, carried whatever scopes they picked under pressure, and had to be repeated for every project. With Sign in with Appwrite, the user approves once, picks the projects your app can reach, and can revoke everything from their account page at any time. +Before this, a tool that worked with a user's Appwrite project asked them to create an API key and paste it in. The key carried whatever scopes and expiry the user picked at creation, worked for one project only, and lived outside their control once pasted. With Sign in with Appwrite, the user approves once, picks the projects your app can reach, and can revoke everything from their account page at any time. {% info title="Building your own provider?" %} -This section is for apps that build on top of Appwrite itself. To make your own product an OAuth provider so that third parties can offer "Sign in with your product", see the [OAuth2 server](/docs/products/auth/oauth-server) documentation. +This section is for apps that build on top of Appwrite itself. To make your own product an OAuth2 provider so that third parties can offer "Sign in with your product", see the [OAuth2 server](/docs/products/auth/oauth-server) documentation. {% /info %} # What you can build {% #what-you-can-build %} @@ -24,6 +24,13 @@ Your app authenticates the user once and then acts on their Appwrite resources w # How it works {% #how-it-works %} +{% only_dark %} +![Your app sends the user through the Appwrite consent screen and calls their projects with the issued tokens](/images/docs/partners/apps/dark/diagram-overview.avif) +{% /only_dark %} +{% only_light %} +![Your app sends the user through the Appwrite consent screen and calls their projects with the issued tokens](/images/docs/partners/apps/diagram-overview.avif) +{% /only_light %} + Sign in with Appwrite is the authorization code flow from OAuth 2.1, served by Appwrite. 1. **Your app redirects the user** to the Appwrite authorization endpoint with the scopes it needs. @@ -31,7 +38,7 @@ Sign in with Appwrite is the authorization code flow from OAuth 2.1, served by A 3. **Your app receives an authorization code** at its redirect URI and exchanges it for an access token, a refresh token, and an ID token. 4. **Your app calls Appwrite APIs** with the access token as a bearer token, on any of the granted projects, in any region. -Because the provider is spec-compliant, any OAuth or OIDC library works against the discovery document without Appwrite-specific code: +Because the provider is spec-compliant, any OAuth2 or OIDC library works against the discovery document without Appwrite-specific code: ```text https://cloud.appwrite.io/v1/oauth2/console/.well-known/openid-configuration @@ -46,7 +53,7 @@ Users stay in control after the redirect too. Every authorization appears on the Register an app and run the full flow, from consent to your first authorized API call. {% /cards_item %} {% cards_item href="/docs/partners/apps/registration" title="Registration" %} -Register your app in the Console or from code with the Apps API. +Register your app in the Console and shape its consent screen listing. {% /cards_item %} {% cards_item href="/docs/partners/apps/scopes" title="Scopes" %} The scope catalog and how grants target specific projects and organizations. diff --git a/src/routes/docs/partners/apps/consent/+page.markdoc b/src/routes/docs/partners/apps/consent/+page.markdoc index 92556f0442..1833c2f6ce 100644 --- a/src/routes/docs/partners/apps/consent/+page.markdoc +++ b/src/routes/docs/partners/apps/consent/+page.markdoc @@ -5,6 +5,13 @@ description: What users see on the Sign in with Appwrite consent screen, what th back: /docs/partners/apps --- +{% only_dark %} +![The consent screen turns your request into a granted token response or an access_denied redirect](/images/docs/partners/apps/dark/diagram-consent.avif) +{% /only_dark %} +{% only_light %} +![The consent screen turns your request into a granted token response or an access_denied redirect](/images/docs/partners/apps/diagram-consent.avif) +{% /only_light %} + Consent is where the user decides. Appwrite hosts the screen, renders what your app asked for, and gives the user the final say over scopes and targets. Your app never sees the screen; it sees the outcome. # The consent screen {% #consent-screen %} @@ -16,21 +23,34 @@ Consent is where the user decides. Appwrite hosts the screen, renders what your ![Consent screen showing app identity, requested permissions, and project selection](/images/docs/partners/apps/consent-screen.avif) {% /only_light %} -The screen leads with your app's identity: the name, logo, and tagline from [registration](/docs/partners/apps/registration), with the privacy policy and terms linked in the footer. Below it, each requested scope appears as a permission line in plain language, and a summary states the overall reach, from "view your identity" for a bare OIDC request up to full account access. +The screen is built from your [registration](/docs/partners/apps/registration) and your request: -When the request targets projects or organizations, the screen shows a picker. A wildcard request becomes a list of the user's resources to choose from; a request for named IDs shows those resources for confirmation. The user signs in first if no session exists, and can switch accounts from the screen itself. +- **Your app's identity**: the name, logo, and tagline you registered. +- **Permissions**: each requested scope as a plain-language line, under a one-line summary of the overall reach. +- **Project access**: a picker for the projects or organizations the grant covers when the request carries project or organization scopes. If your request named specific IDs, the picker shows them for confirmation instead. + +The user signs in first if no session exists, and can switch accounts from the screen itself. # Users can grant less {% #partial-grants %} -The user approves the request as a whole, a subset of it, or nothing. They deselect projects, drop scopes, and for agent-style grants toggle whole categories to read-only. Only `openid` always survives approval, so an approved flow always identifies the user. +What you request is not always what you get. On the consent screen, the user can: + +- Deselect projects. +- Drop scopes, or narrow them to read-only. +- Decline the whole request. + +Only `openid` always survives approval, so an approved flow always identifies the user. -Your app learns the outcome from the token response: `scope` holds the scopes that survived, `authorization_details` the targets. Build for partial grants from the start. A dashboard asked to read five projects but granted two should show two projects, not an error. +The token response tells you what you got: `scope` holds the granted scopes, `authorization_details` the granted projects. Build for this from the start. A dashboard that asked for five projects but got two should show two projects, not an error. # When the screen is skipped {% #consent-reuse %} -Appwrite remembers approvals. A returning user is redirected straight back to your app, without seeing the screen, when the new request stays inside the stored consent: no new scopes, and `authorization_details` identical to what was approved. The screen reappears when anything differs, including a request that omits `authorization_details` after a consent that had them, so send the same authorization parameters on every sign-in. +Appwrite remembers approvals. When a returning user's request asks for nothing new, they skip the screen and land straight back in your app. When anything differs from the stored approval, the screen reappears. Send the same authorization parameters on every sign-in and returning users sign in silently. -Two request parameters override this. `prompt=consent` forces the screen even when a matching consent exists, and `prompt=none` forbids it, returning `error=consent_required` or `error=login_required` instead of showing UI. Use `prompt=none` to probe for existing access silently. +Two `prompt` values override this: + +- `prompt=consent` always shows the screen, even when an approval exists. +- `prompt=none` never shows it, returning `error=consent_required` or `error=login_required` instead. Use it to check for existing access silently. # Revocation {% #revocation %} @@ -41,6 +61,8 @@ Two request parameters override this. `prompt=consent` forces the screen even wh ![Account applications page listing authorized apps with their token families](/images/docs/partners/apps/account-applications.avif) {% /only_light %} -Every consent appears on the user's account applications page, which lists each authorized app, the scopes it holds, and the tokens issued under it. The user revokes a single token or the whole consent; revoking the consent invalidates every token your app holds for that user. +Every approval appears on the user's account applications page. From there, the user revokes a single token or the whole app, which kills every token your app holds for them. + +Your app gets no notification. Calls and refreshes start returning `401`, and the fix is to send the user through authorization again. -Your app sees revocation as failure, not as a message: token refreshes and API calls start returning `401`. Handle it by sending the user through authorization again. To leave cleanly, delete on your side too: revoke the tokens you hold at the [revocation endpoint](/docs/partners/apps/tokens#revocation) when a user disconnects your app. +Revocation goes both ways: when a user disconnects your app on your side, revoke the tokens you hold at the [revocation endpoint](/docs/partners/apps/tokens#revocation). diff --git a/src/routes/docs/partners/apps/quick-start/+page.markdoc b/src/routes/docs/partners/apps/quick-start/+page.markdoc index 86453b8101..f0166845bf 100644 --- a/src/routes/docs/partners/apps/quick-start/+page.markdoc +++ b/src/routes/docs/partners/apps/quick-start/+page.markdoc @@ -5,7 +5,13 @@ description: Register an app and run the full Sign in with Appwrite flow, from c back: /docs/partners/apps --- -This guide builds Sign in with Appwrite into an app, start to finish. The running example is Horizon, a deployment dashboard: a user clicks its sign-in button, approves access on the Appwrite consent screen, and Horizon reads their projects with the tokens it receives. By the end, you will have run the same journey with your own app. +This guide builds Sign in with Appwrite into an app, start to finish. The running example is Horizon, a deployment dashboard: + +- A user clicks its sign-in button. +- They approve access on the Appwrite consent screen. +- Horizon reads their projects with the tokens it receives. + +By the end, you will have run the same journey with your own app. You need a server that can receive a redirect and keep a client secret. The examples use `http://localhost:7700/oauth/callback` as the redirect URI; replace it with your own. @@ -27,7 +33,10 @@ Before Appwrite can show your app to anyone, it needs to know the app exists. In ![OAuth client page with client type and redirect URIs](/images/docs/partners/apps/registration-oauth-client.avif) {% /only_light %} -The new app opens on its settings pages. On **OAuth client**, keep the type **Confidential**, since your server will hold a secret, and add your redirect URI to the list. The authorization endpoint refuses to send users anywhere else, which is what makes the callback trustworthy. +The new app opens on its settings pages. Go to **OAuth client** and configure two things: + +- **Client type**: keep **Confidential**. Your app has a server, and the server will hold the client secret. +- **Redirect URIs**: add your callback URL, `http://localhost:7700/oauth/callback` in this guide. After the user approves, Appwrite only ever redirects to a URL on this list, so a stolen client ID cannot send your users anywhere else. {% only_dark %} ![OAuth secrets page with active secrets](/images/docs/partners/apps/dark/registration-secrets.avif) @@ -38,332 +47,26 @@ The new app opens on its settings pages. On **OAuth client**, keep the type **Co Last, your app needs a way to prove it is really Horizon when it exchanges codes for tokens. On **OAuth secrets**, select **Create secret** and copy the value; it is shown once. Store the client ID and the secret in your server's environment. -The same registration works from code with the `apps` service, which is how you would script it in CI or offer it inside your own product: - -{% multicode %} -```server-nodejs -import { Client, Apps, ID } from 'node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const app = await apps.create({ - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['http://localhost:7700/oauth/callback'], - type: 'confidential' -}); - -const secret = await apps.createSecret({ appId: app.$id }); -``` - -```server-deno -import { Client, Apps, ID } from 'npm:node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const app = await apps.create({ - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['http://localhost:7700/oauth/callback'], - type: 'confidential' -}); - -const secret = await apps.createSecret({ appId: app.$id }); -``` - -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps -from appwrite.id import ID - -client = Client() -client.set_endpoint('https://cloud.appwrite.io/v1') -client.set_project('console') -client.set_session('') # Your Appwrite account session - -apps = Apps(client) - -app = apps.create( - app_id = ID.unique(), - name = 'Horizon', - redirect_uris = ['http://localhost:7700/oauth/callback'], - type = 'confidential' -) - -secret = apps.create_secret(app_id = app.id) -``` - -```server-php -setEndpoint('https://cloud.appwrite.io/v1') - ->setProject('console') - ->setSession(''); // Your Appwrite account session - -$apps = new Apps($client); - -$app = $apps->create( - appId: ID::unique(), - name: 'Horizon', - redirectUris: ['http://localhost:7700/oauth/callback'], - type: 'confidential' -); - -$secret = $apps->createSecret(appId: $app['$id']); -``` - -```server-ruby -require 'appwrite' - -include Appwrite - -client = Client.new - .set_endpoint('https://cloud.appwrite.io/v1') - .set_project('console') - .set_session('') # Your Appwrite account session - -apps = Apps.new(client) - -app = apps.create( - app_id: ID.unique(), - name: 'Horizon', - redirect_uris: ['http://localhost:7700/oauth/callback'], - type: 'confidential' -) - -secret = apps.create_secret(app_id: app.id) -``` - -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; - -Client client = Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -Apps apps = Apps(client); - -App app = await apps.create( - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['http://localhost:7700/oauth/callback'], - type: 'confidential', -); - -AppSecretPlaintext secret = await apps.createSecret(appId: app.$id); -``` - -```server-kotlin -import io.appwrite.Client -import io.appwrite.ID -import io.appwrite.services.Apps - -val client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -val apps = Apps(client) - -val app = apps.create( - appId = ID.unique(), - name = "Horizon", - redirectUris = listOf("http://localhost:7700/oauth/callback"), - type = "confidential" -) - -val secret = apps.createSecret(appId = app.id) -``` - -```server-java -import io.appwrite.Client; -import io.appwrite.ID; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Apps; - -Client client = new Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -apps.create( - ID.unique(), // appId - "Horizon", // name - List.of("http://localhost:7700/oauth/callback"), // redirectUris - null, // description - null, // clientUri - null, // logoUri - null, // privacyPolicyUrl - null, // termsUrl - null, // contacts - null, // tagline - null, // tags - null, // images - null, // supportUrl - null, // dataDeletionUrl - null, // postLogoutRedirectUris - null, // enabled - "confidential", // type - null, // deviceFlow - null, // teamId - new CoroutineCallback<>((app, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } - - System.out.println(app); - }) -); -``` - -```server-swift -import Appwrite - -let client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -let apps = Apps(client) - -let app = try await apps.create( - appId: ID.unique(), - name: "Horizon", - redirectUris: ["http://localhost:7700/oauth/callback"], - type: "confidential" -) - -let secret = try await apps.createSecret(appId: app.id) -``` - -```server-dotnet -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; - -Client client = new Client() - .SetEndPoint("https://cloud.appwrite.io/v1") - .SetProject("console") - .SetSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -App app = await apps.Create( - appId: ID.Unique(), - name: "Horizon", - redirectUris: new List { "http://localhost:7700/oauth/callback" }, - type: "confidential" -); - -AppSecretPlaintext secret = await apps.CreateSecret(appId: app.Id); -``` - -```server-go -package main - -import ( - "fmt" - - "github.com/appwrite/sdk-for-go/apps" - "github.com/appwrite/sdk-for-go/client" - "github.com/appwrite/sdk-for-go/id" -) - -func main() { - c := client.New( - client.WithEndpoint("https://cloud.appwrite.io/v1"), - client.WithProject("console"), - client.WithSession(""), // Your Appwrite account session - ) - - service := apps.New(c) - - app, err := service.Create( - id.Unique(), - "Horizon", - []string{"http://localhost:7700/oauth/callback"}, - apps.WithCreateType("confidential"), - ) - if err != nil { - panic(err) - } - - secret, err := service.CreateSecret(app.Id) - if err != nil { - panic(err) - } - - fmt.Println(secret) -} -``` - -```server-rust -use appwrite::Client; -use appwrite::id::ID; -use appwrite::services::Apps; +[Registration](/docs/partners/apps/registration) covers the Console pages in more detail. -#[tokio::main] -async fn main() -> Result<(), Box> { - let client = Client::new(); - client.set_endpoint("https://cloud.appwrite.io/v1"); - client.set_project("console"); - client.set_session(""); // Your Appwrite account session - - let apps = Apps::new(&client); - - let app = apps.create( - &ID::unique(), - "Horizon", - vec!["http://localhost:7700/oauth/callback"], - None, None, None, None, None, None, None, None, None, None, None, None, None, - Some("confidential"), - None, None, - ).await?; - - let secret = apps.create_secret(&app.id).await?; - println!("{}", secret.secret); // Shown only once - - Ok(()) -} -``` -{% /multicode %} +# Redirect the user {% #redirect %} -[Registration](/docs/partners/apps/registration) covers both paths in detail. +With credentials in your environment, Horizon can offer a Sign in with Appwrite button. The button sends the user to the authorization endpoint. -# Redirect the user {% #redirect %} +The query string carries everything your app asks for: -With credentials in your environment, Horizon can offer its sign-in button. The button sends the user to the authorization endpoint, and the query string carries everything your app asks for: identity scopes, one project scope, and an `authorization_details` parameter that lets the user pick which projects the grant applies to. +- Identity scopes, so Horizon knows who signed in. +- One project scope, `project:tables.read`, for the data it needs. ```text https://cloud.appwrite.io/v1/oauth2/console/authorize ?client_id= &redirect_uri=http://localhost:7700/oauth/callback &response_type=code - &scope=openid profile email project:databases.read - &state= - &authorization_details=[{"type":"project","identifiers":["*"]}] + &scope=openid profile email project:tables.read ``` -URL-encode the values. Generate a fresh random `state` per request and verify it on the way back; it is your protection against forged callbacks. The wildcard identifier asks for any project, which the consent screen turns into a picker the user controls. Scopes are described in the [scope catalog](/docs/partners/apps/scopes). +URL-encode the values. Because the request carries a project scope, the consent screen asks the user which projects the grant covers. Scopes are described in the [scope catalog](/docs/partners/apps/scopes). # User grants access {% #consent %} @@ -377,10 +80,10 @@ URL-encode the values. Generate a fresh random `state` per request and verify it This is the moment the user meets your app inside Appwrite. The consent screen shows Horizon's name and logo, lists each requested permission in plain language, and lets the user select the projects the grant covers or reduce the access to read-only. On approval, the browser returns to your redirect URI: ```text -http://localhost:7700/oauth/callback?code=&state=&iss=https://cloud.appwrite.io/v1/oauth2/console +http://localhost:7700/oauth/callback?code=&iss=https://cloud.appwrite.io/v1/oauth2/console ``` -Verify that `state` matches what you sent, then use the code within five minutes. It is single-use. +Use the code within five minutes. It is single-use. # Exchange the code {% #exchange %} @@ -415,282 +118,173 @@ The response carries the three tokens and echoes what the user actually granted: "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:databases.read", + "scope": "openid profile email project:tables.read", "authorization_details": [{ "type": "project", "identifiers": ["*"] }], "id_token": "eyJhbGciOiJSUzI1NiJ9..." } ``` -Compare `scope` and `authorization_details` against what you requested; the user may have granted less. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. +Check `scope` for the scopes that survived consent and `authorization_details` for the projects the user selected; both may be less than you asked for. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. -# List the user's projects {% #list-projects %} +# Verify the token {% #verify-token %} -The user is signed in and Horizon holds its tokens. Now the payoff: every Sign in with Appwrite token can list the projects and organizations it was granted. Pass the access token as a bearer token with any Appwrite Server SDK. +Horizon does not need to trust its own bookkeeping. At any point, it can ask Appwrite what a token is worth by introspecting it, authenticated with the same client credentials: {% multicode %} -```server-nodejs -import { Client, Oauth2 } from 'node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setBearer('Bearer '); // The user's access token - -const oauth2 = new Oauth2(client); - -const projects = await oauth2.listProjects(); -``` - -```server-deno -import { Client, Oauth2 } from 'npm:node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setBearer('Bearer '); // The user's access token - -const oauth2 = new Oauth2(client); - -const projects = await oauth2.listProjects(); -``` - -```server-python -from appwrite.client import Client -from appwrite.services.oauth2 import Oauth2 - -client = Client() -client.set_endpoint('https://cloud.appwrite.io/v1') -client.set_project('console') -client.set_bearer('Bearer ') # The user's access token - -oauth2 = Oauth2(client) - -projects = oauth2.list_projects() -``` - -```server-php -setEndpoint('https://cloud.appwrite.io/v1') - ->setProject('console') - ->setBearer('Bearer '); // The user's access token - -$oauth2 = new Oauth2($client); - -$projects = $oauth2->listProjects(); -``` - -```server-ruby -require 'appwrite' - -include Appwrite - -client = Client.new - .set_endpoint('https://cloud.appwrite.io/v1') - .set_project('console') - .set_bearer('Bearer ') # The user's access token - -oauth2 = Oauth2.new(client) - -projects = oauth2.list_projects -``` - -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; - -Client client = Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setBearer('Bearer '); // The user's access token - -Oauth2 oauth2 = Oauth2(client); - -Oauth2ProjectList projects = await oauth2.listProjects(); +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ + -u ":" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "token=" ``` -```server-kotlin -import io.appwrite.Client -import io.appwrite.services.Oauth2 - -val client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setBearer("Bearer ") // The user's access token - -val oauth2 = Oauth2(client) - -val projects = oauth2.listProjects() +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/introspect +[BasicAuth] +: +[Form] +token: ``` +{% /multicode %} -```server-java -import io.appwrite.Client; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Oauth2; - -Client client = new Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setBearer("Bearer "); // The user's access token - -Oauth2 oauth2 = new Oauth2(client); +A live token comes back with everything the grant holds: -oauth2.listProjects( - null, // limit (optional) - null, // offset (optional) - null, // search (optional) - new CoroutineCallback<>((projects, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } - - System.out.println(projects); - }) -); +```json +{ + "active": true, + "scope": "openid profile email project:tables.read", + "client_id": "horizon", + "token_type": "Bearer", + "sub": "6a150ace003bc4c2919e", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "exp": 1784737416, + "token_use": "access_token" +} ``` -```server-swift -import Appwrite +An expired or revoked token returns only `{ "active": false }`. This is the authoritative check: it reflects revocation the moment it happens, which decoding the JWT yourself cannot. -let client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setBearer("Bearer ") // The user's access token +# List the user's projects {% #list-projects %} -let oauth2 = Oauth2(client) +The user is signed in and Horizon holds its tokens. Now the payoff: every Sign in with Appwrite token can list the projects and organizations it was granted. Call the listing endpoint with the access token as a bearer token. -let projects = try await oauth2.listProjects() +{% multicode %} +```curl +curl https://cloud.appwrite.io/v1/oauth2/console/projects \ + -H "Authorization: Bearer " ``` -```server-dotnet -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; - -Client client = new Client() - .SetEndPoint("https://cloud.appwrite.io/v1") - .SetProject("console") - .SetBearer("Bearer "); // The user's access token - -Oauth2 oauth2 = new Oauth2(client); - -Oauth2ProjectList projects = await oauth2.ListProjects(); +```hurl +GET https://cloud.appwrite.io/v1/oauth2/console/projects +Authorization: Bearer ``` +{% /multicode %} -```server-go -package main - -import ( - "fmt" - - "github.com/appwrite/sdk-for-go/client" - "github.com/appwrite/sdk-for-go/oauth2" -) - -func main() { - c := client.New( - client.WithEndpoint("https://cloud.appwrite.io/v1"), - client.WithProject("console"), - client.WithBearer("Bearer "), // The user's access token - ) - - service := oauth2.New(c) +The response lists every project the grant covers: - projects, err := service.ListProjects() - if err != nil { - panic(err) +```json +{ + "total": 2, + "projects": [ + { + "$id": "6a357f7e001c7237296b", + "region": "fra", + "endpoint": "https://fra.cloud.appwrite.io/v1" + }, + { + "$id": "6a357fa40031c857fa9f", + "region": "nyc", + "endpoint": "https://nyc.cloud.appwrite.io/v1" } - - fmt.Println(projects) + ] } ``` -```server-rust -use appwrite::Client; -use appwrite::services::Oauth2; +Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. -#[tokio::main] -async fn main() -> Result<(), Box> { - let client = Client::new(); - client.set_endpoint("https://cloud.appwrite.io/v1"); - client.set_project("console"); - client.set_bearer("Bearer "); // The user's access token +# Call a project API {% #call-project-api %} - let oauth2 = Oauth2::new(&client); +The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:tables.read`, that is reading the tables of a database in the project. - let projects = oauth2.list_projects(None, None, None).await?; - println!("{:?}", projects.projects); +{% info title="No SDK required" %} +Prefer not to use an SDK? The cURL and Hurl tabs show the raw API call: the project's endpoint, the `X-Appwrite-Project` header, and the access token in the `Authorization` header. Every Appwrite API accepts the same shape. +{% /info %} - Ok(()) -} +{% multicode %} +```curl +curl "/tablesdb//tables" \ + -H "X-Appwrite-Project: " \ + -H "Authorization: Bearer " ``` -{% /multicode %} - -Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. -# Call a project API {% #call-project-api %} - -The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:databases.read`, that is the read side of Databases. +```hurl +GET /tablesdb//tables +X-Appwrite-Project: +Authorization: Bearer +``` -{% multicode %} ```server-nodejs -import { Client, Databases } from 'node-appwrite'; +import { Client, TablesDB } from 'node-appwrite'; const client = new Client() .setEndpoint('') // From the project listing .setProject('') .setBearer('Bearer '); // The same access token -const databases = new Databases(client); +const tablesDB = new TablesDB(client); -const result = await databases.list(); +const result = await tablesDB.listTables({ + databaseId: '' +}); ``` ```server-deno -import { Client, Databases } from 'npm:node-appwrite'; +import { Client, TablesDB } from 'npm:node-appwrite'; const client = new Client() .setEndpoint('') // From the project listing .setProject('') .setBearer('Bearer '); // The same access token -const databases = new Databases(client); +const tablesDB = new TablesDB(client); -const result = await databases.list(); +const result = await tablesDB.listTables({ + databaseId: '' +}); ``` ```server-python from appwrite.client import Client -from appwrite.services.databases import Databases +from appwrite.services.tables_db import TablesDB client = Client() client.set_endpoint('') # From the project listing client.set_project('') client.set_bearer('Bearer ') # The same access token -databases = Databases(client) +tables_db = TablesDB(client) -result = databases.list() +result = tables_db.list_tables( + database_id = '' +) ``` ```server-php setEndpoint('') // From the project listing ->setProject('') ->setBearer('Bearer '); // The same access token -$databases = new Databases($client); +$tablesDB = new TablesDB($client); -$result = $databases->list(); +$result = $tablesDB->listTables( + databaseId: '' +); ``` ```server-ruby @@ -703,9 +297,11 @@ client = Client.new .set_project('') .set_bearer('Bearer ') # The same access token -databases = Databases.new(client) +tables_db = TablesDB.new(client) -result = databases.list +result = tables_db.list_tables( + database_id: '' +) ``` ```server-dart @@ -716,38 +312,43 @@ Client client = Client() .setProject('') .setBearer('Bearer '); // The same access token -Databases databases = Databases(client); +TablesDB tablesDB = TablesDB(client); -DatabaseList result = await databases.list(); +TableList result = await tablesDB.listTables( + databaseId: '', +); ``` ```server-kotlin import io.appwrite.Client -import io.appwrite.services.Databases +import io.appwrite.services.TablesDB val client = Client() .setEndpoint("") // From the project listing .setProject("") .setBearer("Bearer ") // The same access token -val databases = Databases(client) +val tablesDB = TablesDB(client) -val result = databases.list() +val result = tablesDB.listTables( + databaseId = "" +) ``` ```server-java import io.appwrite.Client; import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Databases; +import io.appwrite.services.TablesDB; Client client = new Client() .setEndpoint("") // From the project listing .setProject("") .setBearer("Bearer "); // The same access token -Databases databases = new Databases(client); +TablesDB tablesDB = new TablesDB(client); -databases.list( +tablesDB.listTables( + "", // databaseId null, // queries (optional) null, // search (optional) null, // total (optional) @@ -770,9 +371,11 @@ let client = Client() .setProject("") .setBearer("Bearer ") // The same access token -let databases = Databases(client) +let tablesDB = TablesDB(client) -let result = try await databases.list() +let tableList = try await tablesDB.listTables( + databaseId: "" +) ``` ```server-dotnet @@ -785,9 +388,11 @@ Client client = new Client() .SetProject("") .SetBearer("Bearer "); // The same access token -Databases databases = new Databases(client); +TablesDB tablesDB = new TablesDB(client); -DatabaseList result = await databases.List(); +TableList result = await tablesDB.ListTables( + databaseId: "" +); ``` ```server-go @@ -797,7 +402,7 @@ import ( "fmt" "github.com/appwrite/sdk-for-go/client" - "github.com/appwrite/sdk-for-go/databases" + "github.com/appwrite/sdk-for-go/tablesdb" ) func main() { @@ -807,9 +412,9 @@ func main() { client.WithBearer("Bearer "), // The same access token ) - service := databases.New(c) + service := tablesdb.New(c) - result, err := service.List() + result, err := service.ListTables("") if err != nil { panic(err) } @@ -820,7 +425,7 @@ func main() { ```server-rust use appwrite::Client; -use appwrite::services::Databases; +use appwrite::services::TablesDB; #[tokio::main] async fn main() -> Result<(), Box> { @@ -829,9 +434,9 @@ async fn main() -> Result<(), Box> { client.set_project(""); client.set_bearer("Bearer "); // The same access token - let databases = Databases::new(&client); + let tables_db = TablesDB::new(&client); - let result = databases.list(None, None, None).await?; + let result = tables_db.list_tables("", None, None, None).await?; println!("{:?}", result.total); Ok(()) @@ -850,7 +455,14 @@ A call outside the granted scopes or projects fails with a `401` error of type ` ![Appwrite provider settings with quick setup filling credentials from an organization app](/images/docs/partners/apps/quick-start-provider-setup.avif) {% /only_light %} -If your product itself runs on an Appwrite project, you do not need to handle the flow by hand. Appwrite Auth ships an **Appwrite** OAuth provider. In your project, open **Auth** and then **Social providers**, select **Appwrite**, and use **Quick setup** to create or pick an organization app; Appwrite registers the callback URI and fills the client ID and secret for you. Then sign users in with the same call you would use for GitHub or Google. +If your product itself runs on an Appwrite project, you do not need to handle the flow by hand. Appwrite Auth ships an **Appwrite** OAuth2 provider. + +To enable it: + +- In your project, open **Auth**, then **Social providers**, and select **Appwrite**. +- Use **Quick setup** to create or pick an organization app. Appwrite registers the callback URI and fills in the client ID and secret. + +Then sign users in with the same call you would use for GitHub or Google: {% multicode %} ```client-web @@ -865,7 +477,8 @@ const account = new Account(client); account.createOAuth2Session({ provider: OAuthProvider.Appwrite, success: 'https://example.com/success', - failure: 'https://example.com/failure' + failure: 'https://example.com/failure', + scopes: ['project:tables.read'] }); ``` @@ -881,6 +494,7 @@ Account account = Account(client); await account.createOAuth2Session( provider: OAuthProvider.appwrite, + scopes: ['project:tables.read'], ); ``` @@ -895,7 +509,8 @@ let client = Client() let account = Account(client) try await account.createOAuth2Session( - provider: .appwrite + provider: .appwrite, + scopes: ["project:tables.read"] ) ``` @@ -913,6 +528,7 @@ val account = Account(client) account.createOAuth2Session( activity = activity, provider = OAuthProvider.APPWRITE, + scopes = listOf("project:tables.read"), ) ``` @@ -928,12 +544,17 @@ const account = new Account(client); account.createOAuth2Token({ provider: OAuthProvider.Appwrite, success: '', - failure: '' + failure: '', + scopes: ['project:tables.read'] }); ``` {% /multicode %} -The provider requests the identity scopes, signs the user into your project, and stores the issued tokens on the user's [identity](/docs/products/auth/identities). Use this when you want "Sign in with Appwrite" as a login method; use the manual flow above when your app needs scoped access to the user's projects. +The provider always requests the identity scopes. The `scopes` parameter adds project scopes on top, and the consent screen lets the user select which projects they apply to. + +After sign-in, the issued tokens live on the user's [identity](/docs/products/auth/identities). Your backend reads them from there to call the granted projects. + +Use this path when your product runs on Appwrite. Use the manual flow above when you want to handle the tokens yourself. # Next steps {% #next-steps %} diff --git a/src/routes/docs/partners/apps/registration/+page.markdoc b/src/routes/docs/partners/apps/registration/+page.markdoc index 6959be06a4..526e0d7faf 100644 --- a/src/routes/docs/partners/apps/registration/+page.markdoc +++ b/src/routes/docs/partners/apps/registration/+page.markdoc @@ -1,16 +1,11 @@ --- layout: article title: Registration -description: Register your app for Sign in with Appwrite through the Console or the Apps API. +description: Register your app for Sign in with Appwrite through the Console. back: /docs/partners/apps --- -Your app appears on the consent screen as a registered client: a name, a logo, and a set of credentials tied to redirect URIs. Appwrite gives you two ways to register: the Console for people, the Apps API for code. - -| Method | Best for | Credentials | -| --- | --- | --- | -| [Console](#console) | Products with a marketplace listing: a logo, legal pages, managed secrets | Client ID and secrets you manage | -| [Apps API](#apps-api) | The same apps, managed from code | Client ID and secrets you manage | +Your app appears on the consent screen as a registered client: a name, a logo, and a set of credentials tied to redirect URIs. Registration happens in the Console, in your organization's Marketplace tab. # Client types {% #client-types %} @@ -32,7 +27,18 @@ Choose confidential whenever a server takes part in the flow. Public exists for Register through the Console when your app is a product: the same flow that creates the client also builds its marketplace listing. In your organization, open the **Marketplace** tab and click **Add app**. Give the app a name, a slug, a category, and a description. The slug becomes the app's client ID, and the app starts as a draft that only your organization sees. -The app's pages hold everything else, split across **General**, **OAuth client**, **OAuth secrets**, **Legal**, **Support**, and **Publish**. +Once created, the app opens on its settings pages. Each page below is one of them, and every page has an **Update** button that saves that page's fields. + +## General {% #console-general %} + +{% only_dark %} +![General page with the app name, tagline, description, and category fields](/images/docs/partners/apps/dark/registration-general.avif) +{% /only_dark %} +{% only_light %} +![General page with the app name, tagline, description, and category fields](/images/docs/partners/apps/registration-general.avif) +{% /only_light %} + +The **General** page holds the app's identity: its name, a one-line tagline, a longer description, and a category. The name appears on the consent screen; all four appear on the marketplace listing. This page also shows the app ID and the control to delete the app. ## OAuth client {% #console-oauth-client %} @@ -54,613 +60,43 @@ The **OAuth client** page sets the protocol details: the [client type](#client-t ![OAuth secrets page listing an active secret with its hint](/images/docs/partners/apps/registration-secrets.avif) {% /only_light %} -The **OAuth secrets** page issues client secrets for confidential apps. Each secret's value appears once, at creation; store it in your deployment environment before closing the dialog. The list keeps only a hint of each secret, its creation date, and when it was last used. See [Secrets](#secrets) for the rotation workflow. - -## Publish {% #console-publish %} - -**Legal** and **Support** hold the privacy policy, terms of service, data deletion, and contact details that the consent screen links. When the listing is complete, the **Publish** page makes the app visible in the marketplace catalog for every organization. Publishing changes discovery, not authorization: users consent to your app the same way whether it is a draft or published. - -# Apps API {% #apps-api %} - -Everything the Console does, the `apps` service does from code. Authenticate with your Appwrite account's session; the apps you create belong to you, or to a team you pass in `teamId`. - -{% multicode %} -```server-nodejs -import { Client, Apps, ID } from 'node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const app = await apps.create({ - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logoUri: 'https://horizon.example.com/logo.png', - clientUri: 'https://horizon.example.com', - privacyPolicyUrl: 'https://horizon.example.com/privacy', - termsUrl: 'https://horizon.example.com/terms', - type: 'confidential' -}); -``` - -```server-deno -import { Client, Apps, ID } from 'npm:node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const app = await apps.create({ - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logoUri: 'https://horizon.example.com/logo.png', - clientUri: 'https://horizon.example.com', - privacyPolicyUrl: 'https://horizon.example.com/privacy', - termsUrl: 'https://horizon.example.com/terms', - type: 'confidential' -}); -``` - -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps -from appwrite.id import ID - -client = Client() -client.set_endpoint('https://cloud.appwrite.io/v1') -client.set_project('console') -client.set_session('') # Your Appwrite account session - -apps = Apps(client) - -app = apps.create( - app_id = ID.unique(), - name = 'Horizon', - redirect_uris = ['https://horizon.example.com/oauth/callback'], - description = 'Deployment dashboard for your Appwrite projects.', - tagline = 'Ship from one place', - logo_uri = 'https://horizon.example.com/logo.png', - client_uri = 'https://horizon.example.com', - privacy_policy_url = 'https://horizon.example.com/privacy', - terms_url = 'https://horizon.example.com/terms', - type = 'confidential' -) -``` - -```server-php -setEndpoint('https://cloud.appwrite.io/v1') - ->setProject('console') - ->setSession(''); // Your Appwrite account session - -$apps = new Apps($client); - -$app = $apps->create( - appId: ID::unique(), - name: 'Horizon', - redirectUris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logoUri: 'https://horizon.example.com/logo.png', - clientUri: 'https://horizon.example.com', - privacyPolicyUrl: 'https://horizon.example.com/privacy', - termsUrl: 'https://horizon.example.com/terms', - type: 'confidential' -); -``` - -```server-ruby -require 'appwrite' - -include Appwrite - -client = Client.new - .set_endpoint('https://cloud.appwrite.io/v1') - .set_project('console') - .set_session('') # Your Appwrite account session - -apps = Apps.new(client) - -app = apps.create( - app_id: ID.unique(), - name: 'Horizon', - redirect_uris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logo_uri: 'https://horizon.example.com/logo.png', - client_uri: 'https://horizon.example.com', - privacy_policy_url: 'https://horizon.example.com/privacy', - terms_url: 'https://horizon.example.com/terms', - type: 'confidential' -) -``` - -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; - -Client client = Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -Apps apps = Apps(client); - -App app = await apps.create( - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logoUri: 'https://horizon.example.com/logo.png', - clientUri: 'https://horizon.example.com', - privacyPolicyUrl: 'https://horizon.example.com/privacy', - termsUrl: 'https://horizon.example.com/terms', - type: 'confidential', -); -``` - -```server-kotlin -import io.appwrite.Client -import io.appwrite.ID -import io.appwrite.services.Apps - -val client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -val apps = Apps(client) - -val app = apps.create( - appId = ID.unique(), - name = "Horizon", - redirectUris = listOf("https://horizon.example.com/oauth/callback"), - description = "Deployment dashboard for your Appwrite projects.", - tagline = "Ship from one place", - logoUri = "https://horizon.example.com/logo.png", - clientUri = "https://horizon.example.com", - privacyPolicyUrl = "https://horizon.example.com/privacy", - termsUrl = "https://horizon.example.com/terms", - type = "confidential" -) -``` - -```server-java -import io.appwrite.Client; -import io.appwrite.ID; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Apps; - -Client client = new Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -apps.create( - ID.unique(), // appId - "Horizon", // name - List.of("https://horizon.example.com/oauth/callback"), // redirectUris - "Deployment dashboard for your Appwrite projects.", // description - "https://horizon.example.com", // clientUri - "https://horizon.example.com/logo.png", // logoUri - "https://horizon.example.com/privacy", // privacyPolicyUrl - "https://horizon.example.com/terms", // termsUrl - null, // contacts - "Ship from one place", // tagline - null, // tags - null, // images - null, // supportUrl - null, // dataDeletionUrl - null, // postLogoutRedirectUris - null, // enabled - "confidential", // type - null, // deviceFlow - null, // teamId - new CoroutineCallback<>((app, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } - - System.out.println(app); - }) -); -``` - -```server-swift -import Appwrite - -let client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -let apps = Apps(client) - -let app = try await apps.create( - appId: ID.unique(), - name: "Horizon", - redirectUris: ["https://horizon.example.com/oauth/callback"], - description: "Deployment dashboard for your Appwrite projects.", - tagline: "Ship from one place", - logoUri: "https://horizon.example.com/logo.png", - clientUri: "https://horizon.example.com", - privacyPolicyUrl: "https://horizon.example.com/privacy", - termsUrl: "https://horizon.example.com/terms", - type: "confidential" -) -``` - -```server-dotnet -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; - -Client client = new Client() - .SetEndPoint("https://cloud.appwrite.io/v1") - .SetProject("console") - .SetSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -App app = await apps.Create( - appId: ID.Unique(), - name: "Horizon", - redirectUris: new List { "https://horizon.example.com/oauth/callback" }, - description: "Deployment dashboard for your Appwrite projects.", - tagline: "Ship from one place", - logoUri: "https://horizon.example.com/logo.png", - clientUri: "https://horizon.example.com", - privacyPolicyUrl: "https://horizon.example.com/privacy", - termsUrl: "https://horizon.example.com/terms", - type: "confidential" -); -``` - -```server-go -package main - -import ( - "fmt" - - "github.com/appwrite/sdk-for-go/apps" - "github.com/appwrite/sdk-for-go/client" - "github.com/appwrite/sdk-for-go/id" -) - -func main() { - c := client.New( - client.WithEndpoint("https://cloud.appwrite.io/v1"), - client.WithProject("console"), - client.WithSession(""), // Your Appwrite account session - ) - - service := apps.New(c) - - app, err := service.Create( - id.Unique(), - "Horizon", - []string{"https://horizon.example.com/oauth/callback"}, - apps.WithCreateDescription("Deployment dashboard for your Appwrite projects."), - apps.WithCreateTagline("Ship from one place"), - apps.WithCreateLogoUri("https://horizon.example.com/logo.png"), - apps.WithCreateClientUri("https://horizon.example.com"), - apps.WithCreatePrivacyPolicyUrl("https://horizon.example.com/privacy"), - apps.WithCreateTermsUrl("https://horizon.example.com/terms"), - apps.WithCreateType("confidential"), - ) - if err != nil { - panic(err) - } - - fmt.Println(app) -} -``` - -```server-rust -use appwrite::Client; -use appwrite::id::ID; -use appwrite::services::Apps; - -#[tokio::main] -async fn main() -> Result<(), Box> { - let client = Client::new(); - client.set_endpoint("https://cloud.appwrite.io/v1"); - client.set_project("console"); - client.set_session(""); // Your Appwrite account session - - let apps = Apps::new(&client); - - let app = apps.create( - &ID::unique(), - "Horizon", - vec!["https://horizon.example.com/oauth/callback"], - Some("Deployment dashboard for your Appwrite projects."), - Some("https://horizon.example.com"), - Some("https://horizon.example.com/logo.png"), - Some("https://horizon.example.com/privacy"), - Some("https://horizon.example.com/terms"), - None, - Some("Ship from one place"), - None, - None, - None, - None, - None, - None, - Some("confidential"), - None, - None, - ).await?; - - println!("{}", app.id); - - Ok(()) -} -``` -{% /multicode %} +The **OAuth secrets** page issues client secrets for confidential apps. Each secret's value appears once, at creation; store it in your deployment environment before closing the dialog. The list keeps only a hint of each secret, its creation date, and when it was last used. -The consent screen shows the name, logo, and tagline on the authorization card, and links the privacy policy and terms of service in its footer. `description`, `tags`, `images`, `supportUrl`, `dataDeletionUrl`, and `contacts` complete the listing where apps are browsed. +An app holds several active secrets at once, so rotation needs no downtime: create a new secret, deploy it, then delete the old one. The last-used timestamp tells you when the old secret is safe to delete. -Redirect URIs match exactly, with one exception: public clients may register loopback URIs (`http://127.0.0.1`, `http://localhost`), which match on any port. Redirect URIs must use HTTPS, a loopback address, or a private-use scheme such as `com.example.app:/callback` for native apps. +## Legal {% #console-legal %} -# Secrets {% #secrets %} - -Confidential clients authenticate with a secret. Create one after registering: - -{% multicode %} -```server-nodejs -import { Client, Apps } from 'node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const secret = await apps.createSecret({ - appId: '' -}); - -console.log(secret.secret); // Shown only once -``` - -```server-deno -import { Client, Apps } from 'npm:node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const secret = await apps.createSecret({ - appId: '' -}); - -console.log(secret.secret); // Shown only once -``` - -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps - -client = Client() -client.set_endpoint('https://cloud.appwrite.io/v1') -client.set_project('console') -client.set_session('') # Your Appwrite account session - -apps = Apps(client) - -secret = apps.create_secret( - app_id = '' -) - -print(secret.secret) # Shown only once -``` - -```server-php -setEndpoint('https://cloud.appwrite.io/v1') - ->setProject('console') - ->setSession(''); // Your Appwrite account session - -$apps = new Apps($client); - -$secret = $apps->createSecret( - appId: '' -); - -echo $secret['secret']; // Shown only once -``` - -```server-ruby -require 'appwrite' - -include Appwrite - -client = Client.new - .set_endpoint('https://cloud.appwrite.io/v1') - .set_project('console') - .set_session('') # Your Appwrite account session - -apps = Apps.new(client) - -secret = apps.create_secret( - app_id: '' -) - -puts secret.secret # Shown only once -``` - -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; - -Client client = Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -Apps apps = Apps(client); - -AppSecretPlaintext secret = await apps.createSecret( - appId: '', -); -``` - -```server-kotlin -import io.appwrite.Client -import io.appwrite.services.Apps - -val client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -val apps = Apps(client) - -val secret = apps.createSecret( - appId = "" -) -``` - -```server-java -import io.appwrite.Client; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Apps; - -Client client = new Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -apps.createSecret( - "", // appId - new CoroutineCallback<>((secret, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } - - System.out.println(secret); - }) -); -``` - -```server-swift -import Appwrite - -let client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -let apps = Apps(client) - -let secret = try await apps.createSecret( - appId: "" -) -``` - -```server-dotnet -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; - -Client client = new Client() - .SetEndPoint("https://cloud.appwrite.io/v1") - .SetProject("console") - .SetSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -AppSecretPlaintext secret = await apps.CreateSecret( - appId: "" -); -``` - -```server-go -package main - -import ( - "fmt" - - "github.com/appwrite/sdk-for-go/apps" - "github.com/appwrite/sdk-for-go/client" -) - -func main() { - c := client.New( - client.WithEndpoint("https://cloud.appwrite.io/v1"), - client.WithProject("console"), - client.WithSession(""), // Your Appwrite account session - ) - - service := apps.New(c) - - secret, err := service.CreateSecret("") - if err != nil { - panic(err) - } - - fmt.Println(secret) -} -``` +{% only_dark %} +![Legal page with privacy policy, terms of service, and data deletion URL fields](/images/docs/partners/apps/dark/registration-legal.avif) +{% /only_dark %} +{% only_light %} +![Legal page with privacy policy, terms of service, and data deletion URL fields](/images/docs/partners/apps/registration-legal.avif) +{% /only_light %} -```server-rust -use appwrite::Client; -use appwrite::services::Apps; +The **Legal** page holds the privacy policy, terms of service, and data deletion URLs. The consent screen links these so users can read them before they approve your app. -#[tokio::main] -async fn main() -> Result<(), Box> { - let client = Client::new(); - client.set_endpoint("https://cloud.appwrite.io/v1"); - client.set_project("console"); - client.set_session(""); // Your Appwrite account session +## Support {% #console-support %} - let apps = Apps::new(&client); +{% only_dark %} +![Support page with a support URL and contact emails field](/images/docs/partners/apps/dark/registration-support.avif) +{% /only_dark %} +{% only_light %} +![Support page with a support URL and contact emails field](/images/docs/partners/apps/registration-support.avif) +{% /only_light %} - let secret = apps.create_secret("").await?; - println!("{}", secret.secret); // Shown only once +The **Support** page holds a support URL and contact emails, so users have somewhere to turn when they need help with your app. - Ok(()) -} -``` -{% /multicode %} +## Publish {% #console-publish %} -An app holds several active secrets at once, so rotation needs no downtime: create a new secret, deploy it, then delete the old one. Each stored secret keeps a `hint` (its last characters), who created it, and when it was last used, which tells you when the old secret is safe to delete. +{% only_dark %} +![Publish page with the published toggle and the branding card](/images/docs/partners/apps/dark/registration-publish.avif) +{% /only_dark %} +{% only_light %} +![Publish page with the published toggle and the branding card](/images/docs/partners/apps/registration-publish.avif) +{% /only_light %} -Two more operations matter over an app's life. `updateTeam` moves ownership to a team, so registration does not depend on one person's account. `deleteTokens` is the kill switch: it invalidates every token the app has been issued, for every user. +The **Publish** page carries the branding shown on the consent screen, a homepage URL, a logo, and optional listing images, along with the **Published** toggle. Turning it on lists the app in the marketplace catalog for every organization. Publishing changes discovery, not authorization: users consent to your app the same way whether it is a draft or published. # Labels {% #labels %} -Labels such as `official` and `partner` mark apps the platform vouches for, and consent screens surface them as trust signals. Labels are assigned by Appwrite, not by the app itself, so they cannot be self-granted. Contact your partner manager to have your app labeled. +Labels such as `official` and `partner` mark apps the platform vouches for, and consent screens surface them as trust signals. Labels are assigned by Appwrite, not by the app itself, so there is no field for them in the Console. Contact your partner manager to have your app labeled. diff --git a/src/routes/docs/partners/apps/scopes/+page.markdoc b/src/routes/docs/partners/apps/scopes/+page.markdoc index 10e027603c..add2aafbe2 100644 --- a/src/routes/docs/partners/apps/scopes/+page.markdoc +++ b/src/routes/docs/partners/apps/scopes/+page.markdoc @@ -5,7 +5,14 @@ description: The Sign in with Appwrite scope catalog, and how grants target the back: /docs/partners/apps --- -A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:databases.read` by itself says what, and the user's project selection on the consent screen says where. +{% only_dark %} +![Scopes and targets combine into a grant that the access token carries and every request is checked against](/images/docs/partners/apps/dark/diagram-scopes.avif) +{% /only_dark %} +{% only_light %} +![Scopes and targets combine into a grant that the access token carries and every request is checked against](/images/docs/partners/apps/diagram-scopes.avif) +{% /only_light %} + +A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:tables.read` by itself says what, and the user's project selection on the consent screen says where. Request the smallest set that serves your app. Every scope you ask for appears on the consent screen as a permission line, and users decline requests that want too much. @@ -57,27 +64,94 @@ Organization scopes carry the `organization:` prefix and cover what a user's org | Projects | `organization:projects.read`, `organization:projects.write` | | Domains | `organization:domains.read`, `organization:domains.write` | | Keys | `organization:organization.keys.read`, `organization:organization.keys.write` | -| Dev keys | `organization:devKeys.read`, `organization:devKeys.write` | `organization:all` grants the full set. `organization:projects.write` is the scope that creates projects, which lets an app provision on a user's behalf. # Targeting projects and organizations {% #targeting %} -Scopes alone never grant access to a resource. The authorization request also carries `authorization_details` ([RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)), a JSON array that names the projects and organizations the grant covers: +Scopes say what your app can do. Targets say where. Every grant carries both. + +## The user picks the targets {% #targets-picked %} + +When your request includes a project or organization scope, the consent screen asks the user which projects or organizations the scope applies to. You send only the scopes; the user's selection is written into the grant. This is the default, and it needs nothing extra from your app. + +## Pre-selecting a target {% #targets-preselected %} + +When your app already knows which project it wants, name it in the authorization request with the `authorization_details` parameter ([RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)). The consent screen then shows that project for confirmation instead of an open picker. + +```text +https://cloud.appwrite.io/v1/oauth2/console/authorize + ?client_id= + &redirect_uri= + &response_type=code + &scope=openid project:tables.read + &authorization_details=[{"type":"project","identifiers":[""]}] +``` + +Each entry has a `type`, either `project` or `organization`, and an `identifiers` array of IDs. Use this for flows like connecting one specific project to your app. + +## Reading what was granted {% #targets-granted %} + +Either way, the token response's `authorization_details` field holds the projects the user ended up granting. + +To check a token you already hold, introspect it with your client credentials: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ + -u ":" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "token=" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/introspect +[BasicAuth] +: +[Form] +token: +``` +{% /multicode %} + +The response returns the granted scopes and targets: ```json -[ - { "type": "project", "identifiers": ["*"] }, - { "type": "organization", "identifiers": [""] } -] +{ + "active": true, + "scope": "openid project:tables.read", + "client_id": "", + "sub": "6a150ace003bc4c2919e", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "exp": 1784737416, + "token_use": "access_token" +} +``` + +To turn the targets into concrete projects, list them with the token itself: + +{% multicode %} +```curl +curl https://cloud.appwrite.io/v1/oauth2/console/projects \ + -H "Authorization: Bearer " +``` + +```hurl +GET https://cloud.appwrite.io/v1/oauth2/console/projects +Authorization: Bearer ``` +{% /multicode %} -Each entry has a `type`, either `project` or `organization`, and an `identifiers` array of IDs. The wildcard `*` asks for all of them, which the consent screen turns into a picker where the user chooses. Your app receives the final selection in the token response's `authorization_details` field and can read the granted projects at any time by listing them, as shown in the [quick start](/docs/partners/apps/quick-start#list-projects). +Each project in the response carries its `$id`, `region`, and `endpoint`, which is everything your app needs to call it. -A granted scope applies only inside the granted targets. A token with `project:databases.read` reads databases in the projects the user selected and fails everywhere else with a `401` error of type `general_unauthorized_scope`. There is one hard exclusion: an authorization detail can never name the `console` project itself as a target. +A scope only works inside its granted targets. A token with `project:tables.read` reads tables in the selected projects and returns `401 general_unauthorized_scope` everywhere else. # When requests fail {% #failures %} -Requesting a scope outside the catalog fails before consent: the authorization endpoint redirects back with `error=invalid_scope`. Malformed or unsupported `authorization_details` fail the same way with `error=invalid_authorization_details`. Validate both against the discovery document, which also publishes `authorization_details_types_supported`. +Two mistakes fail before the user ever sees a consent screen. The authorization endpoint redirects straight back to your app with an error: + +- A scope outside the catalog returns `error=invalid_scope`. +- Malformed or unsupported `authorization_details` return `error=invalid_authorization_details`. + +Both catalogs are published in the discovery document, under `scopes_supported` and `authorization_details_types_supported`, so your app can validate requests before sending them. The user can also grant less than you asked. Consent may drop scopes or narrow write access to read, so treat the `scope` string in the token response as the truth, not your request. [Consent](/docs/partners/apps/consent) shows what that narrowing looks like. diff --git a/src/routes/docs/partners/apps/tokens/+page.markdoc b/src/routes/docs/partners/apps/tokens/+page.markdoc index c6b7bd90a0..6e40bf9a4a 100644 --- a/src/routes/docs/partners/apps/tokens/+page.markdoc +++ b/src/routes/docs/partners/apps/tokens/+page.markdoc @@ -5,7 +5,43 @@ description: Use, refresh, and revoke the tokens Appwrite issues to your app thr back: /docs/partners/apps --- -A successful token exchange returns three tokens with different jobs. The access token calls APIs, the refresh token replaces expired access tokens, and the ID token proves who signed in. +{% only_dark %} +![Your app exchanges the code for tokens, calls granted projects, renews with the refresh token, and revokes when done](/images/docs/partners/apps/dark/diagram-tokens.avif) +{% /only_dark %} +{% only_light %} +![Your app exchanges the code for tokens, calls granted projects, renews with the refresh token, and revokes when done](/images/docs/partners/apps/diagram-tokens.avif) +{% /only_light %} + +Your app holds three tokens with different jobs: + +- The **access token** calls APIs. +- The **refresh token** replaces expired access tokens. +- The **ID token** proves who signed in. + +All three come from one call. After the user approves your app on the consent screen, exchange the authorization code at the token endpoint, authenticated with your client credentials: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -u ":" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "grant_type=authorization_code" \ + -d "code=" \ + -d "redirect_uri=" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +[BasicAuth] +: +[Form] +grant_type: authorization_code +code: +redirect_uri: +``` +{% /multicode %} + +The response carries all three tokens, along with what the user granted: ```json { @@ -13,7 +49,7 @@ A successful token exchange returns three tokens with different jobs. The access "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:databases.read", + "scope": "openid profile email project:tables.read", "authorization_details": [{ "type": "project", "identifiers": ["6a357f7e001c7237296b"] }], "id_token": "eyJhbGciOiJSUzI1NiJ9..." } @@ -21,22 +57,53 @@ A successful token exchange returns three tokens with different jobs. The access # Access tokens {% #access-tokens %} -The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068)), signed with `RS256`. Its claims carry the whole grant: `sub` is the user, `client_id` your app, `scope` the granted scopes, and `authorization_details` the granted targets, along with the standard `iss`, `aud`, `exp`, `iat`, `jti`, and `auth_time`. +The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068)), signed with `RS256`. Its claims carry the whole grant: + +- `sub`: the user who signed in. +- `client_id`: your app. +- `scope`: the granted scopes. +- `authorization_details`: the granted projects and organizations. +- The standard JWT claims: + - `iss`: who issued the token, always `https://cloud.appwrite.io/v1/oauth2/console`. + - `aud`: who the token is for, the Appwrite API. + - `exp`: when the token expires, as a Unix timestamp. + - `iat`: when the token was issued. + - `jti`: a unique ID for this token. + - `auth_time`: when the user last authenticated. + +Pass it as a bearer token in the `Authorization` header. The userinfo endpoint is the simplest call to try it on: -Pass it as a bearer token. The Server SDKs send it through `setBearer`, with the `Bearer ` scheme included in the value: +{% multicode %} +```curl +curl https://cloud.appwrite.io/v1/oauth2/console/userinfo \ + -H "Authorization: Bearer " +``` + +```hurl +GET https://cloud.appwrite.io/v1/oauth2/console/userinfo +Authorization: Bearer +``` +{% /multicode %} -```server-nodejs -import { Client, Oauth2 } from 'node-appwrite'; +The response is the signed-in user: -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setBearer('Bearer '); +```json +{ + "sub": "6a150ace003bc4c2919e", + "name": "Walter O'Brien", + "email": "walter@example.com", + "email_verified": true +} ``` -One token works everywhere the grant reaches. Appwrite validates it across regions, so your app calls each granted project at its own `endpoint` with the same token, and the console endpoints for [listing projects and organizations](/docs/partners/apps/quick-start#list-projects) with that token too. +The same token works in two places: + +- The [listing endpoints](/docs/partners/apps/scopes#targets-granted), to see which projects and organizations the user granted. +- Every granted project's API, whatever region the project lives in. -Default lifetimes depend on the client type: 8 hours for confidential clients, 1 hour for public ones. +Your app never handles regions itself. Take each project's `endpoint` from the listing, call it, and send the same token. + +Access tokens last 8 hours for confidential clients and 1 hour for public ones. # Refresh tokens {% #refresh-tokens %} @@ -61,15 +128,52 @@ refresh_token: ``` {% /multicode %} -Refresh tokens rotate: every exchange returns a new refresh token and invalidates the old one. Persist the new token atomically before you discard the old response. +The response is a fresh pair, in the same shape as the original exchange: + +```json +{ + "access_token": "eyJ0eXAiOiJhdCtqd3QiLCJhbGciOiJSUzI1NiJ9...", + "token_type": "Bearer", + "expires_in": 28800, + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", + "scope": "openid profile email project:tables.read", + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." +} +``` + +Refresh tokens are single-use. Each exchange invalidates the token you sent and returns a new one, so store the new token as soon as the response arrives. + +This is deliberate. A refresh token that gets used twice looks like theft, and Appwrite responds by killing the entire token family. The user has to authorize your app again. The most common way to trip this by accident is a crash between refreshing and saving, after which your app retries with the token it already spent. -Rotation is also a tripwire. If an old refresh token is presented again, Appwrite treats it as theft and deletes the whole token family: the current access token and the newest refresh token stop working, and the user must authorize your app again. A refresh loop that retries a stale token after a crash triggers this, which is why atomic persistence matters. Refresh tokens default to 365 days for confidential clients and 30 days for public ones, treat them like passwords, and store them encrypted. +Refresh tokens last 365 days for confidential clients and 30 days for public ones. Treat them like passwords and store them encrypted. # ID tokens {% #id-tokens %} -The ID token is an OpenID Connect JWT issued when the grant includes `openid`. It carries identity claims scoped to what was granted: `name` with `profile`, `email` and `email_verified` with `email`, `phone_number` and `phone_number_verified` with `phone`. +The ID token is an OpenID Connect JWT, issued when the grant includes `openid`. It answers one question: who signed in. Decoded, it looks like this: + +```json +{ + "iss": "https://cloud.appwrite.io/v1/oauth2/console", + "sub": "6a150ace003bc4c2919e", + "aud": "horizon", + "name": "Walter O'Brien", + "email": "walter@example.com", + "email_verified": true, + "updated_at": 1784707579, + "auth_time": 1784617272, + "iat": 1784711196, + "exp": 1784739996, + "at_hash": "ro6WSzsVqgrWqQy4m7_DGA" +} +``` + +The granted scopes decide which of these fields the token carries: + +- `profile` adds `name` and `updated_at`. +- `email` adds `email` and `email_verified`. +- `phone` adds `phone_number` and `phone_number_verified`. -Use it to establish who signed in, never to call APIs. Its audience is your `client_id`, not Appwrite's API, and resource servers reject it because its type is not `at+jwt`. For a live view of the same claims, call the userinfo endpoint with the access token. +Never use the ID token to call APIs; it only tells your app who signed in, and Appwrite rejects it as a bearer token. To fetch fresh values for the same fields, call the userinfo endpoint with the access token. # Validating tokens {% #validation %} @@ -79,7 +183,44 @@ If your app runs its own API and receives Appwrite access tokens from clients, v https://cloud.appwrite.io/v1/oauth2/console/.well-known/jwks.json ``` -Check the signature, the `iss` claim, the audience, the expiry, and require the `at+jwt` type so an ID token can never pass as an access token. When you need revocation awareness that offline validation cannot give, call the introspection endpoint ([RFC 7662](https://datatracker.ietf.org/doc/html/rfc7662)) with your client credentials; it returns `"active": false` for anything expired, revoked, or rotated away. +Check the signature, the `iss` claim, the audience, the expiry, and require the `at+jwt` type so an ID token can never pass as an access token. + +Offline validation cannot see revocation. For the authoritative answer, call the introspection endpoint ([RFC 7662](https://datatracker.ietf.org/doc/html/rfc7662)) with your client credentials: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ + -u ":" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "token=" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/introspect +[BasicAuth] +: +[Form] +token: +``` +{% /multicode %} + +An active token comes back with everything it holds: + +```json +{ + "active": true, + "scope": "openid profile email project:tables.read", + "client_id": "horizon", + "token_type": "Bearer", + "sub": "6a150ace003bc4c2919e", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "exp": 1784737416, + "iat": 1784708616, + "token_use": "access_token" +} +``` + +Anything expired, revoked, or rotated away returns only `{ "active": false }`. # Revocation {% #revocation %} @@ -102,6 +243,6 @@ token: ``` {% /multicode %} -Revoking either token of a pair invalidates both. The endpoint returns an empty `200` whether or not the token existed, as [RFC 7009](https://datatracker.ietf.org/doc/html/rfc7009) requires. +The response is an empty `200`, whether or not the token existed, as [RFC 7009](https://datatracker.ietf.org/doc/html/rfc7009) requires. Revoking either token of a pair invalidates both. Revocation also arrives from outside your app. Users revoke from their account applications page, and reuse detection tears tokens down on its own. Treat a `401` with a previously working token as the signal to re-authorize, not to retry. diff --git a/static/images/docs/partners/apps/dark/diagram-consent.avif b/static/images/docs/partners/apps/dark/diagram-consent.avif new file mode 100644 index 0000000000000000000000000000000000000000..a96625756d8d58b9d9bab6dffb0ae6770ef585f2 GIT binary patch literal 16447 zcmYMbV~{3H%q~2(ZSL5%ZQHhO+dJN|ZQHhX%zJDb-#+j8-gDB`edS7}tMeySsqQoo z5D=cZtCypZyOlZ6Ke4kiXZlaKvoiXR|Ftu7HTuu~Plzo|ZJqy*3Iyb6W#an3`u`$= zqm`@O{}AARD~Xk@gUNqPR1gUG-}q17|9=D$5c|hSt*q?-=g|MLqW>diApd#&^EGm3 zWcp84w{moL{D+)YjwTNO5YEV*NhFBuf85ZlTpZ2*a{>Ya|2IJv{w+w3R-RV>SwNwn zp#A}dm80GN#{Vw}&>#>{ARqxbJ5wW96d)KFE^CXgfO=2NLel~PjXALSKuZMsAoH3Rb*;J*&VE6Q| zgJzX-mwg*ofbc6!v`V56z%F-?2$PrnQ9*_D6^6b1Rj_nY>nqM?;YMsPfd%Ytx*`nI zWc)Cvh5(e(zxH_lUHVxIm9lQK8cy7qq0u8k!0Xa|$_pf$KB;C@U12iLy~%Tpl*RR3 zR5-(g220JnTp>U0>r^A=@^a3mW(C5lt5H|0{Hc#oYTH@lR`9m%>R2%%&SDk+Wf+#E6m0EKx7!L0H z+w>%q0iq|5LM#AFUsfx`X4nl#I{Rnn5aTG91Os2{J%K=%4S2u3O`hWFL%xusk~3*K z7c2s*`^ZG?kmgks>kC&C5KnmX_{BuJRI`!}!jF5pV&Erl`59KV-O=Y#H8w>TB>8Z4 z7#>+`bmvJHR#q>Jh6whW8+2&q5$| z)BHo(Ce$of?nwxBu{IxaAl%d*y|(yZEOBaow@z~`lw9|OnNpV!h_&+dcyzYta0?G@ z!&MHsvHwJ-!OGXE<&h19I7{1DK;mKNIsH; zapyCK4e?P;UAlHAE4t3~Wpjva*Y7d95Ko;^fdeayAWbJuiDm3CYI~U}|B5J!a0XI` z?|MAcV^^F%-EiP)g5#2!{3%sR8a6**AfeCGc-UdS8zt%# zydG;rxixb(NZ{l$ymo&IDAsne(iJ+3Zv!?B1Ic&*>+?qUf}_?H_=tlB6K>PTH*BLw z9R#!tw@uVYM>S7q+LL5XS0KZ&H-s0y3P#`4_AQDq8BK zu4tH+rf6Dn)1`t)=})npu0 zSFo~Vm~}yBJ#kC>D~IG`{1{|`EogUWR;lE^cUuP)w|ToRK6tG#?_y(Ex)i8fmuV}1;Hq=41<8-Kh26IkW~d<7tIu7|QOtydurN37aa!L{^5wij7n-MI9r zaX0L3Lc&Fq`RY!Uw8ZWwXDe`soTZ(}c*CshJIi(vdULtZ4gRCxPrYPiwpX-zLoY{nkaj5vtD zn}AA_d3268BRh@+Bzv&Buso9kNwT3t3AoTI*c<=ygnmKk3qKzv8616gzlclKA5JDN zBuQ31v?{K0{{5Z~cGlQc9vx{z#rOx|Z9tF_affW3v_g1SWjbx*jYOJi!u5C_97D~r zLgY{F?DAkckN4Jy0!Y=@XtNg$Z@m!>_Ay+pL->-VCU8}Y=kk9Pw9x%YT&6$z3kcZ zYA*@NP|@dQX+T=L0-2TFN5gVDva#lj&bTxzglh|-I;;l;T2g(>})t_k2{ z-l{4AtBv7@JY%#q z$(p>E{EHg5^1o=SoKsY4?c||CVH2bpcly%tQp4k2Wqb9o|F7&|5kkiT!sx2sn+&V% z;Yahgz-O05aeqjhn!18`RruH;ClBW5;&LarQ&qsiJwI0TeUTmT)6ucAE0;l=`quVOJU2|N?)h@GBjG`S7O0&Xa zi|bT|y`-nFVen*KcEAF^dvG)NWPS}b6O6=|Mw2ueqqadtJ&!wmVOi+K{k|;?Yu0JSTsmMEa{}=NAU*Q_~m8;eVTXO$IcFW>lY3pjBFV zHLDZplK&!d_%0aJE_$Ac`>i13*HWr`XB@J)0#)ykz)6l_hFhQ7vlQ+7Y3{d0R4E`f z-M{h1ha@z(hztaQ<~iiI288ljou5(G(Kks}su!v-I_`l&AhX@cS}C%~6-b_X;y}e& zUDeT{haXT$G}ot|H4I5*Z@iC3=0K?IXoH>|%9S+y!9uP;I@*OHIzoGDGk(89)JWuv znu61YM7UQ&u6t_ymAne8Nnzj?%TbS%yrHTMJ8IM2*<_1{4Y5d&2r&*Z{?eTM*UFk- z^vBB?GIX_s=-6y!1tTg{%nimg3UHRz-n5A+^Oj#mnivGi%oh`j9uwv2eu`b$#0lr| zI68a2z8nX^x0@%QQ-ij`@PSV0Nv)-@#24$Iifv&8hfXriZ@JS%)wdPB-`l-j-_7^x_Y=%Hm+Y&=M)&m41L(5Nz zqZ31Q#k%d*zLCVvHtGIlSMO{vALcvd89u3-Lu1#Hx=hh-U>kGFETKv1AmPef zlp$>Bw^RvS-(p9r{_OFS-*oICj*=){jT3c%=y>nm)e?_~GHQY#H3pSEr%aDdS3SB) zPZdcYrJFf^TD15K8Tsooh#!frLiTsoo|?5+fs25#EK|K>w251YF|`_dzk>Vq`87|_ zC7KIfV_M!QK+4haXp;Q)qM4g*SXIK^ZS(gZX-j|%+<_MJr{AkHDSUfW?BY|~zk0JEj164xquE*vI7Wc44+;=|MRyggS zPaPYP<9N_BVbIHT+8IxdQ4vZ003&33*Fwrhpj5$~7Lc^sbIR3WK}H0wV!8<01QSg@ z;S7b+7~4vpQyjMq8w!yRv$1y#EF4UWPeE0xbU17m8%EMInNq7wjpEFm zNvT1%olwwy;$u`!vQ_;QSfniWZzKb=AFiS?)q(792^(@k??A?II>1-t0O=kfT8`jZZ1&eVdIZfPo7(`Ep?`n{mJ9$a8q`opsPn>G% zUI73Bd}Z%F1$9&WJ%i*5Hl<3Kw-#Jwo0tsi!3T=W0-$F^L1f!*R>Mt%Z zLCFW$=(s*$e;3J#XyT~NtuPS0O5-hkVa?p+X~|{NZIuQvqoY^~{mrV%2>oD7Bhw;J zazEc1#>7-Ckn8n~Kbv*xZ9CA{jYEU4dy8Ig63h7?jRpufq_&hzrl4u}%k=ZZ2q7#; zE!du19a|YJEu~?!YwC9M`rJDFj~`H~beR$$3d76(0;x*NBM6HgYH$BZ7?UJ!SYH|G zC;_TRVFg=DqVR-se7Q>fi?dxWaEh~D{AB3fO;PxCW30eL)zA&-mB;|<(s@P zSF9-q)qfp1>nM*A%`WD)7U>$GUo2kiDH(Y4T`*D%Xu86|j+q(77m+l|F9LAoixtzv zIltL|@^*r5jPy(zj3r-k;`>~DHA(=bp=s(>*|PdUXNUWyvOq}2lrd{ljJ7By$dq*! zmHaWnxbv&q!8k`437UJ&j<5&D@M?9tz~#oOg_f(5GKOmK&=iRk&=d&Drg_W1>`XRT$oFf@lki)oup@(_L zEenQq?LB*E-FKjiEM1WHeN0v%y5M4?TG1Cho#o-4mjxU?CLQj)gq+zF5D3_jF<6lY z=gwb@nNcF-bT#smjZbYl9k}*Brka;ocX>MGl@*}aPw=S}^pp4I%vrS!8Hfm01yj7L zXA+EV-a(dFbDGH2`ip^fKw;`cy_^MkDogU-6Q+RW^g((EpAijfB#?#?;WVUO=5e-N zI}wZ6t@A^VX|wZq<+A7~OifT%%M4~k*FY(2-uyd$$+q0vz(|m27ED>!6UR_b3Xem_ zF^lkp7*Wtc=G!WMY)=kSO{T3_Ek8mWRzdE_MOsV%SzUl8lNDhVQ6p(nP`Swz``aLb zgv9|$o)H*ynCv&2-aEw&mJ6KAq$%A)XL+c zLjnC&1#9VMbuy%~bI)aQOtygz*xi6SUc6L_Zn4c{5vwu)mFD126_p0Nup*w99Ig0R({wcHJZJu3 zl(G|g-bFOYPwtAWl^$O8KN@+L4jsL9UHV>N*hci9g7AjXcl$P6(E(n6h)9gc)PkGBh?WHqk;0# z;_f8}x&96-tnX<4IYE9L#a*i5{uz#XacS0|y-ed>5-k!IxE_|b7l=4QZoxGPQbJ?p z-Sk~0m4gv6f`|Y&lfTDC^I)W~<=TUH) zaf>O7dLIq@EUI+Z*H(A~R>0==*_|U6R8Jk!{#QJ|YjmK!SWGSCGDsK|tO1VEJry*W zaM>)kP^kV}z`3nPbo zmUNYarGp{P;{6cZr-YJJCx7B*7Gw4SWJ}={p9tgY)t%&es=iG>2Nf@m>qJ;Ou(w&d zAaNrX4@i^6g^T0xBQ!?r)D#$#?asL3a<4G3Lkx)7!?D7DEp8k` zY-g}yABAEcH>C_l2`vtC1*aqd-CGL}PKZ}L*+a20Tqq72^A)Ng_o7t1sTI_|~%vNd|n-vCy zCoQdvWui_`^}cv`KA86y5dDJBNe#u>LVlip)ovCrO+KTREI{NVAyLyVMV1O~oEi7Z zL@L}j+;O`*Q1F#S>kWF{=@$B>BFC+D1OT(Yy+w4C{TtF!VNsrg5HxnsvqJ+Eh*En9 znYbkaf3TW@{72}Dzy;{56QFwj9w}9vZQBD<$g9{ufvZ<=M+nx=p4GgCqs;XCd1fBf z<-qf{uq5a%s%aQ0CTT3ssl%nHo=ahk(>tL}tgVFqOE_4h2iMUHqC^)+A{v%XI2v|+ z^LJ0#-YRf1$~)%umKB69SyW=N!p>!+u3thSSJ&H#fRC=dg|dpIdXlPDXafPIB@nAI zspO7qDKucdAsiF*#qf;jyRbf|w$KG3W*6zNUS9~Rf0+xg?V%rS;5R@Kk^(sVec6tSNvg;790ebaW=O_FSdZJrz2CkF*#{^?-Fxv=;h>hloDBdH3SNt`)T81wyCJU9}C$iv#Iv}7kH%Mw#QQsLpr>YdwalqR=v+0>xeJYy^lh_SRTqr@UQ`H)%0yqLU4NvkFoB{h?>0^k08 zIfc;s5MCJ`I43oUUmjLaHvRdN#t6hUbJR^b0o~tZScI>CFA#UhvKLweFCJ8)F9dETzlliRdw8bBEj5*3A z_N~q^1x6kqbre?l7<{yji_QvbJ(o;tgdRz;u#UQ(jE303mwwt~Y0xT3uiaM)4E@qX z_LtpjK0h!=NgnZaIGwAtR_zFU6>>-i&ZK4K@7HgE;_EF`E;j>8@AR#2SGk0gV9VHDKj*oAsZnA?24<(H%Cf) zH5NSeF?>b#j~seXFd6G{mk~)_5UGK@9;1>a%%x)MwKbU^kFx5BjzWL_6{Ws07N!D_ zw#C=3NXOfJc?AmR?gs1{g!helhjhikGJbTKNhM;YX3<*o?u+hYdyI`v7k7Ctx(H{V zfyd6Y-kgj^wqX0S;d6zz!H!4-d+@PQYRH9qizU_?GuRkVv)~Who6+oW!KvQ7#zgdi z2$|^Rn_R(nI3mboHZJ-c?-s8JecU~z-EI6t_rJf>9w4u?ed*~=F|6mT)x@RIp6Rwg zn)6#?ogoq|>3!W*Vb`T?*>Rzh%r;XLLpO9oWO_Uy^L;iTYGNxBX3VrGp|x5MCH8pSOdH-5=3|)@Fzsx*7BA6R3T| zn_elR`PLkfcnhB|_;R8bW`xE;NFo8> zlwK8-wy5egiIhqE@s+JxW$RXtKx2&nYg0H$7R3YOIPGhOi#75SYNWewbk~6RiMg0U z4gCT)LReYL1%$270G%1;0@n-xyTrQ_GWI9OTVdG@sok`#$U&7zIsgdx*m%L!gyG%q zDH-h>k$q9&X}R7_K^(;;?jz6u=N)wBwwBDtZPb|(qOJ30-72&f;4z5%SW@-r~iVA$sB2a<=NE3ig!1M~JZv8KxU7m)dX5 z0=!^C?`mbRMMNV<8wy2e%bvh%Q4Lrj6!ZvG*kA91v%+#g}R%hIwn>O(}(0RbRQLR>n9mYqSdWYi04>4j1wgb`bK9~Qdqk@Tm1wf6Ry^( zhi~apmCdJ6cV|ra99<5)@g+;31_D2XIF@VUkR7M@ ziB$3M<_&w_uC$?zvJ4%HOL(+k7D5fF;YPt{f8w#o6fJ}(AZT#?bXpRQ#3z+rX!I4| zNj0FFa3-}Bfn8z|C+|Rp`r4%C*nNwQI^x6+iJiiV(0QbayGErKB8fhAuow+6ME8}P zt)@9Y8JaW5uoCjuJ>RvjQ{iHt0oLAdwzU)+)M}<;IfY!wRQ7g2m-HaDkkGw!n{h=1CI#2EDKIWmSBuK>v(yYpCU79u@&DD(z5xJ_X15GYWCKmbeC;knz( zA#D=-afh!1jn|CHoAl__$x|bbr9(;^7y_DqOhqy7kP=C|rfc}{{hW$IiU4@>)l0oh zXE@q>3uVE<#*#91nmHO~etJKId?;gQu~lT12~k%sQL3k^la73GBm5d<*n50unhX1~ z@h%2X^;MLi)K?DNPq1y9!BrZlVQKkYGDrz7l_ z+A&b4DEWqv_O7xZw>FmE%q zzP=G~u4u)G7^!wkS%Ktd=^!MlRQDx)P#U3DAb=cJB)v?q7hqc>bK8(crN7jfwG zPYBQN*v9S%o@eTf6YfTzVI~5q>ZWmjGa_Axd1Su{yeA+t$QM=yAjvRczCzjcu@)3m z`b>USiUIb)kSS1zSV&4YhqLqy6oD@3PdaIHD7P6aJR@gQHmsQKlfUdjCFbfaXyX&0 zB#$9|LHWu_L{ouri%Kh@gR1aVrlRN>_|jq8EZG;hT`xj&6lQrN&$yDBSI7+lr%L~z zAiYwW;Itm0Mrn>$XOVc?A&E|Aw;`>dw3PR;bZ|&H+~m894nyGY3b7e5?2jNN>;ruk z81!*@Wq55%q)k2xlP@q+_avE7;6{*aM4iI2jnJ;I?{@wy%q#EfMEF3wXgS|6U+h+D z#a`Ou5*xldGWkO&6dQfBjEq$=`*#RjXCib-e8p|A8m>%99> zmU)Ui^m8xAvJO3qazulmj>Z6Wqp3pWY|YB2N9K^0_fLYjd#zi4sXG^E8{ z?YzF=)B5`SduUXA`8$)<>C8zdZvgCG@V4zdwiLFe{- zCl*lDZAADt(E2FaY2b)3h>%yN&Xf0Nj_)}-amYhY&N5KChlYY2LEE8d@AizAJ|3$5 znWWJOt3>y=5sGRl_81S?7|nA99%)Fak6F!`4*O9&w5K{@y#w$)Q$hYMy^^mcjg-LW z*j+Xqrn;A9FjI!DSEOsy(=-hj*+Zpn&Nr%~B~R_!%MY6x5}YVCkJfvcG5de~k<{scR3`hzNEdE5+4o*IEZ90 zLcP{_CJUsvW$Jh_xTeVrQ8~l8N7GvWU9Ie5VrUrZD>F}TNM$2Q>@`&}Z7wzW5~2wK zX*BI9QUH5`f)9asq8hcPuWzV{o^y(+6O22OFr52aM^u^;S5fwh%YZQyKN`hAlp{zd zwariznGKw<*LEs2B|;FsZsG;kKz%0C){zFa$@q&NZE;^R4`7gD#oeA}S2izg|B5cf zRN*+x7FveFHseg@6&TLdO;)g!7C>QVIxAl}>p}gcIOklYsL#eFtvR$k03>JeIWx5kurn!g@1kDDg6$x&i5~~t+9Pli=MAoM_ zYBIiCIEnZR}bDuI`UktjS4P!f+PjZB@BkEZ*j$r0~7ZZeQ= z-+o@}KKSCoepD&fzYToobb^EkaJ`k!e-D*3G84<%@!?=I)zqS9Qgfp0TKV_zPPLD1 zS1*ifKudFnS+UNG_wQPHm==o;F?;p8KUQ1Yk>RrCI$;|hYiST3z&)r zQ^NNLtxCXTqEUz0-1Rdx)pEhFZOspwu#f$0E>hhbX2+of;ohJu)(^PM)poS|Z9BW0 zRv?sZ|Lp9dLC&)k?^sk?NNneH(e{xVr3hQq8|cv8k$6lnfcTT}9=wJ_pxq=Ip2CD_cX?|&iII)iS1_h zaJ%C~GI&)wGP9_d;;SR)VlkTWxjl$L4N~Ink=Kt7r#K0%LDk2&tkiyYv(*oJKBmw` zHmBQ=i7_|h@T81LmgFU*(C1(0*#GGYYsBo#9WnWPJ(TBDa_Ugv18aR4wMTWfpT}aV z^9uZRE{c`r6NN*e-t08x1E$qj!mvb)cdiCXxsF3aZu>1FzILJkF%`09&!-Frxd25L zhHLAngB*+AcNfGuaZdr*Ta}z(Z$g<&fbUtmqdRJ!wvA%syZ9bJv3?8^YZ>-cm*2?< z@~aMk^^b^3oiK_aFWu6wpji0@vCPvscVKX%nw1MkY~x}z5^g~x`}^qFqOkX>wUL$s zZS&LXU1Mjj0yH8pM~n!fSE_u=>;^{V<4vj0Kc#g~I%yYQy!Dj%)>Rf1HSkR6sC5{F zHN@1uA?!emeD|rXtN{lW%%aDISAZzm%if;ZY7vJ_LfWFu=xj(Dxwj5Ouk33f3Vv#9 z2&8Jkw-!Z~x8=J&x-GV7g>qA{{Wk>$1@%gY*(Sb<%v@(oM@-*$*#Pw!8qC1*jMe{A zwoYg?dr;0nsz<}Vn6$4!JgZvaPc1uq6bvD9tz^+6V)7=72NYw3xTPbdMZrsxapTCR zVCRfI=2H+06a=iSw~Kn7mk5z^LKoD7`*BkQP-Y`Z*%$tZGSw5vahakqn;>o#K^-FD zL8(jWhA_*>$oT?X#4+d`P8{fh8e!|Q9+oH)8>7$=Ujmr1f~%?@MQ0?44Dr>G0tbDpanlS&V8?P{*x!*uJmSN6V{E8nxz zp7AzEni3`gXq(}?WFCXP+b(zAT^_H)FE>z%NSN>A^D~@8F=Z!(w>8;JVQojezXA9J ze*?4<$P8%DoZ6CXq?oC|k<_hQ`Y#|Jd#TuGXq7^G|H8LQ$_P6QJvT*(YVi=R z9m(ex1H(IWT##r_GtB(D@GYer5U?ykB;mx5l^sIbs$xG|Lm*bkH0}>nB$D97 zR$T&oL@|0=7I;cU39W2v9-q6y(rhVDpPz}!;tNxNXT@d|cH^iIt*QJWe@^Y9avS%* zUE5fNuN|P!pgfYw`X+wb%o~=mnA~M;*k5D^!{RKDN~f1&AfcomKmm+wMPzXdY_f9Qo5vFn)%~$mx!bxX*7=^MrG}Sce!B^BJ`|Fe#Q1U!655A9{{0m z#YNElezs{}C2;eli!`_Hb}gip_XO?GHv zP7K!SdqbAmZzmqR?$$2E?pX$Tykw4Z+}}{9xQF6%hVyGJ!j@~saw{;ik(uT6FdM4r^A(NaXZLhvZB00C7gu|pden)7fbUFOh zl(H;d-|8r~-b7S1jC=H%6i+;~PQ_iMqf|Yk;V1~6C7}mgAik~StFBdLa?Nd}qsW16 zBZZOxrImUs(aF?EY3MTb?k}k@{kv&as#~0^RpJ=cgO{)uI5yngB%Y78-&W4WWI~Ue?QYEK+ack_=%CVg*6AU_6UH0F4sXiwc$_#XS+ThizS*&sS5!_n&rg}C#ikk+V z`SrDkYXt@sf$`E0pzevEFfdW;jqp`!nGVg*RyoE{CEG?YJmz^-i&$Lpxq|E~y;aLD z=JjcoCedGyfcmp8rBshFHBn`?Dw{tzL# zKT5g9XQ*6Sfn)nkXFGVd9eD{A?SdSyiJOrK_}6otgFIw~RMHCRU((oSkO_FZ_1&o) zaq9>@9q+LR557{s@#b9WY>0$GLLr4UJwcf~RoS94RUkE(*F$+4ko$dRvP97nD6}8u z6xl$7NNpL5VZA>LzO^hG&l-;5n|@b0%jPG~bzAnr_@*pyI!gQPHL!^q-)SOGs-EKT zor$3u)555xE3k`4)blHj71iG%)5f)RIc{5BIoV3+5xi!0_Hm2K$X=`imr;vIL)Vrb z#F-*gBiR=Q;HRj&ValQfIg*7b_<(lMd7!XB#C()cWGJs1#nvfn2s?|tY?ImfzDaY3ql0n zYuirAb5ME>Y&XNCzr2Ane+7InKlOWBFN{afw*ZNmVF1gogtG)2DmpJKtNJlNay+vcP_`E<<6{20QX9K_ZGaqIhpk4??z59;4`iSMZI!u z^IJ6{1H+ZcLwhtL3R*;XS&jzBZ#O9(H%S3)23eNzs!f%})+iY-!tBm?s}|R)G~)Z_ zjxg8p0+_*$xCbQoSN3a$*N`9e#f@f>I|-J9A(Jp%(m;7VQI&?)i>w; z+61>r(kp_azf3uQ zKeRlZ+a#5P4ztcrc)&%w>#$BRT~kF|JNXy_*X+Fzv1L}o0G1_Mc-I1=D@`>xtbx!M zv76IDEJLbM-8j|eh2AT6NFCy5L}ZhWYu#y}zqXowKyG`(3KZq2{g^@D*|Hr4p`TIM z?gZ|l?QR;KE!3T!24gqT+yOux+6&6jj#VC0 zDksm)#JeYqNDouq?mg4h7yGec<1pr4`cVVJcoHXj=oY%;;~@cod=mWyTi?=gfZksr zRUB{v)k9q#;qUpZ$qq1V?mt*!_EEjx&Rzgy;|s&;3UphOdj=x9FCNMw!;j znonum!yDz^?Xg<$zdJ&i@d(u)U?qE!GActL##CCkDD)#~tm}fP&yBB??neAsWydN? z3V3!>cQX_|EKl~3nVB4_l;9Ax1UO`LBJFgBS!Nw2ybimS=MFL%xoM z{lM8=AoO~VB*NQZ?7=j%DL;C)NGfTzW1NvGPq07I8djC3&!_d>UVWuyZP^Tl>q?ug z)w4z{c;qZ=<~9avZoYc1TADXID-wBzRxMMp6rs8~3f(S$=fOcQcp5%!7dOdX8+(PMOTmxiF zjb6q!$Gw(KUIBf4K6=Gec_TxNWSv|7`r}CMWJy83MxR$QNYjrvocP)iX8$+?Q!AY9 zRsY*WUUQ00>*iy}c zXn(%(xA$dU{KEa;e3Z;7xplpcKjgbhrRvM7xvp;7UQ{3!Cg)8C>33u?LefPjOWmSW z?l>)f_vnA&DdnrSp}K;|+Qex-|rdl%Oo1U;Qoy4f`1>hyd_$fGEId2JZyBYTFmxSo1c7 zNG1@E_qk>J*Rhi!G<5>iEm*Y-x|aP2u^1r ztV)r})2`=5xAx}(@r6dHaqp*>N15dBwz-}5fUvpdkN*}PBfZFskq1LGI{cwJP`Jh$ zv2j-r_O*RU=?(zm3+=Tyvq!bh1Qc98uOy?3sK&|-V>obUNA)ohXN}OYs%-Y&l8{5c zW$-*IA?;1z&V2gG!#Z1uy;5!-e@(8RV>`}+>x+8?{3K&=#-SYGm-K4IU;F#V52D%G z^0WvA12W$X?0LK7Khv?YGlxJ}YHOX|ghx3;^0=`x9y3RyzS;!`(LC6tU4H|O#D$5$ z|86o@tTH&+7;4Vq)-okBZcTgabaiZk@au$`I^C8+vot7+ehJ-fVH(OqxjA3fP1y^X z_;diEW{6~LRwT((G@?>M*sJ2!&*E0!XPx-My{{aw(n%`vEDz4gvv!(L6QTT~Yahx6 zkM#X%o)vYDD>;pxEv(rbflG83=XbVbhxD^Dg#-hc19q5$Kl3?HAJT;H7Iy!0wRC-I z1EyuIod*e{l^&}>=E`mKfd@p(i>S24dD4>kohvi81wF(*dIWRwhgv?L#rK^HX8GcD z8NF3+OvJI8q_4~@33ZWA82??EI7m6)1N&Z$YtagIYqqxzs%LUUNYF5RH{NJFJwnY% zedZQ}1j%-{JXQD{UMfo6=5w4HkIWjOExkkC!yW0if~PUR&DT;|-v!LKo199Fxr7nC zf208gBDO2R0K@yGV7ihVnU{7I(<^m3i#lcZ``UCk4dQY4Tatfed+fYM`LvdFhg_Wy z_dTa4+3C{ilD1Ron&(1|$M>_l+Qf3eN^=V_qm+6PUp=mArM-EE>JGE>qlw$tSxetvWf^)C^(5*H*c9oVQ|Xgerq zk>EVHzuXcih{y)vp>!}hSr5%U?BI}qh^N6udo|b^ z;_Zy^cGXoCGePDGwoc>F}k-dG?5V4E(v zK_Iq#@J=M#+9q?6pjqkr`7dt8ltB_En94;lXfRs2S1?NM;0zj6AUq$@>VY5}2_DfR zkGc@I-cP1eX8(PwAv=CiolA3ecHImcMie^HvknLpLO+4v=SvNb=QYt;J!XVLiW0UI z^dP}(o?pa}A{UW<(Dm$vlYhG8&>Y?+H$t0Lc|O1?$eUYd4X?OQDf2s^W|UMP<@8e# zvq5a>2nySzm*%Kyu-2}e88Lf`*bV^Ey@)`|G>~JCoRcuwXX)mjNr=qp)cif0DhwGfBXz zv{3r;7#Q@bUuL9Esl;)}u+$uP@wakm!lNkbanN>*r~2(02i3&Km_*qYV4y<$fNmNWW{h(@95x8&>Yfri%Wk<819w;$X6=5p6D50f>EvC<;-*2j;H+wb zb(gya1?aj8;{|E>){;?rUeBF(GS^xz~rc(z{*$(%YDpCSD{u&+2v@J6gaXT z>+u(9w^Vr>hOLWNMp#OMkgoE}keY`qT8qY6;KU5m+URUA#B*h=k%Vnc!?vx9p%`6f zTs%%7n#v%!8QJCuo|d`q*ganC21Q%!#`!icHHVFupkc-&RXZ9}oa0?2Zu&u0t5-d~ zGS>k6fg(N5bNFT@7i<>(N*>?nSq#B52C)? zW9WSUn124%w&dnuVk^Zt&{nA5H|XfXr+n;1SDjBh9c^Aq4QgeFc4oL zn#fIw8uL$^2u~&|w;+)DK4gat`wLcN@5G5CGt-umk&^8Bhj&U72Jr<rbztlf3ELop&DP_oH=Oj zmS`Boa^B${Ggi&0n(z`jA|pWW>J~_A(mp=&>92Z5yMuFJjV;jeMGJbB1jD=wz$Qpe z34yBfexKu6n0f~=(3%>0U*r2SX$Y$D<4DcyX7AaI?$(muB#U!4;D1zV;iTOVg_~oem@v@jnBnm!+=m-kwV3P#98Wp#iK$gYW(0 zb3$XU@~+|{zHxAlM5(@51@owWA6yM4p(jhGP9{Lw%9h&1{Z3IxG!=L9fa*p-jLnMswutYb~GZ<{{I0j(xJBi literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/diagram-overview.avif b/static/images/docs/partners/apps/dark/diagram-overview.avif new file mode 100644 index 0000000000000000000000000000000000000000..60f201d29df0e01fab983a9b3dbd50ee64394a75 GIT binary patch literal 28423 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/diagram-tokens.avif b/static/images/docs/partners/apps/dark/diagram-tokens.avif new file mode 100644 index 0000000000000000000000000000000000000000..74a5e93869102a1d3b2cc38decc95982c1769bad GIT binary patch literal 29119 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/quick-start-consent.avif b/static/images/docs/partners/apps/dark/quick-start-consent.avif index 154520c6f9fd89614ab88e5bd7b54de993ad2003..2dec3a85e8ce785edd5fc9a3f9a13c36953877cd 100644 GIT binary patch delta 9454 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 A761SM delta 10227 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 diff --git a/static/images/docs/partners/apps/dark/registration-general.avif b/static/images/docs/partners/apps/dark/registration-general.avif new file mode 100644 index 0000000000000000000000000000000000000000..67e3c1530e43d37e129cf438f58ee8b5297a5a95 GIT binary patch literal 25685 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�y(P5CkvlF6H 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 ZcEx2HQv$FP+^T|q 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 QKY@gjUxP<1*Cq`Ccu$4=wg3PC literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-publish.avif b/static/images/docs/partners/apps/dark/registration-publish.avif new file mode 100644 index 0000000000000000000000000000000000000000..a71d29bb4b651efd0b4f507fc3633ecc39c5fd17 GIT binary patch literal 19665 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-support.avif b/static/images/docs/partners/apps/dark/registration-support.avif new file mode 100644 index 0000000000000000000000000000000000000000..e72937c95de5a5deaed8756e100279a89a6b5815 GIT binary patch literal 17022 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 Ctc~aZ literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/diagram-consent.avif b/static/images/docs/partners/apps/diagram-consent.avif new file mode 100644 index 0000000000000000000000000000000000000000..5138ef57ee2e3f950ec5c7d672708f3396c99b04 GIT binary patch literal 15821 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/diagram-overview.avif b/static/images/docs/partners/apps/diagram-overview.avif new file mode 100644 index 0000000000000000000000000000000000000000..fbf2483f6d10838a677337a0c29e419452c6b624 GIT binary patch literal 28586 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/diagram-scopes.avif b/static/images/docs/partners/apps/diagram-scopes.avif new file mode 100644 index 0000000000000000000000000000000000000000..b19481b1f7887161bc06fcab36ff3125f7102082 GIT binary patch literal 15925 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/diagram-tokens.avif b/static/images/docs/partners/apps/diagram-tokens.avif new file mode 100644 index 0000000000000000000000000000000000000000..7aa81b2e30a6c21337647fc0811c2bbacae4553e GIT binary patch literal 29013 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/quick-start-consent.avif b/static/images/docs/partners/apps/quick-start-consent.avif index ef3384a9726126d4f32b10a87e75587153bf02e9..35f37ce20b5fd262646411ecfddc0429885a35f5 100644 GIT binary patch delta 9365 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 P$Obfmp_)X1lQJzjdCNMc delta 10086 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 O391rIux}`P#wk!ApO16^ literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/registration-publish.avif b/static/images/docs/partners/apps/registration-publish.avif new file mode 100644 index 0000000000000000000000000000000000000000..65303f5eb745b46aa51d81793c41a063b3950ecf GIT binary patch literal 19720 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/registration-support.avif b/static/images/docs/partners/apps/registration-support.avif new file mode 100644 index 0000000000000000000000000000000000000000..b6726b007080557efab0a3fc6aa06a6b838b3472 GIT binary patch literal 15812 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 Date: Thu, 23 Jul 2026 17:35:08 +0530 Subject: [PATCH 3/3] docs(partners): address review feedback and add Device flow concept page - JSON bodies with client credentials in the body across all curl/hurl blocks - Switch examples from tables to databases scope, list databases in quick start - Replace introspection with userinfo verification and JWT decoding via JWKS - Remove authorization_details pre-selection and fix consent narrowing claims - Official product names in the project scope catalog - Add refresh section to quick start, public client PKCE section to Tokens - New Device flow concept page with diagram, tested end to end - Retake consent screenshot with Databases READ permission --- .optimize-cache.json | 6 +- src/routes/docs/partners/apps/+layout.svelte | 4 + src/routes/docs/partners/apps/+page.markdoc | 2 +- .../docs/partners/apps/consent/+page.markdoc | 7 +- .../partners/apps/device-flow/+page.markdoc | 108 +++++++++++ .../partners/apps/quick-start/+page.markdoc | 160 ++++++++-------- .../docs/partners/apps/scopes/+page.markdoc | 79 +++----- .../docs/partners/apps/tokens/+page.markdoc | 180 +++++++++++------- .../partners/apps/dark/diagram-device.avif | Bin 0 -> 24021 bytes .../apps/dark/quick-start-consent.avif | Bin 10778 -> 14779 bytes .../docs/partners/apps/diagram-device.avif | Bin 0 -> 24382 bytes .../partners/apps/quick-start-consent.avif | Bin 10912 -> 13969 bytes 12 files changed, 337 insertions(+), 209 deletions(-) create mode 100644 src/routes/docs/partners/apps/device-flow/+page.markdoc create mode 100644 static/images/docs/partners/apps/dark/diagram-device.avif create mode 100644 static/images/docs/partners/apps/diagram-device.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index 8d72d41921..7113e5e70b 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1600,11 +1600,12 @@ "static/images/docs/partners/apps/dark/consent-screen.png": "cfb1385940b821a39a90e2c2010d6a9d86b7d02373adb564e78711088acd092c", "static/images/docs/partners/apps/dark/device-code.png": "e84f23cfcd904cf5fa5aef2642738fb6ce2289135c8f7d74c5b85d36b3da127c", "static/images/docs/partners/apps/dark/diagram-consent.png": "cdf260c28c98ebebe8e553eb8600dece94989d160bece85c1fee63e9cf21de21", + "static/images/docs/partners/apps/dark/diagram-device.png": "208a3dc343bfd1c4ea16d64b6b19e8efec363855231b0eaf467de1397bc29a64", "static/images/docs/partners/apps/dark/diagram-overview.png": "1fd06d30fc53efa69157f3c6be62c991610acdc7c97463e58341310d6fc0ebe5", "static/images/docs/partners/apps/dark/diagram-registration.png": "66abebb561a61bc51923f42c6f85ec63a4de4ce57901f74072fa3efb50277f30", "static/images/docs/partners/apps/dark/diagram-scopes.png": "ee95a74b1ab45607c4ab72f8522ecc624471f81b74139cf5288066e3c8fe9c2f", "static/images/docs/partners/apps/dark/diagram-tokens.png": "99c1951b4640fba1d7e116ef0dd75ed5c171f843f6ff312bc16f2b0f08e2239f", - "static/images/docs/partners/apps/dark/quick-start-consent.png": "1d9b2afc99e93e53f4dd934f7de659cb1f52c11d5f42d447b9910ad574ff24d9", + "static/images/docs/partners/apps/dark/quick-start-consent.png": "7b5c60b821ea7d3cc037ba77f97e858429c6a63a99b453ac063fbe9628e458c5", "static/images/docs/partners/apps/dark/quick-start-provider-setup.png": "55a2bd989f7d7237d17d2bdae78d5d1cce8adadd01e6c155ff1c766cb26a1fb2", "static/images/docs/partners/apps/dark/registration-general.png": "790e305253b5371db9997c07234a9f464fb8b1f2529206f4b737ddca4a1729a5", "static/images/docs/partners/apps/dark/registration-legal.png": "aa1e4180df13f90e2d2797b2166bb401d05c7d90307bf9553f6fe06c0ecf00cf", @@ -1615,11 +1616,12 @@ "static/images/docs/partners/apps/dark/registration-support.png": "f2d54e58b11f638401b0f4888dc5f404816dac86584af3fa571f6c045e7b3053", "static/images/docs/partners/apps/device-code.png": "1afe19a6a183e2a0da2a4777db710d2b88e28e3dc51d0fedaed3dbcee1b29580", "static/images/docs/partners/apps/diagram-consent.png": "3ba2989ce6f09ea5c3a0e49665d005c6f6b2fb1b92b624c2c2c30460649f96ae", + "static/images/docs/partners/apps/diagram-device.png": "f620b3b450ca3b34fc9326cb1b4bd9fc7066e4c912b229c211e1ef30ff77010d", "static/images/docs/partners/apps/diagram-overview.png": "81932121776e4ac7af3a93fe4cfdd93a44aa8c4dbc739bfc08a56c92665bb612", "static/images/docs/partners/apps/diagram-registration.png": "46b85ba2d4bbcb932c6b15d338586542d67346d981f204d36aa3e4f5bdd6debb", "static/images/docs/partners/apps/diagram-scopes.png": "cc01f8f049ce13956c0311f3192c41ce964f89819e016e61deb29475ca5a600c", "static/images/docs/partners/apps/diagram-tokens.png": "c1f169da1c3c4abb51936a117d41dba5a71c721c508a1a91bc6cd8cf0b25149b", - "static/images/docs/partners/apps/quick-start-consent.png": "d583752f9abf911002861032e097737cf6b2f0dd49ffd582f9306b72ba4789ac", + "static/images/docs/partners/apps/quick-start-consent.png": "43ceef1d6e6a1f4b73ae0150508909f7af903332dc2817ba168fef361b185e57", "static/images/docs/partners/apps/quick-start-provider-setup.png": "1c3dce9dc68df86c0744d86cfa0e2bcb2185fdc52f5fe22138ab8d21b1f571f2", "static/images/docs/partners/apps/registration-general.png": "78b66e81d64fcb3bc421ac8ae923f03753ee730996c56e16fe3d4aeedac591c2", "static/images/docs/partners/apps/registration-legal.png": "7d11e03dbf12709c2a349accd813e86315e85cc1fbf74d7e4c69f69ede48d39f", diff --git a/src/routes/docs/partners/apps/+layout.svelte b/src/routes/docs/partners/apps/+layout.svelte index 807565ae27..454f33a34d 100644 --- a/src/routes/docs/partners/apps/+layout.svelte +++ b/src/routes/docs/partners/apps/+layout.svelte @@ -39,6 +39,10 @@ { label: 'Tokens', href: '/docs/partners/apps/tokens' + }, + { + label: 'Device flow', + href: '/docs/partners/apps/device-flow' } ] } diff --git a/src/routes/docs/partners/apps/+page.markdoc b/src/routes/docs/partners/apps/+page.markdoc index 3d41f35baf..42d45d2d22 100644 --- a/src/routes/docs/partners/apps/+page.markdoc +++ b/src/routes/docs/partners/apps/+page.markdoc @@ -34,7 +34,7 @@ Your app authenticates the user once and then acts on their Appwrite resources w Sign in with Appwrite is the authorization code flow from OAuth 2.1, served by Appwrite. 1. **Your app redirects the user** to the Appwrite authorization endpoint with the scopes it needs. -2. **Appwrite shows the consent screen.** The user sees your app's name and logo, reviews the requested permissions, and picks which projects and organizations they apply to. They can narrow the request, down to read-only. +2. **Appwrite shows the consent screen.** The user sees your app's name and logo, reviews the requested permissions, and picks which projects and organizations they apply to. They can grant fewer projects than you asked for, or decline entirely. 3. **Your app receives an authorization code** at its redirect URI and exchanges it for an access token, a refresh token, and an ID token. 4. **Your app calls Appwrite APIs** with the access token as a bearer token, on any of the granted projects, in any region. diff --git a/src/routes/docs/partners/apps/consent/+page.markdoc b/src/routes/docs/partners/apps/consent/+page.markdoc index 1833c2f6ce..524bd4bdcc 100644 --- a/src/routes/docs/partners/apps/consent/+page.markdoc +++ b/src/routes/docs/partners/apps/consent/+page.markdoc @@ -27,7 +27,7 @@ The screen is built from your [registration](/docs/partners/apps/registration) a - **Your app's identity**: the name, logo, and tagline you registered. - **Permissions**: each requested scope as a plain-language line, under a one-line summary of the overall reach. -- **Project access**: a picker for the projects or organizations the grant covers when the request carries project or organization scopes. If your request named specific IDs, the picker shows them for confirmation instead. +- **Project access**: a picker for the projects or organizations the grant covers when the request carries project or organization scopes. The user signs in first if no session exists, and can switch accounts from the screen itself. @@ -35,11 +35,10 @@ The user signs in first if no session exists, and can switch accounts from the s What you request is not always what you get. On the consent screen, the user can: -- Deselect projects. -- Drop scopes, or narrow them to read-only. +- Deselect projects or organizations, shrinking where the grant applies. - Decline the whole request. -Only `openid` always survives approval, so an approved flow always identifies the user. +The permission list itself is not editable. Scopes are granted as you requested them or not at all, which is another reason to request the smallest set that serves your app. The token response tells you what you got: `scope` holds the granted scopes, `authorization_details` the granted projects. Build for this from the start. A dashboard that asked for five projects but got two should show two projects, not an error. diff --git a/src/routes/docs/partners/apps/device-flow/+page.markdoc b/src/routes/docs/partners/apps/device-flow/+page.markdoc new file mode 100644 index 0000000000..44bf217f4e --- /dev/null +++ b/src/routes/docs/partners/apps/device-flow/+page.markdoc @@ -0,0 +1,108 @@ +--- +layout: article +title: Device flow +description: Sign in with Appwrite from TVs, CLIs, and other input-constrained devices with the OAuth2 device authorization grant. +back: /docs/partners/apps +--- + +{% only_dark %} +![The device shows a short code, the user approves it on a second device, and the device polls for tokens](/images/docs/partners/apps/dark/diagram-device.avif) +{% /only_dark %} +{% only_light %} +![The device shows a short code, the user approves it on a second device, and the device polls for tokens](/images/docs/partners/apps/diagram-device.avif) +{% /only_light %} + +Some clients cannot run the redirect flow: a TV has no browser to send the user back to, and a CLI has no redirect URI to receive a code. The device flow ([RFC 8628](https://datatracker.ietf.org/doc/html/rfc8628)) replaces the redirect with a short code. Your app shows the code, the user approves it from their phone or laptop, and your app picks up the tokens by polling. + +The flow is off by default. Turn it on with the device flow toggle on your app's [OAuth client page](/docs/partners/apps/registration#console-oauth-client); the authorization request fails without it. + +# Request a device code {% #request-code %} + +Instead of building an authorization URL, ask for a device code, authenticated with your client credentials: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/device_authorization \ + -H "Content-Type: application/json" \ + -d '{ + "client_id": "", + "client_secret": "", + "scope": "openid profile email project:databases.read" + }' +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/device_authorization +{ + "client_id": "", + "client_secret": "", + "scope": "openid profile email project:databases.read" +} +``` +{% /multicode %} + +Public clients send only their `client_id`. The response carries everything both sides need: + +```json +{ + "device_code": "6015241e3d2023091dcabf86d5ab85c3f16c985c49d418f37f0c446e1d2c2a9c", + "user_code": "MDF2TN39", + "verification_uri": "https://cloud.appwrite.io/console/oauth2/device", + "verification_uri_complete": "https://cloud.appwrite.io/console/oauth2/device?user_code=MDF2TN39", + "expires_in": 600, + "interval": 1 +} +``` + +Show the user the `user_code` and the `verification_uri`. The `verification_uri_complete` variant carries the code in the URL, which is what you encode into a QR code so the user skips typing it. The codes expire after `expires_in` seconds, ten minutes here, after which your app requests a fresh pair. + +# The user approves {% #user-approves %} + +{% only_dark %} +![Device verification page asking for the code shown on the device](/images/docs/partners/apps/dark/device-code.avif) +{% /only_dark %} +{% only_light %} +![Device verification page asking for the code shown on the device](/images/docs/partners/apps/device-code.avif) +{% /only_light %} + +On their phone or laptop, the user opens the verification URL, signs in if no session exists, and enters the code. From there they land on the same [consent screen](/docs/partners/apps/consent) as the redirect flow, with one difference: after approving, the screen tells them to return to their device. + +# Poll for tokens {% #poll %} + +While the user approves, your app polls the token endpoint with the `device_code`, waiting at least `interval` seconds between attempts: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "urn:ietf:params:oauth:grant-type:device_code", + "device_code": "", + "client_id": "", + "client_secret": "" + }' +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +{ + "grant_type": "urn:ietf:params:oauth:grant-type:device_code", + "device_code": "", + "client_id": "", + "client_secret": "" +} +``` +{% /multicode %} + +Until the user decides, each poll returns a pending error: + +```json +{ + "error": "authorization_pending", + "error_description": "The user has not yet approved or denied the device authorization request." +} +``` + +Keep polling. The moment the user approves, the same call returns the full [token response](/docs/partners/apps/tokens), with the access, refresh, and ID tokens and the granted scopes. If the user declines instead, polls return `error=access_denied`, and your app starts over with a fresh device code. + +From here, nothing is device-specific. The tokens behave like the tokens from any other grant: the same scopes and targets apply, and the refresh token [rotates on every use](/docs/partners/apps/tokens#refresh-tokens). diff --git a/src/routes/docs/partners/apps/quick-start/+page.markdoc b/src/routes/docs/partners/apps/quick-start/+page.markdoc index f0166845bf..238ab9e098 100644 --- a/src/routes/docs/partners/apps/quick-start/+page.markdoc +++ b/src/routes/docs/partners/apps/quick-start/+page.markdoc @@ -56,14 +56,14 @@ With credentials in your environment, Horizon can offer a Sign in with Appwrite The query string carries everything your app asks for: - Identity scopes, so Horizon knows who signed in. -- One project scope, `project:tables.read`, for the data it needs. +- One project scope, `project:databases.read`, for the data it needs. ```text https://cloud.appwrite.io/v1/oauth2/console/authorize ?client_id= &redirect_uri=http://localhost:7700/oauth/callback &response_type=code - &scope=openid profile email project:tables.read + &scope=openid profile email project:databases.read ``` URL-encode the values. Because the request carries a project scope, the consent screen asks the user which projects the grant covers. Scopes are described in the [scope catalog](/docs/partners/apps/scopes). @@ -77,36 +77,40 @@ URL-encode the values. Because the request carries a project scope, the consent ![Consent screen asking to authorize the app with selected projects](/images/docs/partners/apps/quick-start-consent.avif) {% /only_light %} -This is the moment the user meets your app inside Appwrite. The consent screen shows Horizon's name and logo, lists each requested permission in plain language, and lets the user select the projects the grant covers or reduce the access to read-only. On approval, the browser returns to your redirect URI: +This is the moment the user meets your app inside Appwrite. The consent screen shows Horizon's name and logo, lists each requested permission in plain language, and lets the user select the projects the grant covers. On approval, the browser returns to your redirect URI: ```text -http://localhost:7700/oauth/callback?code=&iss=https://cloud.appwrite.io/v1/oauth2/console +http://localhost:7700/oauth/callback?code= ``` Use the code within five minutes. It is single-use. # Exchange the code {% #exchange %} -From your server, exchange the code for tokens. Authenticate with your client credentials over HTTP basic auth. +From your server, exchange the code for tokens, sending your client credentials in the request body. {% multicode %} ```curl curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ - -u ":" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "grant_type=authorization_code" \ - -d "code=" \ - -d "redirect_uri=http://localhost:7700/oauth/callback" + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "authorization_code", + "code": "", + "redirect_uri": "http://localhost:7700/oauth/callback", + "client_id": "", + "client_secret": "" + }' ``` ```hurl POST https://cloud.appwrite.io/v1/oauth2/console/token -[BasicAuth] -: -[Form] -grant_type: authorization_code -code: -redirect_uri: http://localhost:7700/oauth/callback +{ + "grant_type": "authorization_code", + "code": "", + "redirect_uri": "http://localhost:7700/oauth/callback", + "client_id": "", + "client_secret": "" +} ``` {% /multicode %} @@ -118,51 +122,43 @@ The response carries the three tokens and echoes what the user actually granted: "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:tables.read", + "scope": "openid profile email project:databases.read", "authorization_details": [{ "type": "project", "identifiers": ["*"] }], "id_token": "eyJhbGciOiJSUzI1NiJ9..." } ``` -Check `scope` for the scopes that survived consent and `authorization_details` for the projects the user selected; both may be less than you asked for. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. +Check `authorization_details` for the projects the user selected; they may cover less than you asked for. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. # Verify the token {% #verify-token %} -Horizon does not need to trust its own bookkeeping. At any point, it can ask Appwrite what a token is worth by introspecting it, authenticated with the same client credentials: +Before doing anything else with the token, ask Appwrite who it belongs to. The userinfo endpoint answers with the user's identity, and only for tokens that are still active: {% multicode %} ```curl -curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ - -u ":" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "token=" +curl https://cloud.appwrite.io/v1/oauth2/console/userinfo \ + -H "Authorization: Bearer " ``` ```hurl -POST https://cloud.appwrite.io/v1/oauth2/console/introspect -[BasicAuth] -: -[Form] -token: +GET https://cloud.appwrite.io/v1/oauth2/console/userinfo +Authorization: Bearer ``` {% /multicode %} -A live token comes back with everything the grant holds: +The response is the signed-in user: ```json { - "active": true, - "scope": "openid profile email project:tables.read", - "client_id": "horizon", - "token_type": "Bearer", "sub": "6a150ace003bc4c2919e", - "authorization_details": [{ "type": "project", "identifiers": ["*"] }], - "exp": 1784737416, - "token_use": "access_token" + "name": "Walter O'Brien", + "email": "walter@example.com", + "email_verified": true, + "updated_at": 1784707579 } ``` -An expired or revoked token returns only `{ "active": false }`. This is the authoritative check: it reflects revocation the moment it happens, which decoding the JWT yourself cannot. +An expired or revoked token returns a `401` of type `oauth2_invalid_token` instead, so a successful response also proves the token is still live. # List the user's projects {% #list-projects %} @@ -200,11 +196,11 @@ The response lists every project the grant covers: } ``` -Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. +Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. The listing returns 25 projects per page and accepts `limit` and `offset` parameters for paging through more. A matching `/oauth2/console/organizations` endpoint lists granted organizations the same way. # Call a project API {% #call-project-api %} -The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:tables.read`, that is reading the tables of a database in the project. +The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:databases.read`, that is listing the databases the project holds. {% info title="No SDK required" %} Prefer not to use an SDK? The cURL and Hurl tabs show the raw API call: the project's endpoint, the `X-Appwrite-Project` header, and the access token in the `Authorization` header. Every Appwrite API accepts the same shape. @@ -212,13 +208,13 @@ Prefer not to use an SDK? The cURL and Hurl tabs show the raw API call: the proj {% multicode %} ```curl -curl "/tablesdb//tables" \ +curl "/tablesdb" \ -H "X-Appwrite-Project: " \ -H "Authorization: Bearer " ``` ```hurl -GET /tablesdb//tables +GET /tablesdb X-Appwrite-Project: Authorization: Bearer ``` @@ -233,9 +229,7 @@ const client = new Client() const tablesDB = new TablesDB(client); -const result = await tablesDB.listTables({ - databaseId: '' -}); +const result = await tablesDB.list(); ``` ```server-deno @@ -248,9 +242,7 @@ const client = new Client() const tablesDB = new TablesDB(client); -const result = await tablesDB.listTables({ - databaseId: '' -}); +const result = await tablesDB.list(); ``` ```server-python @@ -264,9 +256,7 @@ client.set_bearer('Bearer ') # The same access token tables_db = TablesDB(client) -result = tables_db.list_tables( - database_id = '' -) +result = tables_db.list() ``` ```server-php @@ -282,9 +272,7 @@ $client = (new Client()) $tablesDB = new TablesDB($client); -$result = $tablesDB->listTables( - databaseId: '' -); +$result = $tablesDB->list(); ``` ```server-ruby @@ -299,9 +287,7 @@ client = Client.new tables_db = TablesDB.new(client) -result = tables_db.list_tables( - database_id: '' -) +result = tables_db.list() ``` ```server-dart @@ -314,9 +300,7 @@ Client client = Client() TablesDB tablesDB = TablesDB(client); -TableList result = await tablesDB.listTables( - databaseId: '', -); +DatabaseList result = await tablesDB.list(); ``` ```server-kotlin @@ -330,9 +314,7 @@ val client = Client() val tablesDB = TablesDB(client) -val result = tablesDB.listTables( - databaseId = "" -) +val result = tablesDB.list() ``` ```server-java @@ -347,8 +329,7 @@ Client client = new Client() TablesDB tablesDB = new TablesDB(client); -tablesDB.listTables( - "", // databaseId +tablesDB.list( null, // queries (optional) null, // search (optional) null, // total (optional) @@ -373,9 +354,7 @@ let client = Client() let tablesDB = TablesDB(client) -let tableList = try await tablesDB.listTables( - databaseId: "" -) +let databaseList = try await tablesDB.list() ``` ```server-dotnet @@ -390,9 +369,7 @@ Client client = new Client() TablesDB tablesDB = new TablesDB(client); -TableList result = await tablesDB.ListTables( - databaseId: "" -); +DatabaseList result = await tablesDB.List(); ``` ```server-go @@ -414,7 +391,7 @@ func main() { service := tablesdb.New(c) - result, err := service.ListTables("") + result, err := service.List() if err != nil { panic(err) } @@ -436,7 +413,7 @@ async fn main() -> Result<(), Box> { let tables_db = TablesDB::new(&client); - let result = tables_db.list_tables("", None, None, None).await?; + let result = tables_db.list(None, None, None).await?; println!("{:?}", result.total); Ok(()) @@ -446,6 +423,35 @@ async fn main() -> Result<(), Box> { A call outside the granted scopes or projects fails with a `401` error of type `general_unauthorized_scope`. The token works on every region, so your app never maps regions itself; use each project's `endpoint` value from the listing. +# Refresh the token {% #refresh-token %} + +Access tokens expire after 8 hours. When one does, trade the refresh token for a new pair instead of sending the user back through consent: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "refresh_token", + "refresh_token": "", + "client_id": "", + "client_secret": "" + }' +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +{ + "grant_type": "refresh_token", + "refresh_token": "", + "client_id": "", + "client_secret": "" +} +``` +{% /multicode %} + +The response has the same shape as the original exchange: a fresh access token and a new refresh token. Refresh tokens are single-use, so store the new one as soon as it arrives; reusing a spent token invalidates the whole pair. [Tokens](/docs/partners/apps/tokens#refresh-tokens) covers rotation in detail. + # Sign in through Appwrite Auth {% #appwrite-provider %} {% only_dark %} @@ -478,7 +484,7 @@ account.createOAuth2Session({ provider: OAuthProvider.Appwrite, success: 'https://example.com/success', failure: 'https://example.com/failure', - scopes: ['project:tables.read'] + scopes: ['project:databases.read'] }); ``` @@ -494,7 +500,7 @@ Account account = Account(client); await account.createOAuth2Session( provider: OAuthProvider.appwrite, - scopes: ['project:tables.read'], + scopes: ['project:databases.read'], ); ``` @@ -510,7 +516,7 @@ let account = Account(client) try await account.createOAuth2Session( provider: .appwrite, - scopes: ["project:tables.read"] + scopes: ["project:databases.read"] ) ``` @@ -528,7 +534,7 @@ val account = Account(client) account.createOAuth2Session( activity = activity, provider = OAuthProvider.APPWRITE, - scopes = listOf("project:tables.read"), + scopes = listOf("project:databases.read"), ) ``` @@ -545,7 +551,7 @@ account.createOAuth2Token({ provider: OAuthProvider.Appwrite, success: '', failure: '', - scopes: ['project:tables.read'] + scopes: ['project:databases.read'] }); ``` {% /multicode %} diff --git a/src/routes/docs/partners/apps/scopes/+page.markdoc b/src/routes/docs/partners/apps/scopes/+page.markdoc index add2aafbe2..71cc98fb66 100644 --- a/src/routes/docs/partners/apps/scopes/+page.markdoc +++ b/src/routes/docs/partners/apps/scopes/+page.markdoc @@ -12,7 +12,7 @@ back: /docs/partners/apps ![Scopes and targets combine into a grant that the access token carries and every request is checked against](/images/docs/partners/apps/diagram-scopes.avif) {% /only_light %} -A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:tables.read` by itself says what, and the user's project selection on the consent screen says where. +A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:databases.read` by itself says what, and the user's project selection on the consent screen says where. Request the smallest set that serves your app. Every scope you ask for appears on the consent screen as a permission line, and users decline requests that want too much. @@ -41,9 +41,14 @@ Project scopes carry the `project:` prefix and map to the permissions [API keys] | Functions | `project:functions.read`, `project:functions.write`, `project:executions.read`, `project:executions.write` | | Sites | `project:sites.read`, `project:sites.write`, `project:log.read`, `project:log.write` | | Messaging | `project:providers.read`, `project:providers.write`, `project:topics.read`, `project:topics.write`, `project:subscribers.read`, `project:subscribers.write`, `project:targets.read`, `project:targets.write`, `project:messages.read`, `project:messages.write` | -| Project configuration | `project:project.read`, `project:project.write`, `project:keys.read`, `project:keys.write`, `project:platforms.read`, `project:platforms.write`, `project:webhooks.read`, `project:webhooks.write`, `project:policies.read`, `project:policies.write` | -| Networking | `project:rules.read`, `project:rules.write`, `project:domains.read`, `project:domains.write`, `project:wafRules.read`, `project:wafRules.write` | -| Operations | `project:usage.read`, `project:health.read`, `project:migrations.read`, `project:migrations.write`, `project:backups.policies.read`, `project:backups.policies.write`, `project:archives.read`, `project:archives.write`, `project:restorations.read`, `project:restorations.write` | +| Projects | `project:project.read`, `project:project.write`, `project:keys.read`, `project:keys.write`, `project:platforms.read`, `project:platforms.write`, `project:webhooks.read`, `project:webhooks.write`, `project:policies.read`, `project:policies.write` | +| Proxy | `project:rules.read`, `project:rules.write` | +| Domains | `project:domains.read`, `project:domains.write` | +| WAF | `project:wafRules.read`, `project:wafRules.write` | +| Usage | `project:usage.read` | +| Health | `project:health.read` | +| Migrations | `project:migrations.read`, `project:migrations.write` | +| Backups | `project:backups.policies.read`, `project:backups.policies.write`, `project:archives.read`, `project:archives.write`, `project:restorations.read`, `project:restorations.write` | `project:all` grants the full project catalog at once. Reserve it for tools that genuinely administer whole projects; the consent screen presents it as full project access. @@ -71,62 +76,27 @@ Organization scopes carry the `organization:` prefix and cover what a user's org Scopes say what your app can do. Targets say where. Every grant carries both. -## The user picks the targets {% #targets-picked %} - -When your request includes a project or organization scope, the consent screen asks the user which projects or organizations the scope applies to. You send only the scopes; the user's selection is written into the grant. This is the default, and it needs nothing extra from your app. - -## Pre-selecting a target {% #targets-preselected %} - -When your app already knows which project it wants, name it in the authorization request with the `authorization_details` parameter ([RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)). The consent screen then shows that project for confirmation instead of an open picker. - -```text -https://cloud.appwrite.io/v1/oauth2/console/authorize - ?client_id= - &redirect_uri= - &response_type=code - &scope=openid project:tables.read - &authorization_details=[{"type":"project","identifiers":[""]}] -``` - -Each entry has a `type`, either `project` or `organization`, and an `identifiers` array of IDs. Use this for flows like connecting one specific project to your app. +When your request includes a project or organization scope, the consent screen asks the user which projects or organizations the scope applies to. You send only the scopes; the user's selection is written into the grant, and your app does nothing extra to make it happen. ## Reading what was granted {% #targets-granted %} -Either way, the token response's `authorization_details` field holds the projects the user ended up granting. +The token response's `authorization_details` field holds the projects the user ended up granting. -To check a token you already hold, introspect it with your client credentials: - -{% multicode %} -```curl -curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ - -u ":" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "token=" -``` - -```hurl -POST https://cloud.appwrite.io/v1/oauth2/console/introspect -[BasicAuth] -: -[Form] -token: -``` -{% /multicode %} - -The response returns the granted scopes and targets: +To check a token you already hold, decode it. The access token is a JWT, and its payload carries the granted scopes and targets alongside the standard claims: ```json { - "active": true, - "scope": "openid project:tables.read", - "client_id": "", + "iss": "https://cloud.appwrite.io/v1/oauth2/console", "sub": "6a150ace003bc4c2919e", + "client_id": "horizon", + "scope": "openid project:databases.read", "authorization_details": [{ "type": "project", "identifiers": ["*"] }], - "exp": 1784737416, - "token_use": "access_token" + "exp": 1784832895 } ``` +Neither value changes after issuance, so a decode is authoritative for what the token holds. [Tokens](/docs/partners/apps/tokens#validation) covers verifying the signature. + To turn the targets into concrete projects, list them with the token itself: {% multicode %} @@ -141,17 +111,12 @@ Authorization: Bearer ``` {% /multicode %} -Each project in the response carries its `$id`, `region`, and `endpoint`, which is everything your app needs to call it. +Each project in the response carries its `$id`, `region`, and `endpoint`, which is everything your app needs to call it. The listing returns 25 projects per page and accepts `limit` and `offset` parameters; a matching `/oauth2/console/organizations` endpoint lists granted organizations the same way. -A scope only works inside its granted targets. A token with `project:tables.read` reads tables in the selected projects and returns `401 general_unauthorized_scope` everywhere else. +A scope only works inside its granted targets. A token with `project:databases.read` lists databases in the selected projects and returns `401 general_unauthorized_scope` everywhere else. # When requests fail {% #failures %} -Two mistakes fail before the user ever sees a consent screen. The authorization endpoint redirects straight back to your app with an error: - -- A scope outside the catalog returns `error=invalid_scope`. -- Malformed or unsupported `authorization_details` return `error=invalid_authorization_details`. - -Both catalogs are published in the discovery document, under `scopes_supported` and `authorization_details_types_supported`, so your app can validate requests before sending them. +A scope outside the catalog fails before the user ever sees a consent screen: the authorization endpoint redirects straight back to your app with `error=invalid_scope`. The catalog is published in the discovery document under `scopes_supported`, so your app can validate requests before sending them. -The user can also grant less than you asked. Consent may drop scopes or narrow write access to read, so treat the `scope` string in the token response as the truth, not your request. [Consent](/docs/partners/apps/consent) shows what that narrowing looks like. +The user can also grant less than you asked by deselecting projects or organizations on the consent screen, so treat the token response's `authorization_details` as the truth, not your request. [Consent](/docs/partners/apps/consent) shows what partial grants look like. diff --git a/src/routes/docs/partners/apps/tokens/+page.markdoc b/src/routes/docs/partners/apps/tokens/+page.markdoc index 6e40bf9a4a..45b7da94ae 100644 --- a/src/routes/docs/partners/apps/tokens/+page.markdoc +++ b/src/routes/docs/partners/apps/tokens/+page.markdoc @@ -18,26 +18,30 @@ Your app holds three tokens with different jobs: - The **refresh token** replaces expired access tokens. - The **ID token** proves who signed in. -All three come from one call. After the user approves your app on the consent screen, exchange the authorization code at the token endpoint, authenticated with your client credentials: +All three come from one call. After the user approves your app on the consent screen, exchange the authorization code at the token endpoint, sending your client credentials in the request body: {% multicode %} ```curl curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ - -u ":" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "grant_type=authorization_code" \ - -d "code=" \ - -d "redirect_uri=" + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "authorization_code", + "code": "", + "redirect_uri": "", + "client_id": "", + "client_secret": "" + }' ``` ```hurl POST https://cloud.appwrite.io/v1/oauth2/console/token -[BasicAuth] -: -[Form] -grant_type: authorization_code -code: -redirect_uri: +{ + "grant_type": "authorization_code", + "code": "", + "redirect_uri": "", + "client_id": "", + "client_secret": "" +} ``` {% /multicode %} @@ -49,12 +53,55 @@ The response carries all three tokens, along with what the user granted: "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:tables.read", + "scope": "openid profile email project:databases.read", "authorization_details": [{ "type": "project", "identifiers": ["6a357f7e001c7237296b"] }], "id_token": "eyJhbGciOiJSUzI1NiJ9..." } ``` +# Public clients {% #public-clients %} + +Mobile apps, desktop apps, and SPAs cannot keep a client secret, so they register as [public clients](/docs/partners/apps/registration#client-types) and prove themselves with PKCE ([RFC 7636](https://datatracker.ietf.org/doc/html/rfc7636)) instead. Before redirecting the user, generate a random `code_verifier`, hash it with SHA-256, and send the hash along in the authorization request: + +```text +https://cloud.appwrite.io/v1/oauth2/console/authorize + ?client_id= + &redirect_uri= + &response_type=code + &scope=openid profile email project:databases.read + &code_challenge= + &code_challenge_method=S256 +``` + +The challenge is not optional: a public client authorizing without one is redirected back with `error=invalid_request`. At the token endpoint, the original verifier replaces the client secret: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "authorization_code", + "code": "", + "redirect_uri": "", + "client_id": "", + "code_verifier": "" + }' +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +{ + "grant_type": "authorization_code", + "code": "", + "redirect_uri": "", + "client_id": "", + "code_verifier": "" +} +``` +{% /multicode %} + +The response carries the same three tokens, on shorter leases: access tokens last 1 hour and refresh tokens 30 days, against 8 hours and 365 days for confidential clients. + # Access tokens {% #access-tokens %} The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068)), signed with `RS256`. Its claims carry the whole grant: @@ -71,6 +118,24 @@ The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf. - `jti`: a unique ID for this token. - `auth_time`: when the user last authenticated. +Decoded, the payload reads: + +```json +{ + "iss": "https://cloud.appwrite.io/v1/oauth2/console", + "aud": ["https://cloud.appwrite.io/v1/console"], + "sub": "6a150ace003bc4c2919e", + "client_id": "horizon", + "scope": "openid profile email project:databases.read", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "exp": 1784832895, + "iat": 1784804095, + "jti": "d0fe924a1fe6113ba1bab1eaf631603d", + "auth_time": 1784803731, + "tokenId": "6a61f2f3c94806401116" +} +``` + Pass it as a bearer token in the `Authorization` header. The userinfo endpoint is the simplest call to try it on: {% multicode %} @@ -92,7 +157,8 @@ The response is the signed-in user: "sub": "6a150ace003bc4c2919e", "name": "Walter O'Brien", "email": "walter@example.com", - "email_verified": true + "email_verified": true, + "updated_at": 1784707579 } ``` @@ -112,19 +178,23 @@ When the access token expires, exchange the refresh token for a new pair: {% multicode %} ```curl curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ - -u ":" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "grant_type=refresh_token" \ - -d "refresh_token=" + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "refresh_token", + "refresh_token": "", + "client_id": "", + "client_secret": "" + }' ``` ```hurl POST https://cloud.appwrite.io/v1/oauth2/console/token -[BasicAuth] -: -[Form] -grant_type: refresh_token -refresh_token: +{ + "grant_type": "refresh_token", + "refresh_token": "", + "client_id": "", + "client_secret": "" +} ``` {% /multicode %} @@ -136,7 +206,7 @@ The response is a fresh pair, in the same shape as the original exchange: "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:tables.read", + "scope": "openid profile email project:databases.read", "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." } ``` @@ -177,7 +247,12 @@ Never use the ID token to call APIs; it only tells your app who signed in, and A # Validating tokens {% #validation %} -If your app runs its own API and receives Appwrite access tokens from clients, verify them against the published keys: +Your app never needs to check a token before using it. Every Appwrite API validates the bearer token on each call and rejects anything expired or revoked, so the normal move is to send the token and handle the `401`. + +Decoding the token still helps in two places: + +- **UX**: read `exp` locally and send the user to sign-in the moment the token expires, instead of letting a request fail first. +- **Your own API**: if your backend accepts Appwrite access tokens from its clients, verify them like any JWT against the published keys: ```text https://cloud.appwrite.io/v1/oauth2/console/.well-known/jwks.json @@ -185,42 +260,7 @@ https://cloud.appwrite.io/v1/oauth2/console/.well-known/jwks.json Check the signature, the `iss` claim, the audience, the expiry, and require the `at+jwt` type so an ID token can never pass as an access token. -Offline validation cannot see revocation. For the authoritative answer, call the introspection endpoint ([RFC 7662](https://datatracker.ietf.org/doc/html/rfc7662)) with your client credentials: - -{% multicode %} -```curl -curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ - -u ":" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "token=" -``` - -```hurl -POST https://cloud.appwrite.io/v1/oauth2/console/introspect -[BasicAuth] -: -[Form] -token: -``` -{% /multicode %} - -An active token comes back with everything it holds: - -```json -{ - "active": true, - "scope": "openid profile email project:tables.read", - "client_id": "horizon", - "token_type": "Bearer", - "sub": "6a150ace003bc4c2919e", - "authorization_details": [{ "type": "project", "identifiers": ["*"] }], - "exp": 1784737416, - "iat": 1784708616, - "token_use": "access_token" -} -``` - -Anything expired, revoked, or rotated away returns only `{ "active": false }`. +Signature checks cannot see revocation, so your own API accepts a revoked token until it expires; the short access token lifetime bounds that window. Appwrite's own APIs reject revoked tokens the moment revocation happens. # Revocation {% #revocation %} @@ -229,17 +269,21 @@ Revoke tokens when a user disconnects your app: {% multicode %} ```curl curl -X POST https://cloud.appwrite.io/v1/oauth2/console/revoke \ - -u ":" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "token=" + -H "Content-Type: application/json" \ + -d '{ + "token": "", + "client_id": "", + "client_secret": "" + }' ``` ```hurl POST https://cloud.appwrite.io/v1/oauth2/console/revoke -[BasicAuth] -: -[Form] -token: +{ + "token": "", + "client_id": "", + "client_secret": "" +} ``` {% /multicode %} diff --git a/static/images/docs/partners/apps/dark/diagram-device.avif b/static/images/docs/partners/apps/dark/diagram-device.avif new file mode 100644 index 0000000000000000000000000000000000000000..3652f071d4c70627f26a039fb7a4feb660fa4c3d GIT binary patch literal 24021 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 k$i>H1T_3P-;VpB1CZ_bMlPSX6o&W%S$vRPx# delta 10605 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

e| zP3cpM<{jHb-FFsK-1D~>QzjhSDx1FmXs{msg@WgA$N*J|&fjHqcpd_3gjz=c49~bL zc0*ETQF+@hMkN*n1-$R2F$86}p3-j`esqvFtGxQZHjc|)%zjoFuDdE#R|*RaV!Tn> z?wn_j;R}zLGf;{H85fF1;)fT_*t9F%$(U)g>*`OX zL-Rl!YYlEOF2PR5D(LeFmwb6_5lU$|upe*Z63OX{tWCb**QnG4fmwChTK<&3@ zXZLf_lM~;6MQc>ef0qs+$ePv>AolNDYw`|AtgGTV#bro!CDuj<&%CX4scPu646piP zxP0V)#KjezVW!lc3C~#xzugO<_c%o29-b#fYf0@iL75=&$_ag7U}7Q#(0o?GPJs?0 z9NiKkcu^P2uKXo9))-u`2WIQtTtDZ_t=@h{;13Dyu_QHw^oMU?ofd1DbMN#09zX(} zNOT}iM>jq}dkE14M7KPjyYLkvj#bUp_EXU|^qxsv)nOHx0S_*34{$AeGmYRU)DNrt zMl}eeO}+^8T(_DFI&qa(dJ@fa-O{s0Dy8}{mviN6k_%~&`YROulfpeuPa0KSd^k*8<5C`R{l;!dNT zwnZDq!+@r%aHP4p5fk#{P9ELDFbsn~bM~N=L2<`+;FRtBa6GhU7&onMm-PZLweLf=Ol0y^-hgg++Q@&bVoIPOKP4pd^*WBHv|Vj6Jy#QNx1Ju zQlk@=e9VGhfA$oT$_S(yv5$T079kR@q_LpEx4o#HPuhl+ZTmJnsylk1_$e#gsr&uW z+RovgiX7P@?Rv%-Z-w_8F$nsJpgImIw*B!zBMHiHQ$R(u)!a&>I4K*DJL&nGJz`iR zNeyPFZ0W7p%~w!B4X<*$oPXC8bHX=`3|~MiJaTSpM%I6~1|~dZS604>y~Bv!Z}O6_ zZa?lJ@>EJ5VKQ_zEfa!JUSg%XW=OcYOcxuRrF?CZ-Di-9lGA@=;jrPl-zaYtCFqaG zIM_53OFnbrSBvOZ#{k+!L8sx>$BMhRvfq}YcMH@royCZ=PCIcNB)z;|g}LjSTJR8w zS2Aq<`;gz$*Uh*UICK<`0YL0ho`J!tcH?*J!BH|6-tJu8Bnoqzlv3!bY1(%0LId|; z-B;1KHCgkh6WiJ%b7<;-bq*?@V=%%vNjMigR-sINJgXM#)CjYJaCsU9wIH51keWb} z+GjG`#6jRYQ=_RL`-D7?p5>aZcAxIJZ>`0aHFJuG*w!GEDK`XQ&M%T>M0}H$5;$zb z34^eHe~rO5XXM@)0U3;cl!HO zw$HIDEh?WzdZo6@s$=H~rrw;IZ%!BhaaJ0AonwoVcN}wr)I;Ym9TCeq;{dHMk7~Aq zjV0dm;9&#SlY4~;H@1P;n~#d}wMLmE4iSJjESBuBzHIP)%9&q)^dyArls(d2oK#5| z9sdNnUgBopfh)W9fL7S!SiV(ND~-qUTr3&qmUJsD-6uIx(x-xt&SFW1xCvyHKGife z_jb>7&gJsMGzh1K+E6C13>NOz7C4wZd-9;Mqvl4x*>5QxNsGP|>Jj(a!v%$5bS@#; zyFkk#NRXfum>k@U_CRonpvwVKwA*f6CR-ZY{=``W2U;6i5a}Lxu?E~Kx6_OOj^#D( zkAU-wR_8Vey_perpV zYOzPO;m%fBB>=~Ox}x}1yU0td;@BwpmjDd@V$3%`E(0F(Kz2ppX0HMA2Z(6o!tfY{ zarUbH$k_!J#9tXw|6Qr(G-ZRUr@M=XKoQ{uSH8iDo*rjz~EhApd|ic!*#(MV|< z)`~qgnIVlv$naz7`fQZ&|)@$KV%F;9s5LrDz2@q75(S$YU-E% z%~NN#2NShoYgoSrZr0lUhlAR$bO#-)X>{CRAX3O7vD*6Jxr{NI6x@)AkKgkUL($2x z40uX}hf2ZV5J?&(1aFrtX4_O zu5)RivR!xR_H<3v_Tbcr<3D0}$rzI6!*{r90D?`rAfvNVa+ypzzV9xEE_NHbU!doa z+#M->sA+2BQ!2U1THo&iz1N56=9VGdn_09RnWG`#u2GL9iJ}WMk&8O>9*s=OPnOAz zz9GlsR?IHjgzd75n1VYxHuDT&W&gp3IcT%BU7Y{ zzjKXOV(nlml^N9XQrfCdngUMw)WBLesT_x1ggZ;36jk;RJYd;aIX590;v_FC2#@;6 zmoaHyHdUE9k6YB|0tAz4wPdB?@aNk0Zs|yK|cExVr$N99+U z$;znE2!pW9Zl^O`oD7&nO>9zr$Sv@?C$wGdc_+mxY)7FV=N8{W%zzbttzKCk7(Wg{ zfiaq5hB`}3P5Z#ea0MwGZ1Ks^-Ebq$`U|7I-|g8<4|ZEJhq*%Nlq5| zmE6i6Pc%${3M#!37~pxxXPMOBjZ*u7yQXpqx2TA$8>}kb1(GJ?jT~bC4f@6h3AWxI zYFna#6w_Ua-VI_0`-UYy`v(a0*3Z9NJ=>=4s+zkW(uTj=zYoSU0rcaqg4-;i0CVQ~ z)e%SB(y&2PL@i4HFa-+mRH&WaZo(1xJUcHk+lWy4Hpg>#>U#uHjc}jev%goOTFKx} zvfoh?w9wvUaD^Oyf+mK3>UZ|35WpeUe-?b?qfH2L#SK{Y&rd-z+`pO`73)`wcnAr@ zvMO}QrRmS`IV0e`x0X8qb*|pM(O__-G?#@E@iK?iD=(a@I|7)@n$l1{(=Bo(;{Yc2 zcyGo*j-09}nZo)`br`uIyEcJ7Q zHbDZt{0w^j(6i&ycn0g3a|3)Fm3C!G2S{iFe_8cl*Ald^;E?*Z} znTg1x6iHDGhm>8q+Q}o@T$k>4SUl?iSoKm6VikI`>@Q}Gm_Vah9OZ+^$q<(@AjWcO zZju*h*58tlVFAXylL;?-nE6yjI#YYTJ?T;kyc(P^eoqY2|+rPTrr? zVuYyBx2Pg(yOwBX`l`++Wdi#0&c-Cvxeta+TOaiL2OA7qx1DmT{g_3>^>}u9C+K3@ zYlot32!Bt%+4!0^pC6Ia!U~6iK8|pabI+d71;0&LhO2Z}uIgUefUKR%g;rmG+$>s^ z-yD6`6&jno%b<05n_VyW^%6?)ytDs%Njaaeu><$DR39{*Zu*}19~;7U)qny+TlhsWw5G)=UU?BQkNNK z%3fo%Bt9-?Ht^s3UEpm!B|AwCTc*#gZ|Pz-q&f292?-3LekFZ1tPD-+rH@zQNuSNn zw5>zvVI0G}nEuQtY*`7=MTEKrfGDNm5DMNxe-vWRn8pElkz&uT<3hw($r#n?r&6lP z7JH~m+z*+6s>lW|gd`vFD#AmXC^u}{!hNR8?7dA0lFiAEue-l)V-6S4b#o#^v%18u zeYvFCf8LnbJ=0E*_U_OD-+yOA0;?l>Y_!$9$E1TZo7TTyf@VdptBZX74&!rTB0-%l zJI67nz(G5X@MG6hZh`WU|V=0FDflhdK#QRN((VkxEHlPS=P z%g`G@%MrOELpa?{Ki7<*kJtZ=ESz*mAd`v}U1O?64AakTtYmI$1*m&-(e+ZlvN45St?4pR$CMPzL7OSM$Bs%to zDYuV@|CyM+9+Y&JmP|{4LI#?B>{I>+yl<|$lI2PBR2mTbyXI6~xIbrE#+Iddukd>_ zcO90|XTM#V)9|{|?R6Ww7(iSjM=n(;jK=?T&F3;$W4hoFE~@F27PMTYFY0ct`MS>G z8CNaQxm;YHN{|UcQ`oz%up?g%IgRlrc+sD|Q(ZO_H5(hqr_!obDP``BW}g`KQ!$Ch zuN5K?w`t>e1s)yqYA>nh)mYbUv}BKzpsYW#M*Szb*EzB{=QvLixZY0GQsaBM)N!(H zG(Xnn%IB=WA&PzHh>kT9HhpV4&r>H*lYbq8zxjl7+Lu^dNCh;Ogoj!NysAu#YXIsA z?d7qyu8MDM-%CUkciR`u)6^0OXbe5F9xOI}Cq_V|uR%};KhM*|pqus%gNDI6kyu+J zK_!dTjMz3Unr3#LB0X7IYkCuQ0)}Je-a_wdgBZ8O7~_Bn{*+!G|FDu=*qmFNIfJb5A2wrgT0Z2%s?NwF^I;`~%?BO&(G01Kwh)~Xyd*h`8&kchN`tzdBD%&0u=BN0 z6b2+|>UYn6A?5c?FwU{+eM9vpMILxqUXLWitvz7`J-8w|o2;Ax5QTbI+!?DT+w=T5 zs=GmEI3FSxowE&Cm6Wy6(px;La59awQXJrvG%g@Q9XOa1)PU~~ zWYyXCU*L_3(B-6)Ju^T$ad+T0WP>7#Unk!gc6p+X^paD&*0F$lDum{Q!loOnD1zZ901lZh&j+#fBTZ_)`n& z=DeDlCt;0}CwY&KS9Fot%%F5PH}wO`so-DMBxT83*l~5P^HEjdDjo&AnSf*~^0>6L z5Y9X01Oh|<3jnY3gY=|EjoL&O*j_xuoQ4l9c{jT&E6UjW=Z1W3=`)Px@5qd!s5NH; zh=&#!Z;f`&~+u8i7htf+99aa+6tJpF4!Z%~E8T%4&kep;#> zS173G2`c)^U}4BCFI-67g2G{=LFiq`X=6`4IN?IhvXEelXF(pR#LD^9oSF>5j=E*a zwv^oB06>i6ox^)cK%$@++(kdU2~cAMXd>6F9#R!bkAD zD9QqQ&ew;Fd8Foq3^C8!MDoBIg#CDobwfi) zEijm8EjprBDKqc2;g)nk;*a&XnqI6l+tOJqJ#fSvQywX^rCe~AQb+*VkskBllM((E z%cL=n+c~?oOM61%sl}(sT?K>dmVynLPq2zZn_$BpQ-lG!K}V3LuO5;yHl83}5eAUkxTRh9iEseWmRMQG?WVkNls`A(|8I|s*(BqZ z|5PVl$!B>yO9eMKdV~~X9+_H7!hP8n84YfgLM)G6#3wU%typ{wH#jyGn_1dTkBjda zZf#7&bNWIt)OgMu!R3MLfREWFr9UueV_dZFwxmJI{srY+Wso$j_*GM1hE9_Dh$M&a zW{vC4n*V3z%n~<763>Qee&yfGj4~CM!~IxZQ6z_;z4}$XXUtqDI_nwbG|NU`qx%-K zSTr+xkCU{B!m>I80b9I-$5YYGb&zfG;Ei52(FMlsWi)5B9QOY7 zxSmk;2im$e_(E(};DojNfTv0RuMS3vouh}yGt@;fL3~$!$3i1BKZxK%wC+aa zR|=P${CoHt@SC&eSlFux862cLQjq#d!#fMSAHzt)>&Tj|-GDI`f(iPC0cecG5=I0l zV$UMpd5Yd<<8ZuJuv92ZA>Vaj^Kg#p@&o_HTLZtOUPbup>M{aT6qEBU0>s$}Z~j&N|L}kASHi zLY!h5!Hu{9uVDNhYw8E*gc(xs$|Kzj5(jHy=tdfaf+DKSP0BkGu6FUffOQHTG-kF6>SMW6RmJJ~Ehs zHKUq93dmu%ZMwPE2a%US<^tG9OsdTFcg*v&G31Y~kEsJqbB{p)J3>!_`%&c3akXdg z);CtK5b7GRS+(xg+SCv~{3d13{1JQWYF!^#XQHkEcMxhseJc;Z`V#>YpB+gHz{`Bu z2vR;%&P`YxE1PEkbof0};T^*Zx1Dx#*K_Wo40MIw^Qq!(pe{T2^YTb5f*nn7i|%<` zSviC~*-wGFbnaQIH+}B-0r}GS#g82(kS)}#c2Mb@UVB?_f@V;QK4Fw@10(R;|Cx}Z zN8EnrBQOhu64Sw0WMq_4(eH?gX*~lIu1aZNFH7%wTLDd$DU6Zf^pvANfTWClX5s5D z`#npS0rA$4G_SdSfj{g@Wg@Bc91NbVbe`7#J!S9QQ$Zm~Ag$sQI0Cyb9fgZ%<0nHy z47jWD!Nwjo8gYR`hi;GrxA57|3&4rmJnS@eps?C7FaVIJP`{2kHiQ?mvz}ah0ahLu z`50aNb;t(8B|bU}2=1>&T^_%~?u=O2^hkB~G5=Q-5yX^r)v_I(YlrDnXkjTbo^|U+ z&20v-m-F*GaZvZAJrg28jy25%-N!Y@8R?u*%G>RWjG)lwfZo7$E41Q8&Mu^5d3&>fOta5@ux3r zQ=BB@*?d&mSX@%X1aa$)Q6J0kfeK?aGlU-rP%yZBrYr;jdLJw*VGA@2$V-hAPl z;#{_>=XXm^iwh!pNVw*Be30+eXUeDQhBVW=zfl4^6L~B#T_G)9X*MsHB>xCsw{uoH zQEXK2H#i^E_znhQyJVS^EJ?|%l@D^jf@xx%9DMX4hkRBvggd!07c9mu8cQP~2TkyD zyQ1PiO@pH{seZT2n-Pa#^0jj5dCLN1aKq=CJLRqUb*h2;Q@{3KKZC@|di^RfH@jj` zEk6Y`735zM(y0k{&`c$kUqimS~tPTwpgL)1?ker(iH!w`IBtg72Bx&;SF2=SqUC zEPn20m!A{~>nU}?2#>xP;<9@bc@?0YwQFayK(?wgG_qu+NaLz}*7k)dJ8Kr*BvxxA zcaZVox$w>I%fJ@)*^iNee%?AWwH=jykU)uvEGV0}S_4(@@8^1+$O@m9V6PGCrKivH z?~#6%YDJOeX#_C!2OH&>a@|1>j1|Txd97a<7keaVCZ{i~`$Tw_|({hYO#V3eG#Il*reCGaN;Y#OV$4JxVl}^ zDh2Q3n-vddbn2Zg%n~)V)pQ6Xv(+Iy)*{+ghO}=pYqs>I^^k|>)SsSwFOQ4yI1q`P zV_Asb2tU{2M3|t6W??}Er|?R$cG7J& zy9SCuQt^}d5HsZ*odrQFs8i~v&Bmo%CtEn>*WMCKDf2JymfkRe%wX)H6;ta@SDTaI zVC$#1t+gff#ZMEGCkkZj5zx~Bf{Ts5yd=AC$_557Zk%3Gid9mvPc}`)J5gJ{iDKX% z_KmEF>Oe-sIljL z0ezke5-5b{#x9#YgbeXd=cNp|E21W|)*A=j%uv6S6qVxbVnk4^yz#J;+o2&J@Q*1n zFX*`j0j!^YZ3V+cjm7ylXZ(^m6;BVtV0VJR`ehLY&K7LFJErQ1PO?p*kC}M$DCk@SWOvF9> zXsG)K!>r59f*lUe0(0T>lDZ?_hSfUiN23b0k8C169*4k>u&}o%7YN{|!G1h{U?;|l zg^7O9a!%F4wh_FoXGDU4>09&2G9}-tG`Xw4k2rS{bh|8S z=z6*kwL=f|Tk@q`bR?TV>eq}KXy@2?i-Za_DN7+9uo_v28;Wpc*m4zNXWc0)aYp@C z*?lSd7f6DhJuH}_PJNYzC1Z9p_}0hfu(idcZnl}h$*J@|h_1G;K#8n>++$jvXUgnz zL5&_t)_p$->s_CYMg<8pT0WgtukW`9pBFi??Ckf0AV+X=FbF1UU&EdAg5@yOc}^%o zW1*XR2x}3U?|2Gx2;=0KD{IfpffcR0a_(Ct%|*JPG#0l4V$4UO8_iZju9 z+1)K0TL~xOw+TNT_mqV8d=u+=Gp6OM#kntg6V@C<_u7=HJB*T;F4$+Tbr$oye+hze zRMybsBZ}KlEgHcS1V6Twf4?dbZd|ZLP_xDN8r#q?-rc@D7s+cnP%CdG1iXN)>Oi^7 zBn`EmAG_7>%<(SL(2|$7X`TV)Pz?WJ!#}k@(32^vL=PdWurHM-Sg5qDe8lbRLQKJk z(HMYBUY_JVilsC#ny_$64=cB%w4yVXB&m^_19HfrCQ=gpaF%r?)`Wys1y}FXpUH@e zoVDe~h37|iDZ%iHO{n*C*L3^X38xRUJdo4`Q@V3n2(=c79~BW{%~`~D%D%0{SEHZo z^W~DTS*4qrV|4Y(D)se}o3dh_41x|{HAIYdL%@?j ze=@w79;PU|Z&C$NbSwnQHi_M#S606!EpBF+RE%0FJ#IBlRXA*Bu)l|43T88)C?F-9 zfTfG%2fw&59Y2pTyQK1eatHqk=$2RT2Y)*9B0f?^o=h*Zc=Q}em|}#BxQt#A+dwK6 z8$kHu+oxYjq0+1f_j;u|&|FsGOk;M~50zH>KzVLutO$2My^vZ$n@hwbc|c;dw!^D& zN_qcW0)ndqnA+zns7^$&2DX@OO#%{hV5vs&dGI(Y-Evo>09x6b}!M^+p(V=|u7-T48&jB!yMF5FgizG5J zCh}X7z5TdnLn|Rh4Q&`>DV}bw7Z%UuiB9bSJ!AK~p>oiosp!EE-c>9AQ=HZxl6vlV z_LfBR+nitJj~nL3OkKksxQs(P8~x?aXR<8q@84QP>-5bH%Wp4}DL|(&l2DIx-#4+Y z;p2bZkeQ?Lnl>^`A&+>#iZ|+2kZP-BNR*lCgW-7Kk+?L_$JIQ=?W{jPFlGc*Le{uw;6^5uo50kUMu^|es-4X8mbqjI#-Ou zcsy4|Smcx>16SDgi#*#cpZ>Qsec3FsrLX>duRrO505Zp5(73A&9*18BOhUs%VEKqN zDJEza7c{Ve0nK-gPTJd|MBXfv2CEwlGhl~=g(#B>z&xsb!a?eGIoizNK=1qW=;lue z8WG99mT{61pnr+y&Jm9gI=|Xbt2pvvD539E`C1KE=>h&Uqi)q&=%1F(8n&4x=_6ug zmY1u!7Tz`(9ehie+A`~?EPLaOa9WFTvzpbqArD%mdMtu(&H>03ICTb`!Uw#EIIyHr zm@Y3?K-CC?he0P1F9>!$`nqwPCUxE}CX~UfX2Z&OmvR@qxwah{;f|?-NkI=%WKkzj zuqx$ShD7l^9X534#F=iwOo?C7#8+{e=xC4_KSw2QOt^N`mCH%Qo2k@HOw)7 z*pYFW`Tjotr2Q^4R5>iB-J!{=%seRT)wN_1_!FUkM^Ia0O8D_w<&7|_5HSdL7kOC~ zgX*@F78Hl@%QvXQgvmknbqdiS7Ey6{+o^QC`#q4Xb>L+UGn{#U`Lt1A(!|izt-yrN zB**QcyemLPT(gC4xRjh1?1wQ*eUc11-XcT~p{ zU(b#R3Zr$uoZyEFjOs3{~7@(rZDz;i`5=hrb)sE4(4Y!<8uS7&MLm z+gPQZ01?DP4&y?1>Y>S)hyL{TNH98Bh;YZBt?caHa=yN9%=pIo^?PbT5v;`_^9;^8 zD7?&;7m~o*DZaj~q|X3%jj~Vl9Y4YP^7I$obS^FGHi<2K^nd;7n>>>eJv^e#+7e*@ zS3D}U9G5`^tM0qEeW-TA&7|`;q2ebhwxo=jSl}3rD=Z#hOrdTJAoNR^-Gaikj+ZHX zjL7>=vj`kUvE>-AQBXg*09S5zY8IbUWg~$2@)#(4TZ(bq%*Oi8Y9nG`OA_7O>9oOl z@6|O3w-wFKynpDo@X!z(@obJt-iIRvIfXIM4wqb+YWQsNx5kNw`!D2jjb20u|4U8t z#FQDTsy56>&ue_?t>?p(`37vXj6Ub${z`zDXtiqhlJeW0OQgNY^^oCpnz>Oyr$rX|bp zeu*&rX}2Yz2jC6uw|1kNtcO~tjX|4_c^>QuIpRJTzZ!L0S=t*u=M$R(d%Lo3dPf%= z)g(&T7C%9IU=ed9VxgFe7VA~3^c zwY+9tfRfc3>%`aoT=A&~N|~^#m_u%x3DM3zkbzXLHh*Gz6@fQi3F;c`MSk;4c1_um z^TR~vk-JqZAw57a1}Jj_VO~uaF}uxwAw*pEMEY+JM$Iq}x}J0fN+x^Isrbtu|Ha0K zcjYbRAXZ!2E-)?R;&HY|x0nmlb!=G<8^k_a9O@>)?sB8?khs%AqPP=)ML=kiDzJZm zS-GRc^C0E@+0YGpCk~bqisSkN6OnKc2u?a2P8c*}Oo845US){gbeu6l;BT=Z>$`{it8(y}eQbU(2SBC|bn%33^XKL}obXNjx z?A#{dEnl3iWRvTJ+796;UuwKDXVJb>?4BDK(tgh>?~mn?`75oiH1=#A{N>N7@ECmbUh6AC)SxAG5@ETxL8n_ z$K;NfGxIcbH;)CE2ziE=$U3=Si4tlUWHU_@?6Yo_M~9+v>-^)SQ$ALUm0wR#dyJC_ zfAov=$P!I($8_MpeFMeP9}z9NcPKy@Yi@S@jye_HO)w7KTc)3yz@eG+rDoeKBhgy6 zBlj6nyK?EdBl7Xncl*33sV-q~q8^ono?_9ot7Gkr?ky@k?{ptwgqc}260hld zb*~<&7ehsjlzgHNd^b!-ZGDG)f9i91Rsh&&mh?%jcr%Sqo!6NIfD|IpSQ-T}>Y|*O z{a@62^m4Ui8R@#};&l0O3gn#R9$YqF;gfkTTd592Ns$Xl%sf7rvQb90o!!4YMZC#? zWlu-s=s7PwPA|c4C+A$~ZYAt7R7Q&MJH38$M(JbuqFHglav~8+KZ*9;e=`C%gH4>q zVU*wRO)aAlc~St0jywdxgp!R-(ow4H0AVXQ60c7#5ehSIAHOI~2F>SU%KLAwKnWZb z75ly90DxtWq3c1V@3F{yNu{bEb8U#JNmh%TdSomfkW)HE; z!NOZk&vSpqM+F_p^FCW$>Ty;tIKtA5#@Ynp5$7PBnd0`^>6Tn9r-j>8gaujtT+u0C z+Zn9Dj~&!P`pyu(wS$ShLi=h4s3;~9OmW9L+}0^>J)32*bMMKR zb{>J?Hnj@YHc$cHvB0EiO+ft3O1KkikFSEnc`aG)!-491G_&e#?6knGvN+L=T?J29_%uY}~bfU`z2ez<3UG44jSL3J3ZB1|LmeOe&4#9+a7WX`-Bjqb6wc{G%`3_8IL!wMU4i&2OMXX} zY3@P~&9hm4jzxJzQ$wrO)P^^MN+4LATTHUmQ&b=qq6x=x1NxT)DAWOcpT160)^6=` z_^QlhYx7~bh8_PFN!x|ec2BdXaVgz3_#BX%%xaNGc0gwulZoBH8C zaX0__f>^1MsnU&zb(F$O_}X=+aoGwFay+Bz8}4QZIIbW0y7X&&D8EKQ9rBgCe4t>K z5cdF@2~v4fOkPqXF;iAqp-+8@KynUz^qPpxpP3(@2x*GBub!qFC`zg^_%?iW zRq^&JLAlhrp|oR+OM6=AwPHr199ihhl|e_UyB8ZeYT6oS3}SxWRVMjj0i5-zL+S2U zB=yPR#N-8T{=;8+TJn?Y={eNLDRB*SCf&IBThSE??(MAz`3*HcZ<J&VxRkfvApk+dACseYN@`b;@@=x0;PDO4Lt{6TbHj#u~(T$P%2~bE! zI-rF@3dxzu&pRhx17fZjRsVgF|t#H=kBV2}cd)P&u+^EeB0L5HUPe$U(vOOV0O z3Y8;*f|B<(gOVlIDUwbcDpoZ)%rW2r<(!&WaS>34_}$L%X~Pm$QR2QnL=OS_3Vb^_B8yAG&nHpN9X;XEA`XMSarI%m(O= zz;6w}jMRg|)equRW`i5*aOv}MApgpqMRX(sDJsA92-$FxCl~b5q608g6k|YBGiXxi z_(+<6*>S0g@Jf0j-1K6eAObwxIE$6pV-$(VM+^BtpeYdxwYTf&lVdufpe1#tgG|l{ z+HToSr#)+16ycDbIwm5Cc*&tatg(ybHgMkxU!*@V=j{P>57)Pvg7Q%Obgp?iXZx~e zaa;VIEG^@69)})P%Q=3{4Q6ndA9;q`k0^_O={U6dSDd8`AxOJk4h7LsWk3m|TLH-b zN^Ke)!hyrCUX)q-`35`(FIMQG`wp@`fRF4t=*Rh{X*@AtBSCthu??3tIqmC0G=)*afi< zDgfI%jPp5~1ED+muH$=9yt3MVDf&Hg0Je+R4!?R4xIj(GHHNsJ^7oS@>*K(~;_?wN zeo5A?vx|#bR|3Q8f9H?MPpd0EWej`)!`$;=nvJCwPt|vW4YG)r0+_1u)#jM|h^qAg8&Ss4(DVSA#w7 z>1v*zYG?!ByORs`q%7_eW+o2nyEOgMJ+MNIyr`csVMJ*rqjM~zowqr*3e_zX^)Y^>L`IJgz5o?a$XNeBSe+~YsN#ML8pp_5ON ziOOj@qpaL!eNt|j!;lFEOmoiv`VP4ZpDF>&QaJsbMKiXbC>`fS#tgTv02oyGxT~Ry zaYXnhO^5AtF@z=li3$C6nju59!W z>DQ|33A_>nij(?tpwpI+P|a%y&qP!iph}ctC|p81#JsOz*g?q@EzYMNu5M`EUL`pk8{i^6dVjWsMVK61`Wy3rUMd`}4xO5b>kKej!Fz8;&s_a0y zdoJh#OM1nvtCBk?6SN%U=K1Iv+z9;EUx&(PK2<4Uh*Z^VXOXzO_&0jU*Z5w|rYPC6 z!k;O8-kVT}K*ub9pLxc%liLH9eKb(MJ+(vN8q21`+Hnuq+a zBciIETsiEN?m4-NYD3oUWDrx#)}7FyY<65xBGte8cV(JB{oRejwt5b7iVj%we{QM2 ziXonpwmsvl2+n)Kq%^Z(NHBZoSb1omPfRn*ewWf&*;$`6iU)SdU1Ei>CT6^KfE|Wi z1XaeSzZKrmLIw@)9N8sFwHnET?*equC~qS2-^@jWf}mqG zrY^p&G-8!{3#$I&G3{@L`-(fSvo%~TPKI&BQ-$h67Xg{wT~Sx`#c-*zE&(cZp2Uk5 ztQUFAU4?y4HLV-v$DHFn`XfF3d4}K}%$>`s8Fl=v$n4ycHuqGeH<*o;*WgnU)q}b#F=JIZVdI;>hP2CWR!a2 zgU&6~L8>yHCNd7+GfHR3ZK?HM`Zg43S=nhd-~x-=+Tu*^|1EhtkVtcX4VVG%Kh>31 z#YrIlRqZJn^Hi4Xf8TOnAb2Gvw?22KSaeJq)~X9tz1-P>^B^)jl0F{{USaTCXccp< zDTE%gu8f}IHPQtg7k^@i+e3WAx72?nxt==(5D$I>EelpV}it^l-=EL^dH97R6qD?188XIlhaU|ls4 zB!P^=yBH8^M)-%!10?u`y;Iy#hy?C|kM;7uq#|Hd1O);Kt5AOitc0Huf|xy6p>aGG zmxkXB+^}I>L!-=W0?J}NA1;#kr_D`K?v*35SMWW$2$mg`!P!&&DTS4G+Opboqhdf7 zSds|VfguHU!zC^K{~I1$Q8p#=gBbl?bDsn&Dj)2-*Irep^)Rw-R*|9dxaWT)P@QZb z$4vY|0SrYOXh4@w(aDVZYuHJH8xhHL*caL@gwIbjnL)lvJ9a&lKb_SQ>!%+jS8Kz; z|ML5Moe?ud@TE&VH@HcJ9|xbZ(M$F%>K|+h22Di)cL$s(eGxAqhK0Mvh288ibhVTP zKF%fH^2v%_ANdNIk;$X4zKeZcvmt7qYFhK}!(pF9ezGV}fKG@wEJ9f0cPdm2Ri>6V z)RklqsXjFTQZ-9Q%~~ywjK(B=*tWbLv#Q&-0X8#_{8$#7 zQE(tCe3QS8@_Dm`G}vUJ5g5`s8ovSKLv%Zt5qEpbBU9wSKoB00_eEjlY=Z6JPzi6# zJSsi}r7Lg^rpR>aIBz2%IQ?C8d^6C2h_V0mf9Tv>y%eZ@wKuIy{xVlqk9$8i^ip0z z7?6E%(+}Zq@GN41$E;l!!0}j}t3?|?c5=Ut!CfbZ+vHBL`i7v1NxE%_6)51dJqq%M ziwAAZdFya7LWUkKuYqsG-iCYXG!H#?xNM$uPa>Q{d$yC#KDL$1RAsjT!qR8+%9T2$ zySgA6%(p!Rvuqz9h{V<_nr=z}kDk0YTsO@UGrr&C475635ydkYYDJCOmuPc3c5Q#J z0J>$bwbi&2wXb9(PHN%PsYfSuWT3&AD9{WbhJX_@3g;EMiV0g+aTrK9i=|X@G(&={ z5p=12?BA25L*_ZZCn=*$Hgq!?x%$dnX5v6;5h)UvE8}Dil0Uv`l|qxZ|1_wm;nz!j zK%XSiVWLhWksz@St2jK#^^%hGyn){m2!XEmc-mmwVIZ}^_Oaz>RnT{c3Vj~^OeD|l zNbrBAFPkDst;D=Q+ZZm{u|GxXJK6BQJV*W!S1##U2e3y|?^9_7b&H`<8NYiThmYi@SPIt~ z3p=J<-QwaJ3vIfO&TQc=yptJtSfNU><08{CuK}Yp`BUPENToXrvZmRn_E3a!2=f*@ z=7~1WLbh7}Bp|Q(y4$-{K9}3jQs{;qW0h_L@-!2SY$grXR)cf-L6zI9911vdiQ|%R zu{fW1ccv45wZW=#DbF*|qTtz#s|@%8IGTbt(LA@AF0BKc&_7&d9;b=8vi|^z3tWU%ps_JmyhO7uDh`V?xYqDuUYfs=4hvCgc|8_Q2U}x zm$us3!?p0|6_QbvgJP8)q zYaG+LW-H#~$N^6*J{DVY&8Y)I*_{Xjn~s)^I2=;tl5!@nwjP^-Q$l&0#!GT%we2hf z3j{`HSti$92kpt)B~V@fWB0fRsRVE0fD9*dg-_e>2Z-U#)USo>a0oWL;AKwRTy*Cg z_T%1R)QgpxC&ZgY%>TcD&9=AJ;y_hV^2~64o!V^}3eORCUyva7F9MYwJ~Cf)pN96p z#4WM4^v6SI%aJ?IRd_vsd0B%_}^u$wdp)0eWHl`^%#nF{2etcAe}jjOFyKNW8j z8i~b{g}sQ|n!sXK6QbmQ!w6TyHP`9Kox>R|EO1R*6`kyCm{CCQ_sb;6&%9ZHK(!d# zMHQANx4tUXu8mgr;!MU&+#&_UQ&;IG`KsmI?pp$({wl|dve@+Nj$r{JZ4 z#YEjxu;_Hk_>mb|YR{ET-b8)ju)@=Vn{3$ttyEsOS7?e#{ww=WKloEelLV4ut1$y0 zqE!WrA#RdESBvf*cD`&Qa-2B)^KaXjTZ)pyoT6`4jNr%x7EF>#O!i)Vu-$4D7x`NfMFf4|1=r?90t?^t^CG5F zjB&1i)dVu|Iagvrr@$N;nh+X2dv((^Am_~{hKcaAZA!!Zb3v#rWB-phu8Yk?l8HQQ zm!ta}FVegs#}PzV%S=O`Vo+zV$N9?Z;o9Nw^Inaz}L`TreEX-Urgd9QGXFU zo=&XZt8S2(TaE%3g`~k&aFF73Orv-~oS{{AVcq#6K+T&vkv7!Zuo*3gqYeeH*_)`< zQPbyHZJ1qYm8J>W;>J2G)YT*D!d`r~e91eD30D3>IT2-Dm2!^9Rf+Pnd(O;X~aVkiRzMG$Mft72Ud`~9BMjIhI3V_?}t z+XwQLgL{7>4|1i|PO{peI9-0Y?oeT2W&%rCgR*k{$!zg|_jy;NJ|e*S99%McGO-`K zlbj4Lm{U_?VJ=wQMn5p-Ky{J&1CImQ!f}RvsQbVw-&hPI!`mY8F?1QR_f#JE_}Xw# z$5T+P(HOhKTxod;;Yu5_a{r>8zi`RI#T$gto_*v*Tz&s-V02tzl44Gn7e!7(?9pgmY!&lh>n#J_PF!Ibe7#ethAjmo83EN+d`HY|L12?_qdLlv%H#063j@W zlrLEk0d4Ke;dW_D=j+hCX*I~r$n0T2wU?1zWecCQX+zqUa7UI8bM3Q6oqBD>9q8ZA z;q2%BHb;}JH@pS*AL)dvY4>+ftp+Oa>q15ERY=YpB3rIaz-NIwpp1>YS6Mka zDAo9T{z4~TdKQUJQBjyUE@1`}CD1KPuXJ@JpZRLDvYl}~ddfI7Vw~{}oeVLR=d$d( zC)OZTP@{DhtvnDHO$F)eZaxk&BWL<;OsRj>1mi>qIW$Y#lIV! zzcvLJ@UleZdUvh7Vhkh1_tuo}HrNhDqR@^m{T|R6yN2p&d*Q*{hI}2nmdry-{NEdJ1FQnFGxXqHEaL;{S}m0tW$<_MGipi^Hd*K}@{})FdufHz4Wt0~axM zpD$aY5d^j*D0!wlnO+K#qj^pk1DeN1EdYQ>LW#lP80+uj%W9a0QKpa(Z}$iXWOy z!_rQUu0@}vBXnQgWk~LVI9#rXq;WokW(eTd`+QX^H=m5|UA}`;bif-z57lCesMHLoD1Qb`FbKXMW;IS?HT1lZ2~f!P zrbLsZuNsK(fnpXE6by$33?5-DFBHQ@pBazMqIuKj%LV6_YG^-n?sL^~)!y2*K#70R zoj14@7=03Sm3Io4eB8rCKj0y%_1j)?LmpvHj7CHy_*$|V``H-bSfz%tq_}KUgiM5P zTbNy>4n^7i+B5W-V>~4-nG*~FGnbm@z(7ujE?uykoe}^gYQ=Vx@}2|k+^N(a&u7|U zod0kGwLH)w=5g(6q45br^T42U0WAY@!&(7HP!E)To$~V%yi6+LC3Y{-)>Fi-)Df_O zTc=D*w?C}DN;PgjzF=n0()ekEP74OU(HjkW1zk(#WzH5(s&GsPs5CIL%+CP7>yATr z?q=I4updhGIs#YqOi@1c+UNR;_`#PP(j_hk@vtRDLBs#H6ACL zAV700;UeN0#H7#FG6hlp_yf$%OAsBMW4k$eO)mdDo2ugbieXt-V3SQiH0Laq1Uz>B>Mg)EmxH#Pr~ZyKQ>GTBrfW_^c!&Jzc-? zR(ytK!xCp{2RESoBR*&mSz$v!a;+?(MYAo`%T+WnF`+jLYl9R17eP9f#Ygeq83d=w{igiGoK2Wm?jdw_!UL}l<`d|utooA3DE5A#s9)y&7b$lXbciLuVs!oL)+M5+ zLj0(A^z0_wElKj_SWev!!bzV6imKYiAI??Fh)LV8!&b&IQk>7?nC_2vl+W!pVq!YF z>cO=}(TVN6tCDvfg0+gg6rfNCPOlIbbuVLh)7z$mNGP?r zjW*mEUxy?0J4M?QNj4uGM(1O=EB{s)AlIPa!DMasAs6`q=sC1__N!TrMLY1}rpHv& z;X{X04!fMxwXZ@@xgEV}J(=u^QXjQo74zKEQAKITWe6}AO`FRZpU&4@H_uKfQ?k!| zvZP7D^(4B4UBS*$ng+L2cQtW`OiAEQpuYEynlI7&l+^pO7KuMSjzQvOwR)G{0OJGf zeBD5K|b6(ZUc3ea}y_ zho<h^-HSVEWmtg}4k?^rq3dBLyio$T)^ z2Vsf{zatI_B;A`Q0gkI$50q*`(=1++u(ao%pz#^=5HywcKU-RD8p__$w*cewD%T=A z$hjFC|Jh6n*@^YQ?+fpT)bX$xC`KS}G?P}QJEXg$ezEnjxHM3!!;h4AP zrI9UgqeDUuM_bERc}u&X)^+=IWJxFe>-x8e^a`Cg@RREDMJ;IniiUl(bJ%SW{@tfX zQYve*qV4|XLy*(DGEjjoLX!WTbNN>n3*rnbjM?}#W3~^{4S+6wsxg`6#Z+z8wHwf9 z7>Gx?ggTy6GgUr`3GzTSIyg(kyX~5fGTePdX)`8v5bv3& z1!JTnKhjEu+)>uY<@nv4l@6g;LkVV)K=2A=*$`l7ire5SE8>M_atmTgdI zD-y_qa{f2_;Apb0E#byJfGGYW_oL|he#j(M%OAczp!mn6NFkf%DRP&psjqfPZ=rG( z@%-tp|F{kC_eZhZ4K%5PQi&z5qy44rj}@Ag;y?d2ES`byFXKf(jrisOCkGl zpnT0UE^9~OE%U`aYt)RWtNqbI*ZS{m)Vz5~K`xFUp{>+}mW;+%WK!l0 zTMrmuUOP<58gcvJ6Oo2Emt>GA+aA4m?LNWf!KyOm9+T#F*GC=_ED>tZ+hOxMtHzhn<(L%ZJW8LYyFt@ zU5z0hYII>d`)X>IeTC5hEsGU<%~ literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/quick-start-consent.avif b/static/images/docs/partners/apps/quick-start-consent.avif index 35f37ce20b5fd262646411ecfddc0429885a35f5..0a3fc7e3b79f025c2c5344a25e1207e72f82f246 100644 GIT binary patch delta 13846 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 Y(VO<;uhq4i&k$Y-Z9oiI-H#p7^iLerzW@LL delta 10764 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

kTkqSS`3Svnn$!Z&ucnN@K8{Dh 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/create-api-key.avif b/static/images/docs/project/dark/create-api-key.avif new file mode 100644 index 0000000000000000000000000000000000000000..73564ca6be579cbb8854dc3e96716e2c10c8f70c GIT binary patch literal 17537 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 FB!Eh=*(m@3 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/email-templates.avif b/static/images/docs/project/dark/email-templates.avif new file mode 100644 index 0000000000000000000000000000000000000000..9f3998694175cb81db363a229c463c6e9ab6e218 GIT binary patch literal 30610 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/labels.avif b/static/images/docs/project/dark/labels.avif new file mode 100644 index 0000000000000000000000000000000000000000..0ce8f06595a0bed1083acf72cb05359515f58a7d GIT binary patch literal 32758 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 Nu=(RG|H_%-@IOnzLOcKf literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/mock-phones.avif b/static/images/docs/project/dark/mock-phones.avif new file mode 100644 index 0000000000000000000000000000000000000000..0c775352c168f761a4d73aee5306140876821fb4 GIT binary patch literal 43735 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 z%0AflbO~_w)_F5!=%O9BlsLrGjB9aIAzgp|KQye6(<;NX`C2su>?o6p)1Y`UClmX7Dt`+P*|Eael!@z3-+dlk;!Gze#u;`me#lA1yov;!L`GXIx)hYQqGAF7c23Q(p;o&2CqFpyFyQ)r;W%GIp*H5rr(+On_la6`Wt(g&{_3J^S0AdpSt!IZK$M_hZ ze3QGsseD=U%Qs}03$ssL4In;oJNOX8cQqI)1mMi@K`X)fp;6X2KMSDWFQxy6;m|urw$xU2B39;?IS9kJ@rU8 zq3-VI2q?s0yL585Od@2n4MM`qz7zI6x{FfWpu^(7V#mo{4nK>U;tjqaN<9sTBq$lNP? z9ujPI(xM5!fd&uJBv&sUI$x#M=PVQKb$ z2gjHq16-7=EeJXJG;NKa+&4*_sVTG4p?P+=2u=lf@=`cmNW0ju0a@LbqYT`Xg(Fw< z(QNuy)Gus#$*y*tUgd%jw+J*uPs&OEi5FQaS#TxLYpnYm#DlhL9!iOCjBCkX)X5VE z{=-zFw02WOO)3W*lTJYo!37_FV}KkDHq5+DQ{M?&glyq?Y$W{Rq ze*kkqylYLeCz7^NNf684s|f?uRtt*eJHNQ26d$)YLQdxWgfNk{AW4Nidb3;2*kkkM zybMzjM|d7u0p^9aSI*-k*;Y9Gc~BlRnd*Wy}ehssAPZt`f17L+u_EB+OZ4}N0WNN0+k%)&R` zAEmtK&(o&LXGZrX-{x6mHDCX#cd*@EY1Se6`me%4Tw;K#q{SH9u~hPR!f9QI5c9_d zmOg%|a3vUmbcOV_r`DN8IH*%Tcz;`wzxGKP3>rJq#cfU1DV)71`oH@n_FH2LIcjnD zyedLgSi1xuuJhhh)hfwR@8eB;6Znkq$Hcf(O(;EV%#>BY&g}I7UrZe-qWCpll00wm&zO2B^-A~FPr+TdW zjd9`~EUoMAz@{&^SO-Ti+4qpy0{VRB*&a~x4u=E<`InGpKXhiW$~H5owN2OZzRyQZV8_M`QMF>ydXFT;NWIAD8R58 zGr){H_rLvu%$G=WJptI1HFC_U7cocLu_vtbW;a*13P?A~9J!tcd)J@sBC9Jh)31bV z_pZFmqe$Fty@BzObS8DF&Xp#Y<3e~?f8<_Z5eCIKczni34ypLHDkNy^S<97nF3;H> z{VkW9{d+hl@o#%JL3ov|yO&qm+G>$q>&tH*ry2ZIdg1~{i6L9z!VXn|b)TcU_o3;V zzCj%Z<#WgaB-wa6=BOhYkYZAh?%l2RiqV~EuKVp)^JIQJS-ia&3ESN&8l5h_!&5Q7 zp>@}*5e9a~n{aM_VjU%vw|ftNh;9Zy+H>O<{#uaZ<~~CF?{JHSjGx5?x`$*;Dd$;# zyU>gmSObk?kO=)RbEgmw;Gni|r23dy2ZOERLuKpK;5S8ruLFqF z{skMLoQrc?m9#Rf8z_jzHqIJPR_Lm>gg zdFu99xDX?0(E>o5!>j}5jTRWbdk6&eNw_g7l_DY*{g6!rL6Ptx@aOAC$8a<7AJtWU zvNLzX-XCDlL{T8Z5T2q>XDF}KO{t41rmg9pv-&@5zcRt<2lCtj%bW-ak&rjtu3Rn? z$q!aLV^y*myvb=*P4wshuilm6QLyc4FDipJfyGel4n5d(IHRyiIp;DZZ6W~Q@7Y{I z_7!}4?IimSZU^zrm3T93%I*u=?8Brj@9*#=<8sGPVUP<#NPkR$1gfwIcqq4Z$RWQx z>(ua@L;1#Z7P{MNxHbNKr!TWS42Y_W%%`gMuqK$w7JT6KMVjzJKKRqNNNn6L!9uB!^W$ zare04rE`zUj=>CqblM0qvUH)WU2Uk%ZT$Hb^4Yew%VT_skn1O5U6N(EBwcQMZVt@i z6_C8^LN=N#tp8@%x&DdShbL)jG$TaHAd@S$>(<}@sp%v@NS5QPPt8uttXA=4)7)>F zRA>Ah4!IZExW$O)p-VS^?E1`}uv(LmKwLNG%@NBWopMS# zPt_n6B2XAgPx5kQ26FJNy{B2@v)aSd93lQiQV{Nl+3R`&6sTeo*NE%Bv)6uc9GJm~ z(vPPDc&Vwqi~)bLPyIUl&jD%~p(E@)yHbAsk&_l`EHdMFo7hh(W_buL4Dagp%n!2! znV6YipGuEd>dij0llu&UnzFj7RURAejP4V2o6IglQG_@4Fl(wQb!|~ax(0=5Pf6@Z z=c#$FpM>nqcijnx%MIdOe51uLlokXO$dSZ@&?VSH)W=C&%C&&o>VY}B(IPbIdMZeC zMMoe0t3P9wXjcvrX}eNdCMM<&DQWJ@>HhpQ zdB3C$r~C9BRm2Nd6Kno|4jZm8rr+$w|6H^)LkYp9OvBxws1*C%u+g2VqMSo8)kA(f zRBMp=<_}|<&_dacU;w0VG}%g`;i#1Cly0gD`fiJnMsvo*mNkwaTgw>lq(zAOM@+{e z4rgMFGrPOpB5$JdBjpmsNKtOIz}`Gsf+cx$Ze_JM5&*-t=4?RIQ@&~2AJdJOq(m=F z17zKVNO1m7ijKgO;K4PbNc`BiVICFJTyZ%RcuZ5e&4l}u13-4rv+=o>Pw>jZd<&UBJG@J$^GZLMc5nRQ}^*2 znP=)zMaI6nm3hV2wK?vrIs+Uy0YFdA?@+96Aa>`ixF^YRRDm7fnxSe$e+*C|=!GN_ za}b0VI{0`Pz+<4fj#rO8>NH~tE%N#@1Zk1jNbCav@Ju4e)>nU++dg)B{3+=E=8avo|90OrK-+Mk5^}~RUCJ@ zgK9V~b6pM;;F4q)a9xmnhU8l3&B6sj5z{+u^SJokg^J8!bMVOTAveinT}{lzJ6-v$ zOgfFyQo*Y8a~Oi_>pkS&@RiHP_|5lm-5FS^l5=Kvd0kggS|nztsS&cN)WdCxGDh(g zkuVsB3gWL{VYFpoZtS>GK2}J>o66N&CL4iDP8T=*%|Px=BAN)y+8%G3^!gh0(;u%H zfKxeoC>3LMjny>Fi+MXKPgWJwpUx=YqfMt^NV`$Jsq^(@dc#+J%}V|4f96d7aekMu zJyZG1H*cbnNC&j$j3rx`t9#|w$Y@AaSzfO@DQ;Z2KFaEV7CbD3vU$(8@OFs=40x0J z!I_JM3>On%AWkhm&z6<7^m1cxg486Ft6b5yCles)kk{~d+?YqU%(+C`SK8V)W~+iZ zmUna!LhdkO&-_}aDkGG=%*+qK9SrkCtcul%28S8@z8j{>+*+msRQ_bRwH`m18N3#Y zEKH@*E;ANr(4#~Tt=^H+`;S>rGy^858fl%JpaFZJk%nEgO7b{%dZ3!b0#77cSzI)c zR`J7_rRKm+kSqoCC|g%<7U=fh_rwgev#uK^M*1sxH@tU{>`xkfL)IAJJ3wHcx8tcTPdc2 zE(8pIj~#UAr(PzNGs zLZu5*vyr)MO3%rQFFmw(&%?lA(5`>Nz20t8eUn!4z^x~-pgFDAK3hQTZSb1e$b3k4 z(2O3`5^)sgg(b`>FZgi@v$)2l+U9~ql=(7SW;VbV45D6xu;SNc#Vs#e4h6!sPQzBi z|7T4aSORtFO0eg3L9udgG&Zb`*4FG*;ILcwoJq$r2pqt4OxHVcQhF$m5xSe*v|2qh zA0iHBpeJ5-elg@UGUq<(8(4J+pK_-tyJl0z=mbl8L-DStQWpHYf;YWDh5r4c-Q$+k zIG&GD+aA=<2no*6uZ|fVrVUM}8^roYxgWM8ARPB*6sx*Tg9gXuAk6kUP0Ajg5fe<_ ztLj^cS3Sfd*V^1#j!+<)@wN+HpZDii<2J{ww6oo^3FBceuPXY!xC`Qoj5Are_Ii`Y zFxVBQQko_rJUU|9=ex(T{GR-XDBm{!gI)@ z*;2Ietl$^Q;4vI+ut&7xE(SGW+NW&G?2Hi#T@B zpZB{`s3Foapn2rB>NIZZil~Ee)>yw*Cq!Fr8#lww2BvB-wa{Q6QBmw46@l_HTns+;T1A}hqS;y=}%1n!`Ki?Nu9 zx@ytCs&@|Z>!ACmb&cnqF=l{SLN2gi)&O1ci?yIzo=9?urY@%{#$H|ijn(>{`rRUA zOer;;r0st&rT&aaQ7oh_Q^JU50Z}T^NQnp5YCMwb z-8qd<$OgpWA8-(^a?+>NFBBmN&iGS6xf1LA*-%I5DQ{;l(j*Zwte0H98fhndY|I4U z>^>I?@CM9n2*8G0g%+b4!{d`7MC~;Qb%HvWw@34;8SoCA<5~g}J>>FBQs`_fr9@A^jVWsYLkFxAp?c;J$dYd2d*o zTq+p1JJbaH9h3zEzw?*iW4)w&A?YnG?MZ=aeL4a}i*CCgkclAY#V;aM95_xl#X+pY zJwsV;opA~fm1C?j3|{O1!1m~3ocE&bb}`W7dZ~sxxHi8z?Mb=KbQ}WFmfjAA zUiG2{gBF87oI4HjdaI#I47S}?Vx6255A=`r-gzai0H!>u<_^Xcd59{&3#Xj?92|&#bQ0P=2b1{LzF2w2E2!Zc@o>ll`3yCBD7+p+g_bkCm6x4c!vqrt1= zkENx(z#kIlfG{X7ok(L(keBxc= z{=!R)86@Uej~L8qQwvuq)2_zSeF$hJW&uiZRgRl%MGwUa?s+Q?CL3^3z4^)9({XAH_HQ`L?pB>mtD0cC2@o+>e8U!Q$v7|dY|8e-R6UlX*U0?Iib=vEU7yV z5o1K1RCU;8v+||BtOUA#k(|9U=lRdtinc2xfishUbGx6y0&N~PXc&msR>O+JYD0F~ zP$(V3?^Jx=@ihtDSWRGC20TSvzAon<4*@!B`5E;a!shL?%Z3s6;{q_7JFkB{<_jdS zf9=qD$^#Rm>Y>O}jZYLO@68@w$b8b!6M~rP zcfYU>>C+hv(!y}f-;m{<@poyGejOuAPpWF$(CcgZELyHf+nEOc{6rs`rIUWe%yMB6 znAclTp5q>9Q9q*mW4Tv)wg(MVrI|7D5+jX9RV*J-%~;Q4hap_uV>R5G_jv{dnfsz4 z&9*PTHQ-X{90%{k?2sF;BT(!Zb@96exMO#}NrHU_DmKtocI%>S+Tf0GJSHZ_P`uru zVtMv2NJQ}|qH7Mhpwg?p#~3b}bPYBB^T`MFT`Gkn+)OT8ND`}jwuMuxc*t|}owTkP zTg-9~fnEJNm(%9fx0k#D-zi@RLoZ+ok(Vg};8qy2^VP!=W$G^w8I}1=uM*X(Mx#t@ zT1Gq?mNYO_TO87WMb7Oc%YdVc&{oN^+L4K@~V=mxm!jigzcP%B#XF(ah zLE*}tVJs{CByP*<=WErNHAx0A`X~Xi+TM^@^iqFZE94ejV zbmbs8X*BaN+j7y!IFn~5m9*%AgugO+E59YX81OjQzHV`IEjZ~`W8J47n&}G!$S*eO{8shf+vQm9NoxtDu20k5L9Qu1{p%M zd8fY#S^}gAeLTLdE3ICZZnK=Jzp5Z!)ClG;^|O-v`P!!ax>cxFd|qjTMQ-48hcL7v zVj%Mr4{vhCE3WF3Va+0wKmT<~vR+ADDb2Uey}mat5wgdy5ino7L*TEGMfNmGwF{b+qfC;WkA9J@r=< z1D>$+@i4xFpY6P|Kmnv?hbk+7DRv8ZE>uf@2OC!NNrGOWYX{~uWrClm`aWn0uQgz- z236hhTG;;pWa!K39~a~gwAi3pU+_NC`uk=WqmI#F3^>_CzY3nfEL*^_(ixs-oqLM| zCdmm?IJXP3n-sj_x9=ANjY-NONjLaGV^;@mucZGA-^y)* z+|b2HpeYae3^jTvydFb^r>CW$n`pv^SE!tYrZ*lDVr|a&tv&K_KUN@f=QYFC7&#hm!KdHY_l~c_wD3m+=l0Rp25IVoe z1Zt?U*NpzytO!fLSVIa_kDaXsYjiHP`t`L7h(E)V9|*|G zdzLNcp6##RbIaNzFgXA$_*9OlH-ci7<@RVl znq{bbJueFefpqoS=^SwRPPJ@M$M*vo2c+~zk{zn8T+Nj1_&%5v zQcEV5C(8WNl`db&j+Rqgh!Qc?U`Yt>DAX|(^Wb@${D834;fx#$Y*K@a)M((=0&omU z*s&J3g7WvVF*f^{jmm?y1j2uE% zGpOt?=5Pp6(vw{NUg1;>Z6*8h+9@{fXEpAS7CCG2K4CQ2B4AZQb;Z#I35S=UG>9>S zn%b~_m>#SzO8?WOhCat0FLL{ysp$CmZl@nr-f~(z$}G?@V)Vbz`mX(vw+58nbKK{% zd47~Yr-hqLo^)+osdYl9uei_2ng<*J2VPwOW)FBJKG6IOk7(*M2QbmNWGd6Ok{8b5 z{S^NrIAF-PMik{CiKfX(1#>Xg;(>5&=b4%@+jhasFc$=37O`G8+` zg+X`PH8_wb37kAkQcyH=OPNTO0+W3j!$Yh2NRAcs-{bGm8S^cNQ|Bf~xSAj3;?aGv zQ*+o17d5kB>BLj~dYO>j2w1Uo^`cu*onKrGd$M_HXO7GcpML8H5q~=&`3s2Zz=gp1 zNKr5$44bseZB3$YM}4Uxo4to6AdT1)|9mq8P-X(#0L=r;pZg;=W`Rxn^(~KHwcF6= z;m#m$eOJAt%eHq*K|O$4ri2nIawwo>|5Dmuz^3#o>Q-R+bUYs!4eZE9%#zeJOLiZ4I)C1Ks+<1D>d4-7ke%$Kv?u}SM0|)!fG{^&8Lpb} z$y-sSfo?!+f$=_R0f?B?#=DmO44)t1Z1}M44KrA^!-F!qVQ7wB)~ znA^T%Gk}EZyAGW-&5mouN_=Afr?@qk5KS}La={U9Pu)x&$Cj(qg*M=Wtn06}zqEA% z458&q%qZ!_)0!BWI(%stY69Qi_S;ws@V@#MUBtMDL5~P~p!w9yV^S=iWBv<)3!-8| zBH;O%8nr~v$oaPPJ&jS_@YaKhjhSgzc6sAy7G_d87}{rz+OeByL3BhqBJh17ulxAL z2kw_47iL$?QOAt9g{u0G?mHREH?Iec;u|{!V45mg{mDWiHCO&{|B!A8%B9w}eZ9`e zaEabHr64(B&mw2nL#|AtAlJjaR9|W4mYwFde{b9)^QveZmb(JfNG)()ZlaI=Tv&Hg z=YAe4$IXi{dT*{)>`mxyf^BF%h?R6Kw7GQpszK+`gn@TeH4`;-H~&%Ncx+>Gh#osY zSxxkNahmC0R$|`zz0zAd#>c@*3ztbAD>V#TdUu<2#QJhl^P6%VI;L7ZP~l?!Z!p6Q zanTpIDX&m>GBz+uV$dX+U^Jz_0VChp$)SGS52ti1YU9j&*M8oQ{H4j|d`Z~1RQLZBkmqpaekn8x|6SvO!H-=owgx*JT{l}wFTK$>xcOz?ZreB2zT z4jYF-d+!t?;g>PGbcFUp_8IT;OCr9&M{$5+cXo0;-kn1tvB~8k05Z-q1HrOrrtZXW z42`t7k2r5D2Xu!e4TA*NhP#EqEn#f<$Q~$_Imz=nor2IiPoLhAiTdR#@`M}K)8bTd z1&X)aJA%Ec(xQ3on5ucM;IB6sMDalphLN6nLLsyhmGWpLmphszBvVSg79`TCOfRHT zQ{xUeo?Iv307LX43WL{CH_SGW&&8kn@@ z;00E|2X22mR32A9G+PF53RZxWW4IjMUuVKUGYWfJn4%;d$ew);VpXG&gDjNesy zu|U%st(1>onLIh`jz@Nj^6+RZ9l$F35?%t`idr%lz_uC8J(S;l?^lDV-q&}ED8YF2 zkp*ZH@W+GV7L9#BZ=9CmJ|2n&q9Jd9MQF|{J^;GHC>b5-S5if`SPOQv z9UWlUU<%?;N;hu^d7|m!z9B&Hoip?IC_(vDGuxY(7eQmIrOTS04SQnJ$3}uq^#tFr z0WU5eR~=Gq`wtUx!QSk&v692J9e z*6|-$O}vBnzjnAj1!R+<$H|WFYU2?qEu_C)oTJ3gyOglap0kkutg(C_0x6zVVH4}W zhgLmjy_qbmeE=p>&%rNRTNQBBeEL_EVvb|GM$NwQhY0uq@8wCWU!Ww3=^6bV<0;97 z(@ouc;cU!q0Z-ALCkRU9rjr;06_F|o>X_H*&7YS6F!Aewa$An;rZe?&=@@5UnyZGTGAdc5&+fJh|Wzk3`9h80}#Nt z3?rA-Ey#NW^Vco5i>BM?%ng!!4!A+0PR6W`S8-P~3=yM2Hx`g_8`P%nZ?;ep?=p1M ziKxsLgi%%dqFQ14Vn46xSFp2K@;5ztHC;((5A>^U7cu62iTPnl*&io&7#I$!gb}L# z#)w0covxGVHFD7nWCm>O*O{vUW4$!PEzk?kc1dgAtH=z%D}+j$`CGBb*b)lOqgh=S z|1gZv&3zK37LdrZ7MFVoArpYBQ6Bl%%s9QN?B@K zcOP+6m^noV-BTf6?DZ4NxJKoFgjWWYe6(oLbBiF-C-a4bjR~P}79eLvaEYN)`#G{s zGPb)Ym{~g0LVY$zXS7#jK4k{OLjvq*#$T)Q@nmy8Qu)OePErsTMrGx=AB8o2jE<7< z1t;X;diM@SN+-)ck#O3KW z>ecVTmE(#)B@%FO!LaZ5w#1`u+lHu#q(J*f4RRdQlGlnl4OpEwM+$X7YWiJd!^+=0 z)gN}x#4&*$J*oG`&Vrd4HR*QE#GK+63{^_3xMyjrPJekChi7oDSTl1kb`uh)dv$*v z<<39h1A;zoJQ~-=F_tR`j+7)+HN&hxHec!t{Y+{H>(z`QYFYIMWkgY)82I$DDIIRWBv+qvZfp5d+pm92-ka9{wE=`S6-e1v^Q|>NagNx zqSf2yUrVh3lS_{e*Abfkl=vei>ZN@D>cF)(j|z?OSW{d95nP6_=Q)-eyw3w7z%jP0 zr@B8R6vR0Xr_?RPt)cJWsbV$bEk6qNEZe8u$#UfhDmlaCD`GLM{}A(KoHD`n2>e4; zR4Bu?=Xzi4do$DRr+24fqN6)SjEvZT{jEvg&VYWJG7(i9^?W|q&erMt(5Vr8566No zKCvGyTJ0>8UKs{Fe3-tr3E@lNiglRH`5JB^l5uJkLxidS>pzN}s;e=`nlg^%+ z_m)%$;LrDCg}qst2Pjb`KrfG5tmg$pmWr$&B_k+nBB!Oi%%dz-0-N(5r`sc4Bb^|{ zw^I~8nG8rI2KbE*!Kpkk?~C-M8~l_o1#Bd6SXjVtA_%0bP8iNM0+AvdomdKv?0A#j;HN$WUNG43`t-R#b;FQnQO}Nv;vUJpI#T zk~?>;(bBMtK1c~OH`N~H?Hyb-)A1UG(Yc!OxqGtT!?{!-G z2(>DZ-&BS2Hr!fWpX&5e8dZV|2+yRt#F_~vy&s?)x$9+|Ux9hLdRd1HYpcWTCrvNN z3EG7xYjiFg9;=#~%HAEq$=iGE*8c-h3RXwmu`vq)&!mQ!1sb&MfHhG8?P%YNPS=Es zX3(Z@ery0Ug+0z`XKWkVScVem5cVWuRl_%M@Ocw9+VTct+u4!}_3l1KraJOUvXI=l zX+u|y3c3Fj!mH?STq*0_Un$WyB>>adY1gcj5K$c4ZluHd6NkI=ORSEBloL?1uS>K@^xRV!5pha->$bLj z8kNbe0oByZT_z3YcGw~t6$TsmU7vwW`JuOgH3>XjZo-iby)C17%~QXOH`Ny&&fno{ z)KjA3DEg2xO?pnm^`Q&U{_=E9huZhwprar__rEDDsb-f9l5Ik@!~G)_X6ZImgn$0Q zsB1^ei$Fj7I|+@k&^|cK8-^{7wObBYzI!TVZmU9;-s7w)?WC5Y+bUDKR<}E@6LjY6 z$ZwKwqhJ^Qr)RVU`53nQl@&2VTObH`6!908POSi^bD_JZ_W<@b;$aFQPuHsTgh^qn z9eN>}g*5vV0q-c6S4t%s+HlvUp9*PReIyQ<`AadtGTTd3JM`f{}4^ z9k}TzYK^4>VV|+b=+O|JJ)5ik8(hh6EM)yZl4*}Mw$qB_j(DBVQ@FH(l%Y zeUP2stLsa$elVW*Dsy`fHzX0(j`OPLO>kH+0LVY$l-rzvXK)f)^y~`#6h3U88xp`+ z8Zpuj-d54z2HF+(3S$8)D>tbzItS3tGa?wRa#+cxP(%t08K1o;|DO~}Bz-b~j}KE@ z|E5M6AU_lz|AJ5&$41Ptp@0*~dt)09w!4lcN4Q6YFqL_)g1pLjh1_|fyp5ehdnF8% z24mZ{ZFFqg>e#k*V>=zYW82n^)iFE9P13P5-)45Rm_KnAZ#}09 z=Exnjhw7LMhIllRs1L&jk@oHT)sT|ET5kN#w_$$x{%K1iU8)^#6lVDDNiQkl6Cz}x z`#;-JIG;Hg1`YJX^Y~ToWo5`fM8EoQFWclWLQ}ARD*!?72XpLWy8r9^(b-xQMhD-f z&PcF1Za#_?fy0t8K05&k=jK&i#9~gRxuZhk^~{NsOwC-f{=XbNkAk5058;M8ZNbwQ zIpoQNX4>-Xa|hXZ;6ai%lP^4ivtMgp7TqmGDwn0I0iWPVl!&lwfsc989>L>c#9F}P z-VAb(DJbgA{l>rSHt^R@!R`8G(_27(ef*c%_h%Gq*%7yWt>kB^NPd;h+~$hREIce- zEL}&7GW2g%s#6n{Eb2?2ACL|hdiP3FS$Ow?(kXfZ zDPVDzWF&Mu0xCE_e0n`vm~|b6E6W$kE2*4)6E{a*pnXl=(b@WYEsBE&#L%J3@H2`u zo`E&LwSBF;D0@gX-a!Zk?3oSe5(m=_YNc zsyIPhE+f&4d(p=_fu;K$?!i2gSXX=364AWjFIxOae*uKKt`bJ*t1p!;ctTM)5(msqn@|!JvEbNI#KDPa+pw)!PT0^1#21nFq zM4wH8o;>0_?gP^zP4SEws}N<*N=kzt!Cr{f-s_cnGWYOVe3Ful>Bax-$4AtKzma6= z%5^`jPxZiH2C(!9sDN@2YWt_3LSo!*ts;NdiiDcQAd*vE5lnd#J#Z6jeov1+%*{L9 z4@va8>p?fWB4%E5Vjy_8BFdOrGM!K6#N}6i{n!n^Oi%rU0w|3m*l0(8npapHXjq1y zKN(bH+xYk^qj=9Of8p}#G!ezeBim+ZJcAh_%Y!ck1JeNK!@y}l-Im>YDV#$se zJ@ny=)sVuFWvEKy*tFm`@3Z0O>5`CY#^x4yc>6<0J^j;{jINHQ8yqo?B9}ub=v8_=rk(8<_U`x!$;GWSb36S>qMEZ=oUb-tU%#$ zmP=`_duMq37v1iHT-L#@nPvrhZ-egQ%H~T!5n8!n&8Wj#_^yfQKM1oS%Z77yIpquo zH@x$*Mi|6kKudA45l64h&ukqU%+^ll`_U`fzsNYX z7BFC5e~%^;HK;67cw_R1{H3*^Nw}|1rk|UEGQm18i~f`xB^&&HgC0jPSY5od#%yrh z%T*2e4V)!ZU?IH5s7MWWTQnnKjbLT_H%FN2+%G^Wq9@+RTy)Wr&)mdjT7i8pp|9&z zzK?SGk;!m~bj^O#A7Zsuzv0_LlIOmC8-|C5f34#rN}5!6f`~^fu{H$cDwb9-d~3J3 zQdoWfCMcwC)B*JK;4|%9lmA5Py{}4brDCX6MmO&30>{(phV+p-j9&FzfEh$MeNTjE z-H|NK+IY9w(Ih^^w;;oQnOHcahoWvV^nW)g3tq-`1fO@wSs z%~|aTzzP^wP1;NELdkU)r1WA>543GQ@xK1^g#UOOVn0BsEV)HnYiy7Pi)<>M1Q*ER zYvAXL%N?D0Q8`9BI@xladn%@DB~MbW%10BM!XgmB;-j?CJt^OP1Bq3C69-x}&0^%R zK@XBSjDXyn8j>L zJOYb@XSVoy*U@4_qBFn(3bs2TmCqLbT@d=zRw#4vqoDS+BtHI{qh~p{E$_(KL{YSW zK&9PmpJ@QRH@w;2<{L|eqf~e^=%CT|1PN@hD2%-Z@ zCDjI8y+$(jMz0SD0*j=Oz;(qNX?ZP^oYX*ieyK^|W7kP2jxQ26BHjsKRV3GbFEcm} zz`E<&(?pNxU(`m%nkT72wOhIMBh7H6EnB?`u1BXTWJ~hl?w$7S~q4uTv2r z?W2*q=I_(a?1E*3AkRWeS7ZfhIzP*Zmlf6a`de+bBj{CRawxwiLAv?oUL-788&%oa zcuSt)C!=IJVKy$sL_g%W-gB7`Dnn>W{5{?&xF3KTQyEx@mmmJ=km-3gMv{KU?l$T7 zep}(+giMQm$~Hc;SHB5+bE@Rvy?EdY+qet#89MT*#PRnu3=KMttF~LQKNjFek4F!b z;UeWXrRsp58$~SSgL|!?Dm2i7?RMH7uf^K=4$L?ru7*%D{Rj9} z&JgKTrl;YV3Cc^1$4)6Ui%UfAl3UTW;LWoA_*NOJ_xE{!UC{SA9$G1noZGA3NhoNcB63a@O%2U_4Hwc z`m)wQq^Vc#(Z;le3s)1~8`$mAGZjniH-Gpv>Tdr0>T22kaGZ);zJ)Ci9CDwM0qOk= z?_$Cx643u!+&fW|(T<02s#u*?Im5c{!?0o*Ty91w9!K8@Ob2dmo;={=UPT=cwx-eS z%61nm-x3S3$UhMFmhZe!Sjnf7a#~lmy(+-gF%(UtrWBOsBB2*8q@biJB#G@L-MVu< zH=mV+(*wb>uzkl}KlH~raG{B(xv22+Qi?F@DI{+NqTb}V4KdQuqgQk$9HNJy{CO9f zf%GFwo$GW1+jsU{YrPKG8E(hUIALFw9~0^$>g?$H3WkZ(K7}4jjz&y00yBh0HWC&m zG+Ma5mh>Y}P(*5i%?y5b$8!Yzt$WtSCc78op%41+Axv~6DwdHPB;dPr(dchd#Ql^1 zDMf)Am)_~`*k%l?%E#ki1^_i;ahlETI|qi*&TJ;62g~lS(*hSYCFr$*0uJVOklK!Cnqp3~1;gh~$Mb zTS^zU4#2%~vM(!{_y*H6Kdt!$9MbsjMZBoL4JxdO$oWRZ?5N4ewQdaV{C7cJ^GZU4 z<$VT$Uo1hEOiJlE3pk9xvq8;Bf8kli+8BM}uW(4~q)c%-!uG!tENkM1HhgeZ!*o!E z8ztx^ecSi8lQiHTKtVm@6nE?UVYi%!4fu$1QrEc?BPJh^m&*%gy|Gq=n_u%(90ofD ztsv6MNd`!tG$op2r1{3g5%7;d0(uBiQCU=)9UnuL11S6KEP_tz$LFHY^w&)i-=|ru zbPeO+A7Q&yMa<_hR>5sq;?Yw@#%7j}3jlZa?yvqI*Rx$Z&l>>Vl!Vd|En$Tc~ZGmm0~ zI8+FA)2$zUOJIO?_+}mCh(?5HFA@!tlFS1W^ZmSdE`{xv5Zi4bWjyRgmzU*pDwp-pp5z<5ElQTJ3msWV#mL$~-67F*r>7yMu{&`}vw zl0c6(qf8}_f?D>hxzT(ZUuiT`aSS2b^`3qS{A`+KN7gmmRCivg%7lc@f&kAdvAiGh z0)ORg*P+xoF7Q_#*oc+Ypl=O$)*kuS3>H_ASbS6AYZ(E1no(&w-jrzLVoQ|oJru?v z+uONTOu`#f4@L-rFz-Uowfah)tE#9uuKC)__5tNEB}BY*QNn(J%q8gsbRP~FG~TMr z8r07*d+!@pw_PD6Oa%6TW$;OUT|4{-kOBn*p-sT%sv2XMWSH)z5?{BXP&G0NjuZE# z!@i`vyAR7+2`@>2^uaCXqTiN(+sH+#xvGNCIl@?lP*nk?n7eH}sr2J2b)2I?wKJda z{2vFL>2v!ZO~SVXh~~L7tZh0RHhZTj%M2es3kN$lsp9UXu{8HEq5KK_$OBtd1NO&J zo!s(Zm<(LV$G33<9A6doqsdecv$7jDsF~7=v6h4<7Yqh%tD&reNWV7!ll4KRWiul6 zoRyvT%IiNsf1byx7DawylRG>gfutPI+Z=geNqiX_^nST4ghm5pYz|wG32`1nlj4f6 z(0wBO(@VK@h-ykIhU9Fwtw`<}CSMm+j7(828R`bfV!2Mu$}lbdRA;}|`xCw=rjhC8 zP_&MeX8mP%=T6jTmKJ{1fs650h|1^qU@`KKES@X)m>DB5{pTYA(6dHReI-#OQLI&akj-YacN9Pt% z_c4iXOW%v-iwz(bQC>yRT`m65?TY3z=AUB=CdiLv2MehkGV*VjBN|1fvL;i#!%$sM z+b7FZue#-7^v4r)?KBqgPXn%}x671FJQecJU!(+ix$gH4K}@x@P}HwByN-I_Afn3a zpUdR{-q9Wba>~gNz}S(tR~|n=Mn;QcrcIiZtNMtsj}_AMALrSDec4*glaQXm2tMUV#%!P%1L`5$PqGPej2X=0^y%r|+oN@?!%*y%t z&7bs)bM5pcgsyj8=gJPcmXoE7=hxQiUVF47=d`8l?+X!ZjnVHy;pnpCS_{lS7|0c4 zwJ>e>{4_Jvv}M=t!QcFsjw=drPauibTl|@{*7zH4(7YxVD(2`#Us!3GWnt z!jn_%$`qGnMtClxS@vdtiP0&iy=kldS1RtS6HuMv<>&Dg4Z|z^mn`EI2yD?TeuNT} zVxc|3c|f5%jH#kesluGFqfwylZ9-b9G23&V)X&x@%hpm5#4y*O^y6RaW_pFY&I=y% zBV>dRBU7u$kYPgeNFLB|q@8}hQ))PH8uO{JT{7_t2t07bY3bCvP9;}S3A3;#O;CR( z>zyIl4kVr_beB^W9ngPbOA&XdMnhkP?i^u)?m_i}hiI^mJ4joMy+=4E6UAc8Qk(S8 z@a6MuWwbPA?=UbDYij~BCP{wgMi>Nckn_M1*-9!@E>$8MR9Xh%U3I&IHOZ+kAguKJ zO6Uk$Y)K0#7MzdJ*lQb%gL9X(B6Bx&}E;lCpj+2K;s@=Ap*J=k5 zOWA{d@du2Dzqo+}d7T0}#XRR`NHK%f8ap23%#J9%1)JnVTr)Vgz8$-MX-a^RoFrLA znl%o+ylPvs5jj%yfN9zalQJL<&%JrEO|l`X>yY*SxaG3l6Xkq4QZ+#D$T_z&Rk?FVTy05eT1Ki^Rw8;_M;h0`Ce0tuN~32&TQnbX@8Ma!x=>il9z zXL18@@Mq+hB4n+hRcBwbIZN`fqEj+ z|F7}v|BD4#x_9t6QiYL{vVWvH#P$a@&}Pu_*!i~2rlJ2(ldyn=iop3qS}}nK09C@l zz?&r(D9u67hQf_LhOO%Ae5Ja%3V5YDb=D5`l2LGlliZkvIN?<{`jDR9`~#0de4ES) zaIj#NdWPGCFMqc$6ui|9Ih+wRLEXh-Dbo886IdpM&>4^q^mwCfc*zlDEr!Z&blT)7 z&v1YkkT_A0Or7ar3wb;db#cIYM_BDBozZCcRg(o5hzo#_wuFr<18vpy!PjEU=PoywQ zMxKuRtr{IP3TRmUL|1@6ez(VZ`W9%I8kz(k=^Fy#juz~fL<7BlRWkAe4yOD<7aXb* z5si){#;0ecoOq{cy7!&%J^UGXD9#hW6w-6XBYjva#&(vl#S9$C(SJFrbfg2+`LD)( ztS|Z}SZzvxuo-dA5Mi|*^2iHNBXWNc)w2v}`}nb}(MHFuA#}^Q9y~CC*fQC-aGk4P zWvlW2Bc)VmP}15YgY3Pc9HJ1d9gz{5C^&Uhoh%H~si{`<2d@2Mhg#Dcg&cE7fZSKfM*I%cXx$vN`RrfTK54kAxiQB$0I z1>JH~E1G!3qoE;tW(wty9t z2j@BET_`5bX`(;G8?texMP!lHHJcs3$kL^@rKfR6KCQ+%fWk#dPrP&NL65M>o{Q8` z=1YHpvP>H@F(&6I`(vDgDUnALNP*jH&Tl1lI=3V!&-2mlV|&4E0!~Xhp&{^b z{1?>{IHBks&dwSii;es-6wjGdSLLXGSz97M!wR}B>Us^1oX~tJ~69|O~^0UH%=lKn2MRK@O$kZKYQ4ke8 zO$AezyXDQOOwop_>EuO+{hM0v_t@a6nhx3K%Bz=O6s4fjggX=q25Dz>MPoRii=TluT% zgvew{bV}hmY&2X)2=Rfh%~joh2z}JFT)Pd0ZL-ofQ54R7jt4E?GcDN=MG+|{Uyy*T zPHy5(xgy$nk1ny6aPr5+(%EEoFgwO4@=E6j#;@_qOm^U6(rt~u$q1gh&#Or!tN=~? z%@-9qUV#F#)EagV1Ad3gBiG~aCfpNAWBZiJE#yX%j)aJjRfmWpxH>$D$ZJ7)IqgA> zd!cvCru`a=_q%@tlTUO;5tarRQ(J2{4pTl^rEc5GDnF9RKhyt^_D)~o_ z-E|-uDWj{!2rwi@*8M$Cj@%@lC5P92M^YN!{%5T6*9yYXP5LawSE@&{#n$5=-V~#1bZd?Y+iTfvl9sUNH zahp%S6^&&~L$Mj-(=KT=kKFQvzdk3nGvHFeJBiQ_b+^;^y}gfM0N<8VC~M&-d()1h9u~N-WIYq830xMXn{8? zFU{0UPg};{IWg&<^!6@)iNmTBdV^?}9BM1r@k`?5X%SDPsQ5womx27e{g(hDrHa(@ zlyXd88|j@Ke_D`|2&oT5Mo#%aq>oE)a0{#d;-)?mAH26CK0B93%G8;QI`1;7Kf~3A zI>edJ-dzu8m>VOJ_m1zs36cxeR!nJ&e@&_nOeh0eaY*kwRzJtreyW;cq9q!IdY-Vt zP)?a5UKWB)wCrQ+AhH;>*^lqw`_pHO3Hs}!;E^s-)t3(y;ZVXlAzXgSFBe%1hlchJ z1J-45FpVk!i)lDAQY{^>Shfgj61t&st8iC8^A1cD=0(b(UUyGajPg0?P8sTXmY#@4 z{xBir0~!n@`>rK)$0V9Gq}Ekt14FA{2XG$y#TEG07k2rU%klAlYKIdk-)Bn@sY!^- z+h*&{;_@GUl6EfL+f@7bUPdEBL)NG1^EEn4CyZZ5Dhu1)Z$m!2#N6I9{j3g4;Od|GSx{O02yu3kd|Z0lM6*+dXW4%X=-+zB&d*j?*#2 zrB6OM2cWM}xMc_;BUU+!L8I=G84W)8+&TMo6?n{m*JxZVhn1A8Z?8mcOQc)ZH3gkN zSt2sx=CayW7Zq<6VxbK*zyuCAcP6nBc~51trG3ToZ7mfGt;%0Na(j8RE@3LNcnoXU zNwMVTy0!jJsca^)x%BUpyHYXYiQqugBblFgOJ{n7zB-8{TxGfTsWG%WO+zjPI}-ft zbU=5I#RSuI#EMV@Y4Kjniazbh#FQb%M5tG@nt2jHbFK6q79U*?91Fc9EF-qc;?LFY z`TQCZTfxT|3>39UMG_svhTiaY5e;5~!{%#|uDUo#xBo}+MFfe7 z_*()Sb7E|#Q+Xgu7HwG=omRljyI(xAh0pnR`P~u2S(w?1MAEpgnf_Zc|D34Fh2Pf7 zZn8Tx=ZmZbR$BCNzMie+kHlkqfzA}2MkM2%ZX_HP`!&?5 z9uB=sm%Q{^l!@@r^`=&cbLqO4Mz+F+x-(GEkB}wzJZbEz#D{oZ#c>dhJ)?EReB#P3 z9`;uyf)p~|>cjO61W>UPEY2m7k$%SCJ>IvBpQ1YL?PMiL_zWm?HF~V`1)R}0qXX_1 za!`GZ112eD2a=z8`{hK_aNW1?uxn(Y*nwacnE`S!IxS+E&D|jO+c0hNfJf&~zoU-S zy?T_B#TdtWx>xTj8k3(%F5&3BAu%V=zFh0MqUVF>6m+uoT$zDQ8+0%@z&87x-FE7R zzyy(gYw&?$QW3RRmHAn+3$~vaQxQx3vPf~M{dd72@}!#vFO>HgiDfui_Pnv*h6R6Q zp2@ZlC3$$-@cR)l8-o;6U3<&FQ*)07diocjOdEzobUl~Xj}l1N>k57f*>F+2s38^b zRz^jWTBoky7e*Vr>zifHtWRisKbLh}x1XOnJfV#6*|g0K_a8ibaNLcae-42+@K~~U zaje47C9kfi|GqJutre^~_`rr~f#_E$k4Cp< zs*y4xCkH^MFo!jN8LKDx6OyhlK$q%##d>q3l)b>%wwb=e)wvi~PbQT}9BO^xq>Y+l ziiK?0vhRY$s1ELu>RR$JLB4D)7F_`vNq>Iiin!OuZn^L*1|>+Jo#RMNq|W_5H*1jTZep*x zHy(}hR=u}M3uiF?i(qg(=cPE>7D)3gCKI_w4Hfv&^J~Y@xgcdetD|dCwEg@h=S*V6 zgE%FgCiYZzP1b(~bJ^Qe9JM7sM4%K(kI^#k2Wgo;W;j~FTp)~U9l}LZF)jhIuHJd=>8?h z&GC%%t=zG^8~*h&d0xeS>hWl?R0lclAO#G3P@fBWCm!#22N{o+zMQ4DwOJ*hHQxrG zpS#p2bZL%?d`pR@!UV6uD-(g)_4}rLnJfVeSDZCW1gk7G?IaI?jcvC`Qvdk=8#<>H z3sztXN;CP;)qALxZR`lGcIRmw3q-cstf@0VS!cJy6$^`NobVX;FTA?riL0ei%;&$e z6w)O0`4Z{S2z^#w$pDLAjlB`y{n?UzLpw8uAx|~oV_=P0AeV}(CVeFkTrN^=56b2F>s@teqku!hw(gQLM z!wi19t1N(01eoZqza`(%+lW-caCl zwM21qKFsg~T5Hwc%lI1#L5%yKiH@)fS*aFKBZnQqHTz$d83XaOKLO{OJ1njY}u=@7ADUOuDG_Z<#Wcp|{bHWbq2x zvqmtQ5wBAYNmc;3a8O~(85-Y8G7K4#8{ppeZrpWYuD@+l?UC3^PU@KmXA~xU3~q&y ziI-261sZ-Q&(-EL2d`2yS)){&RH7TNuEWi4?R!Pn@70cf4SuCoPH3w)7^F}-Ty%Db zyh>U~3@&PUWxoCeU)<0+hYeLpqKzvc;p$trUv}lzZs^Y-BsHYs9{$WS_Rm-IoQlV) z8@h8jak79aC4HK*d$S)a)0dtyqDhC?1cyi8I`lp=9CnKEWUXUm$CW}N3@Z?!kR zj8U(WlW$fqfh5|kz~|{7Y2muAXCFsylG+VdK0UxxosYJ|HUii7ytj#&WD@g|?HbJ{ zLbr#pnTBZoYolgP8#M(T5CPVER&BdE5Lx*#qL2k z0+*Vz$&wtem8$r1?4%Hc#MaFxESu>6IgBWVjwl%H2VEGMn9@+NbcXV;z!TBJPLg$H zMmqNx7~6QKWP{g-Rt%E0(P zs%ByDX#XE_SlAoc{f96Hu8hI~r2m(OV&PlK6T8Cq;EUL=+4o=;7LZ4^{TGe_W@OJV(&)UXp7DW@+$h_p5SPXc6kyR( zb}8_%$rmBPH70u5;WXX1@eJ10_u1U$t4LZ^xQ|tm+ERL`G2ki{qoHm@DugEEoORm7 zSc#suA?ML9nowWRU?S z;cFf$D4v+<3tAiB>Bc!r)Ocl;*kEzQz+^ylXDbN~4O&WJ|M+vI&{U!teBN^~GQ-9+ zdmzt3)$Xd9omm_Z-{{3z{i<%v%2uMB$G4`a>VEYKa)lo;`%QgAYelvpVY12`up8nk zEX4EpQ%x>Im+OsfPcAIOI`T@)9^&C>(<4CMe$Xne=#bZI z-soi$^o)vcbY0C%2}KCSDo(W&+t0rTUwy}Sjs*r+7QJ6FMx{NDDSrlg228LqhLMXj zWk+Sr+Au)fjly!4ZEb#8Qv~oy=;|93wrZWIf;~t9-`GEZQPScY2QE8b+R0xYxtl}M z0&vb^^l(SV9=&MET`x|1^l%VDHB?AX2Yc|+1{fK%NZ+Mu$wD%*vkWPaj@-*dlKsN_ zwGQlTrkH-tvCpmj^{pos$!e{5$2CMdYb80jKE*(F$Fg_;Z2wyMJgzD8isn;l0R#Ye z=x|Jh;fc08B$AI)IGf=1r%S4fy8d3s)0BI7K2$tc?+$bO3yLNBZeo4#Tr*VX6@soc z#GNa)nJG-G4!P2JN>srGIv|euaSx?4jk?nB)s?rvt@@;*sw+{?&H`V}4kj}Xdrn^y zVW!T54wa7&8og%R>olc{4sMSWm`cxy*$Y3gu z6jUUznzsynmV_3S*`3m#jC|Q8*JKEdInkozgxkZ;{b(O1gSJ|bC}!B}sSTF-z}01G7-Nnr{>E#i zSWAVtys-<-{%q;WMf7rjU#P=kC1W@CO<{THqhy$)-b58hlBimA5dTOtp3+-(D;=gb zz4^<=ep$ZShOt*;BW!p@A=ZT6PLDBr#Voo%G1%FG62d+)9N=g9!m+hnXKRnmqk8l# z-=Go+IQq?V02aHkf7(-W24w@=?g^oJ12k1LY0}g`;AVM7;Zenp`K)XyM##pQO>_Q8 z(mj$jort2m*{uFlq-PI zU5JaXG+;q?8GqB#;fh)$6C8Vt{QoUyZmX14FjnwU2iWyy`tDw2#SoOg{(dW7_$P{1 z#i3OAHHqQmJNSzHzziUOo)c9Fz}pt-HPXDh2?b4TIpf-IRgrnC}4pQvJtmiRTfda)m#dwhi*(T?YH~k>w zp{k(%w2mPV&1%bzXd(jc{PAJ}3UdW4Xph=22B3&YqBE9eQ`-?Bc}pbH`S80=Hwx6% zp>(|N2_EpP05H3Sk@O{r@m2N@Ac?C(<-&mJ9Qd1m;m%qw+Vn5jx*=tj={x62(F}mo z{AL=$P{ZL`7}psBzls=*FhE#qwDbtZ4_xPO7JEZVw0RK!jhkHDR}@6Pk1f5bj{43! zH@*4^YNlVZqIPe~yFa689&s$TbrF`|czxxBcofvy6)@H|v7q?Q!S&e7LkC+Mt2G{5 z(qnmDEG%@!*wdLBq$Nnz%jiQn5mSa_DLg)%&3BZ`yN*q+M6ZhHC6MeIbsKXXgnRqR zr1EA)He#5jgdPM>WvKMI@C@W0 zcu{^2{veA1(8eTsY99>kusv$P1&y5qp809pcOvj<%Vffgbk7OC?}0SSk} z8gCQ{TMPjx<)NTFzt>0t2fY~BLhR2wYs6oYRcLV4o6~*J((pOJtPVDkfCDqrI6CER zjoOkLwzJ1T_*wvo%d`-8kxr7Er`|B;!X$l=qQTp30Pq0;*ny+LI1zm}g#(}uSgw~RL`H9XOAE?w>WlPFmCy`kPX#lo0pP^C}tEnV1zohSck zf;MZ6Gs4PW+Wq>YQa$3|Kgq4@eAA_LkOjm_o<7#$yhd#iT{16Qu8^CZV?lV3Hy(N)fM+{i5N*F>^=u->F)UO;cZelGkrm_&?MY^m)0-$0qYb0B? zpm4hJqOI?8^SKzQOa67kZ*G?gI2?GuJ05QhJIN&D*ADb39DnY(F+GfJcVqz>T0ld6 zQA4<{tP%hztSx1-%9EKXiltqO&B7Ojq#WYC0?ww|5e6*yFl1?D2DYUw!ouk}^7lJT zMWZZto!AAqZEO^{{iEfn{WQTO=wTh1_?h!`b48F;tsF?kV4CKPGC4DrW0q28xAU8v zWA`#W_h%%m?F^3pWQsVSBA}6+E%mvY-ixW;rbxk* zgf_La#S!#POfg_2WBBdTTo9Z9Cf1dwCi2OCAEem;YDV$4IBi6ZMKPe}b`s8F^ilM% z>K5)80C6qlSUjjgP-eR-Lxoz4^ZeC9$dj6E5l&tYy#+qFc*~-#xeemEI>M+lxbZ{( zT~V>fGEQ3shsHM)vOF!9igvrx-9VOvJo3KTV z(dbv03ZET8$fQ$+Bg04Juiof|E!oG_D+=CY(6H;r zq|)*xVDZC9xMrMMIuyREtH*8t2^a^~qS}W{IjE6p;u6{ zzKq=JQF1>Mj#jt~7C89aYX`0djS&n^j4#%*XO^o1rv}CO#_MJgg*Xg=_2mf@Wzw_DJC{+=ZRV(Rm zA`TRHasQ3q8it8;X3iZk)d}FH-;4i=t_w7gAXV`O5^EaSdLbcw?ScAZ&FaXOdf!e( z2aq~K{}F8#%_gDoK1C_S>O#U?juLR`(kLDP_c;vjR6a5MPo(d_96Clagu%~1Kr!+Amw825AE{Vz<~XZzDvx668QQY^UQ zyw;@y3?IB(Q&0;Wmfk>*GFZDuPa5;S6V=R2TWtz2-nXZEXH;5BBa2Qi0sXw^!$yp1 z5!T$!11IG?n}tAGO^d0B{MKPQ?3V#KnCo{_5}ZjUr9Kmb&LW8K$bXyK_sm?)R{rU$ zOR8DnP0uE=wS)87yl6&b@6CrfHB*#MvVu#6CiRJSE1=o;iZe@FQ^~*If9h;w>vYR} zyF4BtXH&+fri+6y(0`3E?k7BRNa@DCkxobwlEka9LT1>v;wqX6c3>|B1&1CE{u7G< z1wj?>@6)RNsZ3O1uDm$OZpK$W_EThJI~G5)!0D`YW@;o3;O&anLXY$Bd9kx9bAN0+ z6h)>3x_-PJ1}FYtzc4*$Xrng%91gUN{S!kG^xr)Lxi$*Nzjc#P?%y#&pb07CZ0~8R zC{Q4D!$I0lm0WdmwmzdWD(R@sAM(@<2NKVza)YSSBNpuYY*aL4!%5fqe#O$*& z_KnVz?a_Gh-!Zi9)I~cUo!l>A%`NsTlSGN)n2ZTOhZ^Z&l28*M6yAJV;SKxQcJ!vh z9zY3ZVu}RY2&jhuZu)&^3n@GnI&%>)38#!-Brh9GzGkuZKZpG6wC}0uZF6Ds-0#e@ ze5kzRPZY()(qZNl@h{IAqhspzcJ@%OSmYFsZ8|W&S)Gcrvw8=88kuck?q2fVY>^Be z(*_7fZQ?Agc83s&wIRlk;nK=B-YaGKQlQ2UYj1d}wA7-SrEQw;J4sx{grG`%$_#4# zKNhL=_a?yx`sRHOTcOp$X47H|_}JO>x6h-<=c)X+>7aJ<=YX1{(Hul}oYtRo)WpW* z-Rvp*y{9m3$*dutbn;SsV~U#*0V3a$<a_H4HVNyrJ%0B9dgzwux}CWrm-Hpg>) zs%zf~CXXF3cmD!(g>KOc0WvaVNo698u}D>vgz?h1I>Si~LQJDEFTdLpFamz-9=F*t zDDjh1fEh@C>4yPpASyR4jMS&Y03jnC>#7XNR@hh2c7+G9n>ROvj@tNF(oU(_Er3nD z#ste5a}0Z+$zPe76~X7(QM%E)27V;s{GloD++tqZ$}xpP$m!p~;|ZXEqyT!oJ?`t2 zE^CDfU*!Rp2QT4yX@Ynr?uKZB4c+oW=-J6v9|fcPqpHAqr}heT&NRQLF^*Er8!CA< z{ZwKDdQ)vOU zYk(?#PjhF1Ml|{`$e5jlr5GD>RgiyDEIF~f%h8kHeed4Y-umZm2TC2>1IQ@W%D$Tp zdF**l&KMprLWav_Sk?AOi4!~b?I@sW(37p07uQEOJ;1*$NK33ei~DX?tDLZHiLIDGyWNO_-4RX<4m0LNxHlHDav?yd!XwLo zLGlgAXNVCN(aNK-OmkYyxnK5~05O~of3$ehw&lv8eHPjs?{bzVQ!LYzFg}ibV7=>r zs#Fky8BOS&9kGGKmOhDVk=AF{xEJB7b5x3oZM2gJ_m-&NAmuy%;OJ3S|9E-YTnbon zm^M9SfTc`fJf!_t$nBc8sNvDlbTg~Aff8hjILbGByoNmFu51{K2yTExICT<$Opw9TB*1 zz{<3;Nx|V#lC`m$-7B`ZOTSa!gB9h^%lf9Zxsx1AU#ZM!cwK%}iL8*qa2tN$Gg}`$ zv&e|+5H2C$IUN()M|_p=&dKj%adwsgsB^r1r2ep1*{RnW+GQ+WWx{D@cwq5d0nzF- ziAhJclKkdq4Ot&s(NLy;w9>T1mX1~vINPx%LkFd_HjHKvu)^ic_LhX?wf?9thw%EE zm)8yW8rI#?Jw2NGXRx@o4V4PLDs5SdJ%k5}fQOH*T_i1hK#8TTlgHrG`uPzoR;JD;`pkX6*tG;lYp>PxAjmX(u;6YG<5d>k^#`Xt zgXuLOLF0JdDX(c#nXy6oLw<37&GC}neR%{pY8>dWuboNTO=@1%pugjZO0@pfYAjV# zF#6qRz1p(&$rX^+^+_hMM2|?ILjs5cE4WL7p(}-tmd>T*tM45@P>v16w{s*dWme84P|mdxLNIWbDIZJgFkrbS@b@Nw9*^nFGa(-(=Vz zK2G-0y|Q7`lU5QUF)FhIFtjOfMdrjoWpqPtnSaJe9XRft^c;=vhhB9z<^Gi(xhaj7 z91TrLE$s^_O&12?AYFHUNH`TVZ&_GDcyDTRJXt|XW_-8|b3z!6tQO%D98nx){PX}N zW1@X7yq9Fp|8-r6LzAy{?M#XOh)Q7U<{-XxB&-5fVl}>>Wi?=vkzy5;q}WKiyr0S| zKDT5eY`rAR$=arw`~~@MGo<+?0N+IOVVRpHI+dIofuPCdz-PC3nx#$ShSVP|{4qQC zH^J9MAt_`1_qi9ie-}bOp zvBRe!j=PFM#*evX{37>7@MRNsfk-E)7yK6N{1jA$D{Tp$`JixIN;uBPhX$hlTO@5u z);!tB{4rE0nDu4JLczuBgQnoE^6mFT9Y*HAFEq{`5#Y7)Jz9!D*c8Fr&9S=jVJ!-hZf!P>7o{9x4CEVtz#a09?+ z5(NFEux7^z-~`3)rbU6DID{J~dHi`e5_#+ptH)E_m40Ewxl984={)TXGY`%b?G}KH_8yrlalv9|M~RsC>VLFEWHlvfJsoW`?yal=X|uvAPi6qE zK5Kt}$4YD3I7}d-WDy3564*j2e;M3-VfS z$emYTvxuyW&RNU0>{}nKQWU2F!gLN{Yu-|W1kcL*YJZicd#U#~R_-wJy$)fLA7`MbJV-8M?6c*CPs|8qeKrD#^^QH6dB7Pa@F^OU|iKpazCSk(`LF2McUt5gLMK4=`gmIE+=t za2XUSJ%t=AdKrWp!0iyW&@LE8;-v1eNzWoH0%KS5aN;;g5@H^B>H%qr`_Ce<9Suht zLi=gLi!Tds&IOy~V&Q`sNs`_ASs5+R#q)v58!F}ggp>X688ArD*o%JyNlF^(9eVWO zI2RN`N6z91O?yrlf7pe(#jRtT;fL!^zilZ&XI`dk z81pHoygJc}79Nzd^=k#i_L44;`oPrcB`xNCg|dnFyEPF5iPf(Iz9EUf7>2E!-4we5 ziA`pLV(?w$33w{dH!|sKI4=>EiZt!<5Ij02(2jI_nIU;!mS2UlO!_p=^2zMck>?961F`=;pUW>TDU_I{DpMwW^he4GB z|LF1MnLhBYp$O~u^5?xPZEHq(a^s&1F4<4+IQF7b7gme)6!77b?lvq0GfIb;jbUUI zOx)^GY2Pyj=BNOjJl zQA%X-wNytr76_fdhxznTHtM76-p-xarQIu0M4M7G+le_)?>P;cQD_8vLDVB;(j1vb zvsV#iON<?4?J69F87aHU%aR zJhAqH%w9|O5WJS3czT(uw7pC3OWdO+N3jg8=c!oO z%nkPCqml?%5@7Xu1KsvjEIKDFCLDE}hQuWImHV`n#}dIwga+QE;Xa-I`S*}3HzF?z z@_}t|g63|e0gAum@x>!RheC!6G4uxB7foP&#G-kRIuk-+f0JHS%dUeS$N%_)g06J{ zhmPLMco`^7BKM_ds2keUM+7Za0HOQKxL;b->Dwok@3j$AnvV>)VL}x&g1ND0hOTvU zPL4g{ohf_0V`S;K56J!PTk)CnRYaw09@kNy*fw%Zgb%zmZ1CcP9U`G7PU0T4Gbc)U zPF+eqa_sSK+=6p=;^m^KpwuH=xPnGxTkcthWx8F`YmnZnUspz zE6mx(4m&U%i6ZL-9TYP$|5IK(z%mx3OoRwF_C!(#v4=v*64Lnrke?$+7-K&%obG&454cQDOb$fy z6!T2KM-_Q+!)FDQo=2`FbaI~(-dXe9EDcjj-?DUkru8{&BM{%dRB zlI)b&o~k{oHx5%DH)Dx^|I!d(Zw zcU$Ho07Pf9pI?LZ*7l4u?{*vdW_GtV@N?+AmD_NS~Bl7Id(KM0J& zTOjrQ^HG~gS61!R4~1(lVpcPWw=KhLUuy5f`#V@{aQ|h#OQ1kL%A;__H9l{>?kJ^w zK;V)+Sk_tO8i@(B5|Mw=I{mwY)7hz7l0U99p8*ab>)!oT>IWxLI+cMVK99ZOm{cm! zf89U+2SHmL@$4j6s}QeVnxAUX_WI)@6ln*9g#GXdi;vcv1pOV&ai zk+xUo^;Sp2ck5d_t=&@vS+A`1eLYxFY8;vWJOYp`YPi@KEoYv(2rn)rArPHi9lo*w z%{+^=EVjFArU$!}7Z@F3Ov-!UALSfsII%0hLOvPdbYyofBC>}G?M5zWD83ao+RP`! z!6ei|^-_EWtS~AaKK4Aq(xYSRQkt^&fg%xZ>9-LZR(`A&16Q@^>sxTEw{ow)k3$N? z7vh;5v5yPFNZqg~eH)H7FKClC@!ggf3ILYRx7SFJTOmDaFzRfipJZRr%%vpMjdlG% z+S@~V<{EInEu?yE+@M~lY?T3snp8e@!PFlVRyr(@IQ+nQ3l}xF%^n~5WA@tkqXtF0 zJ?M|rY{7L$cM=yyj!xW8j#4G`Vml~b8)_y9YY0T{`F>iY+ z;4q&thy$+CqU{Eo%f=F}W+m!$${#&`1cML?=d^MEBaxdO@mxwY)Pofj?HYwZo!*mVM|{U zz71u+rmH5qwj9g-+Y!ek&S))FZspkMbXq8)Ck!43)(6@qcZ&LcWnYV|V!~Rk02x;) z&9T|i;y!p)aVg<=CnSLT*J@AX;6=*cKLS=NH{ozSid=z_ON?Q2YUegmkk?Pk_XFXP3ngs8#KoaI_Qxor-*c8ejs z24%ZI)k3;tw-bd@@L8x*yLSF~)(e(ca~s;ysLzD<*lOF3A!xSv{&PZp_#!@B8viU@ z0~ULzaK-AtHvvlk;Hcvh%M65>?Oz%HBb5I)({iEVCZ3{&<0t;WLYsHa@wgG}#le6Z zuN{)2AYZNnC2)xW4b%hRSEKOYgGS=*&b>a$gSQuwz}0c+5fiDJbg~odfmTLJBe_qb zy3w9>9(Yaj?{L?|paE%1JyId555vNs2o?h5d)s4^n$;3x&Cr{UnADf-;atwQE*y$* zJz#tqdmeecqz!_$&5Q)JF6Ao!K!`0xwoyh#%^439n`BRhdDO6Pzzk(yaG&0$w+GKenLS9tkKa& zL^)c|z%Y^Euou6jB8Fm@CR6HPMy<>fV3`w8QoSF4luK^*iOMU@cjuR@1dwFPCk9G>5Chbf8(bgfI0JN=F>__ z?nAnK;537+Mj47MF@!svmc417FGQGXO3Zj-ALnl04`p@y$t0D9i3-<|IG#k1v<=#0 zqpz<-v0;bdW}aXfI!tc(14SXMPsRe|sdcafxysY5NOne^`QrKLE>Xyf#}9zG=NXS) zWCZb`ob1FugQXnSv3j3k^K6)5*Qm*TJ8P_J8*od;6AJ{bkTg|0u^>cTFCo&YL4?!H zj4|(8^Zw8Vh--8IuxTq%kL9*NfC>|h*;4mLn9MGlem;qLpLsD5xHf*8((~`noXpzG zsVw6z*7hh7_rSq#V!Lc*^xJpabBat*b7M67NH`tzZisq-TgA*C&yW!Z*fAW2(xIs;PG5WP%K z6U|fVM{f`rupee3B^Qp7#o`|lKTF?pP5>g#!oM31I$e`lQn9F-gYfy6zup3s*g^$? zo>cqo3f$IOVd$1|&y$u7h7Lz)xG!&%weo1>?(R98pWIm5TM6lVz;_<%!~-WU8<{+Q z%)du%8IqlAqO!*k5p}y9S6>DO1L1lvNke$F^x6_wgRO}OO?7agI~dE;h`Mme`V1&l zgEXY9N>elTy1rn69w{SP;D0FWKig!VARC=x?Lvo~;iuxlJZ&WsKq)}_JK(_g%9Y;{ zQy6#-e5_6mLL;O1XAI@z9P+C7?D!}+-4TMZHy0^j*@G1Ny)utr6O&3#zVpa*?4wxWzC6 z!Df~iA)8%9jI0oKkHVD*%U4(_EY z$ElbhU7epdcP?td&|F@|JRJ%K7I;2V76@Om(TjQHMfZZ7v%H?5aJ(==s>HN*7na_< zoeCuc3;RQoY47-HJ_S!k+wU={y`7-F`hbsKBMlNV^0^#HIY5 z8>i*^YIhAqU_{HqX>b$xtbrru4crhU+>@Vrxe%$Tb`#r(?en8 zvmQl$6>}2sX7?`BhZIK!t66cHmj2}e)BSMkLg0>yFAIrnbJExC#n3T0?vc(~w{70P zO3%DgG~_DEZ|8llWbGpjiKfXi2$JgSJ|(f-sT`)dFtwQ-bDUF6$5t3*a|hy%mb7tM zV*w6>&7WXURFH=}t~Xq}HPtx7y+kJ)*a@vq(iL~GeZyiB^5d%YgzGkm-_vxTti|CV zdXYS4^Gn6upMd#(h^*@Q?nvh@I9xIa67^!z6LA^=S+5Ummdwng2{m@za)b`8xELs% zz(W+pp+Jm}{)sC0)JFQLat1c3bkTuMR%GUHk;f|V60glz-?fP?LW4;zVgfiQ>8O#l zN$^oBp*oW(i@+M#%Z629R=d%{vBX`&A{3>j@AcJpEPLDbC||@+gk|}`0D_% z2}Eot+P>Wd&b=^w|4?|eN1nT@WB%L&D$#T&Q2%yM(8Z}KcXB~>ZC0F}^GpGOep;>8~O=L3YmMs zt}_HNe?X~0m{sExxT!|65mYMssRN#l5}(Vi0O4@hE)(-7P#_|d@C)o4Dp=+X-cPbWv z8~|QB;-Nxh8u(Lp8XN<xV$ zpI6>JLxAS#JHjSHwK&4&7g{fi^Bi1UyAW-f=N6|P8`~5obgW)#QDOCY+)}XQXJMRV z;-(&JkyU#L_5f>;wc584a9p#83b`xT*q`nNGN;FJ1@H_I$xPL zufOMl;0dh6{byPyD%ldpCDC%lC_%X4sWspo-Va8p8SyZqaPW=!8~STs0ZE;=l+wx1 zK3CvYa*+H>Dv`2xpi041-o$@GMz8^p!Hl6h|B3~GqN=8t%?p*|y6(k?_}og5#W0EM z0C#>xXz(wGM6aYkULe@0VT2S%jE&d7czti=rI(6HA0u|#tqO0`JS>@RAjibVYmFfE zuDSTyiAV`k?t6IC@hvAv43t!pX{G8s(}tt@NV3erMla!JUYw5vjkkn}m<+A7MyOUACFdv*{UuSDva{VO5$ zXj>!w;dAb3MF;uBiOWeS_ouSA0;g55>cEHM#>ukz9n!dCAS=kPO)XBy;fCmE_c;l4 z_*sfyp+zb7G|KHH>nPU&tcPD_n;>_GfWL*v;xtnw_$JmjactX3<}xSxRO!GeYdjcK z0=Fsq8Ubg*}){K$3_7xCuPF4tXxTKge7DBy1FUAMr{a~(NfEJs8b z$x_sKp>*_RNi*zbgu+MZ*`II>Ul}u(@Uy1cs!KXR(3S=HL_B+R?f)sdqvET7{!>nl)s~by_NKJ^KEIh~i9mrAcqDb~8uj{f6L>}|dT?IUx+^$D_7F(Z&OS}-@ChUqx!JS!HG!n0!UrUuU3ya8G&R@_`q#sbcAsRg<| z@FoXi>ZyB8yxN6cz7I5}sxFx(4=jUP%2(u%V;-?VNd*;J6&V?K8v5i2F6lPB+zm>F zb9dI^wWrh%=?JfDSY9+)c{T#`mWN@9i;Onkr!Hh!Cq<{1Ce0>~ppZRW3+Pt)x*;?g;n<(BuRV3;Si^oxH|y_dp~+?W>p_@s4;b@`{+@}siL)(W68ZE2P+^w0?8 z%4k62Ki$ycAC52?koy<0V*f$whn-q`EkcoG*& zTm}g}_iJ2y+^q3dwoOWN?CuyR+`cY(%S+d$G&(k+7ol%UaAD_vCFL_;mUR-FZv814 z12&z1AMnsnztBgk%YwS%@?3lU$$je2FrP;}`pqt2@0NfiupzeZkD{3UhUQR4iT|ES8Ra}02Y#IXq}aEh6Ov1SwsM_4-oWJFzO`v`ULy z6hm6$`%NZD`}N>We4@FD{kL&z(7&hacR}BgWPAa^%yyZH`nppX>LD+#(ev?Buy?-u$5Ii?|!ZxU8y1jXM{@P`c-AfY|11t{q+VQoX*yquCcJn+&)l6UWIdfw+pG6SD`J8O~@uGv*&DC zfQ=&{OuTdIk+ea|DNRK;)cr=me>UQ%&RNh+wA7nxkqdGmEX?eMtRwGc)4io1R-0>3 z)Gm!R$b4XA=k5g>@z{3hbN|Y|&pR zV1mGn%Io{Wcj% zUId~1U(eF7Cu8~eH8`D6U?OKnjjn$47}zacoZUX!gCB%kSlTgSKdazr(Z@&xgrE4^ zJ(ptnvAh1d#E9$5UmAp~g%7H9pF&(lvO~%a|3yR(W`ig^<|>huPZB!fG+0=a+g3rI zK6E&(bad=NK7SI}sn0Idl~YXjij-W#2!!*0VWroa9rbWxH}t ziD(=FKnyC`&ndj_g?kmo0Lc9%diVAL(Rc~z2E^i$-p=gBc}w3bm6}M->mKnD_r2#e z-QJWtF*x&n-#Ot!nhjnS2lw#ytAt>%X_)4hVT0>w)bu zJ7WPLX3oOc)=PK!U7_u70Q0#$!y~y$zzhq0`P+1V_M)LlTou)S&_z!u% z>*xxXj3fM=l?jYpecK#V7^Ooo4*Y6cGIi#4;0;2`Rfun^#>M$#oj? zU8PI-R>OX@@hl46)&0usP0gP6kJZ?kap<6pbex!-+2dO3ldCI(A#u4d4^k;;+%sAX zj%uZmlTL`a2TCbOs{zV*&lPOR?9I{8&QpM_vY?zROJta**yl>gj{D=H6WbwR)JfM9 z=2s@QWF7)f5%>&BuvyZ}pH9LiM~L|m?~P5GxNJY&S7li8Tn7-d-Ivr-7a#YLhSxVJ z9Lg$sRl3Z^M!pk7#8aYQXU|#DrJ^ke&DQ8T*pB((xRxz@`;382!UMNHG_$k3(?|j$ zUf)tujp!}#g9|iF2eM{3lKQcH0CMoUh6f0a!x~37v0Z!s#U#h z(fO{C*7dcf-^u%)a9piS3?#&P!T1v|krs3TpzDH=rB1FwXCz@}gpi=U67m$E={`{H zba?T83-97-1FDqcqc0L<^Rt*Y1S!>j9Vt?2=5Bnbyq=MG^7JQ8*XI*S=R8}>Q;ssr z*XX6W+nTP526arB>U?Y}gn_8N=smvCz({*Fv$Gv9kBsqc-H{SH7vrW0Sdy z-nDA6ajht%?}0EG{$El;mj)Wj^oC+S)l2~cG#v!zI|I{`1L^)b881Flg`e2mT$H2; zQH9tm50~G^fND$hxa8w7muV<*%@Zgsvcp-(;E$H0iQt{C+vE`&IM%;gq|Bf*R3>0y z7iOe(E!mfY+N6oX9gzvn-vQ@js2#!qPj=4|*vm zDH=wrq7FH;Gkq1>jYRmrF;gvqL$*R#y4lF*h_J`S34=<2$unXdF1}H?9h>+u*tWIc zn5`f_)#cF8iMC+Cy#z!C4hli%N{^%w%RxYOo zMq!n|lpBP+Y$_pVkZC0LKc_5d6FNQr+<6pMQR&R!AnTsx?En-(#_0?mf`eC~-Ws7n zL?F!YlPfD;;Zubp*Xdx9;xj`SK~#6=(CdJgS%F^aPVFeo#-~RoLfhl{WKgb4J_h?f zirtj7I*CZOy=>|D)}?S#GRBs>lBc*3!{B^dp)8E&DUyhbN|Z}+ZUwUZ(QC;=*bjEE z$k_La6)I03hUYFECR!O0>iG~NVPa>f{h~{|aL*)qntv)!xx=AB9%#Hv@2a5_UVsJw zk@dWOjm8R1SNe?WPm%ALyjn};gc~a>SsbzhH>@7NwyyB%9$hwH=3>s;q}>|+n{gNd zd0qKQHcW4&gBnOOo9)>Tj7xi6U!SL8!t4J{&T*IBMOo z6WUXL9$azUga^PD+4}erFH!_xJ`5WR_Lk%RY9*k(P4I(iqZ>r_R+Zi~*RWK1V4gGa z_{~C4P%{rbrmlv~?2P|%(w%PU`oL8yp(6)C^(;>Enm{^kPhw1}GFotW1rM|jAcCYV z#C)c<_<~m}@&d~M-QaOZi60y@$}k>+JhU%rhfY&BZWHP8=;R=n!;@8LZrl;|vX%|P z`yJiP?A0x-Z_FIK-~Zr8h{k6Tu`tN!-ICh?y-Q%A3qQRC0dS4&R9H1%%~41V|@i&q}v0w)ZD$#Dy^y zXJldQ-Ur!bZ~ek;YvBT5Q6n%JqHjPQ@(E?1>DFLwUC0U;=cso%m`mEKMNip_$0dx`fHK-k&)i@b8~x&`WG#x zX=UuJ_)h}^G}9Du)ny;2o`ets-f<{}t-#p#*ZD}yNW6?hqURo0vY~zP7NLN%@+SXL zPGvR_*?B6E*w2vBAUJ-UJjz4ISUOoHy zDi&=hj-a&0abWoH;e8{);1kjt{67E1VTPxA8izs^gAp840GK{u0>F!?ZvSkmMYwAM zjDn;>kpI=SqxXQo^cOW^Z;OG3!IiTXElj88nq{pvS6|Rhu4dl7rKI2c^j9#0B7nnL zFNbytom-uY=m*pG2AGSe>(mA=7;y}$J_VTX$}kI z-38OWLUgkXO3IryaoeV;U`MKNiHg8*`7m7#3tOwsRG_}Iyrs-+O7B=SDH_{D zTH;D|N$@7P?1+ORtAX@7JmRkw865<7>B#*21&-_eb`#fS^x3qhD6$=z*=CdBQ{-Xt z8ie{Q7NSck@?RsL!zQIm;U9%LicS`q&P8iQol0(3!LaKf^_oy6W$V1XH~W)k;G?Ca zLxV`z?Sl9tO-+zzMGJt=`{q*$;<%TuWZmIx@c;J$h_Fl&mLFS&FUwav3ElOWo7;RP zhkBNam$Cfny&}xCewyK-;aB4a=aJG!xX%eYy~?*CeEMEFr2q6rmkr7dBpyPRB*}=* zSaUv;A@WBQdM9I_lufRu5^Dm=m_K73^iOm#L`S^+3H(g7sCH)_-XFnm&E?RMlk~}| zd}lKsc#m=zb+cP@QY9jM`f|}WJt#^4iAY2n4rL}X42qe~f8IWHRV^m@qIFq!|8Ud* z{7%RSBvu8A6D6&GMW{Qd9+Mnb6reC61i{4+4^|A7$_=%*j1WYXdE#*4h|%Cyd(ZsX z?)ndIzqjm+!O1|)4yG_iXS3j1%4c@?n_aF8=+8w|s&zS(IH?B-!?lM1S-agFm07}v zh&Df*qY9DQx$@5?h07$s?P}yU6QF+2$e1e0hvU<(%O?Rm*njK+2mbA_;z&^(bQc}umGqUWXT z7cU%?F!Gl0Df}oS9Pqq8EEsEBR4pAo^X>aC-d@nMM7ZIZNU_(mQXhd{2OeKM{3UcS zV|J+n`66MfBrcN2_5njL2VZ;87bMnGrKHlKTsqWhY)5MR)3Hs!Bfl&P^^R zou-YrW{yf#RzVlyaOaQ2kKWZ&O> z!kIxLCp_d85mq`VK{+^+@s{-Usa>KI=F!)3u4>F(#n&mYAOS%sg#f zu5^D^8t>#)E$tNXs}cxcY9CyiX062Xmd`@YQS9u#4{>hLywkR6T1O}JGh|qwMjy_OQ5QGU`Xh6JJCS?&OaR&fz2L_{l zYca}QGYD)b)c6^n%49Km=z?|W#d&e1M8iUyOt1v+d-!(RY-5K1#b z8>Cr-l>Je6R#kG!ySRDkrNz~!@56y!@O9fZUY}J8=%f)fQ!@#oV=kW+%zMXCiucy~ z;A;n{=_YWBZlT-tI$YQ2M?d$2dJ%x`Or2?Au+~^V(eNo6#ad)siRaLK6EEYG+?ogO zgja*f&RnC60HR`sGxeC>y0S`)$ld@Zk0#_{aw~Q>DbA$B*S4~dVJ}!_CtgE!D8`;|aex;L=vlviE$Rdpk&$0GZ^lUH zj&L5NU}&V-pCzc!)#3^bL=Mb1a>5wxzZZotC38HJA-hZL6dy3BCNu6jXLGY_%uk4HE`-jb&fz}0>UPitYbx^5?0E`m<>S1$ zBTVTG0V-E9_d4iYPacgKbhfP3f}>`|ZI90v!T-f`5(158Ya?Uk=r)SOt#KA>X=bVL zob?CH0rlXTO#p(qRSXSY@w$?e1|c^nT8rKOY-{(Klg0;4l&L4VY3vBt z4?C~l5U`?r06wA1@PxGW;10Y(II8Z8s4Mb^L}Zm){!`Fdzc9(>Occ zUtCZGLJrQ8&u`Kbsr7s(L1o<>{z;$dh-xYK!jk1Xlkf^GR@g#~cY`sLD!2aUr(M4= z0EUapt@>B}82Q!$ecHf3Zge$${!Zxo{&jot6D{g<)7l+^OtF51#-c;FT!5bwPfjS+ zMA_e7h)m>%R?`Ir#qs;WJJ4Ein`jkVDn;tjsaSv4Mwmikg$pjKsL!g2MH z0r69hfXcVxdTfjkC$Gy0jT*h>E-cr#%I2bUtn6Gflj~u8E&;r|s(3eXf93RYOd0T= z>&Z$x!h3Sq=USXir&(+N4p&5tqSakI+$2#q-&c+zDG`n!BCRhO9AQiPtO zSB9Tc`g#M{=W#+6P|T(I5jy4EWL)a}xK4G)tf7tc&T@Myry*ny4sSu>G|hWkfGa8q z-0`iu^F-8*wcdYXXl^HG2@@pmB#}pecXmj!Kib99c%YpnnKuS1s;v@>wuK-hoRp;2 z`2vPaZ`p|J4MrSZ3D5UcwS-k9zGyT}9&N0+*a@gEozYL_K-@&IZg@cTpe);c`IZcm z4p(vs-Woa)p~N0ui^r5m2|BLGVX5}9WoA+_HoS5b9so`M6Fzk# zf_b~PU7$h%_>|01jCfI$`^daJ_bftBXvXD{pN`*GZW79R_;GrQ?v87|1Mpy5p6*UU z1Ac~tr){`x=n%j!WqWVELU=VIJ(04z+lBo_fG!$GXbhA%&jI10&E!zx4 z^V$yT@KK*dHFl|uARH{L;$$n2vy?wZRmd_xm+i~d7| z9rGn$xd10EJx;}x>|pxuMCk-wHnW4|tf?KCD7E>z{gk~SnyM`+rHqHrLW6rq?Z?H0);9-*7A>4&lL89WC zPtvMJy9sl=X1lN|UrB_tv}w6u=BBJ`aNx3_2_Bo9I3NY)S=g$8lVX`JWOKv|Iu!ap zgTIU+Q!$wtA{|5X-idy)tRUC>y7`=$0=Bv*3WDE%UN(Omtz*J!Yt?!U!1t9mR))x5 z#wr{rou_peK6AjF``f4ua$`j%;+{`>=lOub@e|Eb@-8tuCSf^#sdkJ+Z!`Ctz#6z^ zdLFbWPn^o_1YY#WR70|gKx(2<@qJrOFj?Ty_a?WJ`{1gQOzoP^YXkgT_B;F*8FKuT zhqpv1`Fz)&$SJNFCekJDCTA$!)k#%D9aAp1eevXl-s^PlG0o#iDP8Avecg-Gi#?&u z#Ju2=u!_=vl=5KN4~ZjM``+~ixYg`BXZnb&J{(m;oPQ`s&z#)XoS3FChw|i8FHgFy ziSC!d0Z_~GeHXdJ1!$YXj)(*i5fdRhkM}KN0~&n`3>qs%{XYMufs8taUc~3N=g(Qj zUNwTq%G~?3@A~^G(N9JbfNXU^LB<1y|3v7_(|AeQLRDbF7)pMuu+pKapC;6nuOqqg z4V{AaDFSj7Bg|6vlUMaVcF)C{)=zkqPK6=h-B*{ zmvRGi!mH7etwEH!7n!p!d2o$eS_so>-}SF0?9Pi;O;h6S3+D6k6a>MggFX4msF#fa zyS*|aagg4A?1MKNPCex!2((HJY0cG6r4ZJ~5a}w_NKpNcypxHxx^Y$8%A@+#!6V+M2!fd5DDU<+;uxZH#+`jsJa_c}VMGPYG6K>C% zg6RCsvi^B{mhpzq-s`51pr949`QQMHTI=Z4q@|CxGR`sPWz7B(J{~R=MOuyO?sx6% zhOIOT>W;Sv9R{}Q+a6?5g?yF5!~BxS_B@K3Yh#K7=OGUc47uk2i-Az&ewXsrYZ|=a zbw#hrvKwvE`X@r37>m4Dwpx68C;E3jWP9vU-w-t+VIOr|p7cfL7OiRvk=_a>ers&# zME)EG#3%~yi3fflzV=G-aTxd0_(0l;?jV*c9lxZp2(Mx$@7k&x-{ba{I|=c3AlNvbk( zuH#<=hF7MykCp|d7OhuAnqJI)80>pbKLbI8?2D!!H?lo=C;CF)q#d@p*sb;1?c(d2 zf_Y()K26vf`*MW##>jlDNe_IGWA)8~jpcM%6!bag`1y|_366!lmSe%;v^Y#m>DLm> zWi6I=1=w}E(g*=iHXd*AJP&PrRk=i&{B!xmn$k<()2r0{r1~HW-sw9@1pYQ5Xb^nt z0Bt86H4&*a9=J0dUEmUc!MId2ZSqk9k@czs!K+ug3J`l{ylLzR95ut}V$bbcG38)Q z;T9RzN~s2?M*YcxydBkPPNL7NvTyMB#Z8xmQcjG&60Cj(eFn)cW;uG*zXqSVdCfSW z;3A-0=`!wB@e&y2{~}ZZA8h!oeLhv&a;I&;zZs_^Qbe2TlmIa#O;ZoONzskdCPXZ% zNG#+G_MzM&I4lkFYNI}^s~lVr5b$lk#)GD1Na|Pb1ZzD}ME5{|_@1=Dg-7U(EK88W zxKYPin8;j8_LWC&+Rw2M{QUdOIx&P*A!hc*P)vr58M~zo-e22|y0Uo$EvW`8YoAn( zUbo;5C@gtTjqzPG8HL?+j6FK>3Hp|1N z9P@g(DWDD#RRkx@!$x0_dj1gUR`eAaYM^BR*H&1fc(^qaO!VOG2LoedVB7lM>6-qQ z#cmL&lFgynbRxbZ_~LA>dHXSo1O&G94~28)%A;vu=9*}HgL zW^p4Qex52OrR8cl1O4c*>jL=e0-5TTqfKV-9RGw$ zXSz{7<1U}COE*!Olhe=kS1Xr(KR6Y(rH-mYz;)V#4~bV&e?&#s`BE;yoB_lb|NJ9; zT@{&Noeiv(6R3vOUB)M2dhKx>XFbv#eh7Y0F+HeUf{#HjC8{>_2R629Rk_8jaSQ{= z%-Su@x@e=DnCvc^KJ55(F^fc1SCMfwaE$GZs55O-&t}Ux!xWJY@nRisS%qRObDWs` z!JMM4`CtKQ_hS$*UzZQR1l;}$ps1#?Mp%A~i0%)joT~+YT*Vne} zo-}}khf^RIA1dl@Oag`;B&s+`%hl>F_H(?i=Ju6pIBP54#i11qB6hkU%FP=2*Sp^V z(#z5(#Cqydur?G~2$l=UW66rIGL1pBOZ6T16TYJS9x7QGFNY?U)ibebaPD*ZgRNmf zNsiC&`85vF{?*)h!yzn>W%;b0!|Cw4EIroe(!1vI`ZrVY1tO?nku@vlGGw7tMeb>u znA;Cp>K=e5Oqa4vgjq16dL7dPjk?Ln)>_@Hr6^PlBgkFV(9ZtEgaHwSkk7IqOv3~R z0+vL*tMy*^wAR*V^URn$pZw-!(s5nt{Ro9j`Z)lf{YNe z817n&pKv;%Hb4}Tnk%D>NR7g>vbB2CUGfYEihmGOL$B^vNEJu=?OA1kd)(Glixq8# z^9KhBtr%83ydngK)ZChT|D%nCU5XPe%&a7Js?nz8hQ(jz7__z)A&LI>HfOLBFj=`q zdX0P#$X%uDp~o;gPNpoj@!VRbS}2c@;qArM;&|(S?TXH2Lz5(5(W8Ch0`>y@@8h)K za4(<05Ui|}NxpMV)vyd3_#Li*OZNVK`Y$L3D)^e@NW= z%pOB6($zaltx0sIX@%15+u-CqW~HmGU=P9BtcU5MRi8@a{PIxt308~gYE-ch>DM!1 z2>J}}Ss`pazYIU%-&|A`^gl0(G5Hy^Qd}aUGM}l2f=ZH>QbpYzgUj$0Q9jy)(_DX| zNFr2%?hwGVmz!ti_{94;+`nS5bGw!=PoET*r(ctIm9(ldtpaP4Yw-?5Nl&}G?ucX> z%=5}X|I@EOVLS=$h}Z~qOVyW|l<6R%jNz%l9rNCxFTL!6gF%w659H|>#1p3}9R&*f z)p8q-SnGTc9HTu z%5b)}!yHZeZa~#+&|Ead8|>4uZ3`WK?S{W^Oh>$Y<%gl+*T@Q`m;&_LQ6KD{yV2qX zh=fD=;24XZqVD|AW$!IB)*QMD^xg=S&{wS zbD5Uqo?)gKDr?yJ!7ik|m5w0(H>FgFfvT9b?+We`@sK6}1N;xfBpmg)(ipze+T^_j zbxdu-e?!2FgLVn51Hb-q2|~AYIXh-@uFFho=sx4%3FhXIRi*pI*Rr6dGj{M0XyXHI@jai2+J@mpUiV#e6OO z9;E$gBkM+FjEK-xemyIFd{TF|r)2=6gcVtTheh%qpoH=`0MWaSo7GV~KZlYL^nm$N ziek0cX|M91=Y|=v0%A0CjDwdl*Bio1K)81|&FfZ6oJo!}vQmEYF$HmM1M zK=wzJO3DDu-Rg?SbkXIDEU=$o3Axt!6h0V!Yw?X#m^J$w+!45$$OwB4gP0>B+2`Pf z8V&O<7!qR&l#* z9y>HLDA2`dqs0zya&&0SwBg6RX-@H_lPf%)VRb)%)C1d&Z}B|lGH8u+l%*3P46V+_XW5OAwkkw>RyTlR<_`)ZTQ>iyXHzfRbqaq@F&M?b01 zRvQbZ*QkIGPo&Vc?+&rcWhXF)p$J%MUt^f`qlrTDqOHigp~!7L9`~-o zk~DC?`=kIADIt*cM8gIi?5eh4qx>@ZkTJo5lVM43sa8}T@DY0y-U=sL1Xe=~O4FZm zggfK^LeLR>r-RL`TNGQHhC}d2WJQvUi&>pH0ZqO%vqWL06z2`x zhY$4+7T0qArf&X(DJ(-9-Qfh15uyBFD()Is(*M9mUMiHS+hPwNF^fv^B%12kiX#%X48@_Gg$H!Pf zO;HQ$F86TJeKWoA}q zf9Z_GY;#>X$0YI=PE>tU#xX%Y34xxwBKeTXLB^RJCF#zXKx(LTaimWsV|(IP5SxHe z^4`r)R`Ahw+OX)Xe?zjd3=1t4h|H83eXMD|{{Y8h=!w3s4BvI=tUZA?HAUw9wKD_p z!$&z3>sO<$GywDfWVorHO2+=1R1mIW2>E!EK{ojs3!^7fgi-=QrQuGJ@LF@Cc&YCaqZ`X%| z4Kcvvy=Y+bVP19~!X6qdcR#yBafwB^vKC6v>(6vuTuy536t_3}v&{}*#sktB?L%9u zN}ELgxG;^X!I(wNFayf<@MMwq9 zV-_lEg(SS#V&*kT_K=J1k~)EBoq5xS!hkc?gdm;Gyftgk!njQ)kiIlCj z1f9`W>IE4Ut3MEx>lcK<*YO%pkeRh$wAdbCg=yWRk;$)$Z-&0J#9cZp4tDa6FUwxM zx^zXpkvDyX1%x>`_hin9zSOC63Q<3b9ar32CzWO(z1?%Xgr!{CjJzf8%V8WR21Uwf z8q{8r#aYoQBPMst2l^Y8dS@zSf1mWD4?>E3)u;>aJqpCz|L;tW{a%i4uE{(OeDsP> z0wYVSsUA3PcAd0nxt>8hafnJW^6{*%P0H?QT!aDv2&BDTP2|`#kRbPcn$=Q(-zcFU zraTZ;Ozyf(xKDF`4be7owV|zZAF-DvoVOVM0m8x$9=Xymfb ziQhg#s<-(*e&v|ydv9@Xv)F2mVJY6w30tV~-e%O}f?8h|Vi{zSQSA@hw~uL{2+W77 zh6;r*d(G?+r%zY927RL(<^8tJIH6KtM=rqhoRk%c;3N zvcT8{br=X>aB7)aEtv=`C8k8~gU7 zUp+P{jW^~}w7`{W_brPZ`B}xwVl#0K%#-7A9z%RRp(S_jx0uc0%beoyd~f*dP{k%z z3>D3ewt5QATri`%i?aQKHOhFRRQ@BE6IbFHdDUVC4~0)rI0V&#?LKA*x}Lz+TIcG0 zSzaf>xLPWgD6GE9mmV%ALd?CA&Ho;o9A5EEb2_5OMQvbac3CGcyg}5Mhn?$}UF;g~ z@@~)#@v2v)VkLYva_N^FE-1AWDx4Rf7K`I4WzN<)oPnP`)r`~-wVVgha7(s*{eeC( zi}0~lFxpK~ia`F%?1n-kCc8e|En0$)I5&jv_}x{9Yd2E)1nQ;}LcFadfgM#A)Hqd! zb7&tEi5^rvW8$7Jso-82+h(QMIdh1*5`XJptlBrh^OkcV9AXo~`+S8mak3&Nl$}Q{ zs&c;*+n~*m8|L$VPLd1%r>OWg^x-;fIJ%B;j^g+2Yi{<7}cc=gg} z-p0@6SEn67Uz{og2iSI0{dQI3S)RW*6H^tkxUC4XOcii8k(b~J@h3pRYu5i|_M{gQ zg}fQ(Yb7c9pt2SD3^jTvydF-)+lJ%C-S1N06h;50wOmuYfECf4~&Pk-_ckr!3o zZRLfblC*{1g?3yiRr|rwdG=<%3DSN}&9M9$a|Q49wbNEzZqBG=@^4Ak7Wra zUD~PQJV)He{pD)90dY$Q1CJyg>&EXd;P{rqqT}>>S6D;Yh8=fCv&J!8vk!|f1bRL( zd(UI=mg1rPGObF*KUaWsp$4?kNO`o(t0Y8ZhKJvKOZOlh#!&KAJ7od;c!%qI9NuF7 zWfzFCphZci9j(jFVnkjXED8N%aNmEw`p%lOnzCLa{(i?(KhbT zR_~Ti=g1Rw?n-L{?Kcv0p+yas0Hxri3$k|{+U=(BDvbZLCKYnn9W#w@yHw*{V$k2u z#M^bwRyHb zi%Cqx*Jt}}rq3%OEIjh*+l5*!1HBzlPRP6#7HZ4;+jx;vK7!9t{e83FE7~5&ck{~ zuoXexaTX(&9*6PTIGI3%TFY!G!mIEnib_BQjGxDt+8&?nu;VSIA5%a81MTXwLpI9{ z@W8RvCp1Zt4!7}SZilxvNgt?dwyan-yQpNWF|K&R<0_#hMpbdKi@9?wH^?lpATY3$ z!3f0CdUrl1=sW?X9555ZwOwE`)AhZ^g`9s#G4$aMf|AeWcg=FW8p%$b2bgSvDU7d# z=QuhEh(#5RQXXS?Ehb0`(T->&Zx|1b0cqMj47s8|q_=Gk;H}8U9*Sl{t;1attMLOK zvWX8i0(H#9E2Z3(lfn|z!}+5goO6U5w_@b`UA$AvoityV`Io$L+8%7%a|LrWfjh*b3v6 z0vp=%!IwqOKgr82><{e8>F#b-_btm)4k%bdk;=W)M9RF}@1A_z(rGotmIN z)Q%kf#f+!P#s6YVN6)=Jsq1oK5VLj%*C3-1k>!Jt_;_*cc3qwMu}o=~$xoIZHOjky z-~qYI|2x@I`f#>KP2AVhT!Ch9b5d&^Ky!M5xy^K2=APH_pgKhT!KASs@!?pf7qjX1 zw~%H-8QIkY{n1vI-|`BDueUEO4VpV8_Jh0)O&#>oc`h3R%%YV|iBbe#r&dVSwJeOt z1^`EAv5&Ef{LpoYmK3Mp28W!^VjNiw03pF(F8?3t!$~G#ojA2fGOITb?KgAt(hixA zQqHooGNRLzQJ%i2`t2t@m#c~Uc=8%LxQ1bzae;M3BSEe>-4zVf#lvPG0rh(| zu~M1?k^cFMTfSD3k10= zwQ1sZBJ=RLUJ)kNwN5+fNrG+koXusFZ~WCU8w=SZ1QM*P!z!qb~EAADpyo?1?4MG}Q#$NC6br4bhpz7oF!P=n^F~+8~F@#@`PRy%kI)S&6 zf<;9?Jw`BzgVo;LRCW#o>P9`)epCC1REzMnFHjzv6)x0A@4BZ^URMXTmsZQL_^kcM z>^79|mAOc`Cm%m+H{14i9rH^g-_T%qmi1fQK^#0-D74y4ecJA%gw4$(V7^ZT0sY1? zmqgClIr(VjO$e71KAwADigPtKgCy_D;_9yp#z{g8Axk7CiljWQ+&eUh+(v3DtF+Z3 z99cM)uFa%g1O>9!E*geHMW*8~si=6>%UwbfJ9%Q~d0!bb9Fn|GvC*A|l3)oba=c)x zwMissLOmmTfCZ}DSTl6g#)hGoCzYgcJcZAjCRWQ(;|Fp9GvrSNxUg8< z`fpIv|B{c4)1~sIo)r~_oIE!YVD*d|WMq><5YW{2!kPxb$S0a#;5UsSaO^>Rm*p-m zj~9TCQI@$fT-M*5AKD+qu9eV9{El=~IhlIlcQ#;CAB?IDt9(gPw!WPS8!-V7CF)VE zAYfFJC&kxc3<^82Iv+)KBS)hG#F?_or07-qd58}IwE~}NM{_W@RGD~4`VMWo5!vW> z>#9#WsA#Mbs8^mTN5zT7e8)2IB<&2<(`-5~4S7#(Sjpqp&V$F4r2*yQbT(H4wMePl zs_r`K%j4Z_-k?u8J^lL0 zk}7%`_7`*hk>?*(mc6b&g3fN;B2+$B!jQwH|x9q14A_D7HbGn^oS~Aw$ zA=OMGUf9)=crond2*O$qdc1Wn4#D=`Cjz&o=T&H56xQ69*l=fJ@tpL`d4LReBi4G* zJX;S=yG?;o?(o_G_nX6r?b2kcX2qPT9bf7VY&xiJQv|e4MgMU9Mdrf{%*_LD3()>0 z%zdp$ekG)i?Pg`f8Kg_<7u*xak?y14A%%0d2pCpV=)`&MmN`+MFp_-9(y5gk#X}l6 z%1PKMXduzC&fL8&cG?<_x!|9=@|%yF*hFi#8GS$Ba-1yJ`KSho)_ zuV_DTU_~?%^s#$`t49hJ*#u8LwfFs>R{yAQ#da4;=q}X{0wyiVD98K$kku5l$P&Ax z7>RXiii~S6@4X2&|B8pA^7ZUF>AY_Ol|RB`q(wL)<lYgeeBR z>i#vR*udoM%YHfXzFB|yq=Z{_r>()6x0h3ws<9gL0T>KHQ#FZTPV!y}YJYek@kmnQ zroUss_D`&xJeodu?AXqYQ*Kn5XCP+YclPL`%)YTe^#7TJEOHZsUVp-;&oZG9S+r18 zTH-L5e-WLkU!)T%o8XhEL9~8gkhTb<>&B{JKHR-23WWwP!X)y9 z#*|#-@S8(bJ7eFg+i2k1AICeiA&{H$+G{0!&U|f=gVTGAspNr<$7q%%FxUw-OrP@y zkDqAazi=W>GX54>0i%qqj32#sYwGI`aHbHT{XPaZWB$lcK1tui=d`0# zCjB7%V65`iA$eMKT&+Voqok|?gdjQ`Vxs$|+j$<}!@CT7^$f_QQE+pUu!k`4j1m#P zsz<-6J8Qluh7BC+=33fEQd^RDxE|o;x0K)GY*xV3TNLf94kuG|FWpEkMs|rpnk209 zQ!OE(xbf2}ySd}2C*SR#GP~|D@a(eh2dR;}lMSAlc@^7)Lek5GFp@O<0SKzMfDv@r2 z-lvgSVUxL+e|N&4Yb+d@c{kHEq&8+-%oKxQ2*?_`}g-UQDsu3grjBod8w^%((D+HWQ8nWx17hj zfCp-Jm`c{oznoIJp+m`T-X{ujsNTc0V!DYE)9bo*J}muf<3LpZB!7!#S0|zmQr>jh zdP-yI6_*Q_E`86OLo`K9(z}e>o;_)*I+esvXD+{nFO=*>2W&7giZ$4T#dG=!B51Q= z3w`b&J6LX!n3;SS!hD;IfH2~0;hBh7A@yGaiTdG<43X~7gZd+BrxZ=pxOv%%7@bI9 zV4*Q^HHW-da(x$GDd4J$!}Mwrr`Mk6AHDPX*YpXM!HXkjwjrM?F&2p!Qk6=4j*uNf z)&gU{K#3=1zLfKV0Opd!uA$#~Hi-|h3D52s^|(h8*au03BEprM`M_4XUr~El>5i@O zc*a2)27C~$_3*}a8agv^6){DHfc7smmRgj22N%F!V0Gd!PG!;HjXI zw7Ymqd@1plQIRP8`cGsSlt2+X) zR$Do^MYgp76_5CF#JxAHZ)vzPKe9u0NaYd`$&j_dM=XkS++>EJ0&$)$pldpisFI9<|!;i&s+ZqxuQf z3f9WmA+$^U<&#YNz#m@hlcU8soBi%jE`AK+boa3*Z*h>}!KoHXMz;+CeUsq$-M0?z z%A}s57rp1%*vFiHqF}JIU9hZ}*2HheA@6a}d)gQ!d2eN@=?J;xY>eJiUVK|5-FTDK z*tFRHwKF_bTbv^kd2jA}O^Qj7#H>BgDGya%lRW3NBk0q1sW+7sTHpBWl6eB{wUy}4 z;W`6UM#L;e`*FK$@wIB??^wcZYIl+h4ViZhw*|t&i;KClJCa1qgbzTB9YlT-iHYXNju}H>ZnN( zZ|XvEesA-3d7uls#0j{)r9c4yMbVUK8+umE$fhS3yO)^iHibnVCeco*LE8zcQCB_) zA}%CEf*KDA!M1>-1&v4hL;f>P4rv0+F%yG-W6-dUVVS^pZ|eQ}AXrIW;uJV2Mw|6b z6Idv`+~Sf0yOMj%L<=MN2b&Ec{q!B|Ug@)R|DvZr`MX>2Fi83NDOad`g>{C<8fQW3(-HJ*i{#wH#YO%FVZn7H+W8=o zwA$JnOc`H%lIFx?C*s-U=TvquB`i^jSg18W0skZmVWXU&DmD>BImMI6R5+7Ju*thW zk2lO{7pAbTKHI*`eKBK`fGJmPAUTylj*p1Hk=3I4s52JOD4TNf#8l2X2KU! zUHL?Oo|F8$deRXt<3w^I-?IgVAkS^Rm$@pP8*qJl!@NzOLS-uS6MR()JXKZ%nsai< z6@7L5D-B#oUe7yNAs4mX{om^ZL8lX|@4S|W&`+<(zlbZHKk(Q|OumxamNz_Fjq>v9 z1tc|cq6pP3{m|48#xUFL@0CdV$s{N@pO47T3F3vqv(o`fUkBL=n40D*jgU=VfhJ&1 z`Bq?=UCMubWXlRRO^kwoCuDa#O2*CHrSDpoUe9o`#7Hi2eAp zhi;gyU9VEbAb_Li_fS1WOHu((!sO3Bm`W;g_8uHl|0N$M!arC3wOYXc!ECdho$n== zPiA`AV}y!2DUE_}G^LBV0Uj_CAnPezWS(^|>8$hvXyk9c$IzND6mGkaauaMdriwT_ z$0_MQTUs$di4#SLGiN__00)7&T}=#>{6R8*kJ6w}5}^H*5*Wi?rfmhYfcwW|JTA0C zIW3Xmq-&%AkQ?Ly<;yMeH#hczDS`Nv8+U(9Aa}J_dRxFh>N_MS<5F8*RU46}A`i=+ zry<|5t^0CSPD&OWS(f7X%ut^~A(bit0^KlPCQ4q#uru&)b-Dx%48;`Lr3C+#USPTD ze88aB)NdkeXJHHVVu*B~kmNud%VWgpG>_noO&sKB$bek@1F2V)_Dax$9a~?}j4C{n(UjamFU{?3*2=}<%~)&S0~M^H<))PR z|AI4kGa9tH`qtaak#EReCoYItY32b{T=bk&wrFGPbpwSvVmuCL9SLV8AFGziDb_W^ z#(s_N0=n#F5xjTRA#ZL>oM;9O`}}Ae`E%jTJ;s_hor11!n z1~%WnS3Z)Abf!_M@DOq&aSZG!?NPvEynZfhD`=A!=El;@>^eY1CLOaD-SjwxSaNQjNY8WX5*B)W{YhJQx z4LbUKAsv^)j1lS#o^~C$YdP^dq_B|Tcx8&PbSYJQG>}k`gFp)NQW2_ish=fE8#!wh%w7BDb$~Fp z^>XoVotrzIwMHJzY{>VInAPN3Bc&?ohe;trF8vob2(ZV85q@AhI{k0vVwkwUut4$X zlJXnJpIZLmjyz3}!9C#ue=WKh*a-=^CBM%bGioS7D>=f|Rf?~3BwJ@^hC-wlok6N0 zn25F?4%T0b79J!yYR7`qbcqeS4ue@@upC>b`p!9jFO;%7iQZg62560nL^|+fL@Uer ze_lF(@}Lpwk_WUBm~oysC@)bLVs(~ z_^t;aeUw--I+&%uBaxXG`7r=Q20N1|q%M_)goxX}*7JAaG4E$Bjc#3f!uS)F2K`Im zn_H5YVxD>Z6ln0iCSd;Hu=$$U6d&hKf_55HD%!(X_Tfw5z8?YR@CZ4$w~ufg7=x&qYCQ1 zAp{Z@ofS1&DCbpv1fz!WWxVQ$@8<9?sZRRUxnEw-N$^$fL&8!$9t1itNW}xIjl3eY zm%4;!Je&%HrVH9q1`Uzw;j9 z;LWI!k>_9T<(!I<>owL{ck)%?RTRy(5Y| zYGgc6c88-`lvQZkjTInMv~_=B+^1iUwb+BFV-i|ZPA6{9Ygj4oX(&5NOJbvT7Ybpy z0v9!bf^ug(g|*WLACy`GW}OWvT4N*@m!NF|r)LP#oJHzBd6ZZko#;;I$C_VU9G}uk zJWq3G>;f6rYvxgWrO#t!Wj!)I`-hP#xc?qDpyD|qyW6j{#7e1XdwZx_0`ulsF~6r? z@7#4WU(U5Gv-QijLobey;wGqaKqMM}ln|G(KB~VM#6ovicJ7UAke6zChBvVwJVW24 z59zKshp<(J6m*U~zG^Wo+Gw=-F%eSvZE5i(Di}QOBGWMDbHerJ)Ry(`miC&HDHy^bg z)2mfjfu{Ch9tXIdgRjc6Q0{+MVy;cJA*qmhc1>=o_i%{tJ23nkZDjNQdAnCey}Sw) zsY}>a|Esdi19H_^(GBAYQPCZ+ic(%nAZS2Fbj;!rt%!%C<*j|oqDC}C)Z4`CY(U|a zg@|0<^83emTsmCt!4U}e4OU~{rOkFDe%GzJ`M0il3(Gyhmwy*l8JJ2et~-DmnMIKM zMRN3XSX2}GhYO?Z`!Nc`DpD)c?QYpYnR?{bqb$3Ys5sndQ7uH+6^@KS!1ap})#)-_ zL!`J$y7^xfQcCIp_gmh3mEg&Way#`1+RSCRAhDgjDwT(hcpM0cU#)WXdUr}O-o#3X zOOpY9Ye=_j^BLICOEveGIcXxz>`Q9v7wor?k!P8zjsE>5iF+SIY31@1pC|q@XrP)# z-4Y2DuKC>x=+K>o2|wG6+Ux2C1CiMXs>9($KK*$(A8nhEp$&ZpMzXZ&!n-GGn)xQL zxlz$CKx{5s2eLMp6r#KstU}7ww_)~1i**@O$ytz$L=pNkG5Ig9vWus4-TG{euLfrX zH3$b%%E$umZp38+~1?QxYuCv-^#xBV`LwhU_^0{KE^n77JrUeetpulsjl}OVu zelbaa@1loweiU?iwNld2I`o6FW)3g(h8MMSfoJt*{Ko{a&25M`BOgYZ)<2qM>c@P# zqyrtI>iXJEJ+hT~=%zrF7mI+wv}vTIi}rogOTrs_z`>PM7E-wj+lXKBK@EbO&h`J9 za+=0gr|^K^p&>y>haX zrgT{{l4JH02wLYAd`y7qJ9M0YeVF@hlp~HJwBlUr9Qj zWqWar?8E@VnE@Of8mmv_xH>hpkQ&Ks_ag>$T>pw}5*ZbIn~E}Vc4l!VhA9+EyhMp9 z%QULoUhBWs|1ioE^x;w#BB-VUPz2=1sK}5POZ6$aQI7zE&%n}7eSbyr5L=q#-tXn1 z!&u*czfL@+2C9)j{GmA*)NRC;O?0&f)tq6&nC`=Ei8%SL?xLLF9c#j}Ok&aiW`fY| zvvr4WOMsbrwIo3cw*atgGz!@SLo%Z5@-75=fBu;^zT_$Tic#FesU$fKqbis7J>)?G zG8VH&crx1zD1Sm2z>Dt(K#`?P;PmF#>19chX&AKq znEt;NH{JV$QbvQ=vK}~ zjxzaE_kGQszOmrBjlTph|6NY&V?gY)dmR4k>~3Yga#iSThh?9!t7#uW^&VbY4?B}> zSj}o$#`(l`e8VccYlOr6KN0h8#IEZ0|AgnV`rO z1GSp@btJAk<#aWLh~iH_t&ZjRX2n&krW{h(sIwSA zC=bTwSZz4dd>dF3LoMMaAj}t= zh(GbB!ueNBvQa}n)I3CMb4P{Fuqxc&#%d4}(Jj}}sM}A=3Za;;TW~UXwLJQaNrX!e zIf9j!O4x%ga~}*%uw0jL{^gqXgc>3JLrY;x<1>lF33Tv!SC0dS23u&f86wy8!kvUH z8YA^U8(3~$o4`SodX+pGLzG09BS-F5F+&LBagNG^*Z=ZLx21z!4Uf>RMyo_qxOY#n)%Sns%b zrwVn%K9SnYi(*7=TEset1&|Lm#Bl#d)iZK^y()DEA)_giA%vTT9{r{~m?Rs>vI9q@ zTs_a+$w;*`+)lgt=jH)guJhKFk~iGNFA$QTf4m>3^?uaY8T;lN_6+=NTeUfbi;1;B zu4M_YWO`Nt-YV&8xt4T)^tNG=R^8(WAnd#e(J<3D9Vv>7SR$SPa8&KtqUX(G|EpO3 zkl{m`iXHxuE!eC*{0N!0NTh~Vpbg?fDkhn;5V8=UVq}0F80{>MPu|9#UiqX3ivxNh zSeI%Z48FZDrXT+7o#EhsSlyELQ#);+ac6D4M1C+>urxSb3GkOls4ohS&H?M}T1S^~ z{p$uy;M*?sTle|tab^6qbi;bqh?#f#H0|^>`$|9_05!?=BHtO(_ec^Mm8qiZqwtAd zYvr3q6Ld>VJ(@$Q^eSvJ&iJ*Q)bSRz(?DparH7m zHN+*bSh62b+C3hAUj`4wMI3wGY#3&viktQmP+;vT;tRH*l9JQf2RmTpQw-#P?oOtV zzz;Ai6E0CeiYrgbIGED|%TRx{@*ivr(V(Dd{?hv329hAcLM~8tIw0l+_UPx2wu-#P zEW^Z+(vQ30+Q$EUo~J~3)JTAF_z7bXxz5^G77xu&pH|5BH)tBk9=@aQ#M}VKqKpJYwy`uvYu>oZX7RX*X z?F+Fi!J8YAAz|D5)Xj{ZZZMa_N8rfJ5I4wW``vxe!do+ngvA!p03qpzzwa2lax=P}SUwBhkj9twCg_1L_4i z$0mp=9&N0CL-I6iZ)v|j*Lo%cvuA)e@VQ+Wmalww zhj6UMPjIOUMy*#pDppDh71h2?zTD^arN^vop4kkCiN=Quh{?5nEj>~yc0V!C@{>BK6@njF01kH4}Pe>2rwl&EMrwH`#M^Y6E_jLI=6i{Zz#AE)- z14QY}O0+>X;~z?F2JUlE3v9zj7wu;I41;jfe8Kwy9_4O*JTrTG758GyH_^=Pa?;Z(VFh*ntB$m-$;J;HFjkp=LLCG;O z7Le>k4+e1R)&0wJw`w*k3dxrrG~Z;8-Px=1OvHeFJAzT)6xJ3>4Q)47f3s->dP7kK ztE!?xtG1D{kR>L=L;dWb{JvqL!WJm$Ga1*KlZCBDt7hOpHeiB``W3h*oVI3c1hVyu z8@bJ$8er^EI2~42S9eX&$XhrUK%2+v9 zNAK7(*7}6B40>A`j(^#8T)(;ZOyBck+{-+|*vkw-ee2lp2fX{BnDVn`#Nx)k6O0D-Dv#u2#F{iRAY7Yg$c~ z!lzm4A23<`5~BMbAKOVUlg*O$f^|oIoJ>giN2Z^q&kzRP?7D!#V4F&sfC_NEq1%n# zmLuWWx?8?HN5~CKJKm7W*07u_-vQJmkBHb z$_mbN%Ms@|9ZMB~D-h#ynAgs&Bgwsz_;#&aZ5Hp6RPeeO3~Iu&QrKlZqIm3;=x5Wq zc@s)|uNNj_rv1bV8VG*-zvA}l+!v(;m%a0T^d6}BPR=#*iggg-gZmD*wLkQ^^%TVe2zo8^i_yp?{N zm_MD-V3KUNoXMTwUF;=b)sJ(pxebxU^u{JUyB zm7aC$jaV<#JZ(CVa2OCRHwn;Bfq+ei1=qLhr3m_^G*(3>a1}2Kp$k11=YQQE#t4Lb zle?(vNY1c>%JgCWCf5TyDx~;&6miz7sYp~-&+tXAszucR2!a=}czs}_P>#c~Tg1!O zNtxJWqVlj-+dy#EHryroE>fpE>q}%@SpGsmCRlvo%ScG4QDZYJJ#cCK#At}L5$J^0 z!b?2_+jl=}>)a3cE(#{tMLP*rShijg?4nH;K%bingxMQLzn!809OsTa;ZO5p zY$fzOzkZ;~6QH;X?Wm}!wXA8^tRT@JY0Q(PPQiJ5T;W|em6k9}_v45_EqnX#>60)? z(yo8+3s(d`155OtO7JWx^2eah>3JX zM&iqJQBsk*^XtyU5?J1$7bQ!w6av6Z%D>OjJr)9jU@1o2es($7{kzew(T2sIZdE7T za0S*3l_ngr5=ui#T`(BsfdAEXx%~I<*XABtVT?hnt9&sLYo@7v$(tUdmqRf4s3FJ@ zWHy3s#R$uxt?maoo)@j}t(2U!45@l<*Hj^a zC|MYizE3%^s(lg{V>r;N#|!nBfE*p#e6j&S-3yIXFA5eJh3c~gJMD%r2+Klh$u7Z{ z2nVfBW?+3xm+~c(V&n55nM=BOBfGe(Bz@UyI!3>-ePQ6nkxo?Pr$Qbiq&!c9w11!6 z9lX=#?v#`%J$y<8spFdB>dO-BDi=~(ALcV{uZ+O-f50&VFT3q^X_@!;JftT4maB>( zLuHmE3j0U1-b5!eneZRY>2zjV{u)@@jztFaVL4Ogt;kqq0q6o~)~2K+$(w2t)fL30 zJ9d%p?$2<(ocCO07if$lm374e}->nWaaSxxc~rm=7vuH>;Esp*_k_8 z{|^EDw-T6J*&6=Gg!lje|Be6bVM}DC$3A4D?^tzg&G6I{N=y z6>~cWyMM@LZf9uw4`K9O=mq_W|0fN_+|kbXza#(v(0>zX{@;RNXYOYHUj!He0^%Q_ zncG?aZ~gy@0QLt0{#QGkwUNFP5&#qwyM^g@{s7P)*uM--! z4rV`&BkL4xp=b-gf9j<>J4?z~)*x~FIc{Z&|j0Qp*nR>#{xyh53MB8`Z00&!kK zFulqTKT;qomtYQ`pGzBE7Hffuq`{(^#vDhtpx{V7w7yI~$WlVhw zBruVZjjOToU@_KiCu!jp|I~YxAfl3Hpnn=0Nfn3eMLqa}NIi^$oT=E4+OQrheZ%{R zw2O5ip3Y5Aq-H1H8|jg!--J|VFik`|OOeUi>u^~P6VzZk-_K=jqJF{e7VjpR^MZr; zRC*p_Jr5W1~I> zu{=RyzXBM#D_Cv||FnVDczJNLQ?ePu=T|V3>t+=vT0V|}Hj4xTUf3a4F_Orp+$yz! zTSndix#8br)}U2}clwkyvO1C^p63nL$#{Y}+6 ziaiN}GABw&aP=Yv*ii8-qBGSALldWF(>piQohi(;pY0q{%TrZe>n6E1ar0!U;09$$zdc*<5^ zNBYN)CHka;5@}fHR-jNS)tkQY&$Lc^apeZ}^)xsmX7cs78@knwOB(9sSi9aw$MBQp z`-?M0qAe&ftFVvCaC-ioj=7A!;)-Z~nAhwTX?dA2b{!r(sVJ}tdp+k-35KIEH;Wu% z8vwdc1){}S)AeadU=X>G?Iargd2GbB!U)WbjU;D*gD+?C*Z%i8jh2OUiWJCTX9P;> z?Lo~nnfx%e%h`zcU6|+Nq%5@NSuKoTOEHo@kmcQS3@DD7q$e9n8<+A?K&x>CZNCjKV*ejN zKHB*M3?kSSHDJ)hC5yZIf{5A*gZ8=Lp)$YZ&$yMT(qc`Wmc+PJy8Y`Fbt_x1^GP#R zxCd2QLrhY>DEWexv%d^}foU1Xecn%=06g}{F{OKl5WT|=@~R*2@@im7TY+|@%ly(a zn9UH24=+GFAU3BhI32BbUO!~jh69&ju@7iojA`V4temAEsplmVWQ;OXbcT}&i0?@U zXjU+|qV=N$lk4!@8`};@BuxGe>nnj=Vj7T%uVkU)u}EJ|_Ib15l(z?zMnwUUZM^ju zFx=D(*+addL`8BK33!;K*xHgWwf!`HX~IaRt#z#sUE>t~Om;iYNz~*g+k?r1NwiiW zg?%RB8w{s88s+Jo)+}{q?yh60k!DSB->ffmR1y0N&KGjOB|*_vOsb8B(b^*A=3d#} z^CLco30uAxW-qLV-a`)l6gz-#OxGG%O%pE@-py=0EGFhwZ`TL|x{s%lj({0?@W#?= zDT)4Pa|7GFdCVNoA7uUCL4sxzXO{7~LiM05ct=Vk@s1ZCM%i-%2sS9Ee;jMiJD)!( zVip;ehKG?*zi1hJ?*xXO;QK24@j7PUz&}D{owtTzUGAh+NG=nvM|{Zhfl=s_ecdr- zNni3{TBGL_x}ZXI8SV$PS-t>v;Ek;PyBhNrqfY>0V&~-Fsmje{ie#zHX#U{U^WN?M7l;XZQ4vmk>eV!sx zVsDCS--4z2Ocmp&g35)J&}yef2ZRTL>HS)Wm_#K<@&u)yH>P>>Gn_ zj-pDB$o;=Q_FthuIqwTpm1dQSU4uD8wtT_G0tcI9Y-i#qrSosg zzg?p=s|zZ^eg+(%&nFbNj?a7-APIUxFuiPWq5Euyz2)t&3a_klRW~5Zb%%SX& zXbLg{q`v8IbaqQc%Tte|ei@x*8^Q}tx(_Wk`$GcgJn`_1?ObdFc#OT%iM1egC3gG~ zg|d|EfklXH+gR>DmJSk*qH^{`mzs9=qt4T^t=9I^%Z#r3e#>-yD{OuvGM8VotRCnL za*_UsqcM2pm&1N|HKK6}b^$WE5jyIIz@M%?np<#3FhYn07N zG=3OpSOXYtYP)n0D#G=6o9 zCWDT?CKP_Pu-gz@^)27Oyn{b5=#87ZS|`VfC0pE5?6%T)rzI|Ri9mgcN*wlwDRAyo zU|&o&qqmr)fKSE$6r^`514x@)L28YtXmCYTOJW}=bj4&-qskf#Rby9b=P9u&Z#9s}$pA;VC(*iA`g{nCZ!#H|f- ze%~KR_tRqw)M!{23VSyL@i(Z124pL;7&H87U@!tLt?IXV%k8n?Sj3tWzZu@%CqjdF zVI)#T{1p~Mi(&Ij=SKL$rs(_|AmzvTa{6WTOR;{Y_0vdEJf(dO4WQH5^{)&^2Ivxi zI+UFGV`O*`Ki?oQC4FNnM^{3HfDw28vEH!USfgcDNje%6d3kPWb4ZndBguOGs@OzOp&5Ckwk+M@x`2s<>@M3>-JXZ)aBMBCQHb)BmZo&})}Te!S9lC;J9iour;t+{Xjs=`t)Gp^zCs;EDLiwT#ZY#;u|pyXSF zq$JkL#N*Rj@Q4zhfz_v@WFk<-)K@R7Er;Q-!lSdfa~5ZFRWY*MPn1nh9#<_?t~s{7HNyyoOF%^21ca`|iPb|n2(c3SkkB^cWFR_IEJcb?zSJe+a|JBcTNM3mgFyOfXUX)~tZvyx z9%RYBXG#p>#|HCT;uCxjaI~m0AuZpxQZVAh0!R{&zY9+Nxrza4I(u!-u%AXgZTeu) z3~DSYOh!fbE4#sRzmBz)A%Ku#BC?c_L*1^g^5#AWOeZl$B9IsNx&Y;3N>Ivbm|<{N zf2Zc1AsE8dG>b6Y3PLW-u&uN6*fYUDwo&H+jUOrJkK`>n+1^f(=Rthqz-4{v!?*g7 zxh%3mM^6TSS+zHLDUZ(cpX~)_%8_)cS*%kuHi8=!dHMDG5lCvVd=Dt4V0rbUldnjM zLtgt_G>4g?mliSx#N~LUQ}`5@_^8Vu*+pn@KJi`YImo-8;$a$?H#!FYPLOb8)Lz=t zv$k+d(?>k2CR<;{M)SKScH>_bk4@!ixr*whGkE@G#ot#CMH?pyRZ#cF8VpaOTf+2o z{LK&?<=*8kxmTYzWX~H*2XI^W=4hI{;RGbiEPYox-Z!vzvyY3O-_?qg@;3Nsd5Hb+ zE*pXO&Nc>caRn-grFO~okPyK+DHlkh%tQ@uDeaZnt1+@_mMYX?Er|v|>J*M(OmKk- z6m3@o^7?8gTqW3~H!D;W`bEnt!3bo0MnvX46InPsYqMP_7JtW|#Mj#-jd3Wyyg1Eo zphUT(fJ~kpxY6eh0$j@u{}zKL$;tw>NSX*)*Yo-F^gNwLAu~30xK!Q%fXii2*$QQ* zfe#P<5qHcaR`dffylr8$Qe%5@un?S*S?@N5chBO4T+pw-QM0bIZadE7g-woy_%bDlsnI*}Z=Oyf4A$|syXYBC1qPrvBDzAk zL$b7fF5r_%oS~6}B%HNbNtA0VMnN-a0#%ogTB7U>4#is^qEc#UBO0NT_=BXjjPypo zjflejBJ6$m3ADmw9J30OUpH}8d8L%B961)$HG_|JNCxMAFXyh zxhb0aj-Wye$_Smz(OKt}VozS%TX6#%omev(`#mwSh^Rh_ddZ|YL7cf?3mLA`p3HY2 zvN0a|N0U2U>TZP?h+SqjKs5yB4&Eg0CPDW-+~r01IPNTv`XvOVQ@?sD7XZtdbD?>+d{e?_u0EMbqQ&Ds;h zr0aUq<&Y%q6@?QU<}PKFKZMpen*>iF172e38)z`q?HZe`jcHkM#ew;adQa#%C$;HE z4sm?5LU-^Mo^MY8r{|9XngN6v5XTe(aku^{`K$bHectfF?Aow*2FIaz!JPGb+TzGn z!(ZILCPE_U(r^i70{epYy-G1DUH(b47RwY}mVlu@m)7hI@XFeR;tz1>$?AL{X^`{yHa~i;Sb}f5ir@?W5@9}?yob#}9xle4^ERV-vD>2- z3mu(YgFlk$o=xSH@2! zNok#~%m!~jK+yAm$AroGTVZmq?Dg*)N7r4iP-P;@KaC>e*-Ya@RR=LZ{<&Qvk!}1N zp60?SLO3)pNd#baIm4vXN%s+cS~CPvCs@0{A@JD?H#OXsB$JGRnToZlN!TJ9jwL;V zMC$*P)|Z8B!t@8~nReTNVeuNo@EEHU zlWUf??UNZ|eMv5~3}%6NLk2w;x*csiWj~=85~iW8n2ImU4o{s`gHLzUdu>3vx1>xL z3O&lxr`8W{wP0y-c&}2%!^82uQMvWX*7v?4A98MVT!uI zzG;S5#<3M<#10`>crG5WbC>Ztr%%XaZ*7ZmqNc%m?SW5 zwWzU)e41bG2hS7ZZONxd-5AJR+cB1R^&cO(O!}3ibeP|%ZIIx^srSbwY6k^R0fu_! zOLiAN*i7d);^3m?&v2QM7^{~jV@_1yY8wGAe8+;JnB9T$q)_pxR-jLYwbBI!7S?5S zScZc=;5mf^=B_H{w%S8_$dWU1bAte^g}0pwqTKek^REc*wQE~l5}2E;dC7*5;X)dM zZ*}7X3?XrBhaD$ic0=c)ug|v2tV)Gqq~)(<-eA?)Z6iEMH_;{FYWP z5!UCHK~X3%blUB`!MZLr-*R+76j-M{q2nX}L_;Q^{-igXtmmj^AbO)@55PyvdJK-g z!@Eb-;InqDPsgr{h7*2X%b!}0U(G>SoNOkZ{9TBCDHB`e7ngd^okV`rO8DAS$7B)T zE8g%6;8qs?yVP8EZ;rYqR4RuoyFU>lZ^onOdwrjiO9_=|qH2U*yY!#@SgwzyNBRrq zQv(-2`8gTw_<+;9-4+$k^p=k0%~x^HKM3{r&_L1u)aj5mbLM4*cA9LOW2~`izKp^j z$F$g|JNp5^O4^AnqR_|Sz9Q^gKeOR1|N4~ZE59Tl1sg^$hpR12y6_G8ch;4o$Q|b- zuk3iKT7(m(JW?IzfYCl)ZCm6H1u!)T&w$Ti@;z(YI!Fen7zOCrEG!yI$aqhNI}u^HE-THg5Dczz$*yV{j;``b1w_z<&uIKk!@NoGT|E*Ro`GYPPN1mwc7h+)5ow597S5H2(51)6{ z;2{k3%t+r;mO`szR4SG6+IP2<{7kg4GEXC4kN5aEtehn{Oe%&kroS>YFy7$aG;?ZU zIw;VRI}!B0?KKqUUV0N0fX2%L{P_#bK@_z#Y8~E00n^OW=`+{IGUv2S+|Fo}>3BCW z@VtVxnjah6Ey=WFJ@pCVPP>8mhsFRui#eIy?&a_mq-NBa9Konen9JRv=!tY^1PLWD zI@14GklJagk+DbmK<}qfAKIRFx5deW{w^juc)y`1ghpt{6V{YQ1$U5R1 z>Jqe$mgKrN1?jWcUyvuxk^BWsq@GE6qJ38>T9r}YSOoXEyNL-OaPKxaiqcedKM zaU^7yz)Vl|dGDG5`Er4$YGZkhIsey;*sn!<`a(!n+?>g@A22G=C}&a`Q#L(?Zir0N z(aNU^4RuwTgt0S!g?{m9!4Tt3HCGlmOA2f{+JPjiN>lmm;ptjl zfeagc1*Q{Gx)$KyzZlihsh9^a0RU%21s@aB2WyJ7VacGF)9G)oTSdt8hL%3?TSR#0 z1k9r?nm@iCW(ZI2x9s~1wGH$7SHiN|Uyxyj9~&%nM^crIT@ zJ+lTC0`MJSF`jR9N8Jcd5uk*~M0jGk7$=GSV}lyC(YE}Q0bzXpO`B5lFEQ|7imnl5 zQ)f@>(mxQW7=z`n^}+X4tm;B%eMYsQYpC99MaRH<=r7+K%^wS#S26_NY&&ESyQ=QE z%TWj3CVmM=vSAEn!MTD)44HB0=RQksmzqa|euGURmF%Y*$)SR);*OPaOMKdV5QsPi{jloL2Wg zvAYI=j?Umbi3u}(V>~b_{zBxM8m4?15qSl_lpE;SZOfxza0?v7NK7gr#1+I2ZPa1a0~&gd{j%VN zw+omYT$uYHmCyCUpqy5q?zy)pFzQ>Lu{%wdwF<9c z{Bg8^Sgw@4nxQ5b8g|vbQrd1;!U_z$hy9hVH9TWu9LEVxB#b_1YsBOg`(V;crJnj@ ze~ULnM%~bUX`84a!2S&oXY_dH9o%m$yvxR|w+IYW2hl@hirNI{t%F!ZHoLVNq6o}Q zs*u*M>BK7Y=-D`8r-DBhjy}!@U%!V{70=Id2>{9-pFUM4uk)!$aUIXyeF*!K(i8*d zL6FAJyY|K)Am6q)&M^rt5yO32D*!|9&A{ep%Xu=`# zQ+i~~djua0xE>hFA$095eZuxYf2Xw6dH#P_0a)BH@f&lgc%l1520}50PD?dR>Mo4l%BemCcsGpO9XG|l9hh0!< z1eup??qS6K&P1w*Gz`v$crfDjp4*b7a5!})$Ge*#E4icz)-7SmG_7^=v9 z)23IIsW$P${VP&19mU>mLX~>;xEE<{W<^kKmV+in`l!HP#v3LX-TajY|M+?Ix(9Qi zu^T>Ko^nqQNjxUYx_lCiZ9wwPwB|9Wf#sJ`uHnWRWFd3qVq`)7JiOGvt!rCxw)Z!y z%N?VB{Z`;_mJF|10}hoePP4GlbWGajQUSjn% zUdp0P3BR#1De=%r`W(wtG@@Q7A=gIBk?9JVn2Vh~6;Lxb)Kb*l8Ui#*ZQs^@6Fn2~ zE^sJF+KFXTh$Y0YV|)VucmeEzWBQU#fQo$F~}3g z$_pBCmRIIxei(kO;sd{C^KIg*#&sp&MX5$|uOJktNGPZ{Q-NEY0api}CcMjhUD`^h z&o~&I+U-wZuPmsf&BiO0y_LrQ=L!hO3+Nt|QWC@Q(lhjNn1&E((6DntdFphZ6H5pZ zLNBRi-(;>78br5xYT%P-$>ygC6Ctp@Pb(dphDN%A2hM!*EkqN@dXDa*xBc>NizA zoC|~lGgGdnq__BznNVC)nOr3)*&`72pW*3c5V#IORQg$~Uf(vTh0Vr>G_j z*Z_rqW+vqZj^U-dz?9EKeI+MCwGLVu-FolI`$u0u8I#~l2d*;^Hw4uDa*r;FMj1M8cY!dO zJm0TCk?N5*#*;T6zW0$t92A{qb5!IG1eM)S*c_NyjLp1lp(ajq2gQ#|Gs@`^IX^KD zypJ^O#bX~ye02G0}xV{ z>qq?p!^gw&wBYR@B#fyt#C}-)i>JUjXf9`V`nsNkaQc45Hk6tAy-;K{#*2O{#-g6r zU`4i49e^vJv|q%jex70J+ewyFO*u!D`Xx0|kaqj?+{Md{IcPQn7t@t%NovXLoDpB5 zm#~|Dxx1h7LwW1Ver5Ulb7~L06SF!kF(8YHKO&GER8)|@*yZSVE0IyXh`={T*Fm_F z6CYT1xop$@1@D=p4acLRblp5nM(L+PJnQ_xxVeos!+~*knc8527xkP1Vi$ouFyz3y zs<7sS3|17)!Q%aHWLCUl8PxIisV-MS(?zc{Sf|FCikqTY5fCFWHR{JtoXFzdi7V8l zw~Nk*ppV5_KhD-Ox|U7~2tw;7D=v4Tf?WiGX#g396(?8<4F!}$Pa1I_LxkEr zUK5ej9eb2vUnfR`85oKDgZ*t|1!_1*MV+Xve<)5tX@q;|fyIjAJ-T_N;6L99s@<&H zw50Di1$SP+%T=~ZN*2sh1S*1-m>I8cr9%ir1s!=}osm-#HrgVB#q~=$Sk#LL|HjvpR5u|Hnx0>4EB=~1gbA2qBP=1iqLBvg?!fKmI0Hk zbb86xpSl%8+*JY9F7l~@bO=_AQ_fdLNSo{3uaHCK^4U11s}3rwTQ9;>+(+~v9y22d z5BH@P_%A<-W8Re{i8fG1@)~{dQ^>pBnJyHE<$s(D(>1+p05UD^7-Z({l$26iiXmCS;MHf2yG$e|REe?%uNq3h zNi7Y7y`f@q1M%e`qsbv99V4wqyBOrIEyn`c%WO?+0cbGO;>@I;h@-)ECYaT(^bCm( zCW=`GB4;_9+1eO5Ulj@qoD7Ln_yQfpd#ArxF{^vJuSs|dU{2f!$m$vDlzf<<}v12jb0YM4=Gp+5HEjDZ3C78iM zP-(!!3QJKWS@haH)DY@GsK1{_vFsb*7?DIr8^u+RkU?-a{$?Z3gbzt%tIO+Vck#z4 z2*xhAUdcSbRDRTEiQ<*@gTPqkmESJ9p8ZTB46;d zENo|NgeYpojLdXy$u}d3EJic+tt26ApOFTB(gKml-+Udyp>;`k(u)Xs+CkrJ1ZY#+ z#ICZ!<3Z}{S%bW>s|BJ2>3o;uh{l;aAp-;q9>TSGyawIMDCiW1B3O^#xt1t!o}FE= z05OMH8DE|GJP;YLeM)oBjQ-ZcID$AyqYt&w{5M9M37Vv$I##~!%5O#w7&SQ!zLi~z>l+=?)QWt zc*dgjj0(BL_mr{>H$t^w$u=r)RuDev697a?;Vz$8saJdLknOjlIq(XL-3x~vYHS#i z-;OJ9C<4!Iivnq`NHIs`Jwyja)&iUE!7yQ2NQSM)wAByR5TeXojFh>nD)HMZ&QPHyySt z;O;%JDumLJLB?8;A(y>UfqN9||zIy;=2I&A_aIuznt`8_hN!;wczJMJ(d8Fcsq6$PKM{_CG{x zDFa?&#BT7^Jo&tf*Fad%OpOh?7O zWwb&TDzLXX7jtfcB=D&3Uc z+ajQO*?I%3=!Lm+?=XAOxEjBSg%FTbvjO*lMCDn3_T}OmMxWVX1q|50-p4D?BguLU zY2(d<5+%mN*pl0loD-$K(IOt5;S@IH*^J+vwG|WIwnWB#IT?~CKBZ7TwiBclXit4m zRfQ8y2jPe>&AvZR$8kR!zpHbO?5(i;r|OYTCG0YG;FpR&!cp|4DwbwSHqn#jX0m6^ z&c=z3jhykGCWFIObS2o19Gw8HyL4UEX>iN`R{i+Gb8D(X&YHIVcv)s~<_396 zXrjMdnUZR>-8ZW=MB$)ftk^la*VtMZPtL)q-_mFWMMHBmW7T@uUzWUzsAgxJ0|No> zeg-Xa$QhohYNM8`8(}0eNw9H|TF2iO9>03cTzYJ`P%3;Q7{Iyk8{PuZI8K8eR@Cce zs3tmD#=BPF*rps}Tr#IKxG9AfoXXIs=b{V>5G%DQkC5@q-J_f-w+rU064J{HYC{&B z_Zr)(!cWn%a81(_e#j8qM|CigL?J@uUY7{O+epT^KO)0b8wQM*Noi+jCk(+F#yMi% zT6#A_)R$P!f^6p*RsQmwhnO+{EXUo|l&2|WWHCiytQEct=Rt}T!uUE?@_9vUw0Pw?kH~I=z+zpQj`x0k&=L7ZSwAKHk_f)pjY4*pEiJ`a+|Xag3pCITs$`T+ z>P6cmKZRjh-P^=1~E;xHEp6M%GVJx(6i&}Ok>PybT}Ib%2ikh zft&ACm6!bJxB^!UH?5}jsIjWW;Iba+pz9r`Qnk1G9NE5oAn+`dsSKq4PFx zf3!*m?EMudRj;&{7aE&Kd={&x6 zY_+NOV-zuh++|Wkw$embHx)9gkp;^9Ndi}x7q$wuzFh!A9N8!muL`1GbXh4UZOoa` zX+5-uz>2#Oil%7#1Ym0+H!qG;dWic6s8qG=qp?JTC@}#oV$K2tYLb(%8{8&xRVoM* z>8cb2=48o}PCjLpJ^O@Iiw?#q)xdeQO{-z5Sb`f6qE$`}0zMY5PtTJC2HP+ZKMqUV zM<2IJam4nV7zWfml|TB0^i8%(u&&LFN^H`3!E8wBq2t0l+x%%C#TO43GAgH9k>ARX zicaq{K8k9BnmZAgW;}v*hjEYBhDnc|H}e^OcM>XJ;4D$v=QxO2U>5KJ%u=@Tw0x;Q zi90};5mdTQz(3<0#{ISY>OD&3DvFcNviQS;J4}Db(>RUExA!5JllK@nwy-N-$DR_DL49&dTA9^JsPJ4^u z5RR!rL4;yP2JpVlU)Mo%zO(Gn#!=^m?k37V25nmA&?VWu&?=EA&8eLClavJ?Rf|mV z=8w)X~n0rj#i3|-+Fy_Yo${J}8D(9}n^lDqig?%#= zxo}UsCSKUCd)8)>ZX*cyt%Axxf0}MxK0};E@<{&L&gm)@aa~kN8DR78=9b$YamFZ* zm&aC#1rYxEmO2T5=Grw+#cYkT!0N0m>3i4(q$8$!=Z#2kYOV;S0T4)AI(o-A2%ZtS z5AA$o3qa*7CtCL|$QgywqdEA3`t7Dhc-m7?uD^OadZ2lTi&!**zK>yA0_P%ISF$1! zTX@3(bIYM^G-R&tP-`CqRdR|1XOU}bt}X=9`?3--+VUFwL@&vpYDl{SWZSmG^{qp} zB$Fo~5`QU5Yzqi>8fX01O)zGm@Dp zYF(&APz80(|Lwt={)`stjiyJ$Ejc3!ZaDOFDqeOR^<&flK@ zgzME6?1D|PO-_5{izJJA%l3zg%jPr0{j=x&boCS8UhEBKVghf@Z3itEtlTkTYBWkC zusCO;soW7S87UF0_)V zF|IsulT!$ZldaVtEhiZr;43gq>5s`v9&zn!bmf5ZtE5lbk@@mV5BDxz^AOZ5A@uO+ zIY)znY8~-7Z(wydNZse@ZaYCEoCx}%+>Cb3Wd^Iu!YESPV-%D>*-ZtD?^OlrFM&rO z1huAy-RyU=qm%Jgp2{s$LNkIy+LRW)<+A2+RQKMCV=-etNehW+phK7NOcxY<;tqU^ zlI&|gx8cjCtKdTZ5a$E{TW~2?BCyuDysm8tGB*)P>Z}p5k)`~c8boS&^-CK;{J}mV z{ZFWW9p(gBeZe9pPwO$uNhC=l2M%bq6SJ|#@@YvoK?;KtRQc{7=DzI^ozYSOn38Z$ z42P%57inRii}*Wg*mww|CP+xjIBS{Dt64Fs*TR`U-(@ga6jcavKrHlJOj3}`6WG9= zT9&V(?B7=B5ELEE=D~~1k)Rl{xrM@5_o2lJILc{DIJJ~oU9VlFrk}l~*+53M?I)yj zN@lVIQ!vq-OL2L2GmGE_AUkRpflYdL$29cqrDeF_##4XmA(mD0Ob5!2Jak^V`<)Cr zEK@Zxg8JcqbK_(tc;)h^&juR!s5S?AeS^g|F0zFug-hOs_R{WVDZF(3Zk@5r>olHS zk5EGAQ{%1XU%%K174SeMs=Bo4X0b73i5=e>fR385W12E&0%R@BK-pkM z+uDo3#ufRo60lf9a9;z_1EhuP5k!uuRetH2ymPfYU_)xeMU#Hk?s=Qn4mGG|43x6> zV1CJ9zrny)rjx~=31VoQDg&Pp`H=$Up~cF`bsL3s?SzHjjKnXD^s}~8lvD#WIG6hD zGH2IORQr-Pl&In(krP9`Xh9}jW#$J83269EFYO^n12!C5iSTJjuwr&R$b*2XZyO8w zS?cC20fSG!^Dq^_m#Llr!V^HE6Nn_4o1YguRMXVU)v{~w{ld=)Om3`VM&JQ zggDL%LmS;BtWkP{jEdcoC_C&d7Zk=_o<$6E1NmppF&sB|G&xnU<7DOY^`EB53WU`!OIPwikrh*XftFXE8J`2#V(;o4Q`m+>w^pPHe+vF$Pk-k;h=Sc+yyD1JRf@!%epRI1HE6Ar zXj>DfVkOeF3x_H+Zcf?Z`)XB(uB>1+7q+5@%G?@F04-=9yRw{j(IY78%WrK{2wD*U z&)Pgu$|=~+#JFd9Ii2~e9pDXa+!uaSaUPK#34~L0`-%qECRM0iL&Zn`H6fsSit(Nz1UJ%ExPDw~q8yA+s&>i4D zTt-1K;VU~CO~5hLf%amlk};2A@Y#ArHFZa@Bf=mP!HFF*9}I~IwGEa%e?K)APsm8uA(5|x+=)~90$VeUV1j- zmVeyF()t?mdq|i1K%=uDE!&rnc)z-WkDwDV1i|>yl7}d7y)ntx+*R&2#z2k$%ii5c z9l0wBOE#LyngVlj#%)UgNEA6bH4RhB#M>tHKnf;8hf7KX0!=ddSTAfd#E1J@wH!{a zPa0gR#Pwm*|81)f)WVb@qteN0+pu)CCh*NuuJqR*3n}@$A%zMcDeIB(88AO^kk{cwUo`QPc>bQ|Q zjG8g>*_{det~}fx8ca+(b~#9Onlnf-qQ-svoL~w99Fnhi#0cGXBz>K5i(pbITYd7D zhiJ`!LYA~+!Xkr#VmNa-p*$};>TC?BhX>Ft1N2~JeFOWh;S@q|vOZeAsZ5c74kfn@ z(2vE##n%2V9RxXQ7yS07kUBl&52P(N2RA_Hf|}3~M-A!Qm5GnQ57FshG?RDP0=~vq2**<`j4kr;JT# z>Y~lfux}~aOd~{gB%b!Dc|f%t6~~7;LByCst20;>%~F9Udnhv0nYy~}>Y&6gPRsE3 z;CcP|N;9~-r*!6RKppt{j>fBnRu5hLh=4tzQWIU8`^t0nO(v3cYoXtKV=JWckO2}d z4Q`?htO(D+Q(dmPO{@<6W@fXN{UE(0EsyKTC6@LM8e-8qhfF{N5uVnwE(3gdmA~)M zaS4w6$-cPWWL^WeOV4`rI^OD9)RUY@Z`G)>I1gaL+e&3`B)pY-MZbFFKucH!l9#HW5W+J)ZEb3*M6pof^@kCJTwwLo`+pMw?*UImfbm6|2W$ z*?6avC7vFB%s7FhuAv)Qo-KA*;;Y?EERND(K!XPnsga<$FYL3NkE8;U?Uu988eZh=IK)uFc zIB=3G)%6ktYDo(GU}Uyt4AeOmbG{Vgu!F`Bd_v&&^&z{DGtEy>thMH@WC6D^RdVKi z4TVDc4ne?!zzpfX-~Zo>#LfHs{&b*CFVN$aHg>>9&BC-&TiH< zY!)rtH{-dVlB(;5;X$KaLt6aa{l%|+|H~kHan@mI4aBYYps<3Aq-<-D`0LZQy!Z#) z?I^y+$k!RmI7z0KNIy&g8~c{UD%^s^xI5V3SiY(4gF$Znt7mV_04hC6 zOu14sJq1tKJ*9zPA`@Uw6UR0BpHxf&m>02Zv$J8yhrg;*pE2!iFqTX(C{;&;{Z1x_ zp5L)_0g!U#c@9#R1}9BJ8?cu&tTgm%tK|?fRnhE_kc+Dp31GDjxlc||9oqqj_5~-tUvexhTcOor@knwN4 zwJvPoqZ8C3{b&xS5b0`m>E4v46-u8n;2RO8Crc1D;A7*4y!R^0SaXTU0ni|O`vMJx z-q5OZ9in4unJd`Im-a~s5~?J+`Lk3_)TO}QkuzbCKxGBaZ6GE~Y2RO+_uy4zEhd#z zmJ)vekZzNgT91-AfQpBTzX9+TfFk#NlPVx!Pxyp=V9vEnO|Ch=b{5Oq5-W=i+X2Xb z^`L9Xj0K{YG`GOhtIkm&k0$_QXQ&}+4jjDPNs*1$EkC(#x!7P^NgJ>_OEZG z2mkPrZF2S2p$mibvoiH`0^eKuSlx;s%-bmqQ8gD`O|tGK)=5q=q{QB} z>!X;rv|4@8y$%4HM1%_gso3HsDBr&`=!ZzP2c>0Op?c2QvDE!U5&y3|l$I9fWtt6y zs+MI1m$2d@8d%S~RdYYs^Q!!HJiC_623Y!)vs(J=YWXAH{P)e6VpqLYdj`lzHd6#o zLV>t%X0}?lg}1y{K3Q>^hAfHmD}mS45rLz348)?Wel=EOMD0>3Wo5au5;4XrLF=CD$O1_^m0~4H4D*8*KKCbog%LA+|1VN?&Tmo z+DVT_`i>@21Y0SYBaTv}u8FW)xvHSgqf2&f&U9TiD zv{d(Qf2vn`)u1mlwe9)0h}PFIy&i`z!nE;{KLg9q~Zh`SVNoh&5#fW zjns_SEHoE=(4IUIeaPTc`0gepXUgbQtSR3*7qw%HSZfiF-15xD`hBlJoiJG&h>qRM z6cX4w7PUTsm(gi9dLCCuCc5B8U=P_+zB!6Ntrol!QEU9thHSwVnVByc<>#e6BFo6o?@M$rjP)syc4P`=&Fm6UAn4!5R#kK!HIVIk zjd;s%^eI%?HHBXJ;=M$dZtT;OpyFps8C%TgPQ$WH$(XlIVa2NxS(+w~0wO~|!HKJR zlGCUY5E{mBSt4E>nvfgHGr5X}ZnC4G=0WQj-#8(iKNYs8$G&70rL!TJV9ZiGb&33`{)jljMN82`ukb&bceMyGBZcJ2aD(RFe8cSq5=#3*8*m%clVII^gm{Q z&p(i&CWy}hBV~HS=qi_#RJaLO@Ck_;OR7pU148DAmS>BSHMHmUBa^0oz3=2py^MS< zI3v-dSgnR#A0C%6ZU|1$4#*f}>9~ZLJ|v0}FC9T?zvEnXg|TC_kEf-(CbXqNPchS{ z%_Q_?)|vQ$Jdy_UGaO>gn5Fxsh)+WTuN?{9LTdZgA8M%dO_8@2mhBB1G+;6Esx5WX?(!x{^0dxxQKrA69D z_`?ctZMx-oENt>#((%Ct=D(7Naav4lNUJklEi) zePG48lBh3?Kp7`zSzL_AkI#&JAo_0E)ZBAtiJ9I~ue>&;Gw^EXhx?*#8uF4#5eHca z5$B)isF7f)=}z1EOkx5mr3qrOQ9?+)TsoXyj)@*TF1d8``;4${aE{t+IU^Ua$^8*H zj`vC*=ch}0R{qZPSpL;-rUG{ASp83m7KcrI_W?(evi~Q|$uYgv>wKyQZk%oXVq{sF zc@*?(-x*Z%V63Vhl24p$+P+k38m>7iWcM7WPWz+Ck8CP(L0+r-=sw;uW=?v1BY9;+x&*)T-=j2_h zeKJW0K7c-)jnM}mtnl*7;OEv><*?_CL{B8yMVTz%Jl)mS?Zq9?!`B`cO9AGB#a&d2ci#piGeY%u{B=5Hu|S(#0?#GPwi^yQCKWMi>fPZ z14|exxBrjNlgJ*^)rAk}2m=ly7hJBox!iq`%!%}8$<%u9#H$I9gL_>U8j+c@=jI*m~hVVq5@FX+ z)Ppmp;%ktBTWb?NHmqV>7lxF}?zSiVg%}nFH0Ie57jqyqdBX)TChuIjB^&y$$c4{l z>)`s@73i)sMY*+^;}P6#m)GP=iJg}lV$tdRaGMmoUAiLy$Eo4JxluwUveR`BL6Sy! zB|s)6n(x$p7l{!QlyPvSY#yH1awm?elROkZY8|`hmI3Tc#Z$+j=FcMwuf>KS<*Uo4QTo)MpR1<`?aQmrgwA&q1QYzp9i>_+q=Q9;QC zEYm@4*eY9IF;sm`ZBU63rf{k63a4&Eh%cT4G17*wy^83{;BhuMQ2jZ;QjMUKZ}s+l z7@^+hXRF1`FVrtcNhr8!mdtW5s9wmkv7x7)L@|PNqYTU6Y3*Q&xOY+DW(w(-1(_8X z3SrLzT5`*6o4A`Iu(yIYBjd^-8R5&MDhVXp!i&5LYNz8kH;E*rJiP|g35YJ z+;{MoLU>+b@xQ{Daw^z_Hl@9Wb8#@ArMNp{zZ6D;YIls98zXs>iy|Wh+?S9-QiKY&ngM?K;tr>}_yO1?$-hM0_KGkVr@lZ&=&Nt$uEUl$)1q`9%^G8|Kbn-6^PMGi^$xH+Q(KBXsUfM{9*SHg1GO1CPf*J zOOg<+*ly<27rIF5&3F^9HKU6+eCc34^9f+x3oF{$%~UpKG*D+YGm8<)8+iMXl+ChE ze>+tb=1TNl1p&tC5^r3+V2XVwmLocTbybXhb7}J;vfZ@Ft7M6m?i4wKH(vD|;U`7r zk6Cdj6xeEcLO~8bbiN86D&KOjwOhS*x#AaFjn&Ju23+yu-$oMe^-uifjah6tPRJugXDP zEIx6o&a&5@ChrUx9zv4{gmT%etGt-9j-}>+2AZTh-@MqA;HXryN zrSIv}n_p&IZ&o%xC{Mxv`}nyPypndOf9$ z=fd=lJaltXSDcEeXm;K)KC&-P3D5RfPjQq=M$NeQh_-iLHj+^gSa{*Gj~}1 z6dk#G`*R@2w>6k7@$z!!?>+YW89}yppqTW#E{v%VjEYncU)g$NSz^&o-v<*}J(EJA z3~Q+f9Otg+sxjUZf2S8?4GyPrGZKMA$0wZBTD6g1kNno$fK7sZ(Z~5D^RZBL=jLce z8Ro^Th&-K}J_bWoRU)UPlmDgv8g}1L4W{qb--#U3Sqx&(BYBXf)H!R))sR&U09`wZ z7ma)rnl7Ns+J;g+82hO;*tiqti%|OQupw8{XuYLCx!sKC3&h;K-=!^hmn@ zx!XKAl8Uw5f2(Zzx?OAVfgz?sNx?-6zl6rk+4D1k`KxaX(9Uc#&`BLHWXtt}O16234icV8 z;5d&b%Gi>-!J{~i{^K2ew}>2S>&+sz3l0yl%Y8`^_&rs>YO<0ONtHJ*V1-v;w6{Yn zm{}-=t}EHWfnz+64PEc8S{G|O=v6^llyB%}BaI=`XhRqY z3B?QKU#4XM|7|iw8_k7{x&csX5d=yT4MTw*s*uLD?on7J8-+}8k869>!hl8)R6X_l z#a+A~g!#Akh&Q1{BCnzaNJ7z4FwE6}xmkWa-9d2iF<*B+h`%^;`;V$@m5);4-pKg3+426+T zAmpZqv{_rb6Z%$5al~SZ234SrDl|66Dx8{Y!(r;=`uZp#;#Lkj9P)=}p;pL!Ta5{b zFr4^n7QXXmS6s32H3Zhg$a{k&D)|Hb$9Vc3?gY zbCS&P5$D;Y9mK=KYPfUVz%TiS$Fa`K9EYt1NCz$5C!uMzo+Nhe z`X-oRmj~W6#d1MA<2T!HkSQy8=Q27z&aa}PiqN%6Er0_2c}Zg`b%6yhxmt|L?_@U7 zOAPPdo;a9Rpv;gqWXIt-iR)DbWd}s4nsqnhLW{p?vmahgnT|j0WvkxPJd#9tDMT~eJ0o00$U>AV0`DYVWT=nJY;y(X zKGbkTyd8#@VG%OKjOAFae?(29GN_d_!B07WUawKQ+S_6I2ydIT8{!c2aG6ioz|W#` zwDd_quPujmscxaRGvdj>z_VLwzY{>EiZFBcmz+Yi5nH+vl6IwzTO_T}9E4KL-4xZs zs|h^$+6G1?@o`#n7&LY*%A*>AWt<}1P0_pIt=__Q4|@>ql5GyTSx&!Dg`U#NT9O73 zZ#rN(1O|nvwC{PSjt|RQ&j7)5SgtEko8J>qvFiQ$Tlh@SK_4kHu3SX>@2~T0F*WhW zAIZT*M~ofe&H;r8l#+N+&rlbphhD8I&B;xoAfHWYaJ3WAnlon`1)MilSEKhI zPLSeK;$P?TfQqqBe@T2g+Z)LuPxH_&MJ3MqdmU$!{nl&~Y!ToRWZGeQ!h~DX zX<_^$yz{^(Ngn@eyD_P^tH4C%xVp@GlSBm|Q~?k_KIL$HeN3$zid)jqE6F}thAFq7 zGy!BL=ikWH5f*|%wX#&Ae5$>#|I~U0{2LEW$OR(BhBxu&sAUrN%Drk=Oh9U{cUj13 zGeCLCrjToe$Lr=8+$YFLx2XZ%L8Jl|rFWy}8fZ%LqZGS#3A(Rqi#je}kFHdRY8ICA za=sI-kalLaHNcyeSNXEjt*@8Rli(xH6inAyk1VpmS6{cMw!!y>QdO)_97{ml&QGoW z1}B|{{7a!zE9J8t4s)W9Ovok1SjI{MO)yRGo$u#DpPHmUU;%d;aTXggR_%+EM{Oh@jYH=mQV{XXin~v8>US@g+3kq^h(}phSKBoLMZOtAv~z|fdfdrs%Aj1q zP>DGZxk1++b>I)yYzM4h0>N?F#c>k>?>Xzmw)1M1ftl9|yXV4s2i|PpA%8}UE(;P1 z>C%69%Tvla@gx`E)P20nB7LWfZv;mSI8K7+WHc7w!HrDGQ(tJ|t7uzP_w1vy;`t0DsDVG-@-f{d%3rMH;@8M- zBh=9g`F~G~;($Tvprs|U;C=PYuTc*_?%n=LMzr+LykVuJ?TA)HBYq%Dz&;lT2Zg~* zCNRuqugz>HAeTG9Cr;WXcshQUEqT#4q~qxV0zXi9N%VowKhb{<8^VP(jUV8Ei5iHO z=b&P3f3u)o2jpEgQ`WYTsw3J?=-iCuwr100F}A|%jzw?hex8CETvsc{0ahNF`J+wG zSVKDG6zii!6Mt^|9{IXzoLhFNRB@q#Zk5jjNZL5T})~jOwrk6uUS(I6?TSbNm)t1HcM9UJpT4?2pze@+ z8RSk)N!7c)V$n?RWN*`oPt737> zF{uCqeRqmtdSEV-(e(Af>w`p3219L+3$Obd$gU&=UZ|c6UyRcQ{G6;nC zg_4JA3Vtg$$YK2t4*BJDtwir_og>c1}fFRC$qnm+KXu(x%PVnRQ7tF?Wf^ z@gCjEpl&rof>z6v63@i`u|U7Qw7EKA$uKSUY9y5|96D`QXogox*dPgd>LsgNhaXX| zS~{@Jdv~Q+JF~NK_n!T#=!xuc!g9Qwt5kOEitu?lUq=`ghgtDp!{)A&YIXdwu6ccT zN7!CxK1O*YD!hfxC!h0P34KtM9d+4aS-$@gYeuKVe$2RvGFh?d3@`Kw>L3F0w+G*eKYo&0n*ulK1vW5~NPM&jnDdP&qCZsJlzV9-pww+TJQB`m94HH;s<@}3Cjtqx^xa~VB${>o(+KaCRE!tT4^rRtE7=!HM;zrkAu z^h|e7GPD4F8|@d0>OmsGDCA3pqeqyoX_wiBXT+WG_Lq22Qm=;S9JkM1S@m?!8=ysa zTe8iIhInw*O8~4AV@Bzx)*wcQ_5Mb6SPWf~6U41+fY;)r1=4*witxIq+QgJGHS#P& z3Y{|LPDax%-6xjk?W07&YL*`=6xxja-l;^vZO>&LMD;LHUwY9$$^K1uIaW4md(i!N?P!k zDZsWZ1se6d$caOHvs~*nSF!cElc(+iP8KjaWs*$8Cyh6F`MGvUx!%~VIKUJXC|O>h zdVH*~Z`tbgP|t<`Rp&aD3wq!(2rk2^><4|c>#U-s$@@gAx1bwUvFUIJ62To>A?A zb_{u{<5{aC7_k?M0UrGAk^yrw5n#uWjV<%C`u+v98@|KhmDJO~csQo>hU}9+C9?|t z{_T{+}853Iw?lTv;_yUhW zOl5}D#-kl1Fgg+TG$ZvGRDN|ssscnLqoQG063+xiDm-yPE}V@C3oOP^gVenHb)(Js zusDtkAm7l$Y5yzf@XwLvox&!uKq5T+RXC}3Zui=IKn41sOY0!J*Oe+Lbt&yCbx+I8h8xe2 z$@0+1<%3PjE}EZR>=;3bvkh_yZ*4YEF3IA>VWDnLQO@a36 zwSYR@pYXbkro2pT-&AO8ySi8!C$m=S=8lOu0HP?zfOvbB2fjrDxfeKc+9f5xtdi)#L)B453hcM2BIohkQvk3T+<- zw4}?}jp3ni751!X=n?2#>Af?H6S1E?UTO8Tm#lX|Yi&Ae?Zu&(4l+0X`jxc8m8aQxz$j5A}_A*jb;lKr*`URZV z8E2wYF53nnIuO4&na>H7l2-nX5`vI>O9b}id9q^5Enif%_-1llk5Pe2g>VEO z&5{#m-9Rnrb}BKHf?!QwCkB*InrYTYHlhd}m3}br&hEUEYl_G@s1P-rO^ze`xIIRB zRdt4$4}e24pP0eJQ^X+{x)}IM$Ub2GHF*XQ**$+O(VlN>&eTULD@W|mu%BXccc*YC1 zHlwSa8KULey#nA(v@|Na<044Fd&9wQhgZLSeEvo2}KX^Gf9bH>x z80#eDD~l_zQQIzlH0WJU?cZdPVg2L?CdWrmbRAl_9Qo_L5?i&1#yjin(zDTj30T_>C~|jtmW)IY$}y=j4Uap@P81=Jq7( zBNXgqukjJ>C%aRMsoB4D(hJ!>66OK(P7+P9vr+KbsVDE55o<9Jp2$#%TF?>v2 zLSOfyt z<_4$906g>NqK4?(O{Zn|!OzTGA|hQLkND7SSgp*azeu8gOE9?QgP7>V!6U0AS1+;5 zzO`a0MHJl5)i=jbR^67<#uxApfN&#Hl7u%6o-V&-^b~-k`zOo8z4|R--I6D(BoE=g zRQ3>R#t!VUW=1Fay{kR3&Ot9v-5%N`1gR+mcu5GZVg|Pjx9Py7axXq}QEeHO)LJSU z9KUUjw;ZxZGS_jBH)?Uqi_M1AzO(jx`rUZ;>~OR^qZXC8+V0<#XZh}Mcq7UL-Kqtg z%pXEJ5%SLX8w^P4wkJUf*)p_7KK$;)I1iMtFuT3cn#A#qE!tPvMLzm&Tx=A6O|P#0 z5=6Ze9I~)$`M|_M(0tRnH(+uYO}+Z`cifx=)L1kv3>+LW0e8Hg(5_Ei+=|4aIr$mT z4*oGF;XV!$deGQ@R&uq$^x6Xc-i9Q}jKSa)F@GLX5C_X#b|ZHGL= z(<%bUZIej?axfr?p_!{B`4TuY*-JjbZ#sX;Rkg5rhX|EAm9bE-(^)uH!O!PcgJcAW zSlPSUNmfVlRlsP2I(K|J@;r3p{&+BMlB8A;oW13Wf51@^2fcRNZN)nVipdEaSvdbc z5+%#AJ!8rOBM{Xe+y0B5JCzGjX><^n5Ym^v_(w%r7y*FTEd^PX>oBu`?(GoRR-F}`j)^+*nUbpupdP-RNCfz0C zgbp%20N;yijF}praB;O99ud|D^=lJn_-e=-_}?k&M`pym33eUO18ka>*+tNNm56{Y zB|!DZE|#b^$qV;J@fVjZ4iw7@Z%kXU)6TA!o! zIkpuK9Lh*-6=U1LbW~dl`AH%}Dh+*h+(xHl=TW$V_A{9L_*q^VH&VjK(LlQ+ZY^|r zEGLof$+>Xu0Ox3^m6VOOjc!Ho2A287VyZAw8AmPsHWe#*=H>Eu03vmjUzF`g5By%e zyx>TA7XolpS?#$1l|Uy<^mT23o_K8324#`iP}GM=f((u^epN82J2ouqF*=;v|5TIf zMDtZ2zu%>j6uZ$qs5-gd;8c)N!LsZ*!hi9cv9;h_#JLIIqWOS-wF*)E1?_C;_dZ%6 zx~Tb2?+J8&*mKg^u9ty9`EBk8x?Q{TW(HiVI2OkGEd;Ax;eV$0BzBbW6vlu+mu->O z6D}DrU`~#MV%gOZL~KCjp}N2@4-Mn05vw0-$7Rr1nr(w&2%B0!5F|D+z-$vU+ZK*sdSp)fd~;_3d!fEy@{tQ$NM??z9|N|?Ja%z%q2HrNN-imBB3JpJdQBjDL!z1 zwt_xP5b;qTY!=i-?2 z4#p&QbY3>iQaS#^+8B0bEzDygCx{&OnRgCFUyZS~^p47&F0W8aax`7dLCjc$flRz} zbDCHdtqI#a2OR8$iz95?L!2dA?_TC}LJIo~^@{_~n>IX1cgUF?uh1*qiZ&M!mdj$F z7fwwZ$77Rs&twT>JGS42ShBUsl-_w4Wn!`av6UjQh1efu9}}}VAxiB%<*=On)Td}^!(H&*phvYz6bMD+y@mlYZ@um36z8+9UL@oO0*?BHsSvUla`SNL4C5{G~z z2p}%ZUNCU1hpWm zPh)SX@iArv9GqrUC!KfudEHefVLo_gHPePhj0Rv2e}`G0w|ktC(zLuB_1mul)JcMT z1zN@%bJdf7!Y&83<`!J06R`Yp$V#Ptn3>eM1EC`{F&f8^Q>B34dX#`FBv-9BX^}X^ zN*oM)u3qUn2}*c1Wf>2~PDwUMdC+XaX+gPtkA@kB{kbsFhh%%L#HLXTwkA{C-OUHB zB(^a_r?pXE`M^M3W5Cf|g;-K`<3qmjs-HED`yh-)(oegUbve97$y@ezgk5=MTl)sg zjl~VLG&9d$xLAHkH6mSH0GASGU|!unPsvB0|M_3v zq1!r$fJPT4wbY`&;@=&?f8MtJuCLC+9QcF&|7?Jak_Fkbu zUyGo-BH{rAr!mOAH4*9Kso>m_T0iI)I&jqCVE7bHNy~V~yeK#$I=j#SS0NXlDnR1Zk85B&XohIGLwGOKE!jT!aD@M69nVj9=Ce%~j$DS-@;7Pd?i*$+}t zzU}5|2C8%Rb#CpAV>?9q?66PqFVk@JLunZ@V9Syo@4lMFz7fYqXQe;N%`!VuT~vrV z&W4kf+>4iW2PWSWOl*1edO%T)lQ5vrwXoi}<%saY?%K51=3l4YPw>S~uH zRi@G7sNXdNFnX)8bnu>OJ8kLFost?pNErX`%q764z+z$Dd~vo&VyiAu$1R(yUxx6> zN2DT&m?<*Q|I*9TmQ&}V!sNoQYb>5(8}Q^&zdT@*-bTAOZ*&|8*nYs_O5rd@w9U+iAN0RSK;Xvz&MIe8 zXiob{WrwEP9-ctmfzbr@C__RZN4zm?^eu~7kB+!8U}y@f)P$&vAhFke1Nw~kSJt;7 zHQQ3w$hHPn?X8-1c+AGVLfts0Iu7@-0Dwl&wC^8X4ibDxQcpLaOvP;T@(`c2t2iIF zkb?obUJvwCAGVbN!wD#Jl&yA`;%YnusfZIzf`-4Zdi=1wZG6=yOp$xFaDJ2O5M-VPF7kBMUS(w;3{r@Nc;9zO&^8fh%LwE;E z7u)|6K>uZ8OB;LR|0z*H0MLKqfAR7EM}Sk>e~QG?((eBj{l6;Of5H^_f3E+$hHi{Z z|D$S_4o(jLA*ZE-vHgDtYv{%#55J*VK z{{Y?6!S?^{|G!Ou1OS5o08V+fCWbD^0BC3~EA#LC0bp!6LgtWTAPFH_0HHsj0)T+# z-SL$4^91TV_)ls>m#5~k6aj7U*`SyC9Y_2 z%8e5Uk+GhSXDQjqYNd2APhq%QX^QRnm95=)?VA1O7)c`U_{!=+88*=K;)dycQo>ae zbv0QNG_`PM5nYs4uk`aY?@&~UkHV>oZ1O9JSGb*>A!JMJLsYe3&YpTLBer1`r5M!`dvruju&O+MYB$r}FF;dUXCEJJ zhEE$8uzi{Kg$Jz5xQz5HGx5m4@@g^bAN|mHv(Zxb_f{fBKQ+sVg90hv#LZzX^5keLQ z6bWi5gkc1L7gDmz^28Taiz}Jg_cr~Lk8QwC&qBkV#aRw3{oq@|^%TyreE(G&`e6o7_C_xsx?PtqS@#F`pP; zo^*H~-3DGQ35$)O!hen=`X>uAmri@#quX}bQof@`sHQGKO>HP=E70qW zqoOIA|BPzA)>%k|S%~_n^Pb_?DsMYx<8o$NV-H39i%SOzW;*7LN6Wv2B+Pi&P$=3- zmdCerLHzwv6#bbTC^++6({tq=(@-xSjLAVF$(LzTmo=)eO;W02qaOrr!FWPT*N<1L z^KG@{Up$M*y~42T8B06IiY;ST+<#Td$i3_#!N;cS0J>aR7b zM(1-k$Iz1npNgq?^IG1NPlAP%&84`}R8cJsxo3Y|Wsz(%64r7RkdZh-p7@N9q4nSB z0t^F07u%of6#lE6is9vyLeS>Nyv1O05%r1bik0sqQu_WQ7sU1h#SM9?X-RXkBmzt0 zW}{2(qIDHmmG*1&BTK1cRO}9z2N)3R@-r6VJ^yxA2-+-`L6}Mb z$u@4^D5G>qWG71=``*Vk;F-4TSkr-2X7}c8K!s#u;WLPVRRTGw=O+w^$jWCq4;Akrh z6PVnL)gub{MA;XQjvWq3`kp`+0WqIhk1W?T^rQqCULHM2QMunRt{eKP#9uES$Fkp_ zr%+89nIo^VL#`3GpzUjV>fRze>o;D~A)szOSN08j#CF_l^Rc-y>Qq-Cu5W->eU7le4ZYcvJt? zrMk{sw4(Lx@6>1FKT1W8*ISlNx_N6@)?GZX=2zKA4SYI76CHG`RS6)Rh1xYQi05f` zs)tj^Ei$jOARtg8tEw84bC26b7Q?3CQNFM^94{iwq&b!LnQ*=Zqvl-Q@}AUK2Lt#% zx&r^6JL1Zi+BB*uFaewpYsIL&7{F(cee2jYu(Ob3*+~@%BrlQ?2;lwkmj>j~POne> za0T9{CHoaxTk=YnFwUYT_PB(J~VM5u@%| zZglGIDOXQNm3X#cFq+enG-^n$dHW)z%-H3dVSO^w?A!l#b}->}SVc;#q)bZ%Qi;!5IC;6+h^VG}FjDE$&tB~Uyp5=M=8sGv6A`Ys4I&OgG+n1(ncszv!fW1xk#YuDr+fJ zr>Wwz-Hly=ibJ_6LH77`rwYtE0sN@WaW%P|Qp!xhcbgVBYbxhROKRFpC_le6#SQ#R zV-)%A(OGnVm(U;Lq02(#VcQWm(J_oqJVv=F?N7KyI<(uz+C&3*YrI{JeEU?|yB6*z zbI~HjHVKvpEW=%@GZ5VI-*Zd#g~q2y%w4pG?A|TlLn*$b4!IIxKgQ7zawB`_tJT)o zoA#m1>Y|B?bnvqn%Sx0XB-wMK=M(xwd*+Aavoc7uplOTx5Zt3z3SuC{c@*aDO|>` zqp5^rK`3Go7+#w2O5Wxid6BZOaC@{+@EU;kr{^`*SPzG#ZOR+YLD9rj2r3+(Qlq?n zHs^P7;))`#SB;@j)%(p-6}(!K2t}2^zKYsSBLD14#Lere3u#JNJBkNs8vEYfg;@qI zEOHh1y|j&XQ-rz&Brslb6PZmkpS~>%3sB{f0GAmI<7-t_TzFt1M~T~6+l9{IJt(l| z?%qSG{T!&jbZi69>}RW?Alnio?a^v+121NB!yMtg+E?{Gw;ypox8rx!wbdhw=RnWw zI993>mz#zd3GYq`P0Hqo9(#;~HJ|~+6#6qbf`GOgWDw=UXEd6c?y4S#O|DmyYqTyD zft;ntLEt~fmR`Yi+jO9yRf0(3E*E=Vde%oRme(hTLod26w@ zdUqv!yMgXphyD}gdXa_58eyUvArs$IzvD}}8e?BQ{@Ok{kl%_q-^4{937PCZVi zi#)*Eh*^XwN?%_VJ9|>$cx--{l(VOGh67qluV!cJHxm3{Yw<1LbEmi(0z}4}^2c!U z@k|V`?{*Mip6dDqJ1u(B_u|x->dX`+Y||t%2h}VH@yNy#NLI`cOb=UL$-M8o_kE%% zX)=R_H$UD;V`2JENGNgVwmd+W{)RShs}W4u#F11CV;9#QLeF=pB?1u&0n|h6a&SXh z8i*pGA$(X4kFF`(3_CYN*RG`txjR6Q5Fit6?VTQwx*(MOC|g_NTY<0PrI|H1*TxOc!oaUm*Y^1rL^@DZwt z8dM?m9cyz+M#yaJdw&s-piiI2=Ii%gIeV-aUY6T?TGsgdDUKU|e{Qwq1LOET&%(~Z zX7Rn3KbXEz&||fmE*mZ=YIJqdB0M=sk;AYHgNKH}hQKbUDY|i)$hF}Q$RoFeo&3XC z0g~nF=wnm^ND(<-AA`q#Q{m$?MeWx<|B!(FMs4tUo&7kZ^`u*%ay?5<^ejn6lYu7` zr|E{)zkYCO9NFGVjT#Uu7F2)sY4_mRD#T0OSOeoD>Z1L*b}$nywV7y zlN;H;VWgR96qJ%3WS3DSy>R(clHw~-yHF!^u0=x9&B+wiGa=fUj&@S;ZT{gK1t~No zq8$8X;!QjvIWgz@tKxZ;i0Jv#svEeeqp02H2m2bx%g7sX+zy2jc7#HOkquAo6e{DF z#F^ZRVQoEw;zo7o`s(gs2A;wl$l;cIlM>ZlsO~p0=&7HSYE`yz{E#J34Yix*g`M zS^$k+T){43W>PuKuTq`R-DDrdRaIjmsO26y^Ef7$A#BZ^`EM7__!f7%qXFJ>JR`Mp zO@=rGlTowzd)aK*vIsTSV3a!x60Qjg@7Z~LG{E~fJw&;rD(rDit|LuUnF~tVBD5Tx*8)QRG+e8TOdtaL;Z9lBx%@%tD54e4){8|u=w6KvBCx6Vd5Z5e`>!^>#07e zQN%opxCqD1rRm!0+JxSt7U>*%`01fV)-v4@f=z z&_Pr$&EKB`e7kMfz~p{UcIm8G)#fwp74ueM_W+Z7_4hCw5Ua7pM+B#?S6xci=ZgF^ z3i@%|>22yuQcLUV=Asv+HASj7zl=qoBGp)Kt|$wAU7SN}W@tHXdFhiQEfQ7s#LGp= z^SY2zNF_juSjmxAFlNPpFGyxd?|mCU+yR{owcTici%A;2o~8b~jaL@mBu9mW?(eFZ zs8hEp+5U+Fo8?nTsZg$Atu0D3Mirgr(>IMQ{NLeP`J~oa$`6tYt<2;+u3dxfcsF$} zUJ{`0cz>Ga#fH7IQA>oer){o2lkYJleIO-Tvcu$kt)w=1(?s-+_G9YI=yvpe^^eZ; zr=Og$W#%`TSJ5UbLma+vs7$>4bDCx{ChJ zA{ul8EDKrNKuP5oA2Y)5dO@+~4RS?EV}1$I|3{NUL;K1L8?(yN)x_I63wUg8S?ziy?>X1!{bWYTY3h+q!5&K4x%WSn#zQJ-ZE54$&H;2GOgLE&?(f*l5(| zWtAPc;jT@Hycc`uXYFge5_BU-mmtZ6ESyA;WVDFDeyM zj;vX?ML#$cvB#^}u&-o@{i5Fx$i+ZF!0>K7SAUX)@R-#>Qaud{>4jdWWc$<1jV_vL z_o3ElKot4%d7VFW$SJQk_N6&2)5R1{n{iWke1qMx4yg5X1SFN^N00-o+|G$Du z$9vTU1==eH){;N+0dajDXed?0`Um2ve3Qz^++G5l&EyO7W;p9aBeG@?_)Fss1$yps zWj=Qu6Uoe7@2p(NTv@=t<&Yyow1Al&kRh{Fl&O*BiBC?lWw?}-mcM_rCh}@b5QunN zlfG{O4~OCNcdz;|>NqE9k$GU;b;*%7X2X@zaE4B!&uS!J zwK%5jwD}$Z%sd8NI;Y&E&)xM^;aUM-ftn8fSGA^fl~piel9~G%E2URuexK`3p+%!> zE2l;zF0*8I+j0{BoCYo<+B=gEnaQdnQz=392M9n%Qfbctt2j~(BI2rPtB6kJdhYM+ z*eP1baZh`2d}-C&_cK{Cf5t_h$2Y-4B9B;Bz)uLK*(}lk$D*ZO zlFRy_DH~%jtk$eAm#?aW6a>RBBE&59_MZNNxsN_JUS7;7-3vK}8Q4KG?nBqh7j0BB z55!xU1Q-=wPUsBbO{!}SeG19W;*7qIzIm)Q$R=csxSq4oix3gMR#rVQH|DmN3X-WF zHq2fs3H{9qdX0U=f7)0vmSemEWbaWd>fu;3No^Sa@zh30VhlX=K^sq}9}3>jNJ-U# zcwTt5Y|H*o-YNQL+qP;DPm4jNgRBmlmA=<-96THdfvxwX4edqP8HXGo><1a$Aivd{fgKJc!}?0M=W8-hK`;SLVDxUoN(*DW;)5q+jrZ=(jw5GlZr zjfv|l-UKCpFXf)s!NeCObcp!=`7nRv6 z{)_zro^nZm5C}q2VXj!`>)fn!&%&D7v&X<3i^#d@{+2dJs&vng;WX^l%z)TiECCda zUKOA(D8BmE)5-&flB`&IO723Uw1Sq(zWc=*^mi#K5LE9_SoftWP~yXeTXUA;+AUks zwb|AY!))n?to-8VyfXRK`)j6r(Aa=FEIFZP#tVU{Wd)tTCERtdeighesyCBR8%{$s znJ~5G6=BS|2%P|d&(IRZz|3&n0r1+|kK%^QI&J79USBCHWa&fnHY7PEG289@SOfRn zJ(4ap5}dmjjvEKQ*vql}v3*gym#Ixzb$ToT*2gX9Bq*ZEy#&pc9OkCqclQo5e*La5Y6VMatw1q;4!CL^;6 zyOGHsJ3rRB>!A|gxegKJN?Oql7r=IzNf3{8tEgE;RYAi7J-Y;V{)>?1s>Z$18hr4b zr8bbd_{| z$a2TAn*o4SG&a&MFl-b#B4$*@oVTZ`paTo(5pK8NfV1BHl*bjlUR{PXH$dV4KI3WI zc2aig*+==C0s%5-6c#1>p5Z~4a?*~4ltRde({5O2)Y|8EtL;9wk&cFl#36cSSqlzr z@oWgz-8pSnfa=|1xsb7pxJQ$qele!qjSi`K<3cp-hG#iyWZUu9VNtoIiW)6Jo_B^@ zw_4k7s#PKDJyE@7seL;e&LjbBq^PcuP}qXro@L;{pse`VD@&g}!8U9ZUCq=>3B&Nf zm?tYY6)4fFwYTh-@VnTK)MWtGyx6FiTQMiHEdFh^tRQQZlLOs6%~Imx?86GSTcL1% zvUWRGAf;s^35#TR;EE|rH^(T;5OzPX+5ukIxa0z&+rwMz{BKG;fSg_D{8trM18s3& zB-$T(W2J4uFeF+LJ|@32^Cy`QX85G~t&3H~vjvP1z#*JK4j}{}KHj49m0Y&o3*dM& zt4eMh1Nl*96*cm`pjtIN)c1{VW@az^*t2pmk_u&Bx;LRx6?);f33QrxP^Ya`TLXPVCDPBrJl(>4}z=e79tXn%^1 z;NCmLQ*^6=Q#cb@UoQ*_>bygd8CD|FXxv|=9~i_ zJ$x9NbgalidO#p$c#x1*=c9x)##C7K(Z?%^w%#~^cY)g9gW!ryo6vBGH6XIuZoyVF zJM)5~7rn*DB>)#DxF1$6(6KY@(}#A}T8$0+;Cmw?ix6!B*1zT-@bLZ)NaLUAiZ(Wv z3SL%kC^B@{1;WtD+%YQrXZZ5Rz_(dD+yxvz+*C>ZrE&~I?3e&&68G(Gr>QbAI`~qm z&mNJt=d7(jeU2=A+-%OPqt?M|*x%9BOu5t&o-LF#T5G(~LVYWPd|dRayfNb$qGY1T1TZoix=({)he; zqd89DDIfZ57&aF+_m*%-tf(2~It`(($o-|(Vgu z%=e%hCxWw0?dL2U6{;!u4uBDnOo4^YIFKa5gWa@5Y{4Uss(5>8^HJbaNQ~HA^B`G4 zGvDLdPbR7>0m}YBrjD44*>xYv1M4J=(;ieY0U%_1UlN`vC!8IL8Cz)9ef#N~D zAqo1kv?vZ9lPd_Q9hhA8QEzuiwiuJXIjlf(#`n5clIJO1Jt0Hguzlo4lv7EFKYdo5 z%+z!a*il|u$710#%V@b%72wH)*tSk;?rCZ#+Hl?kjKOE2qSaVJ9p2UJl1l&e9WF75 z|1scfV=;*rM#d>nX+9tgn}nXia=*zAMn3u|H`=K%dbohc`~rvBzw#c+lJOv@xp2-F zS!qnU{<8l`E;_y##B&mMqQm>!Wed+<)Sm`YF7+)5J7`b0cQ|4*`)ey$KRN+0@ecTP zjFTDev!AP?4*Z^dh$JPRspe z1Fxa#vg^*$vCy$8aiGaZsZ7ZY)|wy39c|l*BFh&hTrC-EpBQ<8lSGg~Oj1Kb*^*!j z*_;RJTN9Mu895AAOK5-5U>ezBBLNJKuaFhlYaY|~6O zLQbQQlOFH-322zG2a}-k$vB5&^t^1Y$oJ6v6?f@S-JE!B$!d#@bllt~x76KlLreJ5GaSAzag3W$`XtnT&{{$dJJNN-=ANMJOT&f%v-3t0+s~V2|CvJn=G^0qERl0H zp&F0tegd*aKi%6Ui5JQ_dUtk(pryk{l=8(mnqjfgbT++qU)g%Xyg~pN9brM~PhpJ} zgie4`IMA^+nvmMgzB`}NCu~P8WG6(K_YyB0!tP_%80CsDf#6r4FrN*nK~fv%){9L0 z9po=s>fb2V>%O;QCnIP`zJ92U>H- zDBIi^gy`VvF>(!OPN7`R$Y`~2w-hsPUH8JDBX*<&C3sE2a5moIS*~? ztrCFbVk3pRhry9+SIueTTs!1Nsl)f~(_0Z(THWh5)o*ndE#iv9!Nz~DiBg3xWA8(A z0PW!XQ}!I0kk>nHZ0^gFC#M=~mVrys@UDf%Lds&nfG=71Ow+m3!v!6=>zT-?Pp@Ef zzuyyP>2$z{l5|_>6&E?4fukR4#D|gN)u2?}^2~BDhLBNROddI-+X+U`4MgYE;W{_Nis z1z1zalUS1)=u!-1WcJfQBR(I=kEOX-^6DfqN+by53DQVw91ow-%uBD2Z!jHgQW~J>P+r7kfDBY#y4pys=)b{EZS=d> zqB2%R{o~O11J;%0510Y~Z2_IfqxA=>I|;9Dt$EpuQ4d@gxcKD90_C3P{}lrI3&lou zl6e|f*taUB^73L)Zi}Cakeg03bRSx{7eG4ffAnYag&ipghApF-v)z$?=JgGo0@uUcwhNyD_mbW5o;`j{YBw^od;05q*Gy?)zuC7=CT^Y zn5!zEZGH9%U8`pSy3+V+N)J9|he3n23}%pr&XqxZ%PmmLUCdWb2zlFR#!zy%&G9;+ zs!CuS9l{;2n+#hStAXOjTm z*5lSHmW7hbaG~lS5T@(G{oG-XqzObwoi$Ohe3v3S7mWEmtxFCC4Qs2ds63OH7~jli z2Aphi##O)=Yfr&nG&-ivZ5P!sOrf5xBmsrs-&#%XLzjknQEZUhNFP&U!~r33#6z32 znj2;%j5VB@e1LVNuar~zPFV53g4S)%X6nbCMw@aZkuO|dVxsfo5(r?0cKbZm_}__tS;5Gu%M$Dro`JXNg(A2-_%J{`~?#lD;B$ zjF`ZQJAS?PNgkFjPF-QB?2PIoO`(_GsjN>49Ib5*z+R{=^W)~1E3d2`RZc~~M@ZkH zP<3uSGXwev6~3zwMaPb2R&GiXMu#Y|%DLWj3ht*Ed+uP+?N^kK;4FZ9UpCFd@|Kd~X;0d~r=k>*i^Q|WO#z6e=tO#863 z#Kyu8y-G~EF+&V1&BsD+flA2ji1dBk?a3I7Q=iTx34Ecg>RR72bT(qZYs*$c{ ze^KPBfq7bsMn`GUsqq_-tx;6If?@G>!m|9(UiE|T4J=F%Yt8Gt*=Bf{b>p8dV>iJc zM&i!=B(Q2qa)|b8_n>3GPZoTriQsEU^HbDA7HcweU8>9LP&|3<#b2DAfStWh$84mB zT7_oRAhr*>0&OuW{-6u@k*AE8xwwB4P>Q>?vC=GI?YBFd?R6!u{qD+Yr$X)$>-*F* z`{i}d&y|(~$O8jCgVo=KkefAAIZp-EG2m}Hm2dXSh4g`R%2>!Dz)sJ>qNHeAxWprJ z*?YB0=lLf!6$v%Ms(93&;zNtt6TAZX^Z$Dq!48C+u@iHb=M6u%Ed(R2 zTAx&?R7-}4#$u2%g8$4>5Rg^6x5xFX7Gal`{qg~$eU`f%RTi^*00xtH-!B->kNieF zIeT5;X{S9@Z%|i8X3-pzEc53?cIbq9bYv4sPUc^(3GAf-rojCQ%$J?it_m;u_DU9v zq^P&k%b7UZ3kXDQ4uXu&0Ii_vGMC7!D$L3=Mj2~`rGRJ2ezRjZeCOFl~$NYyG`1G{Al!r zNSRR8oiBYZ5%`)7x^yC}ea8hBN<^^}yWSCs$zc_17*e*0u>UbjYmvc^^!1`vx7RD! z#hk2fxOaZ69eCVzJpJKR-kdx-8L!qi1afNM=^9qC;+5U<$=vhuP#iUCR4O;`%a3lR zBEi)I1@jNn`=`Z z(N{N@jWWAO@g4Dz5olx;?hX1iCJ>}TT~=TS#VoUAxiA?NHe|Jp<)4~1T9O5r!Uj^( zd!Rw5p@yl$AFp79!K1ZQcf1oS2;>0uC#yaoWhpQxvC!=Ao3hCRSCym+xFL+*@3( zf3=bn=fe>ylYTNSD}B0cGj)GdYdP?oR+fNSY}v#PHOrylCqE$AH%A!d+BJx|%~?+# z*HXx$H9Rr>d`Oqo&8d2bTm>+0A@w;uXl|hYY^M0iFK6#kO}vKf1osniy!^e_MM zo+w^6@a-svNve+r*K$*w@~rCcXF+?1Wvfw4X&!nJ=`Go%L}{Eh2;={UTO&7VAT}4( zb@-Jz*I%O!OLE>K!kp+~FgkIK*H{{6d=^O#wME3-;xSb^)@Fw)==5KkDs&3T!3D&I zJfgKshhJJi{%QHoiV_NbQO=KYvzLYa*_~9^W29QVt@Jci1hR;56JX1|j8^$)dj$kx z(^creb#fOHvMqY#hPS%2pX~r4L2N|z+)9o<`N5mnqo`RhKHBl_vH$OStaS(I02G=S zXb>aoy^0V>Z2IFmTmfl=zsL~npyJ5uVKPYio`g~so`o6aBKl>dt_mMo6=)9Z$L`#} z=J)%k5$L}SWX#N&z^SHs2-D9D>7%=sX~wJ{i$FG4Ngh3`LR?NKdMaP^fg7PQ#{JW9qf22X+Gi zUfeVse8<6vxF5b6niH*AXssT63|f{VJ~25?M+9SVRm3}Hph7hpeF>fL9)X^rN#D6I zYHSk*Tr?8DWq(&u8ey@9AVfY(NHH}sN0Nvs3AN(0v||m$Ab@IqVPu5e!)7%1SdwO% zH2MO5o={GyySEaYItd)Ll&pVRyC1x+M|7v-rzo80?CcO)HifMh+}E_AcEJGNUA2eG z_<;X!4w-{OhR-~f&?2^m9D*h?Ke)S4kT`5W6l(mw zfI)|u^TyVbRaE#s89v#*b}5i7q=qL;sd67CW2s?tCx)U*S6@#NP3hi@G5<`JLz4(+Nh{v@c zdOX)A?$(k6|2?)4FYmzCnf7#&^o(^G?SbY8r3B0a#$ZBm@$2J*Ff(9-%XKzaPZGq4JX%a3U$fXT8t{bj7o4L3T7bD=!~ z8I)w4=nrtAG@#JxvQP2%IwdoMQ)0ElOsZ&MTCG)>VbC`uB`C)qc`?UoS$0vPt|oOj z?BNfd`8nF#3%QK+lDZ?^R;)4cx*SVrb05-d|(z_ z$%IeFFDp;uH^^cFA__^Ir-6+&{%D`34h>v2ysW`Q?JP|5#2~mdc5y`^RcLj1y52iY zt3}tnx1BDD@b$2dDBea78w*&dsK#8WdClHbgKziRd0o|eB}5rE?O-iN zIZ|Is@2I`SIL)3T(>)Z#YuZ&8OS_M5B$EZvz)lxV_q48KX~|M&EXoJZv-MQ*HwP5a>)x; z3bZpVBWc&qxADK_mnr$gt~v%EYB$nT)!I^7hQytntoz^b*2TWe+6eMukh6D$XvSjf zOgyJf&=>_2wACGrC=xx-CaAakX|Z*_Llhj@swB>zL%-O&6k2sy9Bfy+7 zmKdQPVR~pM63xNzrpbauO+!i*CASli`tk754xlw3+e9;JWB5~ZMgzbTykTHlbrv~96Ax~S9C1xHfTo1YveQ7>@A^VoB+?SmpMM05>-VJgU+B1LKuz9 zT0+Lr%M#`|BrKN?2)uh5uT%dV3N@Is2=EKU1$7!@B&R$Gm<3)h>I zXEK|{np=B#qiF*}Y05M{p%%upzXNPM>V*Gw;s|4lZ`b0^G%ZIQZFlihu4*(K0{F0J zNxMKHa~15Kau8G@+DkRSR`s2eR9T*R8QIy(0A^w zWHRuEE}LKLDWcrOTBjnNn0b%Kl>tIH=qHea(7ZzCux||PJ>jsRBY?N5ye`?Q(BcbOXa zMwat|1RTNV->>eU7-~~&1=WH{%ENW~Tm`BzF}RVkQS&L;1CYYicI|xa(%R*HqZ4d5 z&gfg1aUI4sdbGkzdRb}s&Ho_V!(m^}pmVW%-Yz@42d?`!1J+*Ss$UXwS|ljAeRwn*tWV^|zDE=lP{8qX7%5H9gcww_;pge7ef&V>}S^GQ-tkoKmf!d^tjZHKfae z!cn4-(lDlsFHtNFQDJ+W&mb23f+;xe`% zsTw&IGma4JU&)8#7aw$~8W?M~4*%*qz{WxH)0$zl-+@TA zpRn-3Q!TWNV>s3bWN`?K2yH+kTq;ew{L+v(?Y3{f*b zA8_%A4V#|1r{sR!@rXAC-MJ4OiIN@7B?Dn#Ro{uK>&zgknEokG-dG&oB5E91;X zyeC+fLxe~kvfvnVKohM`ftNt@FmOm5pngjxr+0e$mK3+0>>sAX?hZChGY{n7ms-K{ zHu!fJHE1@%;&<>k^n6PvcO-lEc!&HDM$7!{N!Tv>S_z_{z@GG*dAnmksL)Bwbej2X zhv5$78Z^K-_KJ;41)P(lW|?(u@PsDG!e_@a?wH(`GW9=%Sk^1O>0ue%G)K<4 z;Ek=SG$g$rAR1)AaN1bJ7`&+ZHEDz9rMXHC9HVskS>{hp-YO6 z7I31@ft@D6St(i4KTxV*a9MX)p5DJCGL#xYCZlc&NBgv+#|r8~rTgD*!B;yOA6u_% z!!o0fPxv&5=4mZBXPyPsX+%0V+Vl;*;x_8OW81_oHD@z~m&8}G=dM5KDRiF89J)6t z`0h^a$Bw}#k+|Jq{ukJJl4qEj?@v*{kBv(&G|Yd-13_Zqmti)FE+%fYyhHh-cA7CnEUevB~e`Xu!CS^0U>p^>loM`OkC?CzaHNbYtcL#LK_@ z+oFL;Rtvf|CYrx z?U3es_!*W=F^jM3-fslb%E0Pv9`>G(u89a)@AXMW31~cI-IA~;PzZB8&DTXnvr`wNshOQ2Z-l zB|Aa?6K+&Dxy4MkZLPrWOWhHN>_E+WHNd&MRb1Q>(n`XWw)3#xg}XL^UPg;?T#)fE z*);Qx)XA`$YO52Ai>h6Phj;hl9rL;GabI1@vX6VQ8d`B>x=n1YT3d@bOHLzzqcSrq zAfJBjR2>IkZOgil=M6l(m_?>FP4+-aqjiubxhRbuVkvN+sq8g7y#mF_MaZ*=Ow7P| zC%eOe_9gG{U8TQ2-oq>rRE`@O$JA`E#&GRL$7NHht*-|AtO6PFt|sw3C`;A^%Xjh8 zf?#4zG#U6`XQAG4&HGdZp&0`kBLHVNJyEWu5kxWMPC*w2lrP?4jeG6ygXg|7Fj@DM zEnGdH*mHG_K9lu~KKb`b`)YMw-rq_HVf?j)4+YO=0+_EA5Aj2oR9h4Ks5{>#AA(wI z)Yi2DJjl(GH1<=>g8q-?IlJCpDCn}i{R0tct)BPs`M);>gm{%iAF?u8x#pUavGJVs z1<*1Hgapez(bxMckB4SHKnQpd`-05Wg*8=b!2m-S4|fA>-z4+QrK&wgk9$k88mn(T zhMqr9JtOUVR_iOCgD!rhY>T8h|xY!Zd9f6g?Ad>V$&my#Qge@G6(W5$^nJ<`OnxuM*b*iPJP zAMR_oSDwc$k;vH4X%ufJ^Ot{>NAqbKC`rKhba4+qP}nwr$(CZQHhO+qP}nJl#F_VdewoBT}hkr&id&-E7${ z_wXa<8>!fi3@le8H$IG|GeeAplULnRqCZUNSs$er^Mh*c!3dlk+^Jf>xTkfn6i%lk zVZ2IFAI1u#$h0z?$X$N0^ri6_Rp+ydNgKEdL6%H9KKhS1Ry)U#r-~sepnI@PN;S-7 zBb5?Y+G;o-G5EC=NU6&`jV}zHSvsX0^JwT2p0`Niuqu8&ONmxwp`^YSD(hk%K`DMP zuDW`OjG}%f8+mz%>h~I1MD>@7)mIa~n?@f)wIsi-p!rwX@tx$;IkHP)+_F1)y}7`X z)o!xf$+klif6c2G5A(rO;JiR6l!f0I669HBu}u? zr8*E7g+DmywWxYFk)ge#hY!!{O6mG(lHm;y#_XUmVO^W_Su@96J&Et5(~S{_8i=v8 zO=3oZhJVciOMF{Yq+}qJ*IBg1MkCddotB7QWvDex)*8FL8O)$L&96fN@)dNX0_p*_ zDDq}AUQ?pAlsAU^G|fd*&LCM;H!LfPh*HCmD|dv%O|XUkFm;U=_rpR6?z z=jKD-w_r2RhcFeS(JxVz#Ea+3O#{&nj)5(5inO`^lDj%IY@PWZV5D}~8l0NF{*;_k zLYdgVULyj#x1RuY9&(xQ7DC!C-5ti#@=k|6P;mI+L5ncw z9@?Ry0O!p2w5q3v|D-^Wg81fsy~^j}bhQlmINhTqr_eSqEw`o+qZlF^nhin}_vZh7 zv*gy6h}CU~d{1OLq-YoP6^DKhOH5{-I4GHM&3mp^g}w&JK$jx7shlano-^!_aYo=J znKTn_f(LYp#{@z6`&TJf{GN4;ozd2jupvE@#NrdgbeXQmrXC5Y@^@B~LAP@JL)Sq= zUjFS4XTt#_{5)A^A`qY%PP*NQBx6I_v27pLc7I`~L5@!-Y*9BN9*eT4Z&moD z824sk%>MAcF={F-x@(KNEx?!zVERxR|GGsm$JjW=*xy{e^t&1U;mgcSU*MWT77^g& z%5x+v#;|;l{=H12ow70zMi5}6HV6(23Zzj!lJ8NO^|xWUBJkIsjPQv2S@5MYkw{Hl zo*jDB;->}AS>cMbuX?IKz~k+!*TE5CI+uN9>(iK^y)s&fjmhmL>a-m5fE#G*in35? z@!LcydjBFPi1G23`hIft>+FCnqG^eiT=pRXm!Sl&N)S*&v<#;x+|@1P&aU~Hd>IT) zes9B>q%z4Sp4FLfqS3iCM)SMIUeDZgR-3c;W6_ykgxcnk zWA;sfPnrkF(dtm`TVTnS#My6nnI(w#Khounk?y_jxW7=)s512ss|5pZDA= z`pPpG;Kl4Z@T`v=^xPtmtSK&`9T_(3dCJJ}TMo@jE!#vfW+` z`KK!CiGVsaFz`NlC?BygrvRcK4zChv4jf5I893vx5**dP9si@+3XD4_BJ`9GdS@?e zuZ#26-Q)4USqKnF@q2#b!}|*!Je7w-{&qP6d5W{h9)ASLAU;yBW(=E`5$xZJjqD^J zwkcT^da>L}q7+c%yS`F=TlgZ=oX z2ajiX`WZplx&&ejeO>&|<3ehM*6CCml_DA#$nK^X!aN8=Vx4}sD|O*|eU)|mmm-FR zjR1V)A&kjx{o8;#S(pm_9D8H`o`8YDux{TGbQ1aP%+6r-{v$2j@0xR9hUWnneD*s}tcn=zWZ{5@Y_I014tRuyk(QlgYNrkqrLvvmmI2zB7y>*>Hx>jpuxI(Ar9jwo&aL)~692UVuS5a^J?uza z<|UD&t@AhABTK9MvFBRH2J1uuLNFg z3b27*4gVa;-UREtVZ80XxtJJYR^dzC#b33HuvZV#UtFvsN}S9@en7b` z!2f7Fvt_(4mo85&XMY#8m;{K*wB7)1$N(|2D=OOO(HfncJs{0|BoQ4Iep2>M$^H04 z(o07~zDfWw3zd3v`g+sidzRos&uw&wO<%!wtzt9@Y0@f@! zXAVxCgE}R)(?$2srwudnzTH4UKi7@jhvK*6T3%-U^|YfT?fe@V2A+Wcrk2m1dcX#$ z8-P2#U5U9T8JKy5!-O;}93i~U0>FP~Brc2qD#dF0>{tXXQaAC%B(!Mde5kTxSGD3f ze1r#j9=Vp%j^dQ)5}$Rc>hL92@jSAk=-ZjaEyhX17n-uJGS`&8+o3WEZ<*0jRz46T z9p1{pMDi0x15_utVH8aNc0@gMTZO@s+s*!1iS|NRcqmz3IjlNZeuQi_F3@ zehUDpH-DOhi<50(42^5*_%4%i zSVNmmK zOocya5juqJ>I05&k`4d8dMs;`mTNjj!m*;6xd|O$LSRTK5lev0ikzRKA!`2t4DR-> zS5aLH=rs2gAzxs|zs{9o_Cq>EPRDc*qr$9t*>-2b@yi;g znT%ifBILpun5pKJ4OFdu!VS@&U*aF2d=Zl=f(@+6)jGD6A~oc_LlOP?1|;vy#N9Jd zs;{Fp{;J)-j()d0mUoEK!irO&|NHxE3f+;i?pq~99;6Dr;e1Az^{vdV(T{vOqh)uy z`D7~P$BvN)z+?+dZCfqwb#lc_WtAZdz5Q3 zsMQs2Rkh0Z&C*hyRv5ubWM@EnB^tek4q`5VM|PGN%VR=4{w1y7X&%BNy&`py8Homa zU*WLmnZYN{_sUizpHi?s13yn zHMIp??jz*Nb-GsS;x?sX(CuSGljvoh zlhb@oiGKH6%z`A_#!`~|H$BMTo$1=29~&p`#hD1EfD>My+ihcgfMXW6FCJVJ{q8xU z`T}+`=*9dfCKnNTlah9zbMm3{HBDCpOWu+Y zD$CprC@y`zakvz!ljX-+FQQ74(&nZkfKK{89u^k(HpctUqf}R`~bw>%ZZVSTTu zwnovYwuDxgw~2$5n>U4!6jEGtSvy{De3kLbKH*F@(vP#tl_4sMpeohHT#8t!bAxcLM(_ z4eVg?8>-WIT*Z4)Ir8PsT+YOWrXDGw$!&2(Do-rS!uNe>Jz&R7`{`1)Jf z7IRYl9;@m-$6=q$yY^ST*esgznS|S4=e3kPH;f?heaUI&rpga*IMlNQuZDEzNX1UX zj%sWA-bhz5q)b2s*b^M&B%v;y>QbYE69iN23X**0p=?6P_FWO*$OSwKWy)okRQGph zO5E%OA)oi`hIm%7>x9^Qu-HQh?%vX3MOPIhBd*h*KXdsdZls8-HUpFm>1ib$ z%^%?j(w~^{c{O4383@<(nXphtz*jDS`lUwmy-Dkm76X zg>TKt6-flO}(mM&Hn=;=v#3%hr ztpK-=Z{^VoUMUnHbG18XcS<1^S|@MnCPaMB4r%9Zid9{lQ^a>R$U3&#DOC-GNljI5 zs{Q9X5p2CfUpyxpS}U<6r0xUNmu0Fw;jG>|nmj)N4Qz-@{_(~W-2zWoh(qM}a?*gG&bg z82QfY`NHI*g3K1IACxKF_o}uouSxDA2UgRztnC?%hRMZB4aGz(PJgV6LDT3T?#ik9 zqcPE3Fl1N%gBtAq!2&ZGd(!wtc|CtkmZ4~>EZ(h=d;fyprptrSTyS~_TJJIhif?f} z+tz(|eH!dC>s}h}-4h9I>}pv9mqz>#zjePyHm%p;#c`MSAOVOl?3eP6MCsKq_|#GC z%v^FHQ?J9ZU_{3TAK-5}ac#s1E?`^B(VY|~kj#BP#T3`RV1Q)b--`V*BU{PxM7clG1RRtqi9BaIMiybS=qC{=v~{a(tzWMwL{242(3^99zRlM5M(kCX6dI6(Dt2eG z1x)2VruO5%aqWiNqY58(v|r`!wm!?#Ic=*Up~N_+5yf`{>8CU;juizkGWH^Wmkw*Q z!133*z2v(6%8cm;u2@X5tb2#DKi0Q*Hw4ETD#p}t?E$&T_ZTQj%6eg`D?Y&7>n4L? z?kWI}W-*!vSZTA9|L%Gc+AwNJfHJOP^l!t7_m15SdW#P?4~LvE7!Gxp=&A0>P@VxN3J6?- zb6|{Y^)x6)#1*=1XF45rVD^9OD;TggXj$`p!x`Qvnr=DP9IsRE-RGv5{z-gzos;#A zK|on0;q5U^pDHHcsW8M%mFHd3_l)JgqP7mXbUSPr-zB zGWl{ij?mjiJAITop(!0{cw(txUR9Bcv%B7?=aSHRF1Hi#mTz3SU0aDx3hEF(VfuTw zqa{RjCuqelLA6n2{5noukB$RNwwYn*M8Msz^jun?D_y*tU6nVo?J{g& z9x#cEj9X}foFl-CCwv4wc{9&-KTDCnPt$-7eG>H|wW3($7+LP@!K3cRU7H?)BSc%+ z9Y>DVA0qlPLOdk^qPD(}B#st&a2d_P3eG=*V)Gx5^8|Qo%*dLsCq{h3!H%dpUzmAA zr1#dlUZI{u*Ckd}`gk@9WO`L$8K7g88!&;J(G+1BP>j4? zmd|Vz7O8udm$xf14}3v}GttG`*e()QTL(Ndccos?G!=b~b|lVakZhfmCIKCVvX-5B zxR64~4S>#}e|Dihqa%LI`kejfGRfsSHnp4bcQA~&n;p)VqRhOMRMNS5?5~teU(Og$ z;aK}?q={D1!^H0Z>E5CKB*y+GcOBQ=VyULH7f0NKHH|LT(k%0h`gY;s@-UCZ|5W!_ zB~gDn29s1RSML(U^iH3Lh@hAQKILplNVw@HfZ3If_CMO4E`!{#n3~sUr9N6<#adi( zR%tW~S?Tp!z8lryIPrny%mHKkTT4cb>F2H>OvysGXuf?P#`o;i*k+WBb?s2*3czQu z*4eL=Ff*%!r~``xbSnKwfovwGC_%p^>q&IQQUFOFS>Si4S;CRG3+~%(P1M^>Co-5P z3Ta+vaL}l6!Ex2$HZ`l8Pygby)XzzE>-1|Bv4IPwzlt z_oJ`&cl}ZZitcGd?Z5gOP1sXhb4Rk!I+@2cbDh{Cplb0du(QDSwDbRaN1<^@8A*CD z>mQ$2tv>Vyw$KjMLF$_@1N1WnrUf_^zFz#xDVWTcY7PYh!zXJdA#R|OI<|zJz05KG z>w!6Jy>Yl?T=!i5mu*b;ouGlF9a9M%TLQ%%rSq{7Oi$`*NWX2|kj4{rb!PCi>nkNS zm2bt>#i!D5gZ-}mrO0L>1s;Z6rC2->qCIf_N~RbE=i~N52FcpNQH`P9xE%Ww*CdyW;b|eSO(#^uLKi*n+hd_C;CqEmmblMz;V zU}LZU%IET*qZ8#R=wLFNTBuXuLb4(1#1I(S2wwg}vs7}SdYj9JsZa1LIaep+g9p8B zV@MdyK?I~^PHSRh4aEBKS$b;xr=Hi$b}40Pxcw~RX-j=`!Js|4km$HYncUf8xDTUX zwW(V%#FxYHPJ#Y~Rkdn#Q4bJ;{1wu}xaupHmql3{+Kx(yGRY?%Nl1&GRqr8Z&jw;3 z!_x3lYzo<^a;|sinNNf3)usYNwhyH^OpZ>!hUG~0Ckb!qWyt$5v&|%AeXU@KIc-jaE78m#fk>J z?4{X{qkT4(J8|+c;MTbF5n)YDW-Au@M=W<+1y`4OJo&c~_Fq{-vrq>H7RP_Vi4WsQ zWp|2oz6#n1Gei5$#k-WX06-=u8mU(CRn^_#Tg87AT0LXq0WrvtU0Lg>@B&rX;13gU zUQK0DX=Uatk!WqQbk;eaPM7#)fqn}H;D#>?0X5d1}+POdr7qh06D`TQlQ z8!ocZ@USD%fl-5SBf0N-wrAT}{UMJUo(!$s))5;iH@OCROh>`#+GGBzM#Pq93!w7n ze~Zw@b^y^gz_PKB$carb_1~oX+vGW-5%HY{m)Pf+ug6<|(<6J}Y|f&0=j8G}Xzu$z z01Kk+2y7140BqfrIRzL}F@rg~b+^P)awyd9%#8XwAek{&dLrY*$n>pVmuKGJZdPx^K>fwc&77WF)R~bAU*SbZ@%7 zpwoG&rl?Fa`BkM@=ne{96L`RH*##xfPC9e?l{aM8zq{Jg^DiUMrgYwijw&q`?=^59t-Y36CDFeOmMa@QiMwR-c^iW7rT!sHUAAm8yt=?)&1 zR_cA^m6~~wVMpScne!ea70iGsWwkVWU!!MEc^~T&WYc)=1O1-N3_bJOG>#OP2Y{K0 zctd_y30Q)evSwA8~wK;#lH?v*Hv~kG*FOoJ+eD6U&+N%GY98<5OpH9Sz6PM>< zF1%>KiTCB~a}j09JdT?S!=G|`N@2>a7_5eNMv{L7zo7Y{TIyKt^R1=n{A5=M@A{R7 zkQ(GdV@k6>8900CQ&ZLA(l3-gAn}&~D*yo!wl2-YrrcdnU_Tlj_vR)~0>-^UquZJ% z5deiUvVg^EhR_>bTl4*Yc;@?MUa?%nC^cBZ~E^HE$)=&dnep zTmNQ-S>(2J+eIn`tV@gWn0S0McnSQ_EEpn}5LsVWRNQ`!TK?1`9DfZ1UpPkiI$1?- zphGPVc%Jevk)rm`pPo*{@mtU1r(2*`@R%Xpo`{CEfQ^Y1um6&k;4m`@S32nhpiREx z*GI#UZ4R*NQUg*8y=w*^3xqC_fZ3lITvis9*cu87OJ6B<>8bam4Tojw-6oj~; zJ_r=2nMaqbEte?5m8r{AS@WL?Z8!6m_f}d*VJWs0bm)XJ=gYbn1osi6AnJcG2Zono?@d5g2)vipk-e0l#Mche4?EGUZ6`*QQy@BVs66xyg%)HlN+x#>w7QnE;;y zko*ll4Ze^h^qv?FN9lV0Rec(OiC$or?!s(>UG>0}*h(R0=k-q@R4ykyFd>DuFtvpl zqwSnfVfAS${VXWr1XAyYa~pUa_x64s7|VQQ_imD*hm&N#Hn|SJ6Me>Xh6`(;I5eBG z6pX@NDJO>$HqB@_1FXD!)S^eCZH(&6nkh5$^(E8%*4S&)hUj6Uq3>QZYq5ls@x}>+ zKlv37KOB1M!k2rLy1838ai&#xGoTKcT5{aW<|I*OD2P5*S_zCP!SJgCufHti#pQzCi1d>j^{K4P z13rkmic{Uo%w?VNS@5f`1ug~730Up9>M*rjDZpjBZUMMUA8g3ohTZuop5R!45zXaEvGbJM#LF4p*H&)bo>Q#YEjo>G!#qvCAIXli{f7mqX z&7L<*((_W0cHFY1U2HH&&>x3fx(YllfIQs_ZdUvaToM#~-rF2upQj@xP%35y4dfKe>Q$LU!9lA2>FF3?w_B*_OMe1x)js)gki zZplH(=SNQ7ozRbLYTGrJVbI~B8Wp*3cL97~_05QjMZ=m{^5V&;W2*%tqJi#=TEF;} zg_x&cyDI_&lQJw?`QCn_&=ZqFB->T0ADY>yhY&~OTGHsyYVL_&MjA+AIMo+_1v~u?H&5#eV`DfNy(i7UmZ(TH5+jnM9|}yJ4VSu@?cqb zI}{giIFxsz`))X6U4F))@c2RK=DHfRuVA`~OG>8g>j6k`e!a>Kk}s#wfxH>otULWR z>oZr6kcd}^VYDvVQ!2P;^mWNKH3VLzhVJYv9>S&Eoj|Ti7i}$U6-_*wV&6PK^=su{qblUxaT&kJ-(7 zw^;W!1CD5??q2EohG! z_0avN6b^FDl!E51LY^WVyeuY!jr%%Jf46^;SRfhPPDv|p-bH-uX=x&)6UVU>{`ILz1rKa}gAI8VAXzJ*r}`D(DVm6~Ua zf#u8ka_ztiyv?H|a2Baj+0Hw=m8#M^?@JY15 zqs>P$S}&KdNgl)7%6^iANLvtk{MxNIv(8*+QtxrkI(P4^-weJ;M!MX|I!S8qxqaRo z?}(UTvpB{x7;kH{2dtp7sH)r5v8o<)(tB!~yDqHjU$2Q6&c$P4u{sKlL$Zmnrb>d^ z@tYCdm>sQfs%qFWKFp=_A+Jat`p_JE?BwH3-xzK6Y$UXCFRBhp2=phb|GCeH0kSG( zvZ(mpZ_j4ues@ncUL)8&RUmOTb^_hPOScf|&_b=Th&lvZ;|Qlz=NB0o+iaB|iiFTe z<5!Wft|sMl-!*@5s79Id5(gMw3|MAn zSf~hR5;(=3MHHSDgnK?io;)ydIIKulv>*l90oy4=b*yGMI!$cAoATyUDBTT6wAdabm$2=*g64@| ze$xevKlXN8yu@}kV2Si$ixNsFa8S!9e&!K4zN61n%WC$N=A0lb^V@awq-b4tFQmw5 zHcqm!&NeReu-ntlf)5j(HKmZ{v1QbHx4B52IOQh7iz^9?Z!y`^e;k-`0btCF4a4}O z3k1aadHMgl5EcFUlFAc3J+O8nd$)uM0TUuncW3woBUTqc5YXG#Dkrnh>*v939<4n0 zm#(8|aOVTwSHM>0O@);N=FH*mmTEXhLgAFZXpo(ICZ19U{|t?LDV%DaU*bst`y!i( z$keT({RV;sgE|@)Ucmn|A;-W6pYL(#%XoMhk9q~%{|iEKF5($m(Sm(3ehk^MK&0C7 zfV)Blee>biA(gf6-@?+u-h(~CenfMbZW{E_Qs)`XSR3tqOSwu6dw`GJg29>GXS$OB zsvH$&2r)J4E(q(GB6qdF&ckflh;|#eJ+nexhLI$IKT)& zhlLE36-aPXB}W#+#vp3yctn-1|FZ$q+@4t{3qYr4$Y6-bCc?szOA|#76JuI~aZSX{ zd^GE-K2~&x#SO8BtiEK@xu<0*Q#QC{v9JU;7_R}=EiH$D;;bn3Jd%()DTUcKpHS%g z(S{{!=51Lq=w&fZ$~hWwGe-+lEuvi z=jwd1Jx%7iWBrx^#R(`KC`(^B-!=a=QTvMh&XGn$-JX2zw1o@0C~d2KiGCR|k4dscoZztsSK${ZwmSFBxsZ(F`y%Chf!lhW^uT~ukjzJ{oYaQ&4 zw(&!;l~mdx^ljO42Rl~7WYZ)@A#dT-Z72oo7OoR4P)Ujk8ZA$T zSfV)d&)0gyOu>d_|Mqo4e3*pfv=My*i}(fhd0q9MvQ z>RY$4sJhECdTxJtj>1gSp$AwRpv0h@dBY6XNdRPnNQ|m2@d|fclq+J*%#{)WvpK0@ zz3~`_Ok^jbb=8+zy}VP{vUjMBs+M~YEke~yn)lc9O&FmbrA(2~BpcyWX0)>cNGkv&IOF6tfme5HzM1wV5NEC5YtuB{exoML}Q2%mv zgE$5}Ncr?#GuA122>0FJEv~}yiAy*M)@bwVW&;K5h>q^X#Jw4`wv&VWAn=6@612-J) z1UH#G{ggxd+Z^=&s;~}l+U#AZbL?Lmgh%Jv13i`&_gG~qAc?x|9)?_N@eD!7jEVss z2j_{VKO^3meQrx7g;i{5)v1|dv;RT)2J0hXGSCC=&<MuTU5;xQ(&D`j$zAzA`D z=ut|CrMI^%+Pdoy5hbgk`b8+1Nb3m>k-1zi4@Cya7F|5QYg68-602>^c?x~SGNkpg zG^q*P1brm7LEC*~^rv8j?0}14QV>}q8iey$M5v)==LuhJ+L@CIGFZEO30wrbV2;>J zbA#`{(-GhdgL>$madiI^2Z{6=QNO?}*-$-Zh)C!P9>ABq89>zj1_+pFT zT;qvoKJJDXuDOG12UxacC;FOD`(*~8_uV}QqD18RYzm^tk$ca9!S5!Nchvtc)O!F#{1`E!s+D)ef%-J z*Q=6Idz;PuW<~46)EfkUY@@5GXwwO^3u&j~l&KfY**_U55xJM}^!nKBI=yFFe||x6 zQbKc@!jhf5zFnc;u6xxp$8*F>bhh`k4pf%^P5rcn8*TJyQu5fFRof3yz?B}QMZat$ z({WDQH9jvgV2;<3Psn1CDYne(?tp*|&c5nig5>2Not_s=aXJ+JpK|?-BlDTT9N_{X zs#%CmcTCPPkw_D%&CGIF1Z6o+XCERx+`C-EOOy+(q%w7;g;IHxfXB zxDF|2?7)ZGjRI*F^B`J$Q^$(`@}D`E${g=bmVKU=asq_mWNif zJcF;zfPf!S^CN|;8Rtg8_waGd8`eZz3O6qJ7!sNt7-+@i7>`*xzC2`;LuDmvi*-AG z{@kmohHfiX_v@g`g4G`qd}m3AO=4HMXrHLWO=A5k?Nt@O_m_1ljKbuKj~|}3i8xn< z+JRTn_$OT(kL!8iny52^DNtW}@=~0vz?dZpUY56BS#TBxU!Q>FdB=8oWGxor2?kms zI>~&3;IhV>n%ru=rrg+_+_inH%jNB`7FB{skb*_tjZh0dB;)OV_mT=^l(2B9L}?eg z{WXp7;jzz<_tNf|z(-!Ohc@xgTw8P3k(_leNd&XH@HRosW?L&b&T2g;B@R&ZE~h$j zfGlrkfbusMw}w~#cB+@2yFUI7C6R*TNAD9Lt8=DOY^hqm;#dbT?p%gh$#<&j9XZs& zyRcp@`oHfpQkGJ^GPnt{PL>Q)z%JJbgo)rhOX$SA2Y6{WIu%e7QCVI1Jq!t?%Vm26 zTgWd@tmB)wV&n}?|2FCMb|&#J=E{SxN&ba04L?d}CaWs~FcTp>+9TgMpNR%vu&`p+ zr;sK}$AVH%My9VDH`{2!y@dMykwrd|{d#s1TKrZm!qs5W7rf@ZH(`H3DQ0KK#+v#? z=qJKYXgs;3a)g^ l^!t0b2r76SWpgbmM`nL2Ody0B;CNflhN@sK5RfBs{ST7OOdS9K literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/protocols.avif b/static/images/docs/project/dark/protocols.avif new file mode 100644 index 0000000000000000000000000000000000000000..8c0a67eb35fc75e7ce44c6aa062329febae11511 GIT binary patch literal 44395 zcmXuJW0WX7&o(-?ZQHhO+qP}nwr$(S9@~3t+cV$3pL5=HwO6jJtTz9eCItWhz%g_2 zbTD+YGz0i2ww7j$|LL}thX3(ZTT>Uq|Lp&S(89#V>Hkv!030lhUH(u1KZJ9zbg}&( z0sOZTS=!he|HniG0094u|K#KUM}Qi~e~j4D((ZqU{?Cf~kC+1e=k?Fm(2ardKUK}r z!O7tta#%VT+y6rtLpMg@K+^xYp;$UQnEvMk008=L0xkSo5F9K$EdR3rLqI_M12jtq z+y9IIUl727K)?V1HJ-L6hAv0|P*9v!=HG=wKv=K@OuOqqxF8Jx!vKK-06lc?HRSTI zYYU5g0F)}ZY3XfbqmZ_o3#D++-JRASTtse#!O{4Y?aS2$h8VHyO*)FBj?T7C2`-+J*{_r!0;dtTmlrQ| ziNS)c7QGrDI(}OHm}n|d&C5ruY>guj=L%TujVpfgSnL3ZH@e1biIz+kgO03v6wM#2 z{wDz_PxSNz2Wl6OtiRAsa|PaVgn7{cN2%S%Vmd!PV>R1>{y%Ai9bci#(|?;P?~`L%^IM7r+=1 zIKG#o_notvkL3a@c`#wnB~2?6r)nVi<@0!HL*dAL>2s{@-Z~?7*F}TGdX8p*{+9Q= zqF?9kox3RZrQubXMXv{wQSwB^T5l9~#Y$5q^~!g|ef1)z@{$gfVRAUjmk>pk!&21+ z88s&j!*lB^JF(#ggrZy6>=7WcpFAo9Im{cG?x%F7z078}=Y#pJQt&JGA0}I)Wie;)i0WE#`_xGQzdGkiHS914$;g2))&I+3*rbo9dA*WX>?KmA^uni8$C6J-Bb^h2H! z0P1AKcOBB1suy~8pX85ND#v_CK4pd-4)ucoPNX7T)->A>*s2hs6XmWQon{Ki_E2p> zz3G4SK5bKeL;3Rcp`lGAWBqB{not)>#0t93v;&rf6S{N>?Qt Ki;+ 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�J^a)>MW{Za#_WV~y^tSzQ@ubL!0flY32ZDi(HF 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/services.avif b/static/images/docs/project/dark/services.avif new file mode 100644 index 0000000000000000000000000000000000000000..397eea4d613692bca19d3d63a0e0375ff99a89ef GIT binary patch literal 46978 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 Y`xySDNrdn(Y?jz%N;(GEgG~sQj6&N7i~s-t literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/smtp.avif b/static/images/docs/project/dark/smtp.avif new file mode 100644 index 0000000000000000000000000000000000000000..72641e8a88e6b70b5329a66716fd537f486849fb GIT binary patch literal 29672 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 W$)`}2QnsRSh8n!+$aPjzNtSSUCS@N0 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/labels.avif b/static/images/docs/project/labels.avif new file mode 100644 index 0000000000000000000000000000000000000000..65269cec052f4f2e30991ed66cf95dc47c1fc4c2 GIT binary patch literal 27825 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/mock-phones.avif b/static/images/docs/project/mock-phones.avif new file mode 100644 index 0000000000000000000000000000000000000000..25e59b1b89660c24e7a3a8da47b4b3b878838106 GIT binary patch literal 36779 zcmXuJV~{Ak(lt7^ZQI;q+qP}nwr$(CZQI^s+uwf9y>F+I)vK$kk{?MrXaE2J98+fx zdjnSsQ-FVBV`0kppKfDe@E>2bF>yBd&;Cyc&5f-c|34J~z}~{h`Tz9)LpXa2XPf^K zz<(`~g|(g0e@vJk0PtV=Pd@&C1c+_;$A~Q~Z2#Bk|E#G0hzZbtUjKXzTp1YuQ&lbO z9qs=iyM?`x-9LmeaAgzf18w79w5HJ8hY=@1pfin^S6cmT0*>}Mp5Ed)}Q(g{`m;em`fj@#g04Vu;@-}5W zyi|S8YsHYrIz&{RU4C4~J>(#bXfvorwY=81QpO@k4IEYU3M8COJgl7zHuT2*eYe)9 z=A;`F`f@Y8Hzo|)fS;5 ztuf~Y6dqLjV!~~l2(qJ0nlW_miXn1MDk|%M)-d#aIs;An)ozMG$;2-uyCw#a;9HRq zeUu$n@o+Xn>1pa#Ept`BQ{g-_Xo=K%JcxMFDKGY99@Ge0q?^$%0RrbC{110%j9}r^ zOwnwewszn2OH#lOXVu(W>MXXm-sa!3?ha%!rPTDq)J7I=vuj>QNiGVf`GDEgR{@g# zJCf;51FWJndTuM`Y$~>qSpbqb3<`zH-Jltp=)}@3%myU?T{_%P`}*<;>w8M*`*Dzm zArSAQ3@|qT&`fh7T<|;SMXg=(bNb`_)@+ZhyiO%T9MA+jyWb7+okxhjLN$u}T9rY= zR`6d{0$_U0^kE@W;R~w<Z^!msHN*b4dS z79Fj4HD~e#)AD6(m~46G=vT@k>kF4R7rMtgRvrCbQt%(**tMgZNS-nQ_9U3jND*A- z#r&Y)QKbs1E=kR%M6(#7z2_6lG!PhKNX%8}s{#e=EQZbB{IL@pVNkcxekXSmcS|eA zSR(qqDmozfDVP{aSF8T^L&P1Cfvjl&d5*#aNJS}4u}RAYrsl8b$4R2BH^6K zC>;rN-v-GPjBI5~c)SSV?^Zs<`N>x@d?fRr3yQew2uBo@eWILXBcRW1ov9 zYjQ~!(R=?2;vq6>6OCEYS_op!J4}49sVi`TNQAJx-GVdOD-?Yu!D?wo{&3;UF>54J zstQKw$!kuZW#uimeZYG~jm?l#D-10# z8%o+t(B~v+bBf`|T!H+U&s;u?yZTU=a zeAeC#joT*-?cnQhZX3GLP|&DlpIwl%mpB8bIBt5PLf%ns7Nq% zwwt|o>1-3Wl-&Y5@S%TLK&qpa(PljBC{$EDO&lQPBK`N}<{WvIU@>QTEIX9H`7X*xY~ty(M3$wx7S@bY(!*jm)xRpV zfN|I)!X(^{MFpo{$eY*}B4zksfZf*KzaX&K{;wcsn4Vw(-7Dp3Ih?z^-lu2id={UcPi zCAe9U-5?F!1;ljtDmIEVOae>*Gi9z!JKVJx?rWjU&S#oAjB|3&_LgTGE3+SGTOco$ zbioG5iADZB1-3l$rX1_LFx-hI&W)E#TLv%OCgqC^qVe)35PzM6vqVy<|KM9D()=Ed z3~|zgQ~Pzx4@bX+!0d&9C}$8{JgT}SNtxk9cDbCK>FAoG^dcXT)~eqd9t+P(&5<3r zil$^WBBydd{55a@_clWKg~gpxu>_1T{Y|NMEF7LsD+VyBsO%+w$@7?0>w9@wTah=; z-jd3nMca>fCT>LC%i2Ssrvpo^-~&H$?+Xf|D@3AdEG9wE8Y%Y0LmaLJCYWq)kkoB*6G(Y)qaDLOuYX~Z`cAPzHB!`1Q&aw9QBXy+r-h8Bx~p- z2)mwOJc^xpyt&(QTr=bcnI~$-NO>kf7NTtV+ye1X>lr{Cp(VPY8%$<=G6UpFvXek_ zZnalmv#@!0f@$axNgK_xLP>eJyJ6ck?XbrF!?vgEB=pPZ5Q0xuY6)+NgC+n26x9u1 z{!s71JVZ_=a!g)EF1i;q*oEBV zmk-dR9(sAe8pfgKgxK8aEuZDx-EqI8depG$nYCX1@lL^@n>&{~m=bv->5FVWBbK2- zb4!Rf{sqzq^Zp1YU`_WHo<5IjF#jXc>I-s@C7kpXDp=6@L9DjNZRSsR)RrabrB=zp zDy*U{oFNjxEN_F_XA&Z$`jjKy64|NqKA#GECaJ(N$7#bbFu-qzuE~ww4J~^FAn+br z#yjqvQ5u85H*?I2Nk8Gq>Sg7%cDfG)iE)n-s<^!&s~7GT{#`yh3nm-=UUXL2N-al%OjC~VAYl=l1;e*g|DD4b@Zz%Vd=iPRr<@HPUvs%M20DhtiQ1CZG@%oQkR2qfeFUa89!wvwE*^6gD!HofMwOyEPY>NV-{ouW=kGnzc zEQ@>gP>rKuQVtNSs8_KZ?F|mQQz8Qn5vO98EqPgdP*1(=60v^gD&PA%Pn;7V*Nn6e zoh$uxK?0FGldG*@fm|;poOIj{!pYSizrjI<0nE*Kz|YHPRpkCB_a$Aerrb#vggH>F zyCbKf`7U(QW0{)ld4Vc7JZoz z*xkO_rRK9ynnHIi)QSKK2YF=~s5>k418g%xL2xP=9mI!5OmF2(`y@F@twZ7$u-z=B(J4}9Ik~*-epVq_zu55W-HC#FU-ivFD0E1vXKMF!@`ef8PuBLeB}DlCS|6%zIo66 zm=Q%cNgT%oGkpc!(jYxiV@iEp7uamq#U+2WKv+a3*Vde19v`E^1mVKEGc=ve>2P4E zGOD(tbN0os@r>;1(&;dhN70^&W#vAv6uXZw28J%9gvTu9(NZm$uiX~_-`us1fum0| z0gy_h6BSoem)CJlnvtR9uL!)+a4wQ3p4BPtwWN43K3(oz0^OJT7E_z!ioD_z!_G)hWW! zd_Za}SHow2M9x}MEBoj0x@fd-Vb4Mm!A}+kCnjzR-2OtwDvw^_&kFj2a1o<3`u7$? z@wYx8C<56rH~LdlvJb=A1YTH_^!j>!rX;{5%~mFNSl*2wPr4kIx>w6`n}b$_vG0sA zC(i_h*d>#+>`E@$Xv2OGNwX%yK>C9&CtdK>7`N&sv}FErFPrpQOKUeLFv73QXWJt4 zm;%trVP&#dJ>vGUu333QrU`9$&@K;2D#+NPQ~$ydIJ^2%Yofvr<~^Q4rhrFjo(={j*SXBY-ENr6u!yOb z`U{jWlZj6)@{I$Ytu+2CL!>&5^C*H7C&7DVhHnSvPV{WMsVEtp{$RB(%D|QP7|6MTs`-Ap z0eqfI!qOKEQ;vX6M?!{5wN@|Og?XwLdwI}1*Bu|g4CK}8q;b%P)*7u*GiT=8t6rMM zJE#C=(uD6hYmtXO+&VaL1Ul;^q&a_Sj3!1?(7ihENS-_TU6bEW4@ULs9Fdzdk>ZfY z-A1tNum#mo%yLN1NfP;jzMm=+FfzR`x-<0~tDYK$P*vUvC|>;0Y*-dO4|aIgeB3EM zQM_2KFdRcRCR6$2lqKViO2u}iHtRO2%OHx$h^_g8j?{)Pc5JhLhyPrmo2N-q{d~D2 zk>p~|+m}knG+rgIA9NU(@3kU>*)eSkT21UNm@(a!0q}#V{sGPsvUa$!to~OH)>{+a ziSx~vCUGE&!3W8*?U15dzzve9&O6iR3t-I4bvZ^lTM?s2)G7dCfZqK^b;L@K?*aS=4g zGmdwiR7HPQfOUGHQ_5wx8xARYCn|aAqzW88EfVxuXHgrcZIoQeehP+eq|GX0SN8Fs zb+2W|Ulf3#O1g0+{R$(pr2Z_*pA8|*L#L&JO?O6LgPG39XP)4;5xhN(_j|K7|DTAF ztTnuBX#@mZqoAbUNH^&Q49-blC)YpW(8S7ROX4urk&_Qjxaf?ZaWlEbB+J10$!X5# zh_G60+0T@SAEP&%5%*l>hE}N(E5Dguk&3h^yoogwCEhUcvj*Xvnh=U>DEV1Wx%osj zFSRJE6{3bl497;fK0c5a4-Pfj=9Su&VBQ&%9-*D!m7?pFfJdJa8hzRJHKda#JE2S{9%E9xiu43bWux)L zvGxM(OMoiIY)xM7foLT-qD(wq*^DC2G8OSnJZKZj!Y!6l-IccEd>fKDEWp96-^aQU zFWBMe6f}*3zK6J3$N+4`bo|}Lg5YH^9 zPX&m|b%y!zMl}bQRjp1v_IQF!*Jf6hI+Rf959vla907VjCSw2$Dvjq?lJ1IhwN%4cn=2jnW~U)#X|=(hx=fZ-_y zl=|2f%}m%C5qD;W889no(x*ArvQM~tjypml^yFHnot&9Pp7{Gm94{QX7baZE;*X`J zF{QNGlC~$F0+mSVnub2trU(1!Q3e&D;10e+&e437d+Z{~tK{_acVtydzU7O=5t=et zrO=HGhetM1?q@!S#kA8j7R$Elgt(|H0oI;G@ukxE@2~23=nN(MW?r|F4>-yE1Y@pS zfVT@&8O^4|GZc1YGOK*>#lK<~%i9J<*9v~1^P?j12G^#PRL94oQG|l_&ueL5uwhT6 zoSsU`ATlPp|IT!{Lb?hOPh<9oRb{N^R^1{AZK<{V;^UqT;%}y4e9}3=OZ8SrY?t%y zlUf)LR}{;sFvi>|Dle z=_Mn&R!jRrvLjTP9y)ofRaC1NEmbST|Lurz>RX-bjUO&Q%g&>2pPuBAf8c^}TIVP9X?@>F z4O(F~mHk#7wPatf!!-YyYSQH`on1Z$A-bIIjUwMlo936@p$6u2^5qIavr);P#G!o- zOTHzoMA$`YU>De~cct8&YVZLvnC~Pn?@o)`T{7B_?z>iV(BiE$d@T^x(H1hU>4#}{ zXqs{k&H_G2go1r>MYE-T!6QVakzut_+Wy>fb5K+}G8o$3Sd*@eT-#4?mgiRW|0OgC z`S7=+=u^hivo)kVqFn4J&bz4FLAp_>^3v>r$Rv4AJT$&Z5Q)nKBaGpk37fhWq)nCf z+zD!#&Jqasx<33pwroqsr#wA9(Rk-PF-SM1%WPHrv$4M^$5^Low#naH8n-ET>i*PI z2?-RzPNdTU+o&+4!sq=}1;H&qV~ZpFJ$^?pA2_R&^GlGjN7V|hp41KqiL!9ZKG+I?7-D=Lz2w!7hGXV>hEOSj&Hz%wi=SS^i0AN=?cd`e@u>Bz-i5cC1Bh~mZviy&v$n$PW|4=qz2P}IZAGVS@xb(cB*0h0N z;A_KX*xXys*&obU*)Q(PPI7Zt^!UD-CBcCZI8t>YGPqoPiixSH6Xz|zVmI^!WuWvC zHQbOlo;$`Q3+gij6%yfwL}0T`Nzs<+bmY$upo?{NElAqM4ocH`@2iQ}?T)pY{2t*j z(U;lj&Sy@$)9n+b+BIn?%yMv(NzvnJlJJX7`b70I>=gLil-IErO zIN61E>R3Zcf6BB%Gv9C2<;;XxgyDjqnysf*_ZBBGHpJ@azcmmP$hE2^2#_74+>cQ5 z1Zm18gwIQ^QTMbM^~$Ap+KXs+_u2|YZq=l=<+TBxUNh}5qjfr6lv8KRGTU>2^>G}N z8%$QJe@;-O^-|IGFsXG3Vk`8gQOmCJT%?8Xo*B;u24V#F4rCRcWYtRrF44pt5K#guy#@%hO44=yxWLh zJ^eLsXmF%1S@ljV$F_&egFt6E^=|G;K>!rsz$|U{u;sQY=qGfSp8YY_(0ii@3 zzVbh)6)rsCQ>kYXT$dWr%`5DNNt-zs>!j-&n{7Lq=jq+o4TY7Q3EXk;=g0n808DHn67l)lVK7Y>Gd%J`^&WdJVrhE#qCuz9&zuJpUfcm^&}BW@%IIKNj$5^ ze3kn7td&dJm>cwyc~2#>P4fU24YHymiaDxIXLo7Oz396V;2co_qg2NR7f%MHizE4w z^k$upq*#rf`Sh>fOO0E040{EE`9#e*#J!-AGP0Mxr=nyf(5E!f#8qjz)u{4d_JxV^?GWE{X!$=IwO zwGoVH1-$4u9JKfa1irX8g!-0w3%KqLCOd#u&1vfMVvWd7b-^9DSrmlkQGCw{jzN;5 z{SQ)GnJ1$KECiim7nv%nF@Ssvs{G;zz?8jngo{f^%hpvKYmB#SMzZEy18|8lPJo!-x+e|Uwki@pUE_Q2LZ0+^=%||-7sq;^e`7A;9 zsOKknmmaQ{zV&Eda~%+|o~gHR#Ms?UF;Y(*9EROvdXVy|c4H3Mk*h$$*ZLw^37V%| z#H7?+SS7%H7-b@oCo6V?lBrUYO<=vuPdM%c3<9c-{TGiC%|iV3aB|MJqxWNQ)3eGE z*2zB{PNYup;$7Fb<`mboju5P0IfisyQ^e_wL>ozpWHLO5@wV%mU(=92OI&5Oi9Dm` zEy)PY?}SR%g@XC-bY@On*@etOZ-y_Dh3I&Cau-D`Py9pvK`+p~QXk^mmMz{Eg#;QNS+6kp3@wr!ox8j;(ApYbRyA?l-t_uKhWM- zlD8#P%TK*&AhHmvWdOy{+|$SkV6sfiw$pb{;vTYD=It{`&q8^ zv*L@>Pqj;GLxAlk*G5P_hQ86MS~soo*Rka2y2CkK`nldNt`s4+ee4?XHnk z4m0+jdRW?WWJWS)P}a%Hr(v7rcX z5w#Dt5xN>!C4!1^OgV1t$WJB>NzK=T!~#L_5uBG9`QQ^Ju_5leI$e0Tt#*+m^JmXSL&VZv>aYDSWjl00Qieo#tHn z2ZGJHgTV6Z0pHyh0S zmc^)p0TtV={{F8rJZX7PU#~Gg$do7KoT-fp;M^a*RAmn9=xZi?=~@Kem}$q5S*Ok! z%}CedDXTu|RiQszrCw;riG`#<^i8@5Uv;38j-3HU#b1Xdb`TWa9*r_Rq_Vx?4`f(k z1MdK?w#lQH^H=$GJkHzx%=8kM2T;R;`T@AN`m^EXU=D)uemGJDc{MbQlVzve(Dwei zcO^rl!DK+4K{Gm2G=U#l31nKzomk}=x8{O>>cnuR{d{eJa3UC8siePhgsF~2fssHo zrcPfKX;=`I;G#TepFq4_W;cBUR!Of)I!Hp&D*5eZXv{+qeqCq6J%y8|%zxPPa~~s@ zA4ty+nXSR4ZV>QziAtAHw-8dty= zkqslrg%1i(-7`(*%*n2(hG&#y=@89#QRlbiS-=u6 zLXPb7KTN(_qgr_ivI;O0k$Eo{gxMCMO9I5zEyhr@bU23M-4@5B;aP%Qe& zDs61k$UHwx;1eF$B&8SpN4JD4bRba7-Nym%fMDA!n=YWThsj`1)+2QDEX*_e-FtVA zEP?|D2^PABNdOFHFEBu!)7Q90w1wb%7k3O-sz-KVnry$iiUu~!)*;lM5>sm`n1&O+ zK|xez|g0AuZ#byA!gu+;mt(i4p{` z#lXAvUF8viS#0`0UU2kfw<>k9)gy*bK1c?Fm$m0BMO^yMtM~As)OG#Q@MUh*Ij+f4 zO`m!*1c@L^rpf9VeU(u6-CR4D`{sH#Pl*T$H4Fy!#OC^$`=&kH${#8S17Er$6TEAD zwBfk50xANcqj?mo-FnT!^?LS0#hh_08WlduB)tFnS10-OOhiRf&rp z*)Ec8;57muPhC+KDo^d!)-u^bAaP(JMWqg6?`noaxtZ*1Lm^n>k zZOXP_>1ICm7&2j$28Zk?K%sG4Za(VC(wIZGx}@Vcgsr2dfh_Y9tPmTAm%Tbuz48%k zWt?LD#EJEIk^+$Zc<7ke^r$8s|6Ti4xi@U7YVZ$SZQdkPrJvX^x>s!4B5nI}*t1M- zxeP^W7=N+QEY6$=29|2us)eJl4bb2{0~^luvzhx}&w0q(a1NPJDtr{v8r*fy4(a zC&b5=ZdQfQ2eih*Z8c=+0Ax{p$uJ;GcV%Vm>h0=^llo;mQkbN2QZ~i-qAZ1jhU?M= zp>{XvSuR)$FOjQRnjh>^~n-p!4H4ky(YOZU->{xs+bSH zl71z0?fsNzN$f>-7~nHZY?xvLahiPSKM({ep=8NSY2q7y=Fo^xbDHy8XAECh{?^cO zYbIwvq{)IjoMKI_v2nlrU73j+h4hpE-jV@g@$A&y&`cnoTGz-6jdY6G0hJ zLUkJ_(=i*DBVd8Md91#oa(QkfEDR}m4{^UX5WP(TnnSD=N^gNMW0ElVjvZ~23jM(5^-N4+-Vi^ z434C2;9qtQ-|OAe}YGX_|iQ&7sQdg|TGeeu77IUqutLY7wFEQ{|r0O{Yf4 z?zkRv(galqFzMqjDX`amfy_ehaj?0ESaD?FAvoa^o_w+SVRor%zP>pnX}=ENNj`91 zx}zAvfpa<`Mz8LmDS&W)WGZfk?S~8ybz24FnhWt_^dFqmbv*qt8`lkJ|I#x|yGdLS z|BIvD;DdRK-pw0nC-lI7aVR|pP}yiJKanK6+~vhIy8U@vxLt}*xa1OX01{-}8pz4w zh?hA@kF1a6+7M_<9d4u^Ox$?b9@x$CgM=NSc+>N!Q6GxO`a@_f^6Kx{%}F3G2X+Nb zih=aQCw=4>{G%YU*FV6`k+l+#*yh4|+>WZ%Smb=f_3y&sL{hvlNS{>Rnlc9E)(%MF zDbDehy--nWvMc#alu#T#Q5in!H8BMYg;M=TCT=3{WpFcExHv%i0Nr-Rs=-2+gclMO z;GoBJXs&*jux!uqZsf6W@9++V-M-N}fRe(i0+dUuF}}WFEIAYwL^84@PW0b|e9lXD zxF;R3g8USvyJTI4Fc@=I#bU+>e4l)iGG#q83iB-7 zv2Js2(Wv6;_!_zXci_AG=TLQdVf-VE&XXixU)+w(xAPiaVglW>iUl zT}`sG?6Jj8y;&(slz6F=jcU}~kpnJQ2NeU#uh7^PCpb5ZP{@xywmZtYjv8!Q?Q}F<0Sc?Y&vlGZL%b{hOnV%(CbqsoNK zZS@94cM`k}UKw}JUqgK(IzigEC!szlO;f6=QSo2q37VW_;ZN6#o}FdmoZ$I;fD~uO zp{Nx{y4jsw9QFFw@#?J_Nu`o3Sp={w2eH32^D!Wc@yCv{5_SgvUUNC>wDdb+9N3Da zQp~!r!eZgS=tXlsP+2k|E1+ZG4>U87%q}YD9dHZUhL?n9v8=$r6NVXqrFBIcW^l0) zls{mpC@ivAQ&%fg7{TReAV?ay%SSZ1^#l#GtpVisyBfe)%-A~8f|aYi ziiQx!j3mP>una3f!;}u3m*)(s4Qf^%87WJN$-3gQp{Mk1f~sklECZ@plpb4IAQl)MQ=R3@2A?8D zMetA8MS9NF9uFxf#m(0E;?>b;=u+>?4wQWyFQRL#qEkvw-v;pXrCjf_U94XPFU;C6 zg6SOPr{nIKTF<)Jywb5Dks#jw#@jm9##*s9s=w7Kj=H6f%?NP(`^q0kj_Pk-f*n$5 zB_))hDma!7!96hVFd>Wbbu7cx4!X3 zRedhCBAZ&K-VC-;;nlZFFU4$x%siD&_mewC+>6~)kLcPgzd<(`zN6a~2w(Ww-=(E|1f{EIN}*Getnm4>Pr$?Rr;7q;uL>A0jO zbZc!*Lv4b)@p4m8GP@Rc&*0Y|OV90!GB&>y*$EEK?Vv~hWvfIkvwxNP!E9=+Csc`3 zWQ)E~^pX%3nv-pdV(d4&i{F$%n`TP}ALk{Cw(bgJ;vNtgeGN}NqB{Y_($P1W35pSa zpnBu{9E;^t3JoN2Qz8CK!6%b{r}anu71>|W?Es3GB<8hi>=(TWAO4g=g6rREEA^nu ztb%%48KVke4H{e5C}+B}VYA}ApPx5{T$P^QYw7b=t+UI(9jpkOh5DDmR!mI1}LQh;D)A$(auc&=id@pQhl+1>DLk0z9DQ-Y1o8&raNHsch(+ zO;7)UeCc*Xe}_Wz6+3Cr=t3@m5fs-p-ZH&kx4t0IQ2%Fx5`HPONbVF1gY(5O;42a} z(o;Rx_$H$VN>Cl^MKo;!t3DErjOTRXX#D8(V&QVIUwqypK$gDZ74XWIA^B-7Pn&Sn zN7GyFKE`aE_O7h=v(_472?!3Q8(AqDew9ZrJIEc55Mh*e#8JSZPaN|Oje4>W=6HX3 z@h%!DXAC#xSdanwUGL|w7pLkbfupxgg#;Wp-i=&a3Zz%X^xcX)QvnT8jITp8TY&w1 zZqjpWns#LrbB*J_SJQ!GshT*DSPmRkfWLVM7i9_xegykzIyGE|Aa;a>mF6@0+wUF8!q?PKv^f|wKW%lZQ^B0w1-Xf&L0WeAm1gLfu?v(f!= zpyH#7JW$R6=x{pHKOEYI+ry6_RZ!4hpAA?pRFpoyo!09?E9)`6jq8FCuNAI;yM`fe z^@Z9)8>&-LepOJS6TrNlCe*UI%T72FH6S|xHh1jy(~BBlWGPf6btmy_G%1n8fl_Wr z!3!p8#YShlLv)yz;5xft6;W;`>gLKHdU$;=5Ub*S(D&+8&8ti(D`6A16GSRb-`qvYwlI9ak0u^_&d1%|9xOP|>`@K|Szg6^u1pv7&a^X6 z{JzZ(b%d2?cw>t+6Nt4wdZxx4q1OGL>(=Ng2a_1ia)EF{BhlStzlkd_;W_e!*^(Fd z_a9v2lBVq1I5R$j3&#RdU;=Vdb!n5Sf@9{Xk27Q5lTk`+#}Gh2jIsT8zyCNg2T>qv zBpZwFw!kpF^%p>zv1R~LY7hg3N~WWW_SAp!sgp+^NWxRf`pT; z#ADRUE1o6%{HSBgI_Y{C1Im7opU8(bG7P%or51^^sQESe1Cs{+VlhMCBpwfhD6aot zb*KRx3KfpNOcfmta7dHrvybPySv1Jevqb3n0X`lCyv&`Q#VyHOrXUhc4ZZ#yM03F1 zu7`km0w!o5-7t0XbYE+uTAlc%gqSJ7(-vVuN5Y8Y{?D$j-Q`xS6Wsx~%cr~E+ zQ)MqiYQB|}wUedi>yrKVzrPK5nrEgYqe5Y8>o!V&tbW62z1v&QHslSL|aWBYB_=mokUi_n2&(4MGOXUrERL(Kl)DM*}xB^;zPnCdK74X57Xu87}2WIx5sh=lmUdFM;Yb zhHT@%tY}LJIDWuRh)#&2)9jMAjz3a4j_$Ic<@U}erB>2qo0J#{35s59Ec4?KI~7!~ zoBb<7;&^t?gA~6D=q#y<`@q)XTDNL??5kPBSo4vQm!*(|&yz#4yA%pmc^Q3n4=JSN52FMJV5$;z!c6D`$nK3A|WSQpRVDJDD6>I4phUo#9t!-zt>s;HbGn zm{kOPgQ35VKQaSAJ2^1nDX!vR!qM#xTVlw<%xWX!l)6pon7Agg~tNE0Fle?Aq&eC-l=D_U8~b0#G%{ytYp zV7ws3h$GPv(1&9UjiOmTXmn3du7pp3k>jzwyWZ@VvgCVDi1?~Rm49i_41Ze3ABG$< zrQAbe>8M26pxW7|@JTNF-v3ETEos)@ldfixu3=DLP-PdwN0s9AT2m`P>XM^W-wL5*8EYnxp zKWQuk41?vhZae|Kdsbg!kZHZ3k1R@B<1548#j_D#*}(GF06=KQNwv{71XBYDjDXl1 zxfZHe&tu1q&Iq36_Fw@@q%VUPIg8>!Q6a)6b*&>BEf}+1U3(umg+45MS5%w9Vz{m{!ueyR`C$i&)_32)w+cGe~i~0#|0Y^#L|^ zt2J%?(h)oHAX&IaX&hmY#CY6VZ% zsjB#FHw$NDEyIYH4acn{6Oo-g^Y`yrEAdr!-;dI(=Y7~LRWSAz!c=n3-qEG#oWGRA z@*C-IdviK_muYl98bsV=Q3kL+=nynbYtd3XUFwbjaeVJ6bJK-Xgu_pM8fN9DKsXdO zW1mrSLwTovNK2L2;)9}wXk7V|5C9YMKuRh*e@fO}~?T37Kod-2oBqm5yyx3!sWb68fX(F;4$=|Su@G#ixaU;A6CP3Yf_T~WbT_pnh**@ zF9O79v@-_tYme)i{oPJUajYUB>*A}9m~{dE@s|lneS`p95lKQC&h)5FBXKM$Ap9b_ zz~NR*=7@h433j*#S7wQx8)MHS$^t4W0U{I)4}fvk*flp(L$;cP#)Aal-bTmBqrbw! zn#$PW$X~m9N@?C82~-r3(s-$j0fJ_A{v)M?E&|dzBg-l01bKXwM=E+cFHmVxafq56 zxGVGqVYoj3_Q60KwZ2fEuTKTWh#pZ`TDgD)2zhzYxlf@;6YmKy9KzIaW0MIpfr&{w z!~O`ZM3!_IAt;diTW_6?EM(D@`$h0GbSV2o*LjdOStpvjgl&_in20XE8Q4cN1!kJX zz=mxiuB#!Q#=E^?`6YTDzuBPTqOZWCUrGjAZ$($kClI@j%OrV=@Mlh&U1IOH-+DY8 zk26Ea*Fpe)aG4I|23?m%O=uoH8ax*>er7$aajTJPKR-h8ql~cCT!EkW+943fXVlg#nMd{wlc<97PE#g?<__IR`gqe!zvo<8j1rFtPL9|v5I+hvv>`crP-;S25 zlad4$KQwv77JDs{7#(x+bOb$adyW+&U;kX^Hv!$EU#`gOiUvhLVt+a{W=m;190o98 z-(j0!Nf!VLf<~>`4H5&L8=C|IROSY&?OkSFG$HF(uO{O|M`q+GN`%7~gq|gMxMe_> zv!9kGd&Jk(@-rp=Zg{_$D^Mfw)j<5pNE!woT@d}w;a@|s;}W^6!-)0!QGBS~-2yU* zpihs0z%cCsx!w~mO3Z{$qH8VaaZ+%?ah4_NSKXm%I}{Ouu+v3F3|GQqt*&8@a?V{R z=11qc$k{G>g#p&tMO>4=v8r!(v6Blf35{%r!|U`!l#jdpZDJxw28>dxAYmv*fy$q5y8Y%m zL;wSb@Xn%8e-M)9(=hzv&UPrrr7R*c=v~T-ics#~q$>A29N~!`O2I~X+YfGiqH5Ox zH79%LR`@@qTAhrcp?ZfeJE!z>UK|5FJV8x-eqy2=WB*`+1r+S%QD4?lwzFxn(|YQ6 zR)WR$S{=1cmlIIsK@g_prP7l80VL6uM83@;pF>a#So$-gjD>X$TtvLg?wr+bz+TvgQ6i?<5)ll-VH{w5^okGO z*CE&V>mA)1XknS`yf}xMy-0mhHR&G6l+qYlQ*^RZ*Aik0IhY2AZ7PkfFoHt) z1|x3|M8LD5&`;f7b|kcf_<4vTa0>~Z>=rdn(+W1`93p}yf8IQh!80%8aqg|BUIcENV$0`wt{!mN0 z`o^|`*tRn>N8k4I#?XLf@Q^#iV^G7K$}LJs6q2f9Z02il%124fPq^{42sI~r3m1U! z19)oj*rm=Bdr9&ZXwvX6`2Pb*K(@apNz@O023w>SyKqk_FX}e+X-P5Qr8#c9cWsT^ zhdUY-RgADHdRKPuD%do!5WRf8jZoWEe;4$)o>Smw>TZ=iH@CD}Qp3#SNE($>3d2h? zBkAH*@qXT#z~|($`W_-yIMWuy>K{5*gt`(hcxZvcF|uAoDq99Vj#-5$n&Q%rS| zcYAT9*D(#Ts+5M1&LLS8IJ6O|xnaiw0{mbrk=*fXeV!W!UBKoeL#m0Zis*~@Kn#|Z z%6>QRPJWMQ)7_m6m4UWwJ|}jX3Zh;AH*%%$fJ%1t z1o5J$)`8U|P&M-s4TnVhV!@A8DqZaZZUzqQeSBC0hNmStg$B^#Tx>P&C*X{j?xW#G zVEnd^fF@5iQZD{`h+pb7h=SRr3F@q#)8ch#ufk$OS-RQbMfdD)1a#?x`6+0(v>P$7 zA-_jE^Tpg-t%+tMf)kzUw&nELf?YKd?##9NX_P@Bh7NFkC#xu^{Rd2KL%Q=LrdlW` z@~P-nU1;2(G{H+!1Y*lEs2&}t*_rMM_*$u#r*K4`zV*L3w#mLDsf+TlRL}c1>3bgj z4_C_|>%R*jKT+(Osi5<-W+qO8>dei)#mHV?PPy$ znMMrHsDvi41gEFZ(?2VF^^%2w07i6QB?;ZPiUV2$n? z{i+;0((|mO-$>8%4}tAh&zu>R708NX@(Aj$Oa$!WH%n5hd>xx~%d2kEf%Y>ymq zS?TxTH5w`3r^G5z6St?jycZdSZ}fksymT_`;?WHIf7kcsLq7ah#HfJU_+t*{x<&|3 z$_5`^p#YRsTBx%X2ENu%ag zj8pZUagw*d+408c6u52>%j~HjOx>=WP6C@cB@zzgs3#K#cx^zE1|p5} zXRp-#EdTl4e4O)$fIAam&-qXhl}7k+=SR*O01teF?T7_zm4ia z5`pM2GhOb7#n*t$oxigrh6eD8p~!vzgoexB5|x=oo0YMhKVDxz*JpmN3vPjuE4=x= zThF7OGt)g?O~PnvE=cE;a6Y2$SNB|)o0LgkwbKQ_)XKyKanM^%Zo&QQbK&L7YVMe? zKR$5lsxP{7E2L&VvN7>lDpva$re&S|W1&KLM}`AEW1WK~LximeM2?$Rj9Rn8-4; zmM;FvMY+uZwq7zhD{{yuP41Duxo}O|>7h^2%c=9?mgqQZyN2msJ!K)b^}HyFZKqVV z5r?$;)B%bv4JKG|YJI`#<@#*pZ#8WU3*nvBVaNit$8;kQnCs5dtVdH4Jh!2X-SsZ0Zp(Kpw0BC z&pE`QOT$h0i6jtLJA$2@p}t5l`Sg*OWoq z8-VA>!V<_LfK#k>nb%*3w@E-NxK4on@V+Y;wVf_rFqc;yr&s}-c~S|Z@eYVb<%9-y z(i|;Ql6g*g+*X1A^-QHSRhEe~(9ClG0X$o~n$eC(HnZFpqI{UwV)KXIR3GMp2z10q zSfg#aCC+^|){5M-r&>)u-Ca}la%yVw0MNB()$6YQ?NfKNtN>1P{09lps(E}tHHDk# z1wf!ikNutAJKJAuWkqSKMJ@-q-T?@Xl2QSAuQ9ZM%< zHo{?zSMK1AGi71}ysI;Fm8{weOc3j=e?9QB0KGgE2p}7GptupOvPDI5Ue_S8bY1 znS14@2Lk#Jd-HnkQ|7zGe@AUjIlMS7YPok91z`@u83w(LY?*jQtFiHk*U*bL6O+4x zQk3-gE9`wx49beueh%q)h`M)g6KB3c9R1t*atu!G=6-Ze!VVtu{n$=KrL`Sea-wnL(9w025av;^bPVPe8_S;lObQ@7>m7R z589bD4-A=u3&R>IqL z4&#AL5^dbkjsB0^|95gYwQu>-Bn1cLVEDbAe=>EMu9Ddz4 z^f;0RNa(5F?ofAPUpZyDDzvKV%TKzBYP`ZOB(`xvg)Bv*jJU6nJ@tqjTm>~IX;b#~ z8u>yRxHb+3I)du~vbwXD)lN^~Fv*1QJ>P2UOppBwdJKs;&+jWznkH4MWTbt7wT$iD zsxGuwMEG#mKzj|7L^asmBgSN3Fb=3L65ATz&LMc`FRAtU5pls`Y>ku*Jzq91?QPva zD|TZ_R4rw2@PH)Ia}3QPa_23V(S2Ox<&(?B0{q-9Gd zV|!v7#dT#r>$Q^yXL4;)n;-AgC}~LQCR3H~ehL<-{vT!84E8q&<9BS^uiF2EA-*<4|#V?IN?8c9GA08#vkU z@{mQV5_3Ps;(;)?6LpFRbnb@+Jn?AnE>LR{U%g$z7090vkth1oGZve|o>RICgq-7j zd8nB|hWv3|zNiuy#2iKq^bjc|_qjbi*)~(*My-wN#oS%}bg(t*DS1Qa2Afiw&g=<{ zQwaX&dt`%noK2~8&~7H;h^e5skJ=Hs3hF+5p7`-Do@yDt4phANWFqGiJ0)YSv&45s2a9oOH>aeL|5zxfoAz$Z=2})h_nH^m1^zhS0bXaypnA zq{;OXr@nwT9i+W^ad0dmGGYIZ;uP@~%FVuwH!I`2pPg}aIYU!l$Czr;5FGF>OowEq zlDab%gxKEOW&BFF1a&T0v<=+21pT*IER>oWt3r5?{AXXQoU-ghPgiJ3^u>YNF%+9) z3WM8hg#Ce+D!der`r1NkoDp48s7A%~Abxsn?tR@2q_2QR3Vy<7lXycEaY;x*DkkB<*=G#q*>$dhVOur9t^|(0{e< zB~-1PAI8ck0(tB#2HqHkH!I>AJk&ZVidS=k;}aj`3ae;HaxgcCmh)N)6ih6Riv`Ou z$KuzhE z2oLgF$DlO&cg-o}3W&oVCOg2iwsbbVdm8qs9xrVu zya?E(3nF+f-E{ zj&8NJX%#ZtqyWJtOIqq!i)6MZ^?$nwtT!i{@;m}v^=mhX%%&c#ZpkSQ>r4uXF_5tF zv)Z&)rm|Pb)4A^P3=jaHg<{);UN{bdPxlU%@g(I*Jk*eujNX={=)&A*6E+|!XFxYIHvCIXRRuBYg@!uAm5oV2-Ypd^O}xTs?QV$4H>`S&5@u8ih1?{9g?K0Mhb2XwB7dLFrEr~4^WBE;$ zKbs^(3hEx`ueIq>5b25|01$`T+n~53TNXFp2CLmfNd2Tae#LFoNtyg=YyPB@_ZiVj zZ&IssJ2j=t`?o3hMw*hz9F-B)x~zB^&>nea1v7=p7FO5U1N0|;6;2*dXUTm%8d&A$i_X*W~Yns*z4gfN-85c>-PJ;(cHzxlKFCJoi*T#|Rw?g@v$4<{-(JM3Qn4 z7X+Z)kg(|ZN3(h(r!*vyR^ZOO3fvuVr1bWOF$U0VYXpR^wZoxA<-jhw`#{$l?) ze8j}yYVJogtBlTOR_&Zgg3(kT72%Igh+Y}5_+5X3Tg*J(Rq*2-44CvuXTAW8kn@Tb z?jt4EcJrH@TFjt4%VOV}j~5$XAk)5^KMGDb z5;HjR{N*qRYW0~`^s$aiz*JbC{Q!OeaOAXvXejruTHQ+~jcgfc>_4SffyaYI>sxyc zmUCd%r~l2VqBPzi2x-g6)RO+qvs9SEt0ub%wyvgqfU@ERF63Qvm-gFfj;T||t)GkE zf)qe~!qOv9SulR0+Io%jH4Pi&=g*vZ%xmM21B%`+1r=vzWvCH3KeveW>V41KEOMFQ4U-elLUE=oov|1lrx8T| zZ*-rsM3$f0Ev*HGXOD7x0Ka0QQxuc(aGsAjO^!>A=aeZnc>68)^rW3f8{* zN!+*2cX$-8)g7m$1Rkv~urj_CE7;d*i8!50&TL(S;6owugQCa`oJRCbXW2R3xh$+G ztHwiE5GTeSbHK=)Qr=&4@wa`S8 zYU_u-C4^I)Qpc7LMx4?=`GwjFgx)LYmI@orl4;c6eA7sRa zO123KO~~Ok_!i*;QfNGm3d8eNwm{luIPxa2UG}0RIrKU4oe9lgKRBWAV+)OgvMSsK zHeRu|XmaoMbear&+dUZa`cu!i)Ji25gay;p(ijJ`t5+i;8CI561HZaoti?VvxJ9d?qxu8QLS~g7a5vgu@ z(PAjla#S|8=44<>oIsq%wk(g=@XYA4{2HFSEw|}XjjMrSpey0R zuOwf3l$7w_;rzT$?I`(^?a#D>Crn9*&YSC(gb)R@WADgAgP@`77IfzNSAaV-7v%x> zT;GLamI}=}Ru-5B>vDYY_D!^4_87bw6R`tK-pp zXLhyy)ld*V#>_BU0Ths1L3vBw{gJM8PC&4ay1fmZaED(fwO%^V@ZOG&e^%{NM4jr|o-!tUEpuI~8 z5ucS+?G(~HMfwqt2SM#9vAl_j^&D` zl!pJKOMoNnt5}hn1tq&Dp~Q`3yCyyY(Y6tTkA_w`Ho&tTCTcvDrK!s7REkvVDQeQbT8A{B03@ z>l*dP^GU!faEQX+JnUCEEK59j)lou#S22KsAX4q8bxp;!g+!MQF3}k7n{@z<%YBVW zT}j%qvH;EllOLYZLh6Xy?&`_05O%djEZ@vJ_9xLJoY4md_%OTW@J1P3r|b2=(e zyr{*OrKUytfZQ4ul-?{?=<@xtBFBk&h^PT*Gyr^Vw(Nr~E|?DNCj>*=yaRtaz66Kw zj~!ZJ(7aB?nOzwXQf}sD7MBLxZ?(F1LVB+>bYzWywUtuWYS1osT+d_hiCZdpU+3Bk zTVzyHh)9~3)as6eSr9G#iR}t!H-o(jXd=;ld|~^FPU|c`0Rv3=!j-$K{Mn299A6Dx z^77b1L%|yUMJMs~g-KL@-W-+BQ*vx$&fCbu||0hJbBQMbq?IRmG zd%}&@8wZ&DPg>BtQ=KxgI9FP?_`)(MCvIW&!Q}w>DD&%88^W3iI=5$V=yzbigWQDH1XjS)OCfEZb7F_ zZn`+cAZBqSy;J>lM?(O;7%m56dvKI#31#s0YD*YuZW0kqG8Hu?OS#dpG6C63BQ?j? zwBsjxg}Cn!_6R5Bh&#z9Quz4*9XSKD+D_>?fgtvnGS$O-$bbDoCpltHH>NKD`*e~2 z*#=8yUl>>zcLBzy{kFBRR82SY)tJ0TTrfGt0+Ny%(7cD30xF>#hceh?M0V<;PyoO1 z?8Io8>;!uCyfYUwpwWu_3VwnXl47q8npoe`a2tm>^=LUEX0?lJoxCMJM>dW<6#}Ny zrjd|@KJTeP8#4~>#cb>I#8oi?Y=JRLx$Y4KMoE~Ctbv<`16Z@r_+%SsR8KtEDSg6V zaMgr9ui>q#fEkpp@O8tYvK!;i`gSF5D3K2q+2!GxXf}Z{Gvm@ry0;klL46f{=m#uH zebvu_=YK0K>9TngL6f_n78LZTv@0#2qcN!=s@hBm6o^()yq9}$yaFG?+bHLIV?sJh zQwMLU(Yp)|Sha-C!UuA18GLi0X<(_&3qyd=q*vUXL6W#)e~{l);?X3<)ITA-{JYy@ z0Bdl?zm<-Z7ez7+CVC+r&Uk^*cnd4!Tc*o3MPrB>Rqyw)f{#y`S)GHp-vO8S6CNS8 z$u-E{SVDCe?UORBI+ z5fO!Q?oTvUOG#?n8@#NOW-YH4UEq7#Z943{3LiQ4y*E3ZlnnU{HLJVzBT1vvt<59A zYgTtZh@w6DB4sMArq?4fvS!JC1kdMh`iop1rr?h|hN#*9ELNTlqJ~erdcUEv$h6Dr zmadZ&ViAQ;cfeA&7Uw|jXrZqN-k0oR{NrCPXqjY}h53~`>jB6$WY^)t(4oRfIHi5U zH_Zc#Z~awBKGYx$=^iMb?w^gR_j{_sc+av~=47460m80KlCFgYKbHrzX0F|O&>wnM zkth@leDUWoM)?{@SX=DX9WSI=iAxfACpHaTLl-tK$%Eoy`Sn8I^lK1QR7~YE-m9a` zChMkPdHnVj8u}<{5k~<7xqbkzuX@OP+SUHLGr6M*_p2Xd=PQw)&0xU|RF8j_{h5I_ zNSfJ`ct~wy&4iNS1np*flnogRx{=K_7`0MPn1B;pTrfltrs{{Kq0@un5Pp zkRvpcBxEjD;iLB-3+g231`=7Qr@!2|B4*uX17>Gtj>eTim~h znqnwcl3Ch(z^-+g@WHfRW-P2mCPigr%Lkbe zGzqRA3=hyvnVsC$cD%f)3Gp@n9witVnyCk1{wBkHY6o)lkm1C`Q16!{48YgQ1I46Q zjPRxyiJQJu+CT%h^n8_-k!Kh>PFW&XKBHguf9VnJ)F|(vC0c#Pp}keidU_ zz0x!AN}y-VB;{)#@2TvmDiE0hy>SJfUMCVu_3)rU=n5N@1g4W%xZ90LRsq=B@(|Mp zYyDY~-$jR~48oinPfVRvE?XbWKu!mi1oW)4f-1@z^x+B$ zRK}oa*yeFp`#5dCTFhCdg4Z2ZA$4wF+{G03LZ*Lp@%QrKgB>vVmTR~jXPd5n!X)~U ztT%nO=-VjpNAtryo#$e|kRARwAAv1jRjfdI(_ zcAwAkknYr`Mnolf^4F|BF??pR+-_(Zu~mA4$n8kMXY|1KS*40Xfx&f0S9_kDL=50; z(Yg}81urK!=<4UVuF+ZeQ0R;32#b|;??H$RjThE=D*eFRjXQh||NP_CO63! z80n+r0Mad4oPr|AjEObR%SVfineH3i^f-B8yf5sOIe|>Fz>6HGvWo*5{r#AG$Hd0r z=BjJM?bg#nig2^M{rByt??Hc6I1#;7WIQuqBBz7xhqJF3wEKw#B7YtJ-|m`=?Cf~8 zvnDW8XBqgCH-Hg05<=Y`;B6#%vKxAY3a8eb(8`+IpH4!$+L8xs1Wjhvx4UOwIa}mw zTeHt?egfga(fz4n$C=`YCESpp{f!33c24-1yY)BegJ2X#&>sf{qg^jh4))Z@^V{WWE3*>cHM zMp+u$&4Un7GI&=@f~0}n)LCR{Em^XVVi!kHDoX!Mh>TFzgwIxG=qaQR%6w4cH!Kng z0)Juy>V|ZgG*L?-yL_2F;Wzqx;oztroN6*!HW?ooXYq42ZkNFD>qO4H8DJlCQc%?Y zO)HB3kBRT$JLK+<7(2H;&)J7b_Z#WEf4$#JX`sIxqp62~{#1{Hl}T(w$|;9M#~&+H z)=AQ?*$ORsL6=eZV~jS5PN~@Dke|QT6u4_S#4*5%VA-eso53_6&{p7)>$u-ylw$F7 zMy>abCP$6rdpT@w{dD$-Oj@dC|HqBLsFvVaXLIiH!Om^H3~}!REoF#WB#O<0(=irJ zLaM-zmt%BQaT}t92@yU%L7Z*QoCIkV3Rl>6);Bhm6?eb6=$8)$`7PEfCT<7WUL(nN zsS|?U`9k`WAOeRf>ef~|Y&XhKx|X3Nm|CjY02 zZ1dbLnY$*G;Dcxl#rSbU_cp1AApxlX>HCvb5bDJoGkQWDrI|}i-tjM zNA)U_gCDhvhhSS&BMkIuGGeABAQFrmhI$;9l9J4d%*?h%Pr|ItJqwc|wazx6jIWIKiy zO$M89!X?uQs`c4P|%^W z8!g{+diqA9+c`}caZ6^tv#LXWpTSbrlw`V}WNxB>0Z%dj^NK6dgHX4GILh8$UD&l} ztF!4;bL8GH2#4q>d`?{b1>lW~)&z29;O-lfrPDejZW5V!8ap3jam|Ezd;Nn3r?V-QkFs(@rho zqvPyo7Q{tR!(J?CRb5N!b@&&pxW{0o$z);=Bt*Q!KnY8oFiG&gx^>j|%FY?5$YohbP4{yjtF@{Akz`nigQSrZ@;Vt521ulJV!Z+qg=Z_s)ra{( z*^N0Sr#akOTZ4wRNwV0uLSt98o$1>&C|oLwbfBTf8&xDWmoV={%VQc#TTHhhJN->= zlm*DN5f8cG1lN0?3eY>n=Zox0L=-T|)@6AV%T@+3IDD{gX!zI6iDNaE)Wc)lEAc(TE8-d)X|&hlx`m&yLfxuT`^u z$@05_{mS+pMpfMv_=o}+u3yPs(QtJRD+cG-EvO)?QnJ9#YNmf+cscnLCK8VMuoB*c zOe~A)WAaPOTgqy*=;-YO+7EHN@t*hvcO%lKpnwRp=npPc` zwW60Zqen^Y($64IuVZ&GU_t{Xg}EzSb^Pf05Uj+Fl`Hgsw0pPVaewbF{@NQS$r(rn zseC`nJ(+}>wWq)iP+(H)QZc$Vy!UXRjnRcWVEe5KN3@m3u))aIHqu)3$O* zF-4t9_r*xK%95;JLK35(hj<|;|AK!hqlaV3v|`=pyy&Dl(`ud1zon|-Q9|qfN2rr% z?SlklDF@<-RN3Ez4M;#)lg(NUNvf***AAy^*lzh|4qBg@bi%6e)*6L71+z{9s=w`2 z4r4@cju2}hQh$x3+~L=}zofFm^VfzrW9UaD1jN3Otx#B=6+MK+aMI*!(g}2E&}(_F zy+COsK0?#O<0A%f__B~v3}g&?qM`C0k*DHKRy`_)XnFRibfUivV|txC7qiRVDsX8n zMRv?&5#~-sZ}DhAOtQwAg3RmB<R&rF{TaLJqD4bb9*L(>QU*(pyJCnRq zTGL{XJ=q$!ufaC!EAk}Dq_CptLyvC<@+O%?6R#e#F~g-U#q_tFe>hlov0QK)?MXov zMS@52B25S$ww(7I5QoN)UGeX#sqcoCpUoU?-*W@<`XKNJ&QD9s76;M|RUCxe9h;Lp ziQudV@N7=6z|~tzBvh+2=S(ET4O&0&l)}Y8?NDAtc0E-B3O_)%`CZ@$`^$$&tI%NM0J|g#ch`!*6OE@TvxAtu*y^05>N38remR=ny^^@eLSo2l#+vM2DX z-t&K0ABJTLA?~C1vbw{@TK$fWe7M@QmuIEAtY7T1C~n$-zo-EFIQ5BcMS>aE`hMp| zcLR&v+95!D5dNt|Cb*?r^v6dR6m%XgZoxQO-(#@q;}DA5!}y?hYtkS$cMrWOSM5T* z%c7ediU+WuKZpd?eL{Ji0b$UYH0KF$p?tYTIm*N3(Va3S?5i0>E8KB zj8AYSHzybUj;-zsLU(!_!(3Gg`!I&%n4&nk}2)k59@THv)^s51_pGqJ||xH=`^ zZi5o&__^W;g)~q@BNZ%|<0YC}A_O1NO!Njy+ z<&Dxs?^^VTFq00ot(IvJKO5%NdRdxK}k*f0&CH#tF%i=y^uj-D{L-|q%43KN5z6~LcC`G}5zZm@a{|c@IcAZj%kU;;J3(5d( zJBKc!^PP{4H?9*`B3+ogCth|>X{5!6)1TTV8ae7`d?*-f+Q(savhLDR8a_Dz{-n1- zn3_UW4ZCMesb5CL*-hXN&|su{3>80!_Dm3D`YPxnFrxt)Xo(QUtmK^F=u2rekvn|= zNYeTd-vXvRNUe+_7mQJ^)!{r>(jfd%N3>*=F~ev!_^))0dlq{Y6svqRs&9sU(v5qa z6xueir3kQv?2RSHA!*^<*%S;gWaY00X=%zVxT2SO9`G66h~oqfMEQI7z?Mz7|60BS zwRrbNrKPR6A8Gtod*%%)zX&Bp{g=gUTa80o9-DNowzT{%>~2S|BZI35u~C}cW>~+Y z6l2HY>hVLA)~Fr3N04M&x*BNf!NL;UA!ItU5w)Rkf1}cz^eog?noV*ElyVj z@JRwm{009$Sr=Ot=Zc!2pie~X1DC^XA>D$ak6T45&}ww&ZsQE2bHrkFO0=nK684O$ zO^FQUYv3K7nqttD%+Q1K$!rNiM!gxho)K+Ri`#nGRRX3^IudPWo7Vh}(qYX<6BV`ZjH- zksUuWV)wNS4;SdDC@(CoAw-|1SZ{>9kcL0(IFzf-JE9$Yek%up^}92RhiX!HR^&70 zd6BBm@+3PzeMRgF1CaM?y>O_xb=^?9sMD^B$N<=!3t6aR$QrzY;ctHdCv7o7a@LT* z)X^j5J^;Y>K3Lw0SO3=9%SJaw$zb2LJB$6bgt63PMj2RWm2|jXG(h)E8*pfVm)!5G zsE(uwmoWDXpI6|hsqJfF#j+m^bwcI{KKfA@hnUYJ7HMs^Waoo6l_G z>*#WUFr%>w65uremjgQ#kg(hgPkyWSkt{|;#?bRzHG4cbLP)Dqa(l;LYUbK*dAP~1 zp{@g|N_Uqst03NB+Pt__O_E5}3`n@x@8(~<-u(OPO21CB=Hs&R{# zwneAY@^N}?H+9{lj(SCx(osfMh1^7qNhHJS!L{%9)48uSdJX8dKT%+5q5KL1t_Jg< zES2tF!;C{c(HR88qvlzrJ z`~0K6iF}zjWnbg4McdQ)M9vv7!ortU4>ZHot2RO-(CRb6AnKIPJE*kNud%F6tuxqL z_;k)XyjwJcyKTbj@K0hq$v_E^@F#P$A7WGALba18&h&p01)>X;;<6*M?y^dr>(>kh z%dZ2@gf9`UzQ*bqY))XAS%eIvf2FS;o=ZlA8!Rly78@@7-)FE2mEa;2C?>2?~yee5Ajl1t*@~sDxF(St}iBVG&I3F~Eyz7j(N0{w^@1p@+&6 zXYa{|nFxo%&^zHMQ(f7S|Yn_7<_n-`-L54_3wRt_vou(vopewh*aVq4aLA zR_8t*@@uxv-Q#Zx?MZD)y%W>YRa~ahvcz&j6q@u0qLOgn$N9QBogbr7N-4h#*siR= zw?|%@LKnS)6diCmsy7|ORa2l0sCCp0K9p&cd3CYc&}>6n&W%U%+IlKPb|H4UQ>Auk z9Asl@Ql}7x$ZGzgY2`OWTKVLVJ6{wy|O}~eeeSjZ6 z+8$LZfJ-hRAwBH5+In^7=*(qJ2kOxN(4NUkNdd`+lwV<%GM2Ge#k{StSi)?~nSD;E zq{N8vO3}0(k4wSZ&jE$#uzq>L_Pqnv`!xGb zh)u*z6}&m_B8>bPAo5l07kTMipbsTdGOwee@)^= z6n)t{!W1pLAg5w_MmW=?;w3xK5ZTh#WkJ!ON2R4CiawnOfpeCuTqETa~b zi-m1%AhI^E@#Lsfa5E5lG9LixaPz{*`A&ZHdf@pq*@B<`1mo1WHhdRo;5+R)GG;1} zE_p)D%^(s&Empu?=TtyhpL0^`sH0bJEQUMMYESj3AA#a#hn%r5xK5(fdK0wx9c>WX zhY_nmz}W&2UI+(WK%aJ*Sh`MP&JQ0QJC>Xwd8<9PwSYwjVa5Qd+ni7vcYx`o~N0 z;u9J^J+`{!FSa<9vUD+c&s`&8(#_p&h^n7oyL?i;_NB!F5(TUVzlhK8EM0vw+3EZV zq+g>m#h6*lP?BV=*WF33-;4%2uv>LOEV~zeA1@3{*f9I9<`zd7_A0x($D1&1TMo|NF_~N&Fi3(!+B6#e8a^?wQca$^8`~6ak4s9; z!{JzAW@RREPYnsbgFP6S^#v))bQeYpa8?~~@uoiH1szjX2}^BYyQtd)h0zLC*_dJs zS$y;ULV@CjaF^)VaPw>;F&^f;!wJLkEId+PVbD^v0EAr2oTL0QHt?h~3F=phG(a0f z84w#7@ZQzcZ;Vw=quUa&PRgLW4SyUxjnho9Yr<1yYpNxtb zD!1ryrWwHWJvSJfy|?z7d;`O-$nsV49QHqPRTu$EW>_>|J3((lASr556b%5fcQ+%H z(`UbG+?XTB{DVLmB}+Pp{FZD~=6KYA(2718HV}MxgU$EnxVCWakme57jHYV8V(<|0 z<9Y|n!a(ghzpFRF7`*DvHZP0ZXxc8 zyA5C=@eSgpbzCSNSB2wV0ny`NIN?ZpVxLc4ikM%0Q&JO+8g*Ui6MT;6z>7QHd`d-j z5JO#>!4xz2CJD1AD@FU;DWA5?`eNx#ptC2j{O)P66-rXuE}>pw8nVS$wAOo;sI9n0 zx}8F%)nAk=Pwx$`h)AECzBibeLNsD&I;AqbC5aKXHFh$jhgu zrDC^|#?~zW4MZ3gm)q(}-LJRAHA`)YDm1EijW}gtvgA?)k3LEAK99O%nP9=(&biEU^tF z!@iWF+4Pd~{5xUjX)m+aFgJRys;R0RtU(F|!Pw{er_k}_6?DPPV0o)5lDY|U zOm}`hG!I#=@x?&6P)umUIShWJ)RetrQpQlx?Uq41X@DV(UdEhK)G{lt>c*c^Nn(rV zG%M&;+vS>RhCQl*%YyXxx0=sYpDa&R5N5}XLAwiNupwTovLVD4R3ptcD@6G@<{kX` zPkfXXz^*if4pTHzd-|M8D6D#KA=Y>Ts|1 zcQz~s^!>3PTX+*}k^^M(rdpE0A>@AY8)^agIVVP%suS?5MS^tNn3Ky25%9M40pAWF z@pWJJ=M?H`ui4mTm^kn>ag3`0f){K5x$65*jv8_&BkDi^w8SF8q3awuJ{R%wg`JIKKe`C6`wx2Bd-2sDR#qNsKaPX+XK%wC za>*Z2@mMVfw9GNqqDlNI=Uf-TPwq+z(;s#UG3=hiv@cQ(U42cN^voE z?=!o3uZm^6zhoGgdL0svh9ssw5*7nXd7!pcS7!N{S-`!PDrR?;zrYR$61mnt54@$c7i?QuD+6wtY=Cna zL$4e;S$>SakVb-g04B@l$*H z>fk}li2^Ny!fvwZ{kM*GE&Q|CX?s#uoX91Gb?oX9QZp2|Ij@FDMA2SKFe&VgvrKOR zfrDs`RQ_T6-=d}|wnj^{86$-F1>lPG0~|eeNp!@g8z{Qk4#DRCo;|h^Xq$3wIOWq8 zq)V_L@AB-S*85ghOVI4laPY+VPXGCNkC)wyttY`#`T!uMA86|$wn?vjA#}GG8G2B% zP_HE1UNH1I9F~7(%zeF%54c*m&k2c9G6JBB7arejh_}a}Y2OGjps3=spr#6PNxS2p zW0hQepFXG#f@?y@*8*Szy2h>ttv@XtI-tJ}1LFU_7BdT7Y4=&VGLT6LtZ`^=XtUJ8 zkEwv+BN0DeUt#>Q^~Db6tf*LVFmin*xT74zws)doV@gt_2Pa_@&sQHNMV#Vvp9Zur zJVJzP6s>yHM6>F_&)VDNYALYx8f%vuk}|!B+$#(<6H{(-QPm<)qnHoh1aUAzv+6wB zcpG3-P|LC1t-FZtkUTxv`y=Mh^^5Ao*oZ;AgxwS2vR_$x4eMvbK`^Ysk0wJc*_6N& zjOwYjx{g6ti9>?FM)NCVBL}&92egw+*%iz-Ct+4UhaBmT$ps`b^|~mSapoi&FjoEp zA*P;@l~uxRB}c^QY}Diedt!aNDT4G5Cux!rcV^%Yz9VT$K}CD4JtpEeX5lpd)i+#i zh7}7|wkeDi{`~BZH?9QT)h6A&qcgO!Kx_RRYi`#T1+e4WspmBt^Ak5auhKB_-h-YJ?`^z-X|A5gxZ zZ#ujg(>i)$k(NkyGZWw=-0Hv3Joit=T7Cf-XI_oQN=*XQ);H7bMewXp2Qymp#&dh8 zUq(p@rnXi2>*CS|-fW0R9Js-UC+!$(rPZhcc&1*P^o2^27LTYQuY@ABNhD@Y_xaY$ z6fVh#c}gk^m8OHdb%WG%j6fR=C}l%&bWr6$KETrogDqgS1Ug)e3Z&!je6h3|6WJPm z7IgGBXs6pjgg!L#Kh??gVl`cE`sO>g* zl_IiUZ`|SVo3)fdG_c0O8U`^5-%a_x|BZL@-gG`>GCw(4PBk z23jjvECM(~1Yj+7U&jS(7vejgPAPu?kTx?oXC<&|{Q(5@{_*!Nhzwo)(0FrPhD2zJ zI&i`vv?*k(4Uv^{fo^sn71FpG;zU7uoDDhalrPY2aUSYbw?+X-W)wm4lK@RDS##fc%RX$04G+a1vnje>= zk)rwd=3RSO7wLYME<)K{20%v(d3h4Y?VL*vIk9_|!>GzDnu9&~x#Y;3b6Og}{W>pLu1zE&as+V9OKz>#6 zQoe0tDW4*;HNZT211IM2clT!v5lTrjRW?`C)5tc|v(iIxDcdT4qX8}aqhQF3^K1dS z%<#bqGTkDb%)=9@nXc>Xd;r{h8)rRe$@kJiYw-*YmNKy-dK@x_)sZy4chGDhueFW^ z;tn(%I!1McfzdSaAJ&Wxac|DzoBS*|>fhf%Z3iAe7Xr^-P|Id&nuzc*+K(Ydlyti_ z@e?*-IC3qWG}V4jxdEKi4W_}+$7XxJ)$%CJz)g|9-kv-bNSJvO@NsI%OV<&W3=ALrxQj?0&x;7PQ`-3OGd9y{EF92o(f zpOV=#+zYb>Y%#KwppjCHP4un}2K`{)_;#}yL(&j!^Swx7peiw3XjE`Jq~zqELd~)S{#e+{SDXb)IpM3=Ubj!D1!t&8zmsav~ilT6|jWo zTmUUqJm7)lXhj)nYGuC?=br3bV}Y>8gp!7TC`xyhMV>JN-60{SYB4~Xs(^~NS2=$v zO$%Jq9yrrJGM;Z|;B=8=Ggt$uVA#G$AD)b$yt(#!7V6MHPKJ}4px8NnvCI87kr-(I z<^jF-y_ff74eNiWRuO7%aX9FO?zwLGjXS!;JV-^6woj$axJLd2YffX8dJ;9(>+0X9 zfjs$e0|<@$dpG0%U}iOZ9Tn2^1kbw9oesVg_-QEw=+Siz5?&z<7TT2%-Ne{v?rjDE zjaq`q!HucYg9_@L+0;a|&9YQocg!(v-aTWo_cb`#wjp|hJJU^ZHhhKt#9JKAmqP|n zPC-0KyIR9OaUn6#aK7;=cZnbF(VuY{(_q0NT3Y-`1W@o}OroPz`EfSUt*&DJ90pP?A=xnbmf4Ip~~@Xg2kOaUd8JcWr9Z0c$l_ zxlji!eMF|!0rnsJNt{$&hBoF^6!qS@vyd&yN?dwP|4Zv(G~e@w2SC&x;6a?cSDcJ% z!O7y?GN5_{h{{sg2}9=$X&wCg#zyF_{(e#j>2NkAGk^FXBhFW8U0T*Wt@83 zJ80rJ7Fe53pry0O28~;1XPVjKyQxe0O{hNOa+mzw<;Dj?f&gOyr7P1g<_;7ZESEv8 zO0BoKZYO~mon11-j?iZM%sZReU1t>Er7mKvjMZ|6ogCt}8riLz$Q>X<srlaHfa{0&LY?oziIYBx=?~f2ifLjIBHKf{>0GMrc&N}xxtbnVOR*DSeFxegp zj^=Q!;F4N~b(RRD(JGz!Cz9KNRC$JWw(@=Vqhun(!tFLA3%uG@4}bAe_9oFZ7MFJt zL_8c%x2D5rgCCruVqK~aM|yc=Jsg=G34*A0=oZr1V-zM(X5A1KSh=K4Z|LqNOaGDg zl*D#Kxj~O|&Gvrf^$C6~)%DfROqsI`UweNwea_D5HTcZ@Ixs`sD?soZOvRz*v}=ox zA*JgU53^1i%i^twnUB=ZFrLm|;&viI@?`mw&kijn&Pqcj2p?iO`Su2|WqN5}3(?^A z5nX7oJ1vd$QB@x76R5((ZibP$HAu`xS{zPG7y)s(&}VdLEn2bXTNFWepUGXk`&ROm zHjq!Z;H}>MXk|`y%BLL6v6RY#I2=7;-Kr!Tx`kyC<1({2@H5*fUI(l&|3ZXK1Q00! zwZ>m+vn2UX^7Xa1_O{#b<_#k?FFaEOE;OfX;%0B@BToKmrcQwsNrCKUs9-%0xmMid zKHp^GU%m1P%ki8Gw_r1CbEw3@_jW8Nb&v^{C5csx^&HegSwe2&JC9GB7{T5bCtPjQ zTu$9>bo_6UtWV=Z61v&hY;z{M$}681nRd~)2nZzCJ{;~nUP|C*m<~%w%PgZe@R2t} zJLx8hs+*cK(HUx5;l$|THKIF@u$yvGZX*Sio7IH4xrc@Y#bIQS*JwQt=0Uh`%Rl=zkOZ*_2DRx zGJ{5Cs-iU>M5X0uwtZeG20zrH-qQdh|H@Ny^@GD@h6*F?zrIexSmtsXX7z6hCmzmhI}-L^dr5NNPPHeoh8xcJpYQPu?0}%9hRrTpio#*%u!|G-xGyn+y5aa=5@jsHc zDdXX#>T~Ys=_BlnxgX?+%_fiRCekx7vkY)rM^LC4dA@gscma$X45sl!_mPz6J-cPr z4)kQ|3SfMc&|EPSNH1<=)kQY^HJ3tkSM$*zebC1L@y-#dp#8Yq?HLU)Zy-0ZU|f{T zI?(6OR@u)_ngF%M>MNe~YuT-*KfQy) zk9AQGf&}e2@>c8o&^7x(9^}3*is~Bac+X8-Ea$1dd>{1I!*+z$j6DRFti|f&Q1?Y4 zUh#wghJ4|)b$fPYNV?;knpvRrlE>Zl6=kEe|J&|bkh-b}f#KG$|Ju}|@@iv4{#H;P z6$m6l;iE#k3b8}PdM5fgs;LqOnjOvB&WSqRbh$Hv!go@^ zhC_+cln)AQWpPz!%q~mp8;f ziv(RUB=!h$aRq&AS$h2zvq9(KVnr0as+F#;ZR$yO8lAiE)(*(5O*{3s*K{VAFXFQQ z)bFQqghQSV%k#1zC|pcfwn}S=KTyoF0I{5*2mod~{kdxwb&jOQ98 z{fC~VfYx3vStBm}wgPo~oWuCFxvM-1xQw|a3OYa#BhMgE{4M}J}tY!pxgL(~K znQW;$+_JK!u=LqHa@g8?E5BN#JE*0zaKl)I5pX9Nf^U0%CR+4>DIaCf@JkKHSDL6^ zRKA2NtD@#54b}|Jv`}?X0+m+OWy}gMjS)fQ@||l9>Xy1{CCWv_>W`FDn{dX7%nazhb3KHrqPJU z=R(ucVz~`q^q5}lawcv9(%T8}O(9q6I0Dt(j<27W`I!{k>USGRe7vUXa3Z(by{G_5D2unO{sW!2|h%$}{|`L9g7ha5`~kDMwi=^qc+QzCne%@pH+oSHyJ3Iw zJ`RsrF%>&bAsaODcV!69PUW|qeW)HcLe6)6KXGu%a+*DnDhY%HjOi%LUO9zFfdrKP zG?$>j?BJ?fcAv9}KNI1$1h7cl)R^>$cfgon6Az$mvRP%{8ih5DHwBnMfx2?!ck4m* zGvO>eX!~dH1{+!;YE_WOaXovqsV^#RUjRB|V)x`qIIsScZJ*F8dDkoYqJL*S6{>s8 zTqy|Jsi!a2$-j7H7G z8W@P9h*I%%^^HVB2K~mU z{mUN6Oqx(htRp$4Wy&byg=`VL&^*+JU=pvM)pd7ht4;@R z59dekn#S?h1+4G_!ieuG_TsxJZ8%G!f)(f{W#`HaY^ta7`jeRNl9$T*i1`F^=03w4 z$m>+sCb+4rw%ceHKC8oO!tps_mCGI?gI63hxn+iUb%+TVW`*i-3qG1+A|T}bvZ-1` z%|q03sCCy2U6ym8aD^9IA0;0W0w@|(cni1^7^wyN5Y=`z886!|vvYL6GR2Ov$7P0! zmPh_g@#LS8*oTKXOukMl5>Ib6rBlvbR>ka3Jk`yL#V_P5$2;)WOexPt$Gv+4mjtJN zv1lrN&1hcpHAWKN_jW)^O5Qd2smP4OAv{7w9VIf9MOFdL!C$I4!X$41S-{le8WkJJ z{=I||yZcf83`NiA=;YDxz>q(IC{!~p%F44S8Yxsl35>PSl{9lJJy#*hu%boaUgq!= zDnptEvhyQf>F6$$Jor^CC57d0{I`ij{d-Rm+D23ZWxN%g(936U-VMIK3!HytiYD?- zXqYgba@J*8_YB4ZNrQ3H?DZ}~en(yWjP?_}6)8C*figus>hr*;alus$dZtj9lW>{} zxMte-=6*5}nqJN}EsH)JzmV|50T;@VXBXNY%yQ?#_eNJA{?;`9JeGLE-~W>!F8OF@ zKd%z_0p001O+5kWW_A;ei&bg0hwvh_%GB1v#nc)VbEJ)&tU0^*t3jJhPEZV(bg7yZ z2l+VsJs$ZH9@0X1lCP6g59p(}LppW=n>vLrNco{#e}`MrQ(v!NUs)xqOGly^lnP={ zpv~7J>65-vmudU5AD2|zOc9Bhlu1vUa=Rw$#G>56ECyI*=;wR$@E#h)b=qhH0c z$W%cnq9}6f1_s;YFORau_+pwx4!s51$Sj~cKI6|LeR8IAesMlN6R#isL$M6`)%KgZ zf>~(5%wx#(+gP>T))XHi*dmBkbK6614$s<(`Yg271KW6zAqzpNFnD6)1%_};Ht#h~ z>GX=iQt))it6WXqYEkIG=0%`x?V`-*v^=UX^jwvVKhOBg@L9gOGG&ebicWnvb)7NL z@i{`85eMExmkE3XTCdQ@hq)WIfd=1BV)zK z_fQd6YqS|$H=oTZkX1ndr55O0&%n;79eKz<>*@N+v09|~Ty|~5;d9a+NXgo1ko~^m z)rOI(jt*HRJNIxnbn~N=pttw4`R7Qwj{;lrNY~R)u6}<6R5mW3T=3BmPB1`X zS@DgwjCSl9cMIs7l%F$;S;IxnlvG(skSSS!7S8z+sE3@Awz2U|$lidur~I}q$Oa06 z7pjnc3h*g3M3!N^?5$!6#W0f2PXpW18k!AQ-1S*8DRcw)tDiu_a|JsRIGNJap)+`! z21R)}u^3E5sha^W8qsp3UBo3&nKcg1wtX)o$@w=vcxvOipE|6}KLwk2uy4$W8(E^_ zMQ?6Z0fn3+y8htoxL6Y&pv<|!0`}iY5Rrt9*#!$9S;4t8392ndEoO}h>GrYspVS^U z9ckGLxgDiSuKcyi#&ZKP(L*M#GXWM%)t*n6XY;cnix+3~o zDponsqJpnZzse`*qe5B3c&^+zjE|M^te>niHy#u!LwbzX`VZZM6r&cpsqpTXXz|2* zCrHKem@0sm&(rQ6Nj#IUfzMu1N_7$m_W~#j@y8|q$BgLWVq+Un6`q32qQ!cCKbeBy zgt$(ef;>Vi2uR%e7F-vqf9*ZnBnA6o&Z^j>9C5SKWgpd^2j2`X6M+0bek&5xB7}Kj z#rX|_xdlG1f0C8KW744;N?7mUB(?j{JlGj3rJ29Ggs}=ZpXIxBi6*`1>FY@{*-?5g zWK&ljcEF~;$inwp2dq+~%uf1KBLLrX2FrjjMhhMox%qgkG+F7h`*WIY#f-tzM957) zQ3rg|F-@E|uOU#7;h4||#AB4hC}|(|*>Xo5{Uy9A5gQjQi+g2L*c8)hCxFRul3kj^ z&bYC!6QV-8!7WtWq`c*vM%$v0tw(^*F5nLUQMMvR=B`Zejhr$ecycvz$l5yC+Zp>k z355l7cAEO{o^YJqg+3rpcmjI&_78xaYp@$R9ih{jqdZYvmZ=HM32{aW=`L>dQy{GU z$QBSx0G8*cU6-7+^?N=P{$LrKK5B@6>d74_VP$B ztxgYLb<8$Uo`%WfNG1fQR}k)ymyxmoA1MhIGva+?!UGwMR-~WK0I?z`Gxx!UU-{-+ z@-s=vY__|X@|X4k_--MqdMR@ZPi^o{q@Vk)70?ImYB(4WqHC_=bHk^PGhI!mQQ-om z`;0Y3a6rr@s%1T_VOaCxZz7IZ<$lKO2Y8a86&+BB`%(1N(Uu^@o*|4M&H|^>U3!Iy zs&0*j9!SX`xfZ`~HQ)aBkc&@QYaRlF%WdNV13v(Q>cU%Pm@AW9HmY-7eoxGJYi9Bt zqwZQ46v#sWY3re^p(C2qOk^!h2!{>qRL2r9iaOpGJhRDFa8i`^@s~vBvr6UeCVc%A8SXj z%{3$B0@u3828yiB7|-P`WU>{xq4BXtUk$f!ICb<0%;*m5`s&i5^;9QRUHXo=Ld&n@ zq%{XY!4tU|y{#Z#8s?3!NWl%gRViZ+exBSO;?y-C=YLbbIFI82V$`y>SDH6$IiiaZ|R-iso1JWQ}uPjc@Wx zCj7tqroKrXprCVX*YT$J1LD?aM)Io+LpY0NO)f>zd_NI%Y9!o7Qn*;q#vD}#ez6;5 ziz8y)@oYm)-u8o(ABoAu{i~6+-CgTz8}>75typ+wT$xM2M2N;~aTIlm6x>wTeGh8aOFl^kFy(wX z6_N8i6RN4!WvVxGhpt(=*MkIT(Ijsso;$!9!8|onxza8t$t7D7FHl zr-Hbk2xB7&!YBrOkjZ@{vz;PlaO>Ep}pVeF97xtB>RdaVg|%xkcq^YSZtk zS4)>!^b$98PUC@a9+J7BTj%KX^-J5e`2~CKs?oYXSH+*Ux$l>+=$BV6tI<4NcK3e> zO^RJUT;D?{aE8hq)l#|BN(Leq@?go?T5D+PDKTvNaVN`@^E}piSo?|F!8|%1zXg8* z0MJie`qO36;Lu#hbNaI)HxHO0FO}V52PGeK7|G;u*6hs9rXQvj^_JLN<}_El*r!PZ z)dt<;C%luKPp8ImccCTA3cU0%tEw7wL5IIj^->w}nAWYIc=8-o8Mp1S4V`l)UXR=4LHHvk;8{qR3nnsZ8~A57*YbR$p?{tgMt{SDbf&pRWpacs^^S$u%z&l@h(O+kEKk^9nl}5Dm9@ezt7(ah95oS zEm+41Z5VkbP42$nefu);@ms7KB*M^hUe>BaSxlO2Ngh6r92Z(UR==jOVxEpqWo(Z= zdK0pF{mDL8!jv+W_JXEX4zV$)xc2J~GP4Yr=es^ozr(90=|P0OopqeGvg_rJ%bDG`BEu z-44d6g#8w#=mG-@HtvWba@2Gl6@Cu2iUN8M@XDw1#|i78^Apj1P(CZYzwI46F~~~j zzyR3I%k_}qzyRhEoig2?)EppSUqX{v5t7r^DT>PAN9v%wBq9K7QIDga%V2j>9g??Y zJuq7ozACKzdEXs|Q@K}VSHp7{o43br-pp@WH--7132 zILEfX3MdcCZtJLJBaK~nXk9vFc&6J&`=0eEJj&aGHkJG$_vwFRS-;&La?|Iy5_}d^ zMfN1 z{r0hSJJnVC>kIov9xMqZ897Vv$92qBP;;q1<^u5N^W;;n-h+~fAsLo$;r|f3kp}t0 z${q2>3{Wb!Q}JF63T3ndlJKDU0j{od?Fd0OtfJK8v4Kq*`11ZdgD^pdsvxK?c}HxG z@~TDSBZiL@G&tMT=)Ruii^RHz+#f7>O?^L$)+Vg&&YUU|dVbuAwq&h|rtV9g_<*ba ztUL;DJFdd(CR99z*H@O<#;}GshhPq_9^Ke@qe+RU+VDgmo2=IlqOVdK0@jRE&-8I_ zMhHj6NQDLuH838o#!=8xD=d~Ry)_z#eT72TcYUeAS;?d=U^W5K2P*3X7Mb1ay|L6D zh*>T^iLQ|yOl+5MnAFpZ=2XrP_*4KK&UFp@D`a;R{K$C%X5F9b$2Xt%+mdjllrQFc zq)SuHg0}NNwb)>fM+V`eYxjxU;*Mpoa?Epli?jaFMTCXm`!PsxbhnoMqvA?__8iq= zZjo1Q#?f-F>`2?To3#)j&cGPRD|{l)r!CKamD#TIu`o`mgHM9h!rRZYrcgT=yd{a2 zv(qo&37eOnu^$0YE%;kn86EYiED)NORB*~b-i2zonEII1wE0soVm^>|OJpM~mFL@Y zOY#*6(utL<`7zqm%rdFanY!Jb7m%oe5@qd=0hZqBg7yJc7t(X)W$HF5?RUmMy!y)c zcSy0eWfv$?$8>c$u~YinpB}?f2QJyQjt!}r`41_eItDi=c;$mi{GFv*!pbslbUeh< zX4%(@Rig80+_Cue-z#BfU&uA-3I>)t@RaYytl9hgX|?cP2gWI@6)~%BVn+ zaTRd6s2@C##=*^USsTOQ-2Kg&9jzah*AnM5L>;zS=@cvtdI3BErXLuAB(%cwEi0Z% zvM)*?TMr%Bi?%07V=6v)WMxQ|ZUrol{NW7*q97^@4Igppi;wCs@J2!G#Y}7%#sb$a z8zNar+)KqJqI!8Y<`&S2K1evnO*j-E8+fN9*L}rX%)ur`SB(FpEZ;N(z^fFlhMSUS z_zq3wuD0gZMyvy*54?3Y8Mkra51HPEu-}*P84ceGO9P$#5jrDLGm%$#-+hW7c+&Y= zcHJ>|QjhGo&l%iZ99}26_wL}3GBG@1_46qyXRv|E#axw=%Ag-kSwv;N{eAA1%Vaa} zbaY|}m?k#9*zWizO@(g?rgp|HC-BAa+|lR@BB79N_`;oAcoXVko)8p{v%!>)lA`f( zU&&ayJNKYwpvrBh`cAIby1TSiX!$-ljsw}pOc|47|o~QvW1O=e_$hgd;ey)PK8#8k%legdj*({ zD`Uz#l$r4;K-WzszE+;mIU}tIZl}49Q>#>K60_W2`i&JmO zls1OG$)@UzEoq3^6}tSl(;W8~XEm3MU}UytfS0$YClvZSinn0*x*M8ay1B(4{X!u% z@C!eMH1>P4qFr7?giRLvzLASx_u+B5v~i^?V%*RG%m;0RTaQ?D{N#U~RjSy!+w`kut60kJ2eNe%FbjGPfq$OU-#Rzd*V= zh6xyv&UfdIq|Zm1@mOtGkq9I~&p_Q87=ly?fZ=3z?!r8cVFRKi?~KBm&I~q_lOa-t z<*u(R=RO2XED`3?Q*=%fI5Ni~>p{aj&ZBg%@dg9%rG!|V*;L3(NA@JWMT=ioJ1de_ zWz>2Vvgov?8F~cfINnnlSE+H`Rv`CY;r3(@dx&@v=L{Rl<2h_E>5FL(^f?9P8yy|C zf6hqghIvG}0bbv|MO+ex8M2ei&as{HoN;moc!=HuK{0kfvxhN>Ph$4!HK( zUxnpQv$)%gGf%>x%F>S2C*r{Nrs(>NhdUZJa!PadUQy$|U{Zvd^?Z83QTDnzbYgi;k8eb?KF|H)(YZ{Op(os!&pz%a@|NktXb~Bl!`RB&S1$AV3gloi{EO3C z*dqyI34yJcC7j<)QQ`%@Pel@_195A`vQ-DR9XxVd!L$fVZb*jCg7!Xp(d?YlI$?~%15|JP2J;lwus0C~3;ez>ohN^bv zZuj4g-kZAxQLn9b$cJk(Vv(}A0C?*o<*E!zbSmTukP2Z{WW|hx*=y6usMzTIv&>x6$F@$Mewoz$!rxd`->fG5X$9l{LGx(zpa z1`mJv?e94_1YeKOrTh^{8jdOuAD=-)aBhhc(N4&~x*%5TBO1(0d2auSBb((85nA~O zPEqUQb3AXy8CgK{6i1XjT<@afAbD}b;tP;%7DwCwlD*C`*wfEdf9EGhQ+xYj0fi1+ zpAI*k^N-10y*ZlTwugo$p#;@?_gw^+ab%#5h}tVv^)1A&B7EFnWGh&~fw$)rMw?>L zUQ~Oh7|$}6{Z3Rp+8ckwqB{?gGq2j;lvsorytKnFC>3$vd68J}d5w4L5kqk)M33~z-bwY8$E|0*!5{L(2PwSYPP9Y+NEFl`gwUqAW!De-v%9#YG*tARg!{4z zQ5Y@Z|GMjbzs2iE&@p+3gXpPWbXIZ{l1jQY=|-%i092hzkHLMQ*vF8L!fRSn@@!6p zl68A91&48765 zuw_Fbcf!*cmc78bR2wUyzU%icpJ%J~d$fZO-K3PnXldQHn17YP1;C}DTfgkcs)eWM zNCQig==A1X_z7o!+_#y+R$^%Rq`g;BbXS0F*8tA0Ef^Xz+6Bd4GHQ7RlDkIuT@zx| zwqNYO#!5St3kbZ7bH+%oJ>XR<)n=*zp7=Uf9Ebyj%O7BWH~rmf7fCCf(zJwe;z@Sq+Pb7Gl zT6scoi76GX_~%|BlZqMPt7&BBXbGNPU`J5tAr9qeayl;Le-?l{nSQK zKo3@m%8%#h`2sA7gR!o^0{T)D?d(`<;MNWs4rG0k5ht+^j<(;tCI4BXfl#QvX7H}` zwdDgA6JalRlgD4t^d%p!+^bv_v4*AqYDPxihPvR*+=s~VS98nf9>GWxtnAEEZPM*; zh1a`U8>S%1r5^N@TDHs3y91|TJ4$lEc)oeKb(Q}us#1%UF<^cLAJwC z^=J!_BCs5k_4P30`xk-;VL+6|&Ad}KIM03_aH}nMh-T;u96%E#PVWo>{KeF80}Vx0 z0+9@^jsT6V@pJ{YcL}*=4P#c1OcsGr(5J7bIDZW)Rip)~mEn?=GCQ zx&w>K`E$fHDaQz(I@>56Rg#9d!#+vN&l?DE>>=3J$fozHhM0RTOo(8N#1bDbv=*e<&T9>Dg?w?f#rB;geG zsty}gSDh?WfA{CM%4pT6;X$B1E-&^ zYz)59)X)6AwxjiJt3yxE5T!tjsD|&4BGzsJnz0Pe^#jp8?;-;UW=6J zfkY8mK9B-3-^iX8Hc(yFJTQ6{D5E{ZB>))IE{s|O)ED;FYa5V}iPOKFLY$9hV(;kn zxvsqE9gMAQaiQ=ni2=TNl$lRB_sVZo3+$tcUm6||8p?Jk((-jM`wX2Hz!D z7DEF7&}le|lO1vx5XGE65aLc-b-ARnW`UC~WbSlYkj_9qA=%mtH>x;(} zYO!(Zt)9HRwIUf>G@j&#U47&Z`RE%|6bA+MWX%)z)3KrEnrVxsNL6POp$^VZ*IDvD z&N2fRYK{4I!xO&hf~7QDIr}%sj;T{MOuC=8mr{DAY}>{u+%ccaF4Vp!o(Lh09Nd%! z#WR#5$@6TQsWd5UPVqKQN93CLPQ7tH0>NnyhmGs&M7r_iJo);vKK#)qB%8KY)-lI!kBN?Pcz>AudTwYf4ji?7c1FjNsyp3!UT3 zW6(?1$hFVHCFH%st^hhbJZoNEaAYT};Ywale1LxFBFJyyuX&SjfmIG87Nih>Mjtr!lOBo;D2>x-Lt$ zU1-DSPT_oZ!3ye3=PAvzY~)ThU@aFH@n8q+=$nh8J1vjX#3$#tHsLBv)y=I~7JAW2 z>!3TeW-Q;Ro+M2W6a($QYuH6=tDV8BlgiLOX*#o5(}h1z0Za1Mn9{b&<(-M13v>=FGA_+(Ya*T02aH$-kLSXv zLMUgo6;%1iH|O_Az}uJDTLDl>6h{xub{SfOQ%tR{26G2pMU<4kO?8~-#{j8V^kwQMhXj%_>nlZZ@6+eIjh0b2u|`k_=^V>e zPar493$BhMBynx3<}8(p%MZEvkF?{{;UUAV_ysgKF-!C4*w{#*Y2ZTqonI@6zQt!e z0Uunwo`J}1HgrDNj5=mMdNTN5r+ffqh<2WQes)JOFpaMk3q39Ih?0)Rn)U7;k8T#R zvu`WDb+WpiRAE|{(wcN{I?o4L%NS%PEg#oWjQx0XI^&@dmM)Sq1c(g4Kx1*0il`ii zzwy=A6lGdGxYkNPFAVf+K1u|^X$0NGxJk9KuA4nX#O&^D$iScT#pL3wQQ(aVPbYF? z#+FBYpspsx&=C9;D}sU;nOVa)|4c|J<+Ya5W^~!Y&IqSL*+tDc2YsMj z_-|cOUk;p4q;(R3eYo?MLmqHG<1@8TQ5kmD0{eE1jbb2^h?hg@zO6b_rLY9Yom)=!2{1Y*y%WYhAXimi=Rwm%j z(C+|zYI(_o%8-%_p%i}EseHRhSOoDUgI|2H@qy4HBD*s2X;I_nA@qfQCQd)vKrKPF z-%^@Jw>5A)B}LVE1GhHwkMF}UsQ$fCBU<_;GdR>Dk|(EaG!1G-$1&R2xxs^H9KGKJ^Wa(8MzHCwjV!T|EGhx`>lVEieqN%IG#R0w~Lul$wo z7V5x*#h@f2h9d!h1ttZFaWr3T{?UG5aS%3H5Aaopgz?MrBRc%2hLyF zsJF(l0^s;xrpyr$)v4}??~uFV@aUe$KS6oYv4X3v7C$c;P43nyQ7{n)S>tT)fbB^Vji9 zmnOBVED+}hjByyc9qL&GowOMosSPvPF=@Z)CPPI9ViGm+Zd^H|zRlH@P|%K$W4xdu zpMcXlxZVjmwWot4$u4)Z9?P^Qn1s0d)1=vRVeT@0G5PCeN2G{T@%U&Suk zXN@ZKhZ=F!2)gBp%Ut!U1qx!jbebr+Z4+tb)+yJ+O(=*yLrwlh=9vq_cWL_{7Hy8i z2+U|dGO`>_tPTJ8sj}LD=F;Cj4OS~7cDf;YdI0O=P3O4Njb75?k`j_H*mExpOPgXG z5$2Y`uYX1Uh+QaCHWT#i)>eT8&YgwS=hB}*z%z#?@!U~mGWXJp!for`hI%Z)<#N8d zpQUrYPi@$0ZT^9UdYSO+WjTDFHJmhE`wIi3qvWpgmM; zqOGd^!T4s}vH7I2Q~xnN1phGnWf+6aS}rEoyLIL{co4u*UHrL-%U_Bn{$ucJ{MRlw zeUQ~_nbY?&kG5U|33+mJ>2622Gj<{WB`)rSUr$AM!1h?w# zI5P(Abhlep(s$y)+k@?PD~GFJz?`8_Tcdy%Q1cq1v)7+Su@W>8o1 z+L^A?TQ5MCUmL75G7>KI9Z)#+EElN+^pta`MkNx8R2q@30f+g+O&{-$n?iHrDK$`1 zc0c-W-PS!a+ZklU9DhBjzPPF$?TLj>FJQ<{KO+CSuu7Z8Hc+33_W!ev0bk9 zJ<;^2uJ-Nez zo-D*)#|S;77~l>Pe_5s{Kw9lLQk3J$bvK)LsoS7Vzzg&3Bv(w~xBf7uMBHj?^crQK zKXDTj`l$8h?|i5+wJc_K??aXr`JQBl@lJ8m}3=i!WG$u?C$1Hlh716On~T?_f5_-CX z<^Be}{tI}wwie%(=F*K+LXz6d4N%<6P*)`I5t#yc?FzM%c;}<1=O2ZG9%l_TNIdlG z=kwPt))r8RQjAz)oTtVkK}&LrSd*GZ>sQ*494pIztFIh(SdFH84W~<}BR-TQnI?of zCaL)Td)#meq{o%JtS)>l+luiBhp1!2WdpfDrGnV0V^=y04kQa#4zG@`sn!EL)P8xAlZ2QzTYM;% zRNZOUe{B>OG2)QlH#=CG1pym7+P3~WKrcM;j#mz)zuq4b->WzI3ZUcD=o5lk53%ZZ zanY+&!yuIfr>)`$@_;>2svs9nNt-7sdBpN7^;ly!FQxlZBGM8+qiwfcv_sv|p#(B* znlf4ordnlecih7mHQ-k>{pb1Z7aA8NRYFTx9*5J?>-vOT*QscN?N*n!2KdG*g_~q) zL5(x1DTjV3Rt1*jZGntbVCB0ZQAZTmafbCXgc&(CwXi~TE8xypy45TbW`lodF^pr7@SCvz|t?w%zLn6m^rn z!SSR{cv+ON!wi6&d~Zy%oyXpgU)8G0BU+^PL4*RQPO;vsrV>l4hTJ_OSy>1X)!kEH6atYED&FWXw-yvjUsxgZK%! z+a)(Fow~zgzUN^3da>|-2!`GjdSj6e5w2cV&S|isqT+=L`WCkX=nR({-I1Gc zn{5CyMXeHE-mFc<>kd0BO;~_&&f7|#zC!(86zP`r0*tB^CF@KcNAp!%Hu-fCM^$=$ z!|qhL-&?JJS0&WiWuI6fZjBDQB-(Brzg1tZu*MUo1Ix*D`k{7M*@A`1MsqTL*}wIRjmmSc;S>wXiQ)^_pVjZ{8@?+w8)RBXhrS^TIq1{ zzB{R<29&2v7KXWE#&B$8zziQS)5DP7o*4Jxu*6jf7EkJxPe)U5oDN;7jtH+s$z`5` zxeH|pZbD4ri^}V=RV*_m;!8R#t0#M99z1zhXTzmAUUD;x6hM?|FohUe@MK4db-7EtC1n~4Z9>D`>XTTK4bIuGsGyyn(}bSxR=?p@4ZA6jI$gOAaE zvUiAvYT78aeVnHN^h_HZfeO!*aj<^0zuEtat>nWU5?|u5$4obi?$ck<3#ML!lK~8B zYRBsf$O$*gTmcgkATZwg_1z^VRYRFh3!u6HM~bZT5n7Y~0s03^p*$5;2z5#ZaR11tJ`?d;ZNmwAJL0Q{cR``^ z$L^C+JZ!z``2QG5xt@NT4qFiQD_0Mm#`KIcND)hGk7J>YT%vN+Z(S5k@*XZZ^K`ff zNdm65_-3;rpcuXRR80cA$YS(hgIbMdfHdg8^3iLy;9m0S(t8n9*iG|a(y?RI402>} zVqeQK`M)%dJgfhnJcZ>;`R>(1WgiobJs*~uj7-+@MDqgeZ$m04cAznm1~i?0Hx1+k zkP@SP^4_9p&FvLG^8NQ9@ej0=arGxcE_%tkHNnu))p!;y3v}H4@J6+xN{k6F&C9X& z{`Dv6*>`{?zy+Pc!#wt+C=2a#Uwon4S=z17M6|5+$jor42@dBwXx_zSO0gDoTR*uQ zX_*ED*Zt*m8dV$k9Zbu^P%iqHBVJ+);f5|4JgMJs;7lpayfxAuCk?50()W1qiMd^nsPQ-NCWsJ}yxxoQ z#NS>!4?9ahe8c=-Y)z5G`*4kC{1ND+aN_RxQ1IKY*280nJF``kU>$=k|BVraf3z7M zr;+x4zjKi3446mF(^u(abBrD(Lqf|E8cWY_E>8nfNSaiK8A5*F`sIYysfXPRFyZa@ zM5o0je3KL^E?sW~`f+7cLpsDlvIZ_hX5i2JOq=U-8BoixyS&8|M52~2=WnbIAgNP| z!;I#btyAo8!takC-F{XM7tds1J7m`I2@J z5raq_GNQeOvZR4KqG!m+coz~Ima+kjX*ADG=>qP+rQ4(0fB?5=hK54u?3O zlx9G%!X1_c#fEGPprJ;8Tq2ueS0uIaMG$oaG=$ULpAj~15|9g5RJUjQLJ87aKsR>tO3z7)S{kzk+@ru$19=9s=&BDSO-ITNaEFsP_2sO4ic$5nVDs z%m}drX>qJrHF*cxUhWY{HR+CwvPcgaMF3T1d(~~8aH9b`KF3sjprxDTo#}a8NZOig zgNv{2WKa=>aI+r9v->Wx)rEhupVCu11pgW(fQ`5O@tck=^VFb-bavdeVK^&DGyMz{o@8{M0mA5z3$5yE}*{q1Om$1 z;1E{Jut%c4Dbry(q$?=(j!~VnWy7U}%EUMX!h8fky@6H|GM^3vAO46u@BvE&7>Jxf zgcsC$Ed`}Wl@%gv*OlDkV(d>xsY*Q9#e zSziGJ4{8^Zkkhpu2yc)NPEnDrF}X|jTlN+=n`Skb`2f<_&lgTB{AyXBNb2u6G;}gW z_V5(aC+b9+{cQg-%^wA+sTnyW(vQ>ftg_lu_r4`9VJrKl>4ZeX;rZswbinY>C{KDE zvGf%RnS~FGK8aHlj)@gnDk4iV6nD4u9!n<>g1Vy|-DGhx4s1tK-{7ucL`30x6WO1^ z*pa^E#U@YjzpAVn8`wu8O`X9wjDZh}VU;AZR+FReRBesQ_IYB%XKmhMNg^9aU+62V z-cYoWN)HQ?W8wJn9mocP;#reItll%+oPI|XZ^A68DZjwWoYl@?N z{t#0l7uAN@XjA?HtZRbM&bAMykmo+FJtf{FYqAiR(Lb07oYgu7gyIlKJl4c-7)DX| z>~S=l5{zO_biK}0XVWk`l+488=Mu`qe~pDwYOdsAJu%tI|L-OnS!Hvq*G8q3M963P z{{u5X%)cWEGc3TS_!r!`()*<@G6Q{E2V-=H>YhKSds-T2Jd&hZpFTT%_1$WvTo&nv9`Jfg6YY4!%p_ zh+;hL`0?!+1hiMVCEX%Q^F#{Vg6FU`a9s{w@_*$Sn5@Ahn?iM0hpe&z8;#}ZTo$_i zAiU1GS}JzgnZDe?;V1X{Zz0eT5YY8g2ZjqPx{oIVml*V)+m1x`%)88cq}BVoZXg)s zq6wkL4aW`LtcqnXiaaS`Q+-Y+-VGuOpSy&ikm!lkr)bJf3NrXFASgi96K?bj1A_L^Zf&raO%Bj_ZSFa*UdP6RNrQmV5eWbI{heppp{t;JjY?1X@_ zP^Kd?P1D|0E5Y)U3&f$b?l<2$R)j z#~ft;#vdlRsZNg2r?S#yzV@VAu;z%$hGq><>FOM|20;BUC`^9;Bg*kzAuybZ4-(h$ zx|4OQ_sc@giOm?Dg4=tG`=oe%#vYMzScJcsa$o#3R)_IXr<21SfNRB2!;+~^5Jq_A zDa&B`@s%ifQ}FgAmce@>$>K$%0N@&aPJ8_5>rtK|#uP#OO5aS8_Iz4Enk2f zT3C05JVF+cb(#wu_Tku@a$hpa6iU+e-4RZZXJ#SFFcM+3<({w&QY`zCjRt8WeMGr0 z31o04LY~b1PVZNzA1zI=_TW%v(h$4I{M1Z5F@ZiyS5cvOQ`_+78i7ZRrL7*n=f$_| z&hg`2$OdTwuyLv)SwVhVt#lGT|8x{#^X@rLL3yUQe&5|y;f4gsj1(vWCH8SzK&SZ) zEIsMNyrMvf((o)REqI-HJ%XrotN7K&@qrc`y5Z7o#RQSAO}b9Q!ETUj6hw(MfaFaD z;0$>C6lS=H=>jVhdD#V~Opa|G6mzvq93@XPG`DKWLfMw%qa_W-{S*?-%A;Mdb!s1pfIRe_Sz*Y>qh{K?@4J$*%Z*txx!5O@vkPM6e{1v=foiBwb9sE zJ%p?C%M`@xJlmvwCVKdRH{$iV-);VQ;6$rvcqcfuH+~3k0KVelcLKGPrOx2hCmm>(?BkZ!U9Rc|O#25TELYW1vn7jr`lq zR2@rI52-Vg3dsj{s_x>+Q7ivcB?&XzodwLUixLQ$E;?x#e(_{%={0e@x2 zL?UkU^L=5IjOI4jvS%j#6D?op@-!{pWx8O9NAY}7aF+4PnYFUnJOe196?#UPDUeA= zE?~1Fa5t9#SDU;__;>hE%Q3_hrOd}wdgHMTCjps!hqz$DkkCt!Y_?_edp6Gf+ z3pJvCVQo-{4pdt%a!J4OI%FU4@60J~{~RbA_1`+)%Z-*)pV7#BAZW^DTGTh+6eO5 zR39RM=;`6pHjZU5xvk-0&!K5;rw5bCkWSWw>D-O{z}xdS)a8+{7QoD;fUUjo@wQ;8 zFqhh9ff4?PuK7mOy1a@`5h!Ms8PpKDg zuyZPy55KznT6|%uWeA8c=u!G2NvQL;o8s!9iMGMZon57v$=ska(8t^r_hX+HA-_Wa zqmYtKU6ROlH+~e zOp7G+F_8~t2%To&;Ru1Y>*>$V{eY54rwo&o+&VlWTN?HyTyK;vy+y9SsKjK_C6-^_ zs?~rNpZMG4zyG6P=_^&FSuBB7MS^QD44G|U?n!OVaKb;l;~QAj1-q$H>h^7Ib?;09 z?b+t|ZZna5C=Sj zl-;#UDjoma&`lMCsNf>ax{t3C;+&JF$ZOR|3Cyxd7NJh=dh^q_}c}$l78sd}rE1EnFKV>f( zd}VIkoQG%seDWq(i4W$oP!B(GwS!f=OZS+t@L@FICQ^`wcLvL#n7z=VCTVcng~e_A zkT5VMxCJourac+A-6uH6qqproo%4XeMx;5?kaTmJ4VG%=AQzn-NQr8qTm6-&|WU3(&*UdYy z&QR1CJ6*Gwq9Sg>>pH!qp_#Dcv3{s=!;i5sFUhUO5s16w6)VZX^kbb=&8kO1bzYza zM$npi67=l2fVS1hsUqd~VGlr_sEqjzMkL!#C>p~+w6Bw8Z`bb{orULm4HLJVzBQdNjT_3k08Ok4q zcPhCEI0A_#jhGeu>YFfseimJyS;KfGxd*s`tfS2Gw*k&x3Yu5s`!c2MK3NN_qp(BP zIGvP2xQ*lmnkY*--j`jJO-vq0 zD>xV-bKdD;u%Rm=ce!TjDDMogzs3xW7F`;sXn7hC+-&PlfXe+YQz@Z3eeOl%2gi!a zmcTfMV(E-Xd=Xr$zyKDA_SGXryEp!_(k9+ZT#SQ73%oZC=O(3<9S%V$uBoEO&D3PR zL+Bq6#xu$|qT(5}fG%r76!#xg#c0Gs<6B*1z^(nTwepeY ztKt6{m4?-Ra^4=VC9PKLG7s9xYI`7smuGwcCa4jCdx0a`fHVyFJ}8%&cw^S@(bwev z~$ae=Lva9A`dmBMVvbe)PB*;~fwux!Nt@GOSnldBil3cbuicU{uUWF8@HM+}*}< zM>97rSmb~KC6O<>Sz_UiU1g}fG|t5!pUmB9sf10!_}?B1mpgQYv&)75 z)!ktX(d`M{9!2>6gFi(Bu8x3hJf7zMLEBCbI2p!OAg?+>Ly5aBK{OL(h}@yUaMiJ9`~DH3A9;{)x6Jn|4n(n#Cns4M zsMGu4pJkP7SGS~T5cPzCFW8a!&^Y)VtgMWEPdbHM{7n_AZlu*+b1gsqj}`Vv(>le& za86jhnp9~0LP9-bD5V$v%Y(y7d`(pucVylVsDt?dVN-pLFI5(qDmCBWj_o0)k!BA} zz|7OcjmI8Zsd=2PFrBb6Lb};vLtnG+a7yl3orM&2RsnDIck#oUxHJp;Hga&!h0A(8 z%CFn3s#Uz4HvyHhKb1r_+p_~Sot=qAsMs;eNmAMnKfm;kY#|dZHVDrXE&k>rJg|SR z(h*#8y2Cn^E1qYw6@_B@Xy+}ynOO}4Efr+^vm$U9tfZ^HkNyo$bN(f6vyejL+SJS% zcoAU&&WyS`|IoGlWxmb{Mz}=y`gN zAf`X2Vi`C133lv2SZG>K2Dbz1^WpQgpuM`kUzG%Y{J;mivIEVbbhVQ5Wj($ce<^HD zfV(aC)LB~}J*glF1ncGyKgm}Ho>juq+q~H9NN=WPo@(EHIvE$`~Kscas5 zKGAF1jgL@g?Tns){B9$Mc_~%iO1d|Q3-{+#MWqA5^Z!2lnUs>OHY~K~SS?Qz)OW{H zMU~Al6O~!k$h!zv^hLruhVZ*?A{_yNp;3L-ZZK1=mDkXNxQwwCf7MvYHY^Cjp5m92 zBs&0rixF)LmE8EcL0@J27SWQO6K84$DsHduK%C*4?7QQ7q=I4MsrSx4S-0dS37x7L zD%M|Wy0;4A^J}Km$*1BNPV=&DEZB%JP+G6GP`GraDnbgF6C_bdTlerl`}6tj?*xNd zjDzF*vdHbtnINQ>h@<})q2H`|SF*c(gJ-p>5p>WuW}yOjvXL%5a1P2y56(f~DaHxL zp(QJ1I3e>Iw>Xmvh4!fh{5n&aDzmJ4aiUy5D+9l^RqcTE>G}41YpRskGJl|2RW=fx z@-^?=!GL#K91wqHNf%MIzdx?_eS28qGkS0C{jRb^L|gCF!* zfmKS!$?bblZ!_dz$Z;Y%3`|hL<^4hD;c-b*ueCgY(!h`w!u5^ILWPB zsS=>;G2VoIY2Mt%ZEqS!Vy{@DBeld-LD5Hemi|Lm`|t1X z!SZ5-Obg9@RoCqi_)bZH;DK*CPVD2>n#{c2nSFMv=O2P)$ImW1n}>FA4It~!4l~tv z5sGEqIiX`3|7PmK8JgGQ)uA-W#d-cPtznBQ$|UMIyW8A(Oh;HYDe?PxrN=8jXk&h8 z7%XuU9Aj3S-knCPVE@>$Zayq3!~bJl1v_9PzD*Ce;Xl*0Lsp&h)`qmmK=HuA|5@2e z#5U%Y2O+epgfd(XKl|YdXr3mIdCZ;U3b|R?S0zZ3s>Ipr-{H7s8_IPL)MU*{n4Mxx z307(FjCCW^>2fSVGO#)RU%;J`V}Ous_~ z8GTRVNz=-*b=!Yu$MfR9)E8f|+$<7J{~ovdA{3rQM9AqZDL1N$2JRDNJVXdoHs>XuLiOJ z8yRb2OvuC|%<2+TNw5%ws4j0ENhkH!%?nAkgn^$I^riFWj0fGxZ4#2xU^~>ZqFdza zY!g1lIcQ)_22N#_SL^RGTQI34FF zmmir7#B1MJ=lGH@n^sq!jrw+bU!#6LWExJ1(GH zPlW7b?&uAML@zN_3wC8&=v_bA;ad@s&_3O8Qpj{~6(38fKlM~)JpGcP`p@lz6{Gi9 zt{M#KQO+43fH^r?j}1%bN}5A>9+0gVULOB+O4QKOx7 zkw)K5UDCMmf8C|qAj)1*d|BfR9zE+ql~cAUNa@Oamc`;^XfTf(0X$mQOn$KEpa^=ZFgjD;C~VwZ{%azSeGj>UIxJUrAmW7bN(!j4 z*_q1AGsyCyTu4A~gB=xkVq&|o54R+>d$5eo$WZ?@l;S(~+JM@?#buHpH{=^2Tkf0< z7v5N5m{AAxyzoc706Ukn68hhNtFmCCB>*6|{ODLsSN8b^O%ACJNcm+851$YikX4;k zAmhV*Bgqrkcf|4`&8NL%#=zXY1B_z z4zZ~bs(JJ-cRo85UC-)lw9DqC0CgnksY+YI$;PF@&jBzzhbiODl8??-eH9qu^fHQ5 zK9TPF-TuHgn3ubCt6KPZMRq;JTIsAt2V-9aeSw= zU3Y!dz_&1m#rYsQ1Xq+Cjin z!S_EMCHS<@;VDTor6HO}83_%JYOL zIOwH}mcuw*Nj=I+n{q`Fd;fo=RhoO+(u!piN|OpMX1Ta;p@1}V{|k)VyA+h$Fckqo zSU3Y`_>1}vLT}$)7`6TKa4-MfcJ;rhT`t!T=6TdaH^$55>T^Y9qh7SrOM4Qp3|Dt| zoXX8c0_Jwu)7gTR&20-DJ)8DFs~Z4&`K869JtH|yG;LJZN=QJ5+PX(lVjvCK;LWpD z#mIr~!7{0+7VP@s8IGJ*SG&#i>i8EIb?inUg#Y1KYW)q#i2?XYOm*9xX-`zN*{?j6 z;*I|GY#v6%zXl5V!X~V)IWJ3y{(G2l%a_!`ykn-d!CwE`^r#U0D759`1KQW1`@P~PV9sOHsk;7bUyX~i1Eh%%ym zcVu@_)r>rYs@Q0S(t{V4s4?Q0t8_v@2{oBZIgDwb$xCipoUDrDP!NYa?oX+_ zsH~DZ-V}QB)#UcA|C{I0t^HDvvzAHE8j^t#?#hm9n%c%tbrw(E4wHS5|JBnan30=1};aZ7vn!jL2gwPiL zm%bw>w^mOUR*W!-2#;Cp-aH5j2#MaSR-4}{3ed;DuBd}xUOe>d2SnB3uK^NmGH<(2 z_U;SRB5G(ignpRNhe2TIMU3V`G;hF_m8?6nk;1M8=g*vYD8nOWnJz{j+-j+PB}ygH zZ7tMWjQ2T--11s)qsegKx1Rdv$59Yjqt8AqH5^XI&|&`so5VV1Bo!ROk-Ft8DEE0C zOBgNGM9>`_(|SXLYI1MtCyQcA{ppsh{d0NldjSLv7(*%RbK#Nn-?-;`1Z(!KeNV+g zYqnip;DqJZFVG^nRB#NQm}F;B$mL8l(EsK}x;y_bl%;N99lWiPjFd_@yyIc#3yZED^q-N3R2FJKc#Pl5!5%s@Ffanav`4VD zY95|dw^)I-qKO#4qkjusbu{{v-bwdZP|$`t46DseR2=zuS2w74NVm zJD_;{#kzJW>6GxI`0MlBiQnqCGVzBea=-YH7tY)~3mvACl^g~dm`u-#jreA#16PW8 z0u{-FgC_&3=eph5qysw-nz{&LYG8uXKW|?-qw@j|{R`^(Hyc!F@NAUlU@a zv+69nf&owSKWi$P1yvRKpaF#P>j!KwZ0Z+<|Rb_VH+E4(Gh6BIc8l*?P6oTK-Yn z`vS7}*=FTtFlEKCd-N9Ft*F^%RhI3v%+nlCiv%GBibJ#VKV}pNAaZmg!gk!dkc>V> ztJAq{^bHV_F4`UU#s@#cC}M{ZZI+Wc^|_^O9t*t-Ku>z=Q*LW*>9 z3~#XjhdKj)s&K&%bpy|tE7ekDkd7+S7cdPOhTTQ}S82yB8%yXtF>Kf+Lp+N$Rz~H< zvLfh;f)^1Zy#i71Ju$BYQ3E?)>>2x3X6fb`CvvJ|!DWs6PS}zwn40a(o<2w*M9bKM zJhQ3p5yw@m&{wcT_W0d$khAM&OpeTU7Zy{?Ez zI+c(9H9I!j1X*4w;(mX(Zx(n9SS~(aXhUy8KWa&Oz!Nw|m&j^>03r-niQ6~}t-0*< zo6!m$X{)MfSc<%vNNGy#J<@xj_ZGJ(HupI}tc=vJ0o}BD)qGP!wA3X;8J8T`V(4m= z+v;}-IHe;0R&h^+<-fA{Zc178PtYPDa3jzSRdk+|;VimzFmQb_5AxVq;oac#iwoj*$5MA) zp6TLu53aj)VKG=!oij@#^^qyHMMIJI+`^kxbUZlK#=mf=xgiRI1%Ld@FsD;eUgBKG zw=;wiXc0{_wwVtxifDVMH8CcG!X|3qW#e#ygH`Z#|B92YgZvTF3HXPdt&XH&N9uJS zZP}wU|NZDPHR76syHLtddw%yFobjG&VIm(4I+y=kZ284&Str*#a!wSfM1V#Yih8Dd z*g3n(?{>5LBIoj*sM*)4+X6b7zZDlEA9DI0OKNpB2x3=$sTBWduA806wfy*Ia0hQW zDO9&f;OX6l$3GZx`ZLYnR5iwY&v?@-mt&gK|0ABqKY~Fz)Xlsx#rY|)-+I!V9>Tx> zd5b5YZ3#GhA#8DjU>m61T-PSzpVz50=QPa2)U%QC7gwv2-|lIvqgem;;VeGV6ISSl zqGG5ph)&{IHh6*UKC{5%z?R`Az1!1y5=fWBgo7tc{KjxCAx-q}K%eS8|I8050rOkf z*;Gr7!1K%sK&Up}OLq`DR1w(lM#$2bCtL^jK-Dp<0vjBL0EevC8^ zptrSVKj#}IVq?6BZx)rr`uod44oMe5Dc5d!YXe_w(s2%$9j@zyJa@-=hXLS%&WP^(5y+9$C5uA=MSd2^mkb*ka^2q+v;d z59;MKnDv--66V1gvP*SQipB{Jqa<#O{#heV*}$BPok0Zr5XmCsIZRjmZ7knhmVr z`45ekMvQt7;WM$-zwV;kC=AW8u;YHL-jH*M{^l(P@B)C2qE@-lTlx&pckK)|ideh5 zLVXkLe@%?~AX?`H@>KLiAfQpp`C+H6r1_45Er{nh>KGt>p|!zVEc0g)?u$WDOmMla zy7LT27FJ)5IsIZ1lT&AqK}*76ZK^tN7IwVJJLh5_v;F6N?2Gq!6_N1R6kd)&C`TOK zXL&-TOI+=0FN8@Uw>rEFQADW(%llpw(h!b1iPbDdnI~~5&Z7d9`%%#xRmY!!dc&F2;hZD-YE*exnh9uiRI*rpprrZw6E zP&Ec~?j~C$rnE2<*CKlPA}};N0bqqB10$6$Zxm7PMz++1(^~CD!D4ce-ty!MMSv2- zW5*-OTP-#eKK3gEit+sF$aN!1{Rf*PMQCL71R&8PgP(Zwc4mY~1%3wwE%Zg00JSwh zMLD^0bSrY;*T7i>TA~&&1tfKaR}gT9zxCBBS?2-Tj}!kg;=r%kt@hZr1t8%jKX0&9eZ}c+YTELMQ#lAA}#PJg^=J9rcV)1ICFqMmBo7^X!?E8srx8w=8 z(%?9B!N2K|bg<{lmNu5WkBhkw`{vDq%&mW!8D=r~D!)|#!eF1z49?)*%jrE|#SdV? zTwNwOv(?Q+JYRBxDgUt3cdjCbM#_ZUO^7fa>S@H)v!;BZwIv7TFi|88zXR(_5>V-| zA2P}Zs+2>euZm5_^AwogDEE$JLS$}%BqagDQ*p>0k%jX@%wNU|GQq)17sy>$Wx- z&eEcqLHt-1fdLe?Mr3TlYyPA_ZI6`XQX6QA(gkS_0UJwDVdhn7{*$HYoyXJ)*+S?U zM%9lr5Lf)V_q4X8O2>v>*}jPPr$b`*>C&F<5MKK`-IF8)fX>}8aLO2zXxDgp)GO*x z@8qnGBXdJC#~cW-O+RJFR28(1B%5qp*Y}6Ox?%k(Rf-F<>Dj0`AXe8}eUtyc!L-i_ z384jJgaf|k-T50c)G;3Oep$4Yc;_67?%6%xj;^o&|CrcqN|s5=3IriPcN|6vy3?Hp zVoCz!S8Fq>Aq0J0Y<8c+NZx32b$FxgqA~z&gxnSlP2nFWD!y0Ziho^33GRe-KkrE+ zan77CQQ#YtPlM8z^GRn_{f0-vY-}wraTOnE_3{)j6H+FCP*JEemA}ZyOzP48gxn_Q zzm(BHeADM*vTcd%v^@sLVY3=^R6tMSczSw@mMlUoC*hp(cE)2JzNgJ1G~%hIhMknz zyXYq{VwnM`kVqQyBXeBSoe`JOtDxBxc{pt|^YM)U+)ZbwlId@+*J2J*K7~Xz7cYU8 zS16IKBe{e(nCV&Mch^5c!rILOD^Dn|8F>T*q1idu%ns@139tC$MGqo za0=V_>CrcZ1QtsE+k)*@%N!B3`8L?5Kgt{J4DS+-CYJG1J>AFQtG}2#3YKI{VKafH zTs3g)hs74IaFmGGB_wy>niNy%j1$la4T@6;vJzFqMgZ6Mq#> z+5lj4XrF&hM4gnk5YqzkqJ?uqU3wtO(iv&ea3ch&qbIBh^zIDY`HAVTpEw8vv}~Gn z$#Rt3REVvasNHmy;mo!^PP6gEWER9KV1Y$aO$h?Tyi+u@K#CAfkUpmote>=QUgol@-0?}f zI+>t$Y8`_4QIB-?oz3ab+3IdqxN5);)DO?b6b;XGC^nTjUovABnSI5d9+lZQ882k% zPe#!--cib}2h;%+^thf=;Lq6Rd;U+ZF0PNDqY zJ^;4V--qn9I~33Cgyw^%nz;n{29k3ZR&_mXM;EYPh$|YCiX1w1-X%ZrIpQ_PHj3r` zQ6kQL($@Bjl<2U1flzMXIN#jeOi4uXsst@ZHMK?fQ2X&|(l;Ab)XFFhKqV1ddVO2if0Ssm88v}z8lQhOPviToiq_yx>!jf|&=|{j+_H_Ga@>LbJkvUK= zUZLmjXIAMD;rbM4f=MQx_UyP3eeluDedHkxHTyU$m^?6qOMCNN0&tfu0}KQnW*l7W zVAeb*H}&pE|7A(lR9C_9IhFDzeGeuO8sLThJY}SdkfP@E2^`j@sj8cKZ%hbbl^`^r zr)!z>#Z!zrXoeo`5u~a;WO;a1OAmZ9kJ~3a%d~WCz?7qoY}tN&ZbSR z+W=;<$4li>rnX|L90>tw2)1QPjKQrmtz~HE%SoPMJuAYxjHqwPI@|yH9qOX;ZzvJ- z6{PY{lNtYL(n?I*e~y_mtTs8gzhEye%-M^;&ob(JojAt4C1!)Wy30XJA&7;?K)fiQ zg@WbPK(lbaQaYN0Y2yR-ri>6%NK+{+$}!li;iG3$&vfSh$!>ueS5a$X9i9lW!t_x+ z?3hJBR~0y)7ikIUr8eiuS2lQpMTkC^5Aos~{L zIAJs3r+Y7T(-M1$W`{D(-rIH(4X#pv`c};#)i-?2k$P@cTiW+5->SWGn)8wdNl-Mm z-Is6G!kmK3jCXyGylT$h7^@;gIDG2z%dOoRF~z4Il^(#8OE3LfxEfsaI*^HIa{`1L zl`jprUV;&A7jFicF_O|%UE4sIH#5nDf%-w zT%T|W<9x9CL$Ki|xCh9WF9X6C!D{cA`|d=*(j?l?V|cLi<$!Hs{ln04E=)Z;zvlU6 zSaQ9xZIj`OaFL&dgidVg!D zmWhlR`3^l{2(WOCRyqTyViv)`gDca+rmrc#H;!|9Y^7GW3_vdP*;yBe%w{d5mVbEO zMpPg1uAZ$3nWjx>^hJez{bKL7bU_F8#E5?xM8!>*qDXd6 z_j}i8f4&v3NF_{NM?`&>?v`j_s&&*WhBb$X%lnO+ma`b09={y2Wv0!ZGygdhI=LuX zHC6f6u5#4DDeMhyXpvz1sK@S)%{Y553@YHTs(Cipc}lgNWIZ3ZFGsJ_o&@TwI3$O( z{#SmD^{RlT!XC;LY%Nnkv#Us3F$JgCnE5~qA4kd;)az#VSKH z21k)vAT)p={I$om$k~Ca9or^OKiWfxEeOCF*!mp}_4n#g<*t-0N!4c1{6xD1Lo~i zJNG5(UU1X-Jher-e2yvkow9Pai^MaU3Ka{(tU(MR)M*ox)mG&S57lF3q*ztoj;=$F zQ&;G!ekkBglqo6_HjdoB1qy&DKMQ&qB;#>zCvweLvcmP#q$(;?U>E47O>9MLNQSrk zFch*~&<~aFluvkQsF?;s#}$_S4XZc$i`M=ykyqC5<-hRAsdp>m(vhjr1lK#p$RSpn zt9{$Bt5bZW?Z4V=ll0lCSjHLI?hMm9katBC0Z|XeF^k)r??L(k&G#P?PtpXhR#NY0 z%}^dH+*Z}Axw2>k3-W;0KJtF`8b%DXVC5u2A=nAWU;B2>uM0Muj$Ps8&4~(-%_~JmD7@1 zYBcyl_MJBt``N0)&tR`$B4cqCohgKnbQDlHcUnWj>lWm8dSMJUbc`m5cAMQ3a|R#< z+ocOf6%kc^;CQ!1X(8~}*KSZpjtyOW6e&U~-3Iv(6CBeC-u^YV4OoG<~}TOnT@6)BLg8 zr@;z*$L0&2?JI7#0MOe{_tdoeqYFD@dd`ZE zYXfrbr?{}i%M>>KMxw_=&hAxenT1Blw2!NGRv`f0iEMvEswDCfg9(|ut04MckQA45 zB?X>6t>!pt8xt~#GjH`_b&`E{D%!#1ykY>6`K&8Mj}#q=Ep9x(nw~4e<~FAquzw?vef#EdVJj7<>vn0yN(f)FliSB6k(p_q>&W6CNrelmqC0 z(8Iwk*>*ABdb~ac-lVo-p(2(t;rr49`fJa8|F78X94cX{9Q0|}4E^xm!24NS!=*_P zpBH$Aj3UAUSqK}x-xK_KycIB8?%rQ133~XIA=-Z{1TT;lsZg{5V7%z)L2;c9%kFy$ z?`pBTLF}qi$XjTOG%XPr#!10e>?wU3nzI%At=EtO76gzpM8r=&GK;Pe+jlg3rmV|g zpQ5-UbtO=ZIWPUTRZbz018kQ(cZ*)@-o`Kz`?LpakOD(+Vv=j3xJ6npq9yzM2h@}Z zfVNS`Xq&k*HVub@5ko0H-ltI&unb7<_v_!0_lcBM=%j)&OOh(myppZak}C?xFXb!? zru(fM>b7!0bG&BcI=Ko%LF$g{<@j0vJP{_}yM zmz07BVDiT)%z(;q==-HOJG9)7lHP9(V}wYKhQ4~WyRdXa7;AEi$IJCAp?)wl3{X^J zVsX&+5(1o<1%$t`DPt$pUM~mmz1T<9*=&AdiH3&YQM$^1okdVgI&~%X3Ohr$iU^+JN=n8`}e zfjKMU@M5T=LomrBuU+4NGXFL+aA}(DGa`GDD1GSd))bjBhoskKCh6ODZb3M!#HRj8 zfA;Fi&04{CL$t4BJ^0}UGLFnFHG5(m-ex=pw;n)B2<~rQTrV{{vfdVI_J6p?wv?OB zrz2cnr%xD@cKa~86mRAUKKtW@FQ`d^9kYNH3oLG%&!v@vIw2&Sw*qUI`3R$17sE?n z3k4~Z%ODV;u|xlg4XF+GJPW(WmAZDpXaZ^Vv3tr`r$M~0iKO$`=w@&#c_9R zQ*^wx-O0mqeT_nMU8^b6cDfY|W=D<1xgp0ll(ZKHxGW82rp%te3_uA?(w_;}3_^?@ zcCEF;mg_NmpDCpN6qOTJ#W4AFmT#7I2sv#`5SuQ9M62xo{ljM%STf ztOH#Mr;Rok*7dd>K6~RIlgcDQAtyM-ZJe+Af-!kIDkn>bY79;C_6vm`xSEbfe_V|- zk*(=A%)gX&9@2(Mu3ARH!cRsX^0pazO}4zt>1M)GsK?BkJ8k}#e zNq3yCGFGq=tT0gF%Cu#SIus`M7lQ00}po+r7E)bX*O0ALxlY>=`0RL z4hjsb7MXY-W{VoD$L){8dHT#rBV*RE z_*OS!{>r}$=n^jnPei@aaOen+|V1pQ!15H~Makqj}A8u{kB^Ap_ev(`ct~H(1xrXchP^vQ5sZ5H_ zmf4U5wL7h9jHWP}5Ds&~$g;Ycl12dNtIW<_oXX{o45uzS=L>~75}h~2G58hCSS8ED z8lt}T`EXjcjZbpZgsd${3X0vdUro=pTofS;&M7WWlt|zSG1pNb~emL z6MAhQZ@o%z4$W58sz3Xb)2OmLFS@mucO&)}ilf?1R@gDG<6w0@vc_AecF>l!#D$6b zaVBm?q^)2;E?6r{xBwrggynCCpw}dFot*V4Saim-t6kOaxc2kQmKrowg`}Q{b(o0y zx7e)TREgx@yJ}2Zw1Q>$vm~#d3X2fs6g4|?af08{L@rVfJ_})ZH1+U9fl)2blY(0;jt?`Cz1Bn)V?9>LPXMlle2KZo4?8Uj{VX)poNkO zdFej9k3kw!X0zumL~@xhX8bY~38?*p7~$E`I5J#nREthaofRGkKY^(zHh;l(3oLvY z_U`j-z6?t&I&PWkJy?7-vIhh0!-nWNn66B%6N2~ejONoe9Ml|#FKQ8v@xE|LxP-+k zE?O85-im{O>!x3=!7QVt(nWghA{6q9+g(PMJLdQ9FvJUEe*|_9Pu63j%8jSTAp-OI zYO4)2u7=86D**-q`TeE=@Adazq?MrJ{GK&Zo|n#8>QP@#;dMM@WcrvFb&<#;US_2k zItKv_=!NX}#QJY9O*|=MKkCFsJT9_KV+Q_W7pzOFW=_et+&63q9PFKJqdB?ozx3y~ zGy{h&39ze&ttZm@+uSf6T^!$R{2kRz(m&oGO8xO>2#@M&M#=$VrEFe;_BjBWcMyy>*ZX zbOBZ)3Izv<05d3;4(keP#=QmL(3FLDEXlGtz_}P))(s7HGbh!0eBD?5z5!sPV}Im! zxV;am-~}&}ellyp?2@D>y<3`M-`RJ5|4|+*Wlj7l{ye&`;!aS?aHr_>xSmtsXX7z6 zhCmzm!Q4%G!WnPy@Wa0c+M*EpW@L?8;E|-y)4+OmBI&KEBh%th?dT{QP-Eelqc{l~ z#@w-FgL82vc=Rq4-+e(lMEF^uOg>*D7^z#NK<>CuO z;b0euo9LFOTDCny1{T)3#S!xtesOB70Y6IcZ>X5{3^48gp`MhHRjfrFo``a2*e2P93Z%)6U`XKKE=qNP*~2}yZQHh=v5h^pZQHhO+qP}nxbJt)J)KIgUR_;D|41s8P6Y@E z2*=dP-Oj+p!W8H~v9>T}{GV-YVemh`Vr}AN@IU{5LTGMm6+FY1591mu5F|HT@( zFfjhlRJE{ku=@`=EbNSI|3g><7e--!(*F~NV&Q0K^1mP;An^Y>$ozlmubqXP#s55@ zP*70+0h)!K_5aKNza&8YK|uc-oX*^pw|1PhLUDQN&$T#yFnufSgg zARMgsq%F!g1nIi$TYCC%TVw8fd19Lhu?jc5h_hYg>Vj9^lWJWDv!O+-)x3?kRh7+5 z&P2->640YyOFCXKun3w(3PVoWfH#K_5q2EH`@0t>U+WfLVz<%V*pN zVKE0(ridg;3#pBD@3ob4e^Sa$Q8=hcjTS(`WsKQvGO=*D0FwQw5;PYt+ne}$5KVD} z%3zRIxDJ=DiHTE4ehw~?L*^8>@9+CRENu0}CLk>3F=~lw^sAM2bDPFQLr4Wdptc~n z^5`sU`jh09^g}w?#jF9i%bgJvzLN?z9OCCJcF9wjj8{{sl@MA-rMDDplsDg5JWSyq zL)pr+^zP26Zo9(|4|9pccw`xL*0V7g+N}}ng8=9YklFVh+LlfPZ&@4rep!x8R0v>% za}A=H5tqWpkcR+F*r2q!gXF8p)^@GSg=}(Jy4bJJfc1Ay3EPG^8C}XO`RyGlh#Wxu zqGA>|M3{xY^or&j64+0nqbIPu%q4n6JGqEURQ2`qDi*?Rd@jD=uCG`Qff*CPu~fZB zug4FF(IV?-pr?N0DBRd@GD2~$->d8%oL12aAW%L$0uPNmlv~TrEveIj#++v)oK#JxUG1pR zClXv`@73Op`I*2Ufu7N=di7%~ifW}t;*N3U7K_`w*zUoWd73Q{hByx{xRO5jk7jE# z?4w5YI=>F1(tZjT!@2`#5_F9mF%i>1y+0Uk)u;bPdF#3r8}ctMcsFP=GeGo{h!^B4 z5>vFm0}l2~k@Tfq!X%pDBoUU_6?^?6B%CO8aWh!vcpz85AL#hhJ{Di^l&soI5c0U~ zIb*yY=B5(s$PIM}{JL&pEP!s+0Mst~T7!Hi?dyRdu%aF)XlMW~Q!v28-f)+j_9sjA za%bk*q)T(VZk`H=`#8v~?w8%egGu|WNrzlLv>E|>F8D%ol3Oex9SU82aT1~&Ey|@6 zl!9wQ-7$@C2HOB%;QZWEu#~|OBfkHo5kCSuemGn8>rD6Vh>(EOWOvu7B|jz8f<)Ut zrRaE-ibaAzJAyM zEfL9f`YYE&pet9>=d|#VhG6X5F&cuB#J(rMCB^f2s7*Y_3&?1-lZ=Zdufm-J{nOZ1 zDj3FS-5by|857q1H>Xb?vE308&dK2_yz(K?PEC&h)gp9#>=iqnugiQ$OX1>I*>WQ6za%Lnveu`r^gyYN;}J)zBr2 zqg>lli)>i}N=#Jz6P8u#};TF|559c|YP?7U@Ii2X6c(J?A{ zuLsgbSk9%69)g&Aah|~r-51YM*}KWYO2d`g3jBa{b=1M{?x~(9ZjTU9ekRzd z*!^}5F-ijSASXLQ@(HU?YZhx@#2q4mB0B}Xi}4oeHl6n#o%i7-=xhrB5)2}v4GC9K zLM44${XJ))5D$wKAxa!+GQkqb&Bv9~p|5KKT^(OI`Z?3)Y0oGcy}ji{_{8xT>A4G^ zTjl-E2I%V063g#`N}~-p^>xxEdZ)*#Vnfm!X2D!CLH;-rrh3hh`pcjObYSY7M3sF_ z!}#F9TRf%qz&av0Q*+iqtoeXshH+&1YMSD=vj^L~xvoS7-XrWfnR2QVh8O^N32Cx+ zD4pZvnT4EUt>P+6A?QF@OD0`|*lj+v2f4(mXezP$`uoc1_+!MCGJ+YKtJcY0X`^i; zMQv(nH=44O!H8I}Uv_fz09qddz$p?)a0G7Dw6q>JM#Ap8bAX2oUlJ(|i>UL#)4t?r zs^urV@gMvZ-)l`Bh)0=m0d%=9FO8TTxC^2!o zXNiUcwgq)Fobs@3@bmDcYAVg$T^ceFfYKl9?vLD|jE&B2aaj;5)N7YJwS6~vb6(hZ z0civu(j-c_z7yTo-5M()?{pM0gr}`HsRi~+>HoFMcE+PX?eEd}&dNV?lmJ#Ig+_hssaTI9UH%Q`NyhhR1QyB6+BNujnC z1OI_~D_4G53CP_7=ZW26nB-0z%~~zQAM@TnlLLmEF4*Lb8Jrvzo&SjTsK*_A<>U(Bam%{9hJOIZ_Q|n zY)@|>=yCsDs(BfY#DEQ@L`;1bl{0)>2_vi<>L&W9C*NPqLgp7IS&I{)WhKrjU@TYu zIkf9(TD^)rHE8i5lPh{tlC)qam+rPX(aOM#jBAYmyV6 zjJWIV?ATdQU2rJ1Uya?|uC|=9L53zl=KIR#Mv1zV*sFyWVH>kRYo5`$%bqAx`BEW_ zA`BFb)z!@_8vixI>)%3Px2|7o1saF5pP}gJ#~|s}Iz8R0q)bwCbY98YgR}#wGl%hv z#l+Y2d=f*jN9xSDM7q6T^;RLuZBM|2$RzEDe8dNuFv_-Y0ce$@5b3m2Opv|l& zC@9q49oC}Y(Y$QA6_U1w#Rioq5~J3`Nq?^Nr?b($SY27l&Ek+|KJqeaBkCD9L+TOM~#HCA5WNgiE-_ zxJ+VQ(Y|CoBA9zo-ls@r$H7j+rVMT1VcnB=IZe_tkd_rs={tZ7O^=YZYDL&qI!8t` zsJ!@B-&Nxe#)~&f1o(g<97pnr+rHJHLJVoSqo;3^ zqY8|I3b3+Z;eHN4V#V?jgbkhB`rChqnzD>Y%5DqOIXb1ti=m3aQ>;aRHs;Hu+vw zTlLeOwndRp(35HMXCewDHmf~YD6Fz-`el_WFzLz2tkLg#-hd^HI<0tMyGKGxwzk^v0%x)j%lZt`9ucCAUILLHd8-Ri&I&P zIc0S$x76AM%IAcjIpXEASn#V~-v@A#TJ%jwb_A=+W?WM|VAd)?}{d{8?dKkCC zh)O-0qdyL8_Iflj*JgaAUXpiQtAipOI!Wte%8wJyZg!g9pw@fry|dM)0qvs{G6h&= zQ%)+PSqgItQ4Kcel^n4Yy}2{X%Tp*0Gnc$H^G&EmN})pRI~MKpLw*d36D5(#<&1>E zrlV)%Is1nPJH%s+ua!`d79{PVq1DtcxN?qBFxw@p5lw&(I?lymxZD~TFAIu3WkBi2 z#*zN*RQsf#$MH72)S?XQr)az6|I>-Rhg(FjdJ60F$snlb9-8qSqrWo z&)rV_c?~0wihFYnldbA;#k^@kwAZl1+uUU_5u4LkF$S=#OYT}35S?DGf!pejDk7WW z;X}o_tQBD4Sj=1hw2iZ#Eg3z2@~FR>71?Z44Hf3|xgddMOoyBz8YfCf1h7#h@86>l zz;`Dof~2C@LQT;7HGH}K!HNZmFwG~NW zQ=13-Mg5u*9(??$kWF}ua37xD@y7bBGzPw7iMsev&eMx}SUJS+F{-LB!g)#k%9_{w z22!NlP3E<~c%^w1zS%SlVC=LOu~2Qt8z!M!!w~<`tyIb#-gkw`X}GdI!0D*;eBuzk zA!%P=`Lf4egAu4u8^y#4KnW`g!e=9*$cUD#f&qL>ZutuAP^~eGVi5*Oj9}*|z95|E zz9W4=4ih@H8*SihNXTi1NGB~>fh;0_VSedGGD4qe97a-A`b4LjGr@J4Pnj7wtC(6!>(C$iO$X~kL#_{xZ{#`^A24YI8yi?hkfM>JA0kr4-)X)f|G8N=V7}ED+ox`xMeQ@FeRQef1z4d~ zlstZZ#NcG;*)N-Wn#&HOJxQ0}!HFT&=fv?#9!WMb<+z#1RDJTOjLkDOO=U_Vq?XAB!5eac@v5 zRLp;~CuYMN2)8hf18nxJ7V8VQ-Jb>&QG$$~D@qAR;Y6sc_)R2;*dkstj$*-d1S7_`W%i& z<}a9jZ}ssVs>4meFJtf4i)9~%9s0H&dzO5xeSZYs8&CkAX^f#CYQ4)7cnk^}$zx4% z%?+KHr`J_wGlHz^+HC~i|7=#&kbFI#AtCLLDFpqp8nd0glKVRi{}Ubv1pTu zPuaotZpKX(5({rgWC>(2q4q1)1E0c^W9ou2n$a0!s?$yga&GW(#%fYM?dTb##M`}ZZ7+x*XZNFpR$C7a$h$?|GLsZ_g zP!dZfgj@_E*Vh1Zm!Q(+ln5FIa6o4tjdp}K0uypU{4L!e{vFcTz#X2jc;vfgt?ZNG zkoS0qdsJ5MycB;b@xgH7d_@muQ6+AO9jE97=>aQ1o}OM6D^hR>W)UvK7{PQ8;kdob zqLG|m%YE&p0b1%N$SBe2S_C2I z&%nxumjM!)!(*xM2TC*=;cSytum_Gfb40!i*up)d#K>XFFi=}&+*&A zyiIjxT~;lke-7|}KQuU!JJ8V=FQgQZkRCjhjFNw_%>Se`heem{xu$ufB0pv2zi}38 z9ic$`@H^VKGEinj{TV~X7bmcVo@!muuvQu`)CE?*L8x8J$ZvkEcu!m@Ok~Hbl(nW+ z=6Q>ROclYOu=mvbYjaplRy1tFe064P3<;4X`pGyOylW>G$JBSyb0;fThCb^869Cqs z;REPDb)Zs;xfuJcTf*`Fv1ja1M!k_g|F)iDTA;NW!xf%1!v^12ETbY0Opt`tSv!A{ z3&)Dh_X~F9O1S!meL^^|kHN7d&WqvyRQEKUuM4AHwMy2J+tHmGK%ftTWF4AWo^N|_ z9&q%snW0wqhS-BV&5}$1^>6K+9GRL->sx>i3))R;m`pNbL46Xvfsh0I4?yk6IiQgC zORgwaEkrz4RWG{cWf%YJK=pEuKW*vASEgz{R+!kw|4MK|z2dE$;Dc7=#pd|Uma1_0?%ah(G!Iw;wT{6deY z1u~>kU-y%5tKZRA?>_S%DpSC^#A`D}8=b$3v+i*MKV;ri+nkC{ z@N$ogKd{&g6!{7X=JX=1%`a9>&4sF6PI`bTB1N zB%Uz-*}a;<)((dvNwi)_GHA;>L$ zvK-CTC;6Oz?&_l|p;Q(3zq*Y|jnCij3+=qWRQ?2l`HV=~x-XjVs4V@Ez^|ml&@8R! zy#hE;FfEA@v>Vi?vOYsH^IUjd6O*u$B(^t7<2j%etZ+MM8!JenLc*JF!F%N`&uXKM zSXb3?1a~`CBSSS0*5KnUCOn@^YWF)J)Mo0e8JWo_A`*5ytS4egO%8mxp)T4x2CF1v za5G}LRw32%P@L!o9nxC+*0~olm7Xj(@Uurzs4=hXjYH%UYtPBFOh)g*&;pjAY@jaK5y^qHj%Mc<@kza*iz)YLPE6!Bq1X#O6PO@b7!w!*X z?C_qaIpmA_bK)#llN0}3l&0qEuU>Y$J{)@lESn4G^-$^G&s)IKyQ`9_I!~87l`Hq; zECmFPa{-=oO@)+706?RW2NKMwK|Rxct^8*Pr~nW#M@U$A#|ds46l=-|hlpFePh%qJ z5P>hDf+3|kZ%5q@8u6WS=6gdf%Uk(A!n2vhe52Zs2Wq(g`#i*mm>R&&lGHm3mOEig(xDNiBOp z1xCb{M> zXCkYs2*eeAVsR({Ml6|8PhLD+w_v#($3^3AEmDqdw-}@Hvcs9Zw*(K;;uGZ0m&H8_ zXF1Wm?N0vPK~tiMLk*|06}-TxEgVifi8qOm^M-f~V`MrCD_+-q3B9Br}fQPetN+OcQ_}dqEYDlpdTjykIOOaMHbVb{Xq3ZB3^sTVOn;hBRZb+3L zA47Gt2QA~Nha8bMe3S8$x$x>*QWVkX(?t!W$So;ds47IzdRw#06@+*sBt^mi?GkY) zD|La7kWK^XUG`?|f;&?`w*8&YhX5O)&fi5*m8gx&UHsId50-|7V5ksDi}YP>a#6ns zZ|T%vuyr}DBK~rT`SPp0D|^P$KDVHkwp|&wYBkBD01FpTaw~HAwkvihd7}{aX#h}5 zeE@)t-lW%}11$NJ4oWu!XY;>hhL{s~8H^8;pTRaB4yH`*a0};C(wZ}6&NkYUIX{Mz zB%|(iX{67gt#b9@@JNy?lKVD{+Qck% zV%XQJihQoXjTlDZ1jZd3*rmgv*RhrTU3mbNKtFB_8MD=dNYA#Xq9<+)6-;8sB(N zV=jeVQor6nf3yrcsuRohvj65%BeF6()hB|vW(>?7n1Jc7P@2FO7$|Ggt93m zBW`2exM$o1*+D_i^2N4Aqy=7njXuvN&V6^$`l%*PTm7IHd%yOTsu}wQ#X$G+vA#qf z6N=h3b4PvapSn(6x3ni7&98};cwqDI!Iiu@BY)&;7W1NFcX`;cVgoouAk{Uh!~q!F z3Jwm)UOPoEtrzKR&=?O2Qfgx9jWZIT1VNHcQ~r}-ZW-7$Rk3MgPHYX(n8=XP^_1J! z+Q7*q9HtPW1*DH|cDy}oLcYx-d>ldE7gwek|{j)ms`JoT1AcKJ9ckV2WOI zxkR;HEwH!eY+832WBcBk$$71J6?g3@DF_BgNDdrv8d~HS6O6dPqf*H*5p|rP7cJG* zaEH;@5!E&ERHcW5_7`Dw9T?F!rgxCZS*>}__7bi~@K&5mRnT7{9DYcJFR-FMC^i$d z{%=&AII%$$(nx$NRDwRz^J{rXcgslHn28vr>7cPi!$Qe@M4f(R+6dI8VRk?b`{yjEzRg zu|e1$@5Jevhgv6zW0s_!Y?^@ixze75=4U&mCx-GYrBvxT;sd8t02$=2$cuaKcfxfn zLChlO_F0NO7MgZP-L0G6WQQ*Sy?q{v+=v+myh4OdVWAhbFMy(77&t zqrS@lyo%bz7m-kAtCJwzQTnntT#%Yw7LU3RNapY~dIA4vH%+a%e}@!Der%7gZe%6s zr0;H5*zEnj*CVRjTwLToLu}lWbCFLse-QZxzgJ`Tm?}k71bxr{v>Z=0;QxeR?MlNH_9qY&NUxTqdHG|)2%>}u zGwNL(vto6bo6}rbji*^sL@|Ca%hO0F`VrvLh zf=g}kQx+mOMr%={5UrLT4i&- z*HEntL}{v$pGVYNFrFR!K;oQVVrb$uH|4J?7&#S<+O>KyD7*hmem|R9DbctQy~V)q zqgKQD6A`*cL#6y+;`fufPWij1GP#M^}7Zw*bGeuLs9Bbvh*9O(BgZElDV^1Bf zqapon2SftmD|rYV!xt~#sCNYqQegNw)C!sS=Efxyv8kuq@-cAlEay(_um|P1!QY~9 z-%xY+1a2pPbq>mwwZTVr2XF{wWR&C_!0viRU8GTM?Ui+~^C}wWvDx;uc#O#M3N;FP zhnqKIMck$d#rm&y+^i6P!L1=p-C^)5F3v$F1N`|h<#I8>)2ykzYsU~wocllPT|Vy2 zfO`$$xMTvN!sLZowhNm6;}C+l&|~B1eMn zDKY*^7xewwa2utTYvlK=Xg-j7v#{n8Aq&|xwYpjDy;uSE`V?tw9VqjsGXgiibzawx zc8Le~{K3XaAt5E~UOy^3Z?ErZ59b6cT{=#X(_s}2+JT<|awTaG=l;>>ZXI_4^KCe! zEwEnv@8Ek_E!@nO+>m`Tb!w7bkLcKA3V-!*^U+D_b_&h7VwHaHAnd8Mp9%LH@Ei6F|KwH1rsQZ zO!@KWG5f$vJ>%7x-qHnCQXdSj<3UdUN8Rh%`A+iW7Rnl-dxEa}k`y9|4%#Hb1Dd03 z`5dg6N-RcMj1&L8Azd6PXFY`-&{a?HMnpyU+i)>k7~2x2ME|Un7P1ElaGIx&{9sE8 z!?6xCH26+=IaOX*LmKm)iO64LW=LRCbK!iY*2wd1%dSb6Lg5U!WDB?X2V_&$S}{48 zm%SqYOxTEjJ$yY)>YoW!6iu`FwfPw`_TbanlU27ODL$8_tYUjL{Ij@*zxlyl?MG%0 za_BM4@*ziN_AN77`yPB`)<>&CQeT?jKEB+zmT-r6mpqF$>~g%89!1mSJszKpUzNp7OQrf zY->sWWnDuipG&%=r+x39jZ$ULTRBDN=!(${7yHvWTv3F>mqjS%ToVI9$u@18CW$zF zQbO%;LOKc4-%BKu_Egtg%`U=GNC7T(Ce|!4Pi;BMduA6l$-L~XO`1xBQ-=~*$;yAR z2e!etw9N&ekdp3qRoCCS)k78x&`=7vwostVzqUAK%mh;9jGM}gdsJa{a^2`_PEK*U0jpE! zEFy{+9J=fnq>o+~5C)i3G;=xW_U(TrH!*wDm+jqO!u|=kIDVmQUr_nA{L8q1vusK? z@l|3j`Kf-9#(^?keYoQ2tTyf73XX!yrw}9au9HRjGAqYzkkJgjwR_{?oe@ct(PW-! z;j$%*WJeXy1yrC7RfHju?d})V_U{Ijj=<(6Teby=WfRC4kp5wl+|Tv&7m)>?D_{W> zy27wh4=5m-&jBp>XDfb&ibT@a?P=(WjM-&}6%;u3kWN_MDidaj{3#;G5@@a_CBT5L z!X33%%N%hkMQ3J~vZ?x7c>nIG=z%z9>5EZdDS(Ev5BSDz<171ZNo?5z<4)Tlg)4Cx zH5mdSEt_$_)Xl@YRtXntZn!_8oYCGniyxyRd|=Sa0bt?o5ZO~xwE!^$QFBSAyPOWx z;g3q7CxWy}jVL0Ys#MQ1n2rTq7%Op1*MjV_oYf5`z+KclNCNrcuIVxhlc3{leQV0> zKW!cse?!k%1~%b!V$IovkZX;3(vFYvZT9`1aGcfWE$RJ?wKpip504XQawp?!V3NLs zp%jjRLDeq_n`~4Jhx3#n{3|Ymw|EjVzj-pC(q3%${?TpXPB!g2MGwa! zyX{w88-^!6U;I)1=K4`AP@fPwD5jqjm6pf0$zPmXi_&zC9I&sAUMN@2X`gL@q_a;J zG)&0cv2r}?;F!XR-go6}crEmq*S+!2CDs;t(cFM;TQk4+G%<&2X^^g433(LhC60Q% zq!!C?WWPMN$>_@h$L|+qc-?&>Wcagb zBZLZFlg5y{f{D|4t~Y53Ep^+rsXp&dgm3_K`^dl(7Su3(2u&uo6T@D7;Z*r5`FBl+?ThdVk`>ZV%!dELOTEVUEKVL=avi zuA=O=w5F`>WY>Q|zEj;hV$fAkgn#{-o^{9oibff%no;tAp4LG59rlUN$G0~eP7lX> z=ts(_f#(|@YKTbpy}#rxudt$d$QY%G%FW!FAgO3&nhHnKe=c=SJXD3TuW>fp{mC4o zz^*VQQ7?^=yVUNjh-Z&S^X~hZtvOnQamqER zu7Eg)3FOiw-_a1^WFQFIa!7?yB!HFT6vc+bm40qjoWaZz^VdY-6t_eFZncv?0I@#b zI@|xt+epyZXdIPi?*oNQry>@G*zvxgtyct3g_h-4@swX zt{rlyo zKgjkZMj35~EFbf`aH-UaGJz0Q+-Bk|)$X{e8Hu!torxi}-%LptPsjJ*Z0&v~Uvh{p z0wp=IJ!*E;?mCRo9uY<$nSI&C63svgJfmj&a};y8r1|>>=Tc0$V_MZm1W4#QzTgde z#7Q()JxGWzDsO~I6(LT>OP6@h3qRSL$|XM z#3ZS&J~(blC>gjIb9_nIunui!*$$vI*XFGr)&m3+il>lk3>G0PZzc8NTs@HFZIqmZ zm|f;W`o7lvle?pucs3FsvFszg^*&XXAt+fwzBx}h3H6R!=##7ZYn5?g+jGi)#)eyTw{xkh2&6&^xl62Z}JGgmR`bAd? z$|=h(#iqX*{37mFFP`zdp{~db;JH_8pQT+oh}A4D{uF9WALUbCpCwPbt#yux0OTe? z%72JzWV-)}exnm`ovA(LG)_XE)k26$doEza}){7P*Pi``Ii6~|7okXlUW*6Rb_}NcAX~CseE;TE|rk4BAu^&fN z$#h0r0Pcj&$wyr%MG~eMqQ7?}^%0bTxcVD6e{mDszTj0+hy6wH(gbivU~aPXjfbm2 z_gKkkeW$Ab|*=S-gpssMig(Y64{Yjqc>$V6^UREA2*%V~i2|0bHg zVa{Nme}mfcFR51gz6tYu;b!Yo9dnzBT``QIrfSh zozwRau!w>+v)zA;78 z!m|AoD0V}#K#!)V+jFSiu#f`H8!l5fd!dez;2hao%#CL$>EUx0ywZJf_mE%a@4(_F zotDSiUFmFvP8e>lfc%2iR%ujt$aKWQVf>ex<`g|q6s47s-#%vh4iJ&sC|@)9sDhKB z<_jkEtLhlL1!@lqKuKOl4MH!BxxK4dUT+_nD`o# z1XV>?=o)|t2VsciQ1By)#~VT@l+2DmBfoftGSpl{;jpY(N`wPklBcjoqT+kye&PF} zX`Uwzu`Bc|c_Uk)!f6};S9i&DE)YAOQehj04TUdbDjtY^cqz~*6~&5pDJF)_x*t>c z(TK6O{av-zCQ-8641BxG!MMm}e0pv0jMwzW6I~G=N}P0BATU4`$6BZcy@%ZJx&p$; z^O`=VMXmsc*7>zj)hjaO6*do6CTQ*`Q9t=`TZG1b$L`0u3|EW5#71iO2`|nrD5Db} z-ITS?8=jE2*BgKR9!oSj%Nq|h@+t%CI^`fCzl_o!ySdp&rL!SEM;&rDlboh_z8(?s zKIyT4X4$0#KB^QmyvR)=)v13x!2re5A37!JByYkn51iLi!!2Z)egl05>6JKhWd4p$>8gQrjx5N=tkNO+2&tWIQ7s9JfjPpp?37iRD8v! z0aI02C%nRuog~y2eN|k!4CvTqaxr>RqE?J8X8@73uX6)4<(tkB$eyjA2rfW+hjKp^ zA0<;v{kJ;+p;bT4esB|ZimglCNFPu3-5m+9@n&PZp#^|Wa*nVb9>!HlA%lSqKy`6_ zzu6^d6+7BO0aosPJ#838N`$r9$f7YRj^SZl_IFPuUd%6o%Q}Urt@7s`z8M^O*h|%v zctJSug5yY3J)J#N zoHWY7ama4A^P!HF$|QLvI5u7w;%{m`jq+KdD&^%t(|oc~oxuBr&tG(V-OoR3$yLc6 z(_d4zB(nk*j)g4&HR)Rlm_4sWie;+fECwr&BUGC^!8j~*BGigiXYc0*R7ZVG*NQVp zMib!xsq#u?{Id6i*1{bZc#gv?-N!X~M@o`gIG5@dlzL*Sf-ELlH`9If$h2!yks4Sp zlB{pQTJS)_ZnI<;<;hm;vgd^v=8gp%({oZZaIvP~oz%v+ymD2WgEnsWQ)3hONlHpO zup94a*qg7bu^82(9nEN`%S*m{t_BjsF=1V+iNaM-;Tv{H%IKu9^V0XIm?NM;l|zp2 zE29Tdw!hKXZ2n0%J}3(qobnEhXNC(H z3NF8lq42!G0<%(=LFAvOO~If^ls77T0)|hz3nM0D&1hpiE!b} z6^N01FC`r$#fNXmK&EhzIzf3JZ@A*8F2rQ8T9KaE63d5Xof5US1u_&}pElGzz1$Xh z!y_V5=VQHNVf9-o_iaX^mY~Tc7&2{XdpiZ^rf{IJSkm`fZ^h_H*$M74v~;KGX58-+`nLw}kP_$J zd0UeQ+MXQ$xjzS4yfUa6WbcE&>=k40a;Bpef^1>PWmxl-gfW70;?g{+gau?=-+WY= zW5+|twZmtxnnWzJAC(5I(49Hy49>H*?M6SNFT0NDBDL{K_F}n1%GQ5rRCC}9 zLgc$Vdh;8`nkFw(Y7$Wl5rgGj`;=PIP6ckv^J}4YQm+iZ4)y5F(~VPu-;=p7fyY>l zSN8|!@&_b2ioFNer$M7^zf~momI&a^@hEa{a-+*%Ju3#>W*an4jI&392Wn&ziiB79 za50!Bc9()&;&97ocizl#xH$7hRtWbNzWo--8O;kTaY~t|WX-7P>DN_^ASQ}yHd(2Z zsn(CRZWAQ}9_zYk1K)cI-e%Q66c&hLKp-8yfc12r<6fI9zn#n+#ZYfm`Nn6|i1{=6 z9pl}qfgi0B5^k$njCYW*)gKK=+61{Za*jd8gl>u)WyNR#i6sPJtDLZqLC?v6iekjy zJLoVW>@>QoX0<>%Ji%~n_pM|;@ktesWh@QJlfzb=8%%G16)-Ue0W7b1Tu>Ff@AVNl z{q7?))CMzcJ+dvAX!#HGGsj-U;8f6gGO@NQrpBK=XTqeihGsXbw*eB4xTx4tWB`*+ zdzg=E(TiDofV1Y`K^{-KkiYDc*zM=Cy^3kwaU3jgE>cCMI7IuWF1U@ILW2E5oI~o3E0 zDACMgDe3}$#t$lO-F)(8!0sob(0~ZjiF(1j6ae6r1$uo9V%d8_!%$j46 zFh>-_e8M>Y^bcDs@kh-4qVDUWs~T8(?(mz|s_os5zJOOompdvpsfS#Q`(MdV7?N=( z27S{ATIei9JO9#W9@LDPN)FI1N2Ak=SSD-Wo3Qbie^l(-CxKvdrAM%cBP|K1TT$kU^%A7scgo?Zxs$hr6Y1N=$z`bH6?J5HSsxrJ;k?3rk<|<^Gmwhsf4~AeTi$ z`gjRGCgAwnF;#7{53;baD{k18Gv_$0jH`uSPM%D$B$xT(SAER-orxU4spPs#1tkhL+nyA^8d?>%~YUVr2{jREErh>QRqgMs{ z80)Vd5}i(TKg&cm{X_}XPkQRAJsH-X9d8hJr+uKtm?;;d{2rSq#xwww@gn3EqHjJ5 z$rOKcNV^T?0(Lkrfe9?jXo+y(Gnh6M4HfIpd$dWGm%N>aUsR4$lop3oQ3B?oTN}M0 z1N-1F-_uDqR|3kFQ`hZ8^tW~rJDKdOKeFG4AOK;HTaOqcFg-iFd(JkM0zN2#p|_Pv zkB0X+Gr2-xrnYTW<=(s}ko{;bfh)=uEG0l4+j_gUg43oadcIwuWjuXEmY>+tVQhV_KPVrpLXZrAscNV}XoNx9*$9=88?a2o@$>J$nn#UXN|f6wK?i`fbDI{P=|q zcXfhm9b&W^JDTArP#@=LNZM~^5I$CCGbWF z^AM_}iOJXPnY%<@nJc?!P0u#ulF%kH83Nu5n_8@l_~Mo8SpQ~*q;o4)H7MWVhtI?2 zJKr&fAo;8Lr6|$I8`P6_7SKqN$ zh!*ZKRt)C^^XSp#Bix=C9Gyvme`xeI+!ow29Wkn*ivFf;C7B#(PgWV!@nkheuW%&2I&Kl|)UYkg6)_PO*J$e}NSaTi_MG3JNwPnOeJ`daF6y_id=7FsDW}gvAjP)5?+e2C>=#oc4 zsRp+KQA4Ng(~DyqLb15TLhZ$oPqQE(M?MwtA~330zROBcsVAj37^4rFrQZhp8p)K= zAH}y^-Ya)p!{9N@J)1kZeADfFcu@cQ$N}HV=cT6Ze{!7WHR_y6UCJ7%l)=;8VU$?` zih$nsVe*6HKbm zXz_tiZ^+);6$oMRoZsk5mP&Z`-04bwY4*c+SwwUm3r`M-9Nw@W!q@6K?wNUdo&8wH z4v_7(j&uhjT4qIi6P3J$nix9;xKl?G&KWgY_Ed@#?V$#QpRbafX~n;^aRZOMwAg@A zPYmL>Sy}F3v(7@TJ|(m4R{CYaN1kzXqG5{sGz?JxW0m8?VxYtNAVqd;K-bYPulbFu^masm`mR$|wMB%3F=KUyJ3q8{zAUwDQ;=8HiH zo7%V)p}1IZPl;ooX|e<#sJ!R?3=p<%A@*YsmnkL9#BixVgvjM%GcDia{9iVJL8M;= zor|iza_S%y&{+;iYe+f>uh0j+#_WaatuB~)1q+DWz%p8n*XkkEb^G?c^n$M>6p}Tv z6IM}`H^h&bPBN=)U8y%;QE3h}NSv>5vRK44=_ocuUnDH&KSH~Yw66U3rb7L}PYjYt zd$3yOP_^`leqP3#oBbN>X7~uso8*ISE$-Oq+S3(Z)1tuI6T<&7B@5 zp*{a427*IG0p0J8E)v<_-&+oY>rUwF5jK3u`7b63vY<<-A9f>1y5%FJJHpJ!`IzoO z8n^7UJuM`(f6dyw{-pKyc09Uxo)2k!&HN!2iZylfPBMTDZ(3<_vOls_gKVfu`HN6% z?L|du56Y5uz>ok3OK!Zg3R>rc(Q*#k3-o-SvJjsxBba_EiI1EGLLn%AD8Uogwzkbp zf?#q{HyVO8pXEzN10m6`uVD08qC4g21K_t9+dokMIPk*I6wTvze;XbA zV_$?3O#6|pd#>(05PhDgU?a^K5=cd?59*niYYz!U-o%+urj%tx~{T_@QU%l1O@F00T2DF)~Q+isp`JD zW)xo#D_Fl`oPNh8K`w3`@B3kBm*my8*V0@w@+!K9&<39hdz|e7(!5uUkDBB=9W9@7 zS@=%GCu3R3j#q+}GBDm$!rOzArq%X{B0e4}G4tr)cooULGh#>kwIB{iuUj2XCJ5|( z{g>F@Cx6_O8VLl}GmL>QKV5%C#|OBm)KQ(0a|?G{ZB9_5PMO^0Doy-}v-+TTZg(wb zc(gO{H}HXj)h!Mxiz#VIow6d3H3v02(AeCLg8d&nUGhJA{ySE1$wci}#D>=gDeNRu z=hDTxu>Jc~Qh9TQIVT-k5T|R>9jnemba(rC0P%`51er7&heUlIbJMf(S5QDg8x(0T zoZ9A@KN!}fYR2^skK%F(m$xWpyKlh{Rd_XKXsi%fo9fH)by zY7@NA5Dxa2+I`;YukDEG65JuMYA9reehaJWQUd9)MDPw1$f5)@M4TMSVfTGk>STl` zHqE9D`GuSVaG3(@W*vr!8EHe}3N+xvX*oyjnEvj6Bx~*8MrUr&`FdEbnEM*>JH9+6 zixqq19v3Fm;NpPXa!8cYYJPb7&SY~1g~Hw(-=*%B1EsKd;(f^0yAf??tvDyHee?N+ zt|i7dCUzfFvIFS*7zk3ObZ^HPvAUd6Irsq%n1A1SE&rnF z?A=s4U2WuOP;k2-B=x#$L@#qgRH~EKAy^{#+RdoY50!4b+OA%$6)@Bq8?3gegPx-j zm|D=xhgbpGO_xwy3`Te?#F-Vg+?ac(4anQDkcbz$QF3U zascN}|F)_Z*R_~bIdud#)xEfh0%1xgPY#xsHy=~IOVo$4VodJz~w{oxeQ z|4o=)8im(yeL-LsCQ8j+lIj^;c*&8fj`9d-wXK;B>>TN{TE3w%vo`@^q2M~OrW znx?k1H~EEkr25?htb!_HgL|DN<`T{;{mPtgq)X~j_;NDK2+sR9oQ!Z|7^>y~j^k>fgL<=^( zsy_e0NlZqdO5C2eWayBD(l9DOc)QV!vwjqF!H{>DCY<<%*k=j77PPwq`~B^={2}g{ zy#Uzb!PVdXg=53()?%R}ifA*FaYEU0K^>8b0dbp5`SIh+eQCyD_fbVvbume2i6aRH_L_sFy`Z>P6Tv1877wngzY&$;AY3 z)oATRw)6u2Pj*wZ*-?|g2K7~C_gqnN*h0h+e>&PF#6gSKruDmBv#ZMBMVr5$-TFNK1KQ8F@_r9Os}f^qV0}w~2)_$Pn z5?0jk#^+uu{ymA&Eor#g^GwM<;En`WFmDLIr&hyTJz7|1BUM&;rC^hri^N$O1lO{K zPvTMCX1ZKe$ZIJxhuRw>M>G)&+@)C@06Tk;jy?!y!0ZrCVyD8U?^2pPS4puR8#9|n z#`rv%ZkN|~GWp)U2Xs^HP9)L1Lj&d$3`tPH z1cr3O{(gShO;Urlj!6vbh*TU5Pw2h6t-lV8lNQr)skqF6IL8?r7fhaPgT`$9CMzZk zA%%#cCF)8%GJi2=f1SX24Qy-@iKd5phF{E!JXda@Bnju7>6I%gx+Z1{g5OaxQ%7#p zkZl}wB5`%k@s8<072eIvVPD z|3X_uh*ce!kRDDNhq*Xfed}zq!Cn?=KsRT53&-S~n_vs7uW)gkFbr94ZK6_jx> zJ!EE-I}{8oimF;j>x#Ea{fCeDi$_qq8)G73g<9o-y}L7?VL z4rsT-g^7CPV^RBW#+YlB6fo+7v_dOxGBE+k^JSbj2m=0Ny~~zXf)Jwc`T&=rIkqje zFR5T7w$6k5S8Ft)H>R8Yu-?ZR^^R0`iX@0}vVZGWRt9FHCGk_mgIc}?`Zd%sT2-yX5?1jVaFEpjEjuaBFYp zjwQB#p6!IXoN$CFL~B#f#yUEhD7N866pthMb_`uXZil$=+`PiFu`3y|B~xLo1~;S) z0$z^vfRN5v_uRS{Jbd~wz&c%7cwlbem6uwbAV07!nl@G&?!Q+YP%5eFgrkaWW$mV1 z(l`-YskR8{DT{vXCt=Xl@Fc$20|o7gs=Ak@kwlN=07g1`N(LrhUoIfnLdQt5>)N!% z-N0kQ1Q|TT^D|78g)ud3+5DeM4{ik1dhAB-nFJH`D5;djL-}ukT*6`LL>7W6vXQK- z->)Rxu)xdG^5ku#dY9$z%ug52H0~Oz!If0?+3xz{3aeA2DI@rm?V^Myxbjt}u~#34 z7y@(at9pO>TKXl&$V`?A!htpbyq5=)&B?U z#o`JSSqfH(>c^xO;TYf4IU<$tNS4n4W7bzj6Bz@nH(unH6$R5m`0?N8$V?G!Z%NF) zfRJ3LkJN>+&~{e^yBf*~J!K1_$3kR_tOgZOo0{eZjbChi41sqh(_Nm;h`NCXnx;H! zsv;$JDbWkfz?+7jWKpg(DVMXWiJ@>W{_eP`9hCF4g&pq(rGS7Hv8&Ny##q@H&+@lX zdzmt-Rg-qzdn9lckTd85yq4-kt8vQA(lj-=gH_ZWX}UOcfasw6Jdb?B3o%e78WET5 zeQPhSt~P)nn-4Lp;orM<>^xHHmm}a3XE}q#@!XF@W*5$qy}Yet&H+>Z!x2x2-SfrE z<&zlNT+^H;g{Hj_Q*hcL=@IxF;Lf|yG|DN!vxMHsL5&9hy&e}}Kfk)YV<@yF#TN{r{%Zb6!*~Y1=IYR=8l>dotWnEH-6L)B$^6_-5-(~fKmx&qbVu~<)reTm~@ zI<+c+cW%JNU6F%Ly%A`@9y=L5o2`OryB-(jO>&zs_Wgf9gMs)coFoM-xli+1t5$=e zcH_pcCkvm z+ecUl(}SihJe_~Cj+_Rb;P<>h>seQVX^vY?9ZoI0PiFMLIPT+`?rvmB2%$EO+gd3~ z=A!?u@b%xrcjDxAFwQOmsc`gJShl@f_^1HT~pG5w! z?-gu7WD{&-eh`;FHV@nMLL{US47FhyYTi>f>ltmQ9UN=1D|(I0PUsw9Z11OOi)s*t^hNiiowWu-}k^126IcP04q!`uUmGTYB;vmbs5G;Ow6Ek;aC@cw?H z_c$r&d5gQ)(}GU~RLPW&VDdZhJ_46W^O=U$>qBwG&hVAV9|(Gd7o{84DjJsQ*$90i64-4Sd+}62bt2@q>gbptBP3x8=0(D(jQpOLBt)oO%m|!10xELTDr5@r z@n&~(o=%b+Tk~h;>;)1N=lW1e^cr)Bhbxz_c5n-ZvoV)sdLySD;6;WE;u2h@XVY-A zkotpw7ayh56=SqEQ?V8gu{acRl4oOh6n}?_CavS~kgD4D{t0pq5%N$(`go5F^erN~ zKZAv~WvW?_cW>l5T^Nv^gz6$^ zzrcc@e6O(5X`;;}y?J%LxY$UBSf5$(?Dv|V>ZrJI&U%5}4doeBwnEoA&Y$k!Vtj9# zmv-e-)`_L{e$>+=vODSWU-X5Y!gYb8NGD@=w&FFLyz&~CCaRlS7xS+iK>l4CJFIb) zGU46B9f&eaG6o9`i;91z1RI_ExfxJF)@4i3%)$Bv*8mWLv_DN{8hC%R<&oH*oG%qA z^$oF(#FB_5y5YupoNZBH1nsP{PyAUGhBlftdLG41rVw2+K4f~u~nN>IyTT!HbBr^8FWeJhIX?od%_0m^F0nt z83Pkpsrd+OF<7O#_ZUAp0(~3G(gXT{mYi_DCzplsVwvAHQ+t+K(H5!18Iafw;QD-G zF`Od3wsPenLx^Xn)3Fn{-B;t>ulKAKxu5 zYLWNg?^<+r<2WDt34~(F{;MU62=@)QE`+F3Bpxlc7=GyfW}XZshn;djAYp2%Ix1!B zEk^qC=`m}wkj8vQjz9n7_r9CuMpMj}my>C<#}%?DpO1r)O;$wP`W+-vXmxD4+0ypZ zdwi;6JDc}6<|EIN*f}&)G~M^nRI!VramdZtoC*6Xh=K>uo*ZW4BMz$tHT)aTVJsgF z7X8Hp&nQQp(Xp))LX6ueUO`^80Tn>yo9hHia7{aIIJ$<;2uw*HwYWSSllz%Cs%9kX zGICDywEUtUNJ@QVU)>yrOzB`^7i|M}ak~(RTJnX!WI;yqO$J_CnCz@f9>63=G9a=7 zxID(ct>@SDE@-Aex9N1#DKmZoZZt__RU*g~SD6)2d$0y;TrphcseEfcvdZ-i;kr_r z?a!HcdH%DyhGB|Y>#W*tmR?bi@9#Z3{i|%$P@odcM@*a!tIxDbgm?G{9Xsj(@&HTz zim{}esEHNAmhoW?#6a)v%<=3V;O#}aFWzz(b`%j(j+?s#3J*!4U8P>efq-z~+E$W1 zi@HiBrL7}S)|Z6cRTxwGnk`^x8vxm}$|)!%U!I{D5i=o&l)s7I#e6FsQF+WCda*ZR5W-kekEyZwf*r2PvgWeBrn2%88|U66}&VX79|H zcb{(kA7>3Q!WzT+0al~wf}*cen=JN}V2bff578hgrgoiDdn?w!drvf% z|2fF@;~c8+o*VPE4OgD^^M*zEpv=9cC31h(bDqpR=pm9vvW8(x&T@zV8230e^7%VA zYA<1wbgjDX44(t!wpK+KBhA~xt$3?9>lW6XEY)T;ca-F55OVz+RcrG+DnEh?bROUf zUrrK^#5YviB*Wf3BjZWzOSg>iA{WtS7KOqsTOst|ekctw4s$;#5H0CFlPxH4)E639+M zmZtR0YEfI3&7oM5GH}9@u{EJ*HY``XNQ^N?q97aXUHz0Yk(cdZRHqUX@Ue30W{V#J zBd_!^bRQnLv_Dtj2FR{L`j913&+5D~%BUzwPF>GN_Nd;nIo_wew=uHyqJgsL{hRV@ zMxlg6kDp)aXHARZd-Q3SGQcJi$ak-j`UK8x0W>N_{WaUTp9WHhYDB3^wh*0>E#lo*HJA)0(?b@b;8DQ& zUdj}4m_=>#vFNLCr_Q#4l4-@tuXSv~fEUe}$zg+VjVELr6jmx!(M@~XTuLNXpw zZ|KLE#zApb+gj%n-;j$XuuCkv3*RJmX*}#%YRq9Om?~G z0Sx3$BbcN~!Zd`w^||3amt-rY=!o(Q3eud+W!vKtW`DPc{VKL*HO5i2->{=2h4vZg zH(PzeTQ)Kp3JwAyNmRFO`CB;U=r&x*GvsuP1N7=w+MP*S8RPovBB&VHX}-5R-0r*? z^xS(E1z5~6wjj{u?&Tm!k^_FFNT+{Xt}hlQ=xJBy%s2=qkGf`EK}ZNMIShuN94!2c z8fnvf2)|U$xp5@*Ay32^bQBF;g{*>G6SrJdoa}CXd*LnmoOl8d@&CbG_;nomFtz{m z5d1%aEBCQ;p#OT-r*Fm5vN&e;_MH3EvDB}@YGN=4xeQN=5I$=!g->F{cJf>n$84cB zh9hH=xk%&uS8yFJFIlJ{GJcTDqyC?~bUZrO12bL&i=@7Gevgu0MB?&OjM{Pk((Vmu4AD+hnC!Gzc;D@l0f4NQ){5vleC%k$eW11q92^34 z|65iEi#NRt=0{}Kpq&JtdnB9@P#oLwW-P4C*_MYm%iSyuSZfg@2iY9{{?uPp6p~oG z`Xo>F`|1EuEq;FSR2rb6oF?y_G>cXMFE^SC#m;ql$dY-|NX(sI!38Cv#fXb-<*r21 zT#3M5&NfF7mQbSIB9drTGU7Fds#}=NKa)Oc6mpm6;i80yCuNcPSgC8>vb=@b0j>la zn8g?5;t6VCxZXFAFy@CF?aEAKNQ=TZs_dCIteG7|r=*J*B1jVrqA+OVtsmBLKKX?S zD1DNUpDcWAR@WfAtT#%sPo~{1yA_iNGBJ@T{;+d6V`1i@remXjphRQ&oikHQXf}f> zF#TN{r{%Zb6!*~Y1?Mtzb`#`{IX-h<@!LQCoQ%(vQCi2-h!A+tVrCzh$+bjE(Bb#? z2wvL~XMZ(O9T>G|81d^xM4%t&+;!y9-_9Bm~M zxonRTkX3vPmC!KuM=uvpr#m4so>*?6L3$q5-})3d>ogO;4yv`h8}LSsxIAA+<>-B* zp;MWk6F#CRdey=-FFaH<%uLfg>>1Laq9;dt6A_*F(jBj+ARPqsJ`qO55M9-($0on> zq6x7^OVa+zGbS(!5x=ZRZ%1F0zujFCciTEpFOo?QXV0fvrx`9KYMgxJlOOQRM| z${6V8#f0>)N{_P1$@_X+3Z2XxR%o^KxkD*0?kF(uX6ftrQg%SqcvBf6htGwmX_O9v z(Zg+R1+!{QfVsL%a_TeY*2`ISax}3s-rVjSEjN%=VRie?S3V z%JJ6;K#G&FNyc!)Pme+lZAg@qhpb4eD5( zXw~{STs}L?&;7>OWZ_5#UDi7Q1nKS6yK~@%6PxSt6{BNb(&yCS1$cCZH4J%T`kn`Z x|G|8Hb-2)P)bfpzLzEV2Vt+!|-ye;%H@<1mVr#eAMl8wC7;@IaDt*o1s6ZY6UCjUh literal 0 HcmV?d00001 diff --git a/static/images/docs/project/policies.avif b/static/images/docs/project/policies.avif new file mode 100644 index 0000000000000000000000000000000000000000..55ec91fcdbf4934bfa1745c82922f86b6b24ab85 GIT binary patch literal 25371 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 nh}Dt-@uGo^!(LW=UBwbJ%U3o+OY*& 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