From de6d558c54b3d4151daff6492d88051ad76ba5d5 Mon Sep 17 00:00:00 2001 From: Marc Windle Date: Fri, 10 Jul 2026 19:15:38 -0700 Subject: [PATCH 01/15] Reorganize SharePoint Embedded docs Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .openpublishing.redirection.json | 236 ++++- docs/embedded/admin/admin-overview.md | 196 +++++ .../apply-security-compliance-controls.md | 245 ++++++ .../consuming-tenant-admin.md} | 27 +- docs/embedded/admin/create-apps-powershell.md | 110 +++ .../create-apps-sharepoint-admin-center.md | 229 +++++ .../admin/grant-admin-consent-permissions.md | 144 +++ .../admin/install-sharepoint-embedded-app.md | 230 +++++ .../admin/manage-containers-powershell.md | 266 ++++++ ...nage-containers-sharepoint-admin-center.md | 310 +++++++ .../admin/monitor-usage-billing-cost.md | 188 ++++ docs/embedded/admin/review-audit-events.md | 216 +++++ .../admin/setup-billing-m365-admin-center.md | 198 +++++ docs/embedded/administration/adminrole.md | 87 -- .../administration/billing/billing.md | 46 - .../billing/billingmanagement.md | 57 -- .../embedded/administration/billing/meters.md | 42 - .../consuming-tenant-admin/ctaUX.md | 286 ------ .../consuming-tenant-admin/ctapowershell.md | 206 ----- .../developer-admin/dev-admin.md | 162 ---- docs/embedded/build/agent-experiences.md | 26 + .../build/archive-restore-containers.md | 80 ++ .../configure-authentication-authorization.md | 172 ++++ docs/embedded/build/container-metadata.md | 122 +++ docs/embedded/build/create-container-type.md | 147 ++++ .../build/create-manage-containers.md | 138 +++ docs/embedded/build/fluid-framework.md | 64 ++ docs/embedded/build/manage-files.md | 129 +++ .../build/migrate-azure-blob-storage.md | 134 +++ docs/embedded/build/open-office-files.md | 188 ++++ docs/embedded/build/preview-files.md | 187 ++++ docs/embedded/build/quickstart-vscode.md | 150 ++++ .../build/register-application-permissions.md | 141 +++ .../build/respond-to-changes-webhooks.md | 107 +++ .../embedded/build/search-containers-files.md | 130 +++ .../build/share-files-manage-permissions.md | 86 ++ .../sharepoint-embedded-knowledge-source.md | 84 ++ docs/embedded/compliance/audit-events.md | 65 -- .../compliance/security-and-compliance.md | 132 --- docs/embedded/development/app-architecture.md | 50 -- docs/embedded/development/auth.md | 244 ----- .../configure-redirect-behavior.md | 187 ---- .../content-experiences/office-experience.md | 79 -- .../content-experiences/search-content.md | 832 ------------------ .../user-experiences-overview.md | 67 -- .../sharepoint-embedded-knowledge-source.md | 40 - .../declarative-agent/spe-da-adv.md | 319 ------- .../development/declarative-agent/spe-da.md | 75 -- docs/embedded/development/fluid.md | 77 -- docs/embedded/development/limits-calling.md | 77 -- docs/embedded/development/sharing-and-perm.md | 55 -- .../support-archival-of-containers.md | 31 - .../tutorials/doc-processing-acs.md | 179 ---- .../tutorials/launch-experience.md | 90 -- .../development/tutorials/metadata.md | 474 ---------- .../tutorials/migrate-abs-to-spe.md | 382 -------- .../development/tutorials/spe-da-vscode.md | 355 -------- .../tutorials/using-file-preview.md | 136 --- .../development/tutorials/using-webhooks.md | 113 --- .../tutorials/vendor-install-app-customer.md | 63 -- .../getting-started/containertypes.md | 194 ---- ...soft-365-archive-support-for-containers.md | 25 - .../register-api-documentation.md | 186 ---- .../getting-started/spembedded-for-vscode.md | 176 ---- docs/embedded/images/create-app-panel-1.png | Bin 0 -> 419431 bytes docs/embedded/images/create-app-panel-2.png | Bin 0 -> 423338 bytes .../images/installed-app-details-panel.png | Bin 0 -> 303870 bytes docs/embedded/images/installed-apps-page.png | Bin 0 -> 278777 bytes docs/embedded/images/owned-apps-page.png | Bin 0 -> 272104 bytes docs/embedded/llms.txt | 68 ++ docs/embedded/overview.md | 93 +- docs/embedded/plan/app-tenant-architecture.md | 221 +++++ .../plan/authentication-permissions.md | 227 +++++ docs/embedded/plan/choose-app-model.md | 193 ++++ docs/embedded/plan/choose-billing-model.md | 196 +++++ .../plan/container-types-and-containers.md | 195 ++++ docs/embedded/plan/limits-calling-patterns.md | 247 ++++++ .../plan/security-compliance-governance.md | 229 +++++ .../publish/choose-app-billing-model.md | 193 ++++ .../publish/customer-tenant-setup-guide.md | 195 ++++ .../publish/prepare-customer-installation.md | 218 +++++ .../publish/validate-customer-installation.md | 239 +++++ docs/embedded/reference/audit-events.md | 67 ++ docs/embedded/reference/billing-meters.md | 63 ++ docs/embedded/reference/glossary.md | 37 + docs/embedded/reference/graph-api-links.md | 170 ++++ docs/embedded/reference/powershell.md | 63 ++ docs/embedded/reference/troubleshooting.md | 47 + docs/embedded/scenarios-and-use-cases.md | 57 +- .../sharepoint-embedded-documentation.md | 109 +++ docs/embedded/whats-new.md | 27 +- docs/toc.yml | 182 ++-- 92 files changed, 7817 insertions(+), 5788 deletions(-) create mode 100644 docs/embedded/admin/admin-overview.md create mode 100644 docs/embedded/admin/apply-security-compliance-controls.md rename docs/embedded/{administration/consuming-tenant-admin/cta.md => admin/consuming-tenant-admin.md} (83%) create mode 100644 docs/embedded/admin/create-apps-powershell.md create mode 100644 docs/embedded/admin/create-apps-sharepoint-admin-center.md create mode 100644 docs/embedded/admin/grant-admin-consent-permissions.md create mode 100644 docs/embedded/admin/install-sharepoint-embedded-app.md create mode 100644 docs/embedded/admin/manage-containers-powershell.md create mode 100644 docs/embedded/admin/manage-containers-sharepoint-admin-center.md create mode 100644 docs/embedded/admin/monitor-usage-billing-cost.md create mode 100644 docs/embedded/admin/review-audit-events.md create mode 100644 docs/embedded/admin/setup-billing-m365-admin-center.md delete mode 100644 docs/embedded/administration/adminrole.md delete mode 100644 docs/embedded/administration/billing/billing.md delete mode 100644 docs/embedded/administration/billing/billingmanagement.md delete mode 100644 docs/embedded/administration/billing/meters.md delete mode 100644 docs/embedded/administration/consuming-tenant-admin/ctaUX.md delete mode 100644 docs/embedded/administration/consuming-tenant-admin/ctapowershell.md delete mode 100644 docs/embedded/administration/developer-admin/dev-admin.md create mode 100644 docs/embedded/build/agent-experiences.md create mode 100644 docs/embedded/build/archive-restore-containers.md create mode 100644 docs/embedded/build/configure-authentication-authorization.md create mode 100644 docs/embedded/build/container-metadata.md create mode 100644 docs/embedded/build/create-container-type.md create mode 100644 docs/embedded/build/create-manage-containers.md create mode 100644 docs/embedded/build/fluid-framework.md create mode 100644 docs/embedded/build/manage-files.md create mode 100644 docs/embedded/build/migrate-azure-blob-storage.md create mode 100644 docs/embedded/build/open-office-files.md create mode 100644 docs/embedded/build/preview-files.md create mode 100644 docs/embedded/build/quickstart-vscode.md create mode 100644 docs/embedded/build/register-application-permissions.md create mode 100644 docs/embedded/build/respond-to-changes-webhooks.md create mode 100644 docs/embedded/build/search-containers-files.md create mode 100644 docs/embedded/build/share-files-manage-permissions.md create mode 100644 docs/embedded/build/sharepoint-embedded-knowledge-source.md delete mode 100644 docs/embedded/compliance/audit-events.md delete mode 100644 docs/embedded/compliance/security-and-compliance.md delete mode 100644 docs/embedded/development/app-architecture.md delete mode 100644 docs/embedded/development/auth.md delete mode 100644 docs/embedded/development/content-experiences/configure-redirect-behavior.md delete mode 100644 docs/embedded/development/content-experiences/office-experience.md delete mode 100644 docs/embedded/development/content-experiences/search-content.md delete mode 100644 docs/embedded/development/content-experiences/user-experiences-overview.md delete mode 100644 docs/embedded/development/declarative-agent/sharepoint-embedded-knowledge-source.md delete mode 100644 docs/embedded/development/declarative-agent/spe-da-adv.md delete mode 100644 docs/embedded/development/declarative-agent/spe-da.md delete mode 100644 docs/embedded/development/fluid.md delete mode 100644 docs/embedded/development/limits-calling.md delete mode 100644 docs/embedded/development/sharing-and-perm.md delete mode 100644 docs/embedded/development/support-archival-of-containers.md delete mode 100644 docs/embedded/development/tutorials/doc-processing-acs.md delete mode 100644 docs/embedded/development/tutorials/launch-experience.md delete mode 100644 docs/embedded/development/tutorials/metadata.md delete mode 100644 docs/embedded/development/tutorials/migrate-abs-to-spe.md delete mode 100644 docs/embedded/development/tutorials/spe-da-vscode.md delete mode 100644 docs/embedded/development/tutorials/using-file-preview.md delete mode 100644 docs/embedded/development/tutorials/using-webhooks.md delete mode 100644 docs/embedded/development/tutorials/vendor-install-app-customer.md delete mode 100644 docs/embedded/getting-started/containertypes.md delete mode 100644 docs/embedded/getting-started/microsoft-365-archive-support-for-containers.md delete mode 100644 docs/embedded/getting-started/register-api-documentation.md delete mode 100644 docs/embedded/getting-started/spembedded-for-vscode.md create mode 100644 docs/embedded/images/create-app-panel-1.png create mode 100644 docs/embedded/images/create-app-panel-2.png create mode 100644 docs/embedded/images/installed-app-details-panel.png create mode 100644 docs/embedded/images/installed-apps-page.png create mode 100644 docs/embedded/images/owned-apps-page.png create mode 100644 docs/embedded/llms.txt create mode 100644 docs/embedded/plan/app-tenant-architecture.md create mode 100644 docs/embedded/plan/authentication-permissions.md create mode 100644 docs/embedded/plan/choose-app-model.md create mode 100644 docs/embedded/plan/choose-billing-model.md create mode 100644 docs/embedded/plan/container-types-and-containers.md create mode 100644 docs/embedded/plan/limits-calling-patterns.md create mode 100644 docs/embedded/plan/security-compliance-governance.md create mode 100644 docs/embedded/publish/choose-app-billing-model.md create mode 100644 docs/embedded/publish/customer-tenant-setup-guide.md create mode 100644 docs/embedded/publish/prepare-customer-installation.md create mode 100644 docs/embedded/publish/validate-customer-installation.md create mode 100644 docs/embedded/reference/audit-events.md create mode 100644 docs/embedded/reference/billing-meters.md create mode 100644 docs/embedded/reference/glossary.md create mode 100644 docs/embedded/reference/graph-api-links.md create mode 100644 docs/embedded/reference/powershell.md create mode 100644 docs/embedded/reference/troubleshooting.md create mode 100644 docs/embedded/sharepoint-embedded-documentation.md diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 8a82f0f726..a611cb721e 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -117,17 +117,17 @@ }, { "source_path": "docs/embedded/concepts/admin-exp/billing.md", - "redirect_url": "/sharepoint/dev/embedded/concepts/admin-exp/billing/billing", + "redirect_url": "/sharepoint/dev/embedded/plan/choose-billing-model", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/admin-exp/cta.md", - "redirect_url": "/sharepoint/dev/embedded/concepts/admin-exp/consuming-tenant-admin/cta", + "redirect_url": "/sharepoint/dev/embedded/admin/consuming-tenant-admin", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/admin-exp/dev-admin.md", - "redirect_url": "/sharepoint/dev/embedded/concepts/admin-exp/developer-admin/dev-admin", + "redirect_url": "/sharepoint/dev/embedded/admin/create-apps-powershell", "redirect_document_id": false }, { @@ -147,127 +147,307 @@ }, { "source_path": "docs/embedded/concepts/admin-exp/adminrole.md", - "redirect_url": "/sharepoint/dev/embedded/administration/adminrole", + "redirect_url": "/sharepoint/dev/embedded/admin/admin-overview", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/admin-exp/billing/billing.md", - "redirect_url": "/sharepoint/dev/embedded/administration/billing/billing", + "redirect_url": "/sharepoint/dev/embedded/plan/choose-billing-model", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/admin-exp/billing/billingmanagement.md", - "redirect_url": "/sharepoint/dev/embedded/administration/billing/billingmanagement", + "redirect_url": "/sharepoint/dev/embedded/admin/monitor-usage-billing-cost", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/admin-exp/billing/meters.md", - "redirect_url": "/sharepoint/dev/embedded/administration/billing/meters", + "redirect_url": "/sharepoint/dev/embedded/reference/billing-meters", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/admin-exp/consuming-tenant-admin/cta.md", - "redirect_url": "/sharepoint/dev/embedded/administration/consuming-tenant-admin/cta", + "redirect_url": "/sharepoint/dev/embedded/admin/consuming-tenant-admin", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/admin-exp/consuming-tenant-admin/ctaUX.md", - "redirect_url": "/sharepoint/dev/embedded/administration/consuming-tenant-admin/ctaUX", + "redirect_url": "/sharepoint/dev/embedded/admin/manage-containers-sharepoint-admin-center", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/admin-exp/consuming-tenant-admin/ctapowershell.md ", - "redirect_url": "/sharepoint/dev/embedded/administration/consuming-tenant-admin/ctapowershell", + "redirect_url": "/sharepoint/dev/embedded/admin/manage-containers-powershell", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/admin-exp/developer-admin/dev-admin.md", - "redirect_url": "/sharepoint/dev/embedded/administration/developer-admin/dev-admin", + "redirect_url": "/sharepoint/dev/embedded/admin/create-apps-powershell", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/security-and-compliance.md", - "redirect_url": "/sharepoint/dev/embedded/compliance/security-and-compliance", + "redirect_url": "/sharepoint/dev/embedded/plan/security-compliance-governance", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/app-concepts/app-architecture.md", - "redirect_url": "/sharepoint/dev/embedded/development/app-architecture", + "redirect_url": "/sharepoint/dev/embedded/plan/app-tenant-architecture", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/app-concepts/auth.md", - "redirect_url": "/sharepoint/dev/embedded/development/auth", + "redirect_url": "/sharepoint/dev/embedded/build/configure-authentication-authorization", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/content-experiences/office-experience.md", - "redirect_url": "/sharepoint/dev/embedded/development/content-experiences/office-experience", + "redirect_url": "/sharepoint/dev/embedded/build/open-office-files", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/content-experiences/search-content.md", - "redirect_url": "/sharepoint/dev/embedded/development/content-experiences/search-content", + "redirect_url": "/sharepoint/dev/embedded/build/search-containers-files", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/content-experiences/user-experiences-overview.md", - "redirect_url": "/sharepoint/dev/embedded/development/content-experiences/user-experiences-overview", + "redirect_url": "/sharepoint/dev/embedded/build/open-office-files", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/fluid.md", - "redirect_url": "/sharepoint/dev/embedded/development/fluid", + "redirect_url": "/sharepoint/dev/embedded/build/fluid-framework", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/app-concepts/limits-calling.md", - "redirect_url": "/sharepoint/dev/embedded/development/limits-calling", + "redirect_url": "/sharepoint/dev/embedded/plan/limits-calling-patterns", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/app-concepts/sharing-and-perm.md", - "redirect_url": "/sharepoint/dev/embedded/development/sharing-and-perm", + "redirect_url": "/sharepoint/dev/embedded/build/share-files-manage-permissions", "redirect_document_id": false }, { "source_path": "docs/embedded/tutorials/doc-processing-acs.md", - "redirect_url": "/sharepoint/dev/embedded/development/tutorials/doc-processing-acs", + "redirect_url": "/sharepoint/dev/embedded/build/manage-files", "redirect_document_id": false }, { "source_path": "docs/embedded/tutorials/launch-experience.md", - "redirect_url": "/sharepoint/dev/embedded/development/tutorials/launch-experience", + "redirect_url": "/sharepoint/dev/embedded/build/open-office-files", "redirect_document_id": false }, { "source_path": "docs/embedded/tutorials/metadata.md", - "redirect_url": "/sharepoint/dev/embedded/development/tutorials/metadata", + "redirect_url": "/sharepoint/dev/embedded/build/container-metadata", "redirect_document_id": false }, { "source_path": "docs/embedded/tutorials/migrate-abs-to-spe.md", - "redirect_url": "/sharepoint/dev/embedded/development/tutorials/migrate-abs-to-spe", + "redirect_url": "/sharepoint/dev/embedded/build/migrate-azure-blob-storage", "redirect_document_id": false }, { "source_path": "docs/embedded/tutorials/using-file-preview.md", - "redirect_url": "/sharepoint/dev/embedded/development/tutorials/using-file-preview", + "redirect_url": "/sharepoint/dev/embedded/build/preview-files", "redirect_document_id": false }, { "source_path": "docs/embedded/tutorials/using-webhooks.md", - "redirect_url": "/sharepoint/dev/embedded/development/tutorials/using-webhooks", + "redirect_url": "/sharepoint/dev/embedded/build/respond-to-changes-webhooks", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/app-concepts/containertypes.md", - "redirect_url": "/sharepoint/dev/embedded/getting-started/containertypes", + "redirect_url": "/sharepoint/dev/embedded/build/create-container-type", "redirect_document_id": false }, { "source_path": "docs/embedded/concepts/app-concepts/register-api-documentation.md", - "redirect_url": "/sharepoint/dev/embedded/getting-started/register-api-documentation", + "redirect_url": "/sharepoint/dev/embedded/build/register-application-permissions", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/administration/adminrole.md", + "redirect_url": "/sharepoint/dev/embedded/admin/admin-overview", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/administration/billing/billing.md", + "redirect_url": "/sharepoint/dev/embedded/plan/choose-billing-model", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/administration/billing/billingmanagement.md", + "redirect_url": "/sharepoint/dev/embedded/admin/monitor-usage-billing-cost", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/administration/billing/meters.md", + "redirect_url": "/sharepoint/dev/embedded/reference/billing-meters", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/administration/consuming-tenant-admin/cta.md", + "redirect_url": "/sharepoint/dev/embedded/admin/consuming-tenant-admin", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/administration/consuming-tenant-admin/ctapowershell.md", + "redirect_url": "/sharepoint/dev/embedded/admin/manage-containers-powershell", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/administration/consuming-tenant-admin/ctaUX.md", + "redirect_url": "/sharepoint/dev/embedded/admin/manage-containers-sharepoint-admin-center", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/administration/developer-admin/dev-admin.md", + "redirect_url": "/sharepoint/dev/embedded/admin/create-apps-powershell", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/compliance/audit-events.md", + "redirect_url": "/sharepoint/dev/embedded/reference/audit-events", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/compliance/security-and-compliance.md", + "redirect_url": "/sharepoint/dev/embedded/plan/security-compliance-governance", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/app-architecture.md", + "redirect_url": "/sharepoint/dev/embedded/plan/app-tenant-architecture", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/auth.md", + "redirect_url": "/sharepoint/dev/embedded/build/configure-authentication-authorization", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/content-experiences/configure-redirect-behavior.md", + "redirect_url": "/sharepoint/dev/embedded/build/open-office-files", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/content-experiences/office-experience.md", + "redirect_url": "/sharepoint/dev/embedded/build/open-office-files", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/content-experiences/search-content.md", + "redirect_url": "/sharepoint/dev/embedded/build/search-containers-files", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/content-experiences/user-experiences-overview.md", + "redirect_url": "/sharepoint/dev/embedded/build/open-office-files", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/declarative-agent/sharepoint-embedded-knowledge-source.md", + "redirect_url": "/sharepoint/dev/embedded/build/sharepoint-embedded-knowledge-source", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/declarative-agent/spe-da-adv.md", + "redirect_url": "/sharepoint/dev/embedded/build/agent-experiences", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/declarative-agent/spe-da.md", + "redirect_url": "/sharepoint/dev/embedded/build/agent-experiences", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/fluid.md", + "redirect_url": "/sharepoint/dev/embedded/build/fluid-framework", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/limits-calling.md", + "redirect_url": "/sharepoint/dev/embedded/plan/limits-calling-patterns", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/sharing-and-perm.md", + "redirect_url": "/sharepoint/dev/embedded/build/share-files-manage-permissions", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/support-archival-of-containers.md", + "redirect_url": "/sharepoint/dev/embedded/build/archive-restore-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/tutorials/doc-processing-acs.md", + "redirect_url": "/sharepoint/dev/embedded/build/manage-files", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/tutorials/launch-experience.md", + "redirect_url": "/sharepoint/dev/embedded/build/open-office-files", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/tutorials/metadata.md", + "redirect_url": "/sharepoint/dev/embedded/build/container-metadata", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/tutorials/migrate-abs-to-spe.md", + "redirect_url": "/sharepoint/dev/embedded/build/migrate-azure-blob-storage", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/tutorials/spe-da-vscode.md", + "redirect_url": "/sharepoint/dev/embedded/build/agent-experiences", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/tutorials/using-file-preview.md", + "redirect_url": "/sharepoint/dev/embedded/build/preview-files", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/tutorials/using-webhooks.md", + "redirect_url": "/sharepoint/dev/embedded/build/respond-to-changes-webhooks", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/development/tutorials/vendor-install-app-customer.md", + "redirect_url": "/sharepoint/dev/embedded/publish/customer-tenant-setup-guide", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/getting-started/containertypes.md", + "redirect_url": "/sharepoint/dev/embedded/build/create-container-type", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/getting-started/microsoft-365-archive-support-for-containers.md", + "redirect_url": "/sharepoint/dev/embedded/build/archive-restore-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/getting-started/register-api-documentation.md", + "redirect_url": "/sharepoint/dev/embedded/build/register-application-permissions", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/getting-started/spembedded-for-vscode.md", + "redirect_url": "/sharepoint/dev/embedded/build/quickstart-vscode", + "redirect_document_id": false + }, + { + "source_path": "docs/embedded/SharePoint Embedded Documentation.md", + "redirect_url": "/sharepoint/dev/embedded/sharepoint-embedded-documentation", "redirect_document_id": false }, { diff --git a/docs/embedded/admin/admin-overview.md b/docs/embedded/admin/admin-overview.md new file mode 100644 index 0000000000..5c8f430633 --- /dev/null +++ b/docs/embedded/admin/admin-overview.md @@ -0,0 +1,196 @@ +--- +title: Admin Overview +description: Learn how administrators manage SharePoint Embedded apps, containers, billing, and compliance in Microsoft 365. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan +ms.localizationpriority: high +--- + +# Admin Overview + +**Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin / SharePoint admin / Compliance admin / Security admin + + + +SharePoint Embedded is an API-only document platform built on Microsoft 365. +Organizations use SharePoint Embedded apps to store files and documents in containers that inherit Microsoft 365 security, compliance, and administration controls. +Administrators manage those apps and containers through the SharePoint admin center and SharePoint Online Management Shell. + +Use this overview to decide which administrator role and management surface to use. +Then follow the linked how-to articles for app creation, installation, billing, container lifecycle, and compliance operations. + +> [!IMPORTANT] +> Assign the **SharePoint Embedded Administrator** role before delegating SharePoint Embedded administration. +> Global Administrators already have the permissions of this role, but should use least-privileged delegation for daily operations. + +## Admin roles + +SharePoint Embedded administration commonly involves the following roles. + +| Role | Use it for | +| --- | --- | +| Global Administrator | Assign the SharePoint Embedded Administrator role and perform any SharePoint Embedded admin task when needed. | +| SharePoint Embedded Administrator | Manage SharePoint Embedded apps and containers through SharePoint admin center and supported SharePoint PowerShell cmdlets. | +| SharePoint administrator | Manage SharePoint service configuration. This role doesn't administer SharePoint Embedded apps or containers; use the SharePoint Embedded Administrator role for those tasks. | +| Tenant administrator | Manage apps and settings in the consuming Microsoft 365 tenant. | +| Compliance administrator | Configure Microsoft Purview audit, retention, DLP, eDiscovery, and related policies. | +| Security administrator | Configure security policies and investigate security events that apply to SharePoint Embedded content. | + +The SharePoint Embedded Administrator role is available in Microsoft Entra and the Microsoft 365 admin center. +It is dedicated to SharePoint Embedded administration. +It does not grant regular SharePoint site management access. +For example, a SharePoint Embedded Administrator does not see the **Active sites** or **Deleted sites** pages in the SharePoint admin center and cannot run site-specific SharePoint PowerShell cmdlets. + +### Assign the SharePoint Embedded Administrator role + +A Global Administrator assigns the SharePoint Embedded Administrator role in either Microsoft Entra or the Microsoft 365 admin center. + +**Microsoft Entra** + +1. Sign in to Microsoft Entra as a Global Administrator. +1. Select **Users**, then select **All users**. +1. Select the user to assign the role to. +1. Select **Assigned roles**. +1. Select **Add assignments**, then search for **SharePoint Embedded**. +1. Select **SharePoint Embedded Administrator**, then select **Add**. + +**Microsoft 365 admin center** + +1. Sign in to the Microsoft 365 admin center as a Global Administrator. +1. Select **Users**, then select **Active users**. +1. Select the user to assign the role to. +1. Under **Roles**, select **Manage roles**. +1. Select **Admin center access**, then under **Collaboration**, select **SharePoint Embedded Administrator**. +1. Select **Save changes**. + +## Developer tenant and consuming tenant responsibilities + +SharePoint Embedded administration differs depending on whether the tenant owns the app or consumes the app. + +A developer tenant owns or builds the SharePoint Embedded application. +Developer tenant admins can create container types, configure billing for standard billing scenarios, and manage container type properties. + +A consuming tenant uses a SharePoint Embedded application in its Microsoft 365 tenant. +Consuming tenant admins manage installed applications, containers, sharing settings, sensitivity labels, deleted containers, and compliance controls. A Global Administrator sets up billing for pass-through apps. + +For the consuming tenant admin model, see [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md). + +## What admins can do + +Administrators can perform these SharePoint Embedded management tasks. + +### App administration + +- View SharePoint Embedded applications registered in the tenant. +- View details for a specific SharePoint Embedded application. +- Review owning and guest application permissions. +- Install or register a SharePoint Embedded app in a consuming tenant. +- Configure application-level external sharing settings when supported. +- Create apps from the SharePoint admin center when the tenant owns the app. + +Start with [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md) for owned apps. +Use [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) for consuming tenant installation. + +### Permission and consent administration + +Admin consent installs the application service principal in the consuming tenant and grants the requested permissions. +For container type registration, the owning application must have admin consent and the required SharePoint application permission before it can register permissions in the consuming tenant. + +Review consent guidance in [Grant admin consent and permissions](grant-admin-consent-permissions.md). + +### Billing administration + +SharePoint Embedded uses pay-as-you-go billing through Azure. +Cost is driven by storage, API transactions, and egress. +Developer tenants configure billing for standard billing container types. +Consuming tenants configure billing for pass-through apps before users can access those apps. +Only a Global Administrator can set up billing in the Microsoft 365 admin center. The SharePoint Embedded Administrator role can't configure billing. + +Set up pass-through billing with [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). +Monitor usage with [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). + +### Container administration + +Containers hold the content used by SharePoint Embedded apps. +Admins can view active containers, archive containers, reactivate archived containers, inspect metadata, set sensitivity labels, manage membership in the admin center, delete containers, restore deleted containers, and permanently delete deleted containers. + +Use the graphical experience in [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md). +Use cmdlets and scripting in [Manage containers with PowerShell](manage-containers-powershell.md). + +### Compliance administration + +SharePoint Embedded content participates in Microsoft Purview capabilities. +Compliance admins can use audit, retention, DLP, eDiscovery, and sensitivity labels in ways that are similar to SharePoint. +Some scenarios that need end-user interaction depend on the owning app to provide the user experience. + +Review [Review audit events](review-audit-events.md) and [Apply security and compliance controls](apply-security-compliance-controls.md). + +## SharePoint admin center versus PowerShell + +Use both management surfaces. +They are complementary. + +| Surface | Best for | +| --- | --- | +| SharePoint admin center | Interactive app inventory, container views, container details, deleted container operations, sensitivity labels, and membership management. | +| SharePoint Online Management Shell | Repeatable administration, inventory exports, sorting containers by storage, application permission review, and lifecycle scripts. | + +The SharePoint admin center exposes SharePoint Embedded-specific pages such as **Apps**, **Active containers**, and **Deleted containers**. +A SharePoint Embedded Administrator sees the SharePoint Embedded administration pages but not general SharePoint site management pages. + +SharePoint Online Management Shell provides SharePoint Embedded cmdlets for application and container administration. +Use the latest version before running container administration cmdlets. +For command details, see [Manage containers with PowerShell](manage-containers-powershell.md) and the linked cmdlet reference. + +> [!TIP] +> Use the admin center for one-time review and confirmation. +> Use PowerShell when you need repeatable inventory, reporting, or bulk operations. + +## Common administration paths + +Use this path when you own a SharePoint Embedded app: + +1. Confirm the admin role. See [Assign the SharePoint Embedded Administrator role](#assign-the-sharepoint-embedded-administrator-role). +1. Create the app in [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md). +1. Choose and configure billing. +1. Install the app if it must be available in a consuming tenant. +1. Grant admin consent and register required permissions. +1. Monitor usage and cost. + +Use this path when your tenant consumes a SharePoint Embedded app: + +1. Assign or confirm the SharePoint Embedded Administrator role. +1. Install or approve the app in [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md). +1. Grant admin consent when required. +1. Set up pass-through billing in [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). +1. Manage containers in the SharePoint admin center or with PowerShell. +1. Apply compliance controls in Microsoft Purview. + +## Operational guardrails + +Before making changes, identify the owning application and affected containers. +Container deletion can break links, remove content, and interrupt the app that depends on the container. +Deleted containers can be restored from the deleted container collection within the supported retention period unless they are permanently deleted or retention policies change the behavior. + +> [!WARNING] +> Permanently deleting a container removes it from the deleted container collection and it cannot be restored. +> Notify app owners before deleting containers. + +## Related content + +- [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md) +- [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) +- [Grant admin consent and permissions](grant-admin-consent-permissions.md) +- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) +- [Manage containers with PowerShell](manage-containers-powershell.md) +- [Monitor usage, billing, and cost](monitor-usage-billing-cost.md) +- [Apply security and compliance controls](apply-security-compliance-controls.md) + +## Next steps +Create an owned app in [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md). diff --git a/docs/embedded/admin/apply-security-compliance-controls.md b/docs/embedded/admin/apply-security-compliance-controls.md new file mode 100644 index 0000000000..69f869bd23 --- /dev/null +++ b/docs/embedded/admin/apply-security-compliance-controls.md @@ -0,0 +1,245 @@ +--- +title: Apply Security and Compliance Controls +description: Apply Microsoft Purview and SharePoint controls to protect and govern SharePoint Embedded content. +ms.date: 07/10/2026 +ms.reviewer: dilucesr +ms.localizationpriority: high +--- + +# Apply Security and Compliance Controls + +**Applies to:** Consuming tenant admin — Compliance admin / Security admin / SharePoint admin + + + +Apply security and compliance controls to SharePoint Embedded content by using Microsoft Purview and supported SharePoint administration features. +SharePoint Embedded uses Microsoft 365 compliance and data governance capabilities so organizations can protect, govern, and investigate content stored by embedded applications. + +Some compliance scenarios require the owning application to provide the end-user experience because SharePoint Embedded is API-only and doesn't have its own user interface. + +> [!IMPORTANT] +> Coordinate compliance controls with the SharePoint Embedded app owner. +> A policy can protect content, but app behavior must be implemented by the owning app to handle the effects of those policies. + +## Before you begin + +Confirm these prerequisites. + +- You can access Microsoft Purview with the required compliance role. +- You can access SharePoint administration tools when container details are needed. +- You can identify the SharePoint Embedded application and containers in scope. +- You can retrieve container site URLs for targeted policies. +- App owners understand the policy impact on their user experience. +- Legal, records management, and security stakeholders approve the control design. + +For supported controls, see [Plan Security, Compliance, and Governance](../plan/security-compliance-governance.md). + +## Get container details for policy scope + +Many compliance tasks need a container URL or container identifier. +Use PowerShell to retrieve application and container details. + +1. View SharePoint Embedded applications registered in the tenant. + + ```powershell + Get-SPOApplication + ``` + +1. Retrieve containers for an application. + + ```powershell + Get-SPOContainer -OwningApplicationId + ``` + +1. Retrieve details for a container. + + ```powershell + Get-SPOContainer -OwningApplicationId -Identity + ``` + +Use the container site URL to target policies at specific SharePoint Embedded containers. +For cmdlet details, see [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer). + +## Apply audit controls + +Audit capabilities for SharePoint Embedded mirror existing SharePoint audit capabilities. User and admin operations performed in SharePoint Embedded applications are captured in the unified audit log. + +Use Microsoft Purview audit to search activity and investigate file, user, app, and admin operations. + +![Microsoft Purview audit search results for SharePoint Embedded activity, including the ContainerInstanceId and ContainerTypeId fields.](../images/sc1.png) + +For audit review steps, see [Review audit events](review-audit-events.md). For a detailed list of container type and container type registration audit events, see [SharePoint Embedded audit log events](../reference/audit-events.md). + +## Apply eDiscovery + +Compliance admins can use Microsoft Purview eDiscovery to search, hold, and export content hosted in SharePoint Embedded. + +To search all SharePoint Embedded content with SharePoint content: + +1. Open the eDiscovery experience in Microsoft Purview. +1. Configure the search. +1. Select **All** SharePoint sites for the SharePoint workload. +1. Run the search. +1. Review results according to your eDiscovery process. + +![Microsoft Purview eDiscovery search configured with All SharePoint sites selected to include all SharePoint Embedded containers.](../images/sc2.png) + +To limit the search to selected SharePoint Embedded containers: + +1. Retrieve the container site URL. +1. In the SharePoint sites workload, choose specific sites. +1. Add the container URL. +1. Run and validate the search. + +![Microsoft Purview eDiscovery search using Choose sites under the SharePoint sites workload to target a specific container URL.](../images/sc3.png) + +For product guidance, see [Microsoft Purview eDiscovery solutions](/purview/ediscovery). + +## Apply retention and holds + +SharePoint Embedded supports retention and hold policies on content stored in applications through Microsoft Purview. +Use these scoping options: + +| Scope | Effect | +| --- | --- | +| All SharePoint sites | Applies to SharePoint sites and SharePoint Embedded containers. | +| Selected locations | Applies to specific SharePoint locations, including selected SharePoint Embedded container URLs. | + +Use broad scope when a policy applies to all SharePoint and SharePoint Embedded content. +Use selected container URLs when a policy applies only to specific data. + +![Microsoft Purview retention policy configured for All sites, which enforces it on all SharePoint sites and SharePoint Embedded containers.](../images/sc4.png) + +![Microsoft Purview retention policy scoped to selected SharePoint Embedded container URLs.](../images/sc5.png) + +> [!NOTE] +> SharePoint Embedded doesn't provide a native end-user interface for retention label interactions. +> If users need to apply or respond to retention labels in an app, the owning app must provide that experience. + +For Microsoft Purview Data Lifecycle Management, see [Learn about Microsoft Purview Data Lifecycle Management](/purview/data-lifecycle-management). + +## Apply DLP policies + +Use Microsoft Purview Data Loss Prevention (DLP) to identify, monitor, and automatically protect sensitive items stored in SharePoint Embedded applications. + +To apply DLP broadly: + +1. Create or edit a DLP policy in Microsoft Purview. +1. Choose the SharePoint sites workload. +1. Select **All sites** when the policy should include all SharePoint sites and SharePoint Embedded containers. +1. Configure rules, actions, and alerts. +1. Test and then enable the policy according to your rollout process. + +To apply DLP to selected SharePoint Embedded containers: + +1. Retrieve the container URLs. +1. Configure the DLP policy for selected SharePoint locations. +1. Add the container URLs. +1. Validate policy behavior with the app owner. + +![Microsoft Purview DLP policy configured for All sites to include all SharePoint sites and SharePoint Embedded containers.](../images/sc6.png) + +![Microsoft Purview DLP policy scoped to selected SharePoint Embedded container URLs.](../images/sc7.png) + +Some DLP scenarios require user interaction, such as business justification for override or policy tips. +Because SharePoint Embedded does not provide a native user interface, the client app must implement the required user experience, often by using Microsoft Graph where applicable. + +For DLP details, see [Learn about data loss prevention](/purview/dlp-learn-about-dlp). + +## Apply sensitivity labels to containers + +Global Administrators and SharePoint Embedded Administrators can set or remove sensitivity labels on SharePoint Embedded containers with SharePoint PowerShell. + +Set a label: + +```powershell +Set-SPOContainer -Identity -SensitivityLabel +``` + +Remove a label by using the supported container label command documented in [Manage containers with PowerShell](manage-containers-powershell.md). + +Before applying labels: + +- Confirm the label is published. +- Confirm the label is appropriate for the container. +- Confirm app behavior with the app owner. +- Confirm compliance requirements with data owners. + +For label concepts, see [Learn about sensitivity labels](/purview/sensitivity-labels). + +## Apply block download policy + +SharePoint Administrators and Global Administrators can block file downloads from SharePoint Embedded containers with the SharePoint site policy cmdlet. + +```powershell +Set-SPOSite -Identity -BlockDownloadPolicy $true +``` + +A SharePoint Advanced Management license is needed to enforce this policy. +Read the SharePoint documentation before enabling it in production. + +For more information, see [Block download policy for SharePoint sites and OneDrive](/sharepoint/block-download-from-sites). + +## Apply Conditional Access policy + +SharePoint Embedded supports basic Conditional Access policy configurations. +The `ConditionalAccessPolicy` parameter supports these values: + +- `AllowFullAccess` +- `AllowLimitedAccess` +- `BlockAccess` + +Use this SharePoint PowerShell cmdlet: + +```powershell +Set-SPOContainer -Identity -ConditionalAccessPolicy +``` + +Review tenant access policies before changing container access. +Test app behavior for web, desktop, and mobile clients. + +For related guidance, see [Control access from unmanaged devices](/sharepoint/control-access-from-unmanaged-devices). + +## Clarify responsibilities + +Security and compliance controls often span multiple teams. + +| Team | Responsibilities | +| --- | --- | +| Compliance admins | Configure Purview audit, eDiscovery, retention, DLP, and policy scope. | +| SharePoint Embedded admins | Retrieve container details and apply supported container settings. | +| SharePoint Embedded app owners | Implement app user experiences for policy tips, overrides, labels, and error handling. | +| Security admins | Review Conditional Access and access restrictions. | +| Legal or records teams | Approve holds, retention, and deletion decisions. | + +Document the owner for each control before rollout. + +## Validate policy behavior + +After applying a control: + +1. Confirm the policy is published or enabled. +1. Confirm the target container URL or all-sites scope is correct. +1. Ask the app owner to test common user workflows. +1. Review audit records for policy-related activity. +1. Review DLP alerts, eDiscovery results, or retention state as applicable. +1. Record the change in your compliance operations log. + +> [!TIP] +> Pilot controls on a small set of containers before applying them broadly to all SharePoint sites and SharePoint Embedded containers. + +## Related content + +- [Review audit events](review-audit-events.md) +- [Manage containers with PowerShell](manage-containers-powershell.md) +- [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) +- [Plan Security, Compliance, and Governance](../plan/security-compliance-governance.md) +- [Troubleshooting](../reference/troubleshooting.md) + +## Next steps +Review troubleshooting guidance in [Troubleshooting](../reference/troubleshooting.md). diff --git a/docs/embedded/administration/consuming-tenant-admin/cta.md b/docs/embedded/admin/consuming-tenant-admin.md similarity index 83% rename from docs/embedded/administration/consuming-tenant-admin/cta.md rename to docs/embedded/admin/consuming-tenant-admin.md index 1c79ef333d..f32cef997a 100644 --- a/docs/embedded/administration/consuming-tenant-admin/cta.md +++ b/docs/embedded/admin/consuming-tenant-admin.md @@ -7,6 +7,8 @@ ms.localizationpriority: high # Consuming Tenant Admin +**Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin + > [!IMPORTANT] > Assign the SharePoint Embedded Administrator role available in Microsoft 365 Admin Center or Microsoft Entra ID to execute SharePoint Embedded Container cmdlets mentioned in this article. > @@ -19,7 +21,7 @@ The organizations that use the SharePoint Embedded applications on their Microso ## Consuming Tenant Admin Role Microsoft 365 SharePoint Embedded Administrator serves as the consuming tenant admin. Global Administrators in Microsoft 365 can assign users the SharePoint Embedded Administrator. The Global Administrator role already has all the permissions of the SharePoint Embedded Administrator role. The SharePoint Embedded Role is available in Microsoft Entra ID and Microsoft 365 Admin Center. -For information on [SharePoint Embedded Admin](../adminrole.md) +For information on the SharePoint Embedded Administrator role, see [Admin overview](admin-overview.md). ## Administration Tools @@ -45,7 +47,7 @@ On PowerShell, the SharePoint Embedded Admin can run the following cmdlets: 1. Edit the sensitivity label on a container 1. Set the sharing capability configuration on a container -For information on consuming tenant admin in [PowerShell](../consuming-tenant-admin/ctapowershell.md) +For information on consuming tenant admin in PowerShell, see [Manage containers with PowerShell](manage-containers-powershell.md). ### SharePoint Administrator Center @@ -58,17 +60,17 @@ The SharePoint Embedded Admin can access the Active and Deleted containers page 1. Archive and reactivate containers 1. Soft delete, restore, and purge deleted containers -For information on consuming tenant admin in SharePoint Admin, see [container management](ctaUX.md) +For information on consuming tenant admin in SharePoint admin center, see [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md). ## Security and compliance administration -SharePoint Embedded uses Microsoft’s comprehensive compliance and data governance solutions to help organizations manage risks, protect, and govern sensitive data, and respond to regulatory requirements. Security and compliance solutions work in a similar manner in the SharePoint Embedded platform as they do today in the Microsoft 365 platform, so that data is stored in a secure, protected way that meets customers’ business and compliance policies while making it easy for Compliance and SharePoint Administrators to enforce critical security and compliance policies on the content. For information on supported security and compliance capabilities, see [Security and Compliance](../../compliance/security-and-compliance.md). +SharePoint Embedded uses Microsoft’s comprehensive compliance and data governance solutions to help organizations manage risks, protect, and govern sensitive data, and respond to regulatory requirements. Security and compliance solutions work in a similar manner in the SharePoint Embedded platform as they do today in the Microsoft 365 platform, so that data is stored in a secure, protected way that meets customers’ business and compliance policies while making it easy for Compliance and SharePoint Administrators to enforce critical security and compliance policies on the content. For information on supported security and compliance capabilities, see [Plan security, compliance, and governance](../plan/security-compliance-governance.md). -## Set up billing for passthrough container type +## Set up billing for pass-through container type -To use passthrough billing SharePoint Embedded app, the SharePoint Embedded Admin needs to set up Microsoft Syntex billing in the [Microsoft 365 admin center](https://admin.microsoft.com/). No user can access any passthrough SharePoint Embedded apps before a valid billing is set up for the SharePoint Embedded platform. +To use a pass-through billing SharePoint Embedded app, the SharePoint Embedded admin needs to set up Microsoft Syntex billing in the [Microsoft 365 admin center](https://admin.microsoft.com/). No user can access any pass-through SharePoint Embedded apps before valid billing is set up for the SharePoint Embedded platform. -### [Meters](../billing/meters.md) +### [Meters](../reference/billing-meters.md) SharePoint Embedded employs a pay-as-you-go (PAYG) billing model through an Azure subscription. Billing is determined by how much data in GB you store in SharePoint Embedded in active and archived states, transactions used to access and modify the container and container contents, and data that is egressed from the SharePoint Embedded platform. Each of these factors contributes to the overall cost, ensuring that you only pay for the resources and services you use. You can view this usage and billing details in the [Microsoft Cost Management](https://ms.portal.azure.com/). @@ -87,19 +89,24 @@ SharePoint Embedded has three billing meters, as shown. Refer to the [product pa 1. A valid Azure resource group is required. You can create one by following the steps here to [create a resource group](/azure/azure-resource-manager/management/manage-resource-groups-portal). 1. In [Microsoft 365 admin center](https://admin.microsoft.com/), select **Setup**, and the view the **Files and Content** section. Select **Automate Content with Microsoft Syntex.** - ![Microsoft 365 admin center Files and Content](../../images/DTCBilling1.png) + ![Microsoft 365 admin center Files and Content](../images/DTCBilling1.png) 1. Select **Go to Syntex settings**. 1. Select **Apps** under **Syntex services for**, select **SharePoint Embedded** - ![Microsoft 365 admin center SharePoint Embedded Billing setting](../../images/DTCBilling2.png) + ![Microsoft 365 admin center SharePoint Embedded Billing setting](../images/DTCBilling2.png) 1. Follow the instructions on the **SharePoint Embedded** flyer to turn on SharePoint Embedded apps. -### [Billing Management](../billing/billingmanagement.md) +### [Billing management](monitor-usage-billing-cost.md) The [Microsoft Cost Management portal](https://portal.azure.com/#view/Microsoft_Azure_CostManagement/Menu/~/overview/openedBy/AzurePortal) provides a comprehensive overview of your costs, allowing you to track and analyze your spending for the SharePoint Embedded application. This guide walks you through the steps to view your billing details and SharePoint Embedded consumption in the Microsoft Cost Management portal. ### Invalid Billing/Turn off SharePoint Embedded If you turn off SharePoint Embedded or disconnect the linked Azure subscription, all users will immediately lose access to any application built on the service along with any read and write permissions. + +## Next steps + +- [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) +- [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) diff --git a/docs/embedded/admin/create-apps-powershell.md b/docs/embedded/admin/create-apps-powershell.md new file mode 100644 index 0000000000..3c6783541e --- /dev/null +++ b/docs/embedded/admin/create-apps-powershell.md @@ -0,0 +1,110 @@ +--- +title: Create apps with PowerShell +description: Create and configure SharePoint Embedded apps with SharePoint PowerShell. +ms.date: 07/10/2026 +ms.localizationpriority: high +--- + +# Create apps with PowerShell + +**Applies to:** Owning tenant administrator — SharePoint Embedded admin / Global admin + + + +Use SharePoint PowerShell to create SharePoint Embedded apps, which are also called container types. Each container type is associated with one Microsoft Entra application. + +## Before you begin + +Make sure you have: + +- The SharePoint Embedded Administrator or Global Administrator role. +- The latest SharePoint Online Management Shell. +- The Microsoft Entra application ID that owns the container type. +- For standard billing setup, owner or contributor permissions on the Azure subscription. + +> [!IMPORTANT] +> Choose the billing method when you create the container type. You can't change the billing method after creation. + +## Create a standard billed app + +Use standard billing when the organization that owns the app pays for SharePoint Embedded usage. + +```powershell +New-SPOContainerType -ContainerTypeName -OwningApplicationId +``` + +Set up billing for the standard container type by assigning an Azure subscription, resource group, and region. + +```powershell +Add-SPOContainerTypeBilling -ContainerTypeId -AzureSubscriptionId -ResourceGroup -Region +``` + +## Create a pass-through billed app + +Use pass-through billing, also known as direct-to-customer billing, when the consuming tenant pays for SharePoint Embedded usage. + +```powershell +New-SPOContainerType -IsPassThroughBilling -ContainerTypeName -OwningApplicationId +``` + +For pass-through billing, the consuming tenant administrator must set up Microsoft 365 pay-as-you-go services before users can access the app. For more information, see [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). + +## Create a trial app + +Use a trial app for evaluation and proof-of-concept work. + +```powershell +New-SPOContainerType -TrialContainerType -ContainerTypeName -OwningApplicationId +``` + +Trial apps are valid for 30 days. + +## View apps + +List SharePoint Embedded apps created in the owning tenant. + +```powershell +Get-SPOContainerType +Get-SPOContainerType -ContainerTypeId +``` + +## Update app properties + +Update supported container type properties. + +```powershell +Set-SPOContainerType -ContainerTypeId + [-OwningApplicationId ] + [-ContainerTypeName ] + [-WhatIf] [-Confirm] +``` + +## Configure app behavior + +Configure supported container type settings, such as discoverability and sharing restrictions. + +```powershell +Set-SPOContainerTypeConfiguration -ContainerTypeId -DiscoverabilityDisabled $true +Set-SPOContainerTypeConfiguration -ContainerTypeId -SharingRestricted $true +``` + +View the current configuration. + +```powershell +Get-SPOContainerTypeConfiguration -ContainerTypeId +``` + +## Related content + +- [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md) +- [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) +- [PowerShell reference](../reference/powershell.md) + +## Next steps + +Install the app in the tenant: [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md). diff --git a/docs/embedded/admin/create-apps-sharepoint-admin-center.md b/docs/embedded/admin/create-apps-sharepoint-admin-center.md new file mode 100644 index 0000000000..3c7046e2f4 --- /dev/null +++ b/docs/embedded/admin/create-apps-sharepoint-admin-center.md @@ -0,0 +1,229 @@ +--- +title: Create Apps in SharePoint Admin Center +description: Create a SharePoint Embedded app from the SharePoint admin center and validate the new app registration. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan +ms.localizationpriority: high +--- + +# Create Apps in SharePoint Admin Center + +**Applies to:** Owning tenant administrator — SharePoint Embedded admin / Global admin + + + +Use the SharePoint admin center **Apps** experience to create a SharePoint Embedded app that your organization owns. +The create flow can register a new Microsoft Entra app or associate an existing Entra app with a new SharePoint Embedded app. + +A **SharePoint Embedded Administrator** can complete this flow end to end. Creating a line-of-business app no longer depends on a Global Administrator granting consent first, so you can create an app and hand it off to developers quickly. You add up to three owners during creation, so developers you assign as owners can start building against the app right away. + +This article explains the administrator flow and calls out where command or API details affect app readiness. + +> [!IMPORTANT] +> You need the **SharePoint Embedded Administrator** role or Global Administrator privileges to create and manage SharePoint Embedded apps in the SharePoint admin center. For a line-of-business app, the SharePoint Embedded Administrator can create the app without Global Administrator consent. + +## Before you begin + +Confirm these prerequisites. + +- Your tenant has SharePoint available. +- You can sign in to the [SharePoint admin center](https://admin.microsoft.com/sharepoint). +- You have the SharePoint Embedded Administrator role or Global Administrator role. +- You know whether to create a new Microsoft Entra app or use an existing app registration. +- You know which owners should manage the app. +- You know which billing type applies to the app. +- For owner organization billing, you have owner or contributor access to the Azure subscription used for billing. + +For role details, see [SharePoint Embedded administrator](admin-overview.md). + +## Understand the Apps page + +In the SharePoint admin center, SharePoint Embedded apps are managed from **SharePoint Embedded** > **Apps**. +The page includes two app inventory views. + +| Tab | Use it for | +| --- | --- | +| Installed apps | Review SharePoint Embedded apps installed in the tenant. The list includes apps built by your organization and by external organizations. It currently doesn't include Microsoft-built SharePoint Embedded apps. | +| Owned apps | Review SharePoint Embedded apps created by your organization, regardless of installation status. | + +The **Installed apps** tab shows each app's publisher, billing type, billing status, and installed date. + +![SharePoint admin center Apps page on the Installed apps tab, listing installed apps with columns for app name, publisher, billing type, billing status, and installed date.](../images/installed-apps-page.png) + +*Figure 1: The Installed apps tab lists apps built by your organization and external organizations, with their publisher and billing status.* + +The **Owned apps** tab shows each app's actions, billing type, owners, and created date. +Use it to verify app creation and to start installation when an app is ready. + +![SharePoint admin center Apps page on the Owned apps tab, listing apps created by the organization with columns for app name, actions, billing type, owners, and created date.](../images/owned-apps-page.png) + +*Figure 2: The Owned apps tab lists every app your organization created, regardless of installation status.* + +> [!TIP] +> Use **Owned apps** as the tenant inventory for apps your organization builds. +> Use **Installed apps** as the tenant inventory for apps available in the tenant. + +## Create an app + +1. Sign in to the [SharePoint admin center](https://admin.microsoft.com/sharepoint). +1. In the left navigation, expand **SharePoint Embedded**. +1. Select **Apps**. +1. Select **+ Create app**. +1. Wait for the **Create app** panel to open. + +![SharePoint admin center Create app panel showing the Entra app registration options New app and Use an existing Entra app, a New Entra app name field, an Owners field, and the billing type section.](../images/create-app-panel-1.png) + +*Figure 3: The Create app panel registers a Microsoft Entra app, assigns owners, and sets the billing type in a single flow.* + +## Choose the Entra app registration option + +In **Entra app registration**, choose one option. + +| Option | Use it when | +| --- | --- | +| New app | You want the admin center flow to create a new Microsoft Entra application registration. | +| Use an existing Entra app | You already have a Microsoft Entra app and want to associate it with the SharePoint Embedded app. | + +If you choose **New app**, enter the new Entra app name. +If you choose **Use an existing Entra app**, search by application ID or application name. + +Do not create duplicate app registrations unless your app architecture requires them. +Use one owning application for the SharePoint Embedded app that owns its container type. + +## Add app owners + +Add up to three owners in the **Owners** field. +Owners can manage app settings and billing configuration. +Assign the developers who build the app as owners so you can hand the app off immediately after creation. +Choose durable administrative owners instead of individual temporary project members when an owner must persist beyond the initial project. + +Record the owners in your internal operations documentation. +If an owner leaves the organization, update ownership before removing their account. + +## Select billing type + +Billing type determines who pays for SharePoint Embedded consumption. +Choose carefully because billing type cannot be changed after app creation. + +| Billing type | Meaning | +| --- | --- | +| User org | The organization using the app sets up pay-as-you-go billing in the Microsoft 365 admin center. | +| Owner org | Usage is billed to the organization that owns the app. | + +Use **User org** for scenarios where each consuming tenant is responsible for billing. +Use **Owner org** when your organization owns the app and manages billing directly. + +For billing concepts, see [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) and [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). + +## Configure owner organization billing + +If you select **Owner org**, choose when to connect the Azure billing subscription in **Billing subscription setup**. + +| Option | Result | +| --- | --- | +| Setup now | You provide the Azure subscription and resource group during app creation, and billing is attached when the app is created. | +| Setup later | The app is created without a billing subscription. You can attach billing later from the app details panel on the **Installed apps** tab. | + +1. Select **Setup now** or **Setup later**. +1. If you select **Setup now**, provide the subscription information requested by the admin center. +1. Confirm that the subscription and resource group are valid. + +![Create app panel scrolled to show an owner added, the Owner org billing type selected, and the Billing subscription setup options Setup now and Setup later, followed by Advanced settings.](../images/create-app-panel-2.png) + +*Figure 4: For Owner org billing, choose Setup now to attach an Azure subscription during creation, or Setup later to attach it from the app details panel afterward.* + +> [!NOTE] +> **User org** billing isn't set up in this panel. For a User org app, a Global Administrator in the consuming tenant sets up billing in the Microsoft 365 admin center before users can access the app. Only a Global Administrator can set up billing. + +## Configure advanced settings + +Expand **Advanced settings** when you need optional settings. +The **Graph Explorer** toggle supports development and testing. +Turn it on only when administrators or developers need to explore Microsoft Graph requests for the app. +Turn it off when it is not needed. + +For Graph Explorer documentation, see [Use Graph Explorer to try Microsoft Graph APIs](/graph/graph-explorer/graph-explorer-overview). + +## Submit the app + +1. Review the Entra app registration selection. +1. Review the app owners. +1. Review billing type. +1. Review advanced settings. +1. Select **Create app**. + +When you select **Create app**, the admin center completes these steps together: + +- Registers the Microsoft Entra app, or associates the existing Entra app you selected. +- Creates the SharePoint Embedded app, which is also called the container type. +- Installs the app in your tenant. +- Attaches billing when you select **Owner org** and **Setup now**. + +A successful create flow also installs the app, so the app appears on the **Installed apps** tab. If only the install step fails, the SharePoint Embedded app is created but not installed. In that case, install it later from the **Owned apps** tab. See [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md). + +The **Create app** button is available only after required fields are complete. +If you cancel the panel, no app is created. + +## Validate app creation + +After the app is created, validate it in the SharePoint admin center. + +1. Return to **SharePoint Embedded** > **Apps**. +1. Open **Owned apps**. +1. Confirm that the app appears in the owned app inventory. +1. Confirm the owner list. +1. Confirm the billing type. +1. Check billing status. +1. If the app is also installed, confirm that it appears in **Installed apps**. + +Use the billing status to decide the next action. + +| Status | Action | +| --- | --- | +| Active | Continue with installation, consent, and operational validation. | +| Inactive | Complete billing setup or resolve the billing issue before production use. | + +## Prepare for installation + +App creation does not complete the consuming tenant setup by itself. +Depending on the app model, the tenant still needs installation, consent, and permission registration. + +Continue with these tasks. + +1. Install or register the app in the tenant. +1. Grant admin consent for requested permissions. +1. Register container type application permissions when the owning app requires it. +1. Set up pass-through billing if the consuming tenant pays for usage. +1. Verify containers after the app creates content. + +## Troubleshoot app creation + +Use these checks if creation fails or the app is not usable. + +- Confirm your account has the SharePoint Embedded Administrator role. +- Confirm the selected existing Entra app exists and is available in the tenant. +- Confirm owners resolve in the people picker. +- Confirm required billing fields are complete. +- Confirm owner organization billing uses a valid Azure subscription and resource group. +- If the app is inactive, complete or repair billing setup. +- If users cannot access the app after creation, verify installation, admin consent, and container type permissions. + +> [!WARNING] +> Do not treat app creation as proof that the app is ready for users. +> Users may still be blocked by missing installation, missing consent, or invalid billing. + +## Related content + +- [Admin overview](admin-overview.md) +- [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) +- [Grant admin consent and permissions](grant-admin-consent-permissions.md) +- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) + +## Next steps +Install the app by using [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md). diff --git a/docs/embedded/admin/grant-admin-consent-permissions.md b/docs/embedded/admin/grant-admin-consent-permissions.md new file mode 100644 index 0000000000..a6a25c5346 --- /dev/null +++ b/docs/embedded/admin/grant-admin-consent-permissions.md @@ -0,0 +1,144 @@ +--- +title: Grant Admin Consent and Permissions +description: Review SharePoint Embedded permissions, grant admin consent, and verify the consent state in a consuming tenant. +ms.date: 07/10/2026 +ms.reviewer: dilucesr +ms.localizationpriority: high +--- + +# Grant Admin Consent and Permissions + +**Applies to:** Consuming tenant admin — Global admin + + + +Grant admin consent when a SharePoint Embedded app needs high-privilege permissions in your Microsoft 365 tenant. Application permissions always require admin consent, while delegated permissions for SharePoint Embedded do not. To learn more, see [Grant admin consent](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal). + +Use this article to review requested permissions, grant consent, and troubleshoot common consent failures. + +> [!IMPORTANT] +> Grant consent only for apps and publishers your organization trusts. +> Review the app ID, publisher, and requested permissions before approving. + +## Before you begin + +Confirm these prerequisites: + +- You can grant admin consent (see [Grant tenant-wide admin consent](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal#prerequisites)). +- You know you Microsoft Entra tenant ID (see [How to find your Microsof Entra tenant ID](/entra/fundamentals/how-to-find-tenant)) +- You know the owning application client ID. +- You understand why the app needs each requested permission. +- The app owner has provided installation and consent instructions. +- Billing requirements are known for the app model. + +## Understand consent in SharePoint Embedded + +An owning application must meet two requirements before it can act on a consuming tenant. + +1. The owning app must have a service principal installed in the consuming tenant. +1. The owning app must be granted the permissions needed to register the container type and access its containers in the consuming tenant. + +Both requirements are typically satisfied when a tenant administrator grants admin consent to the owning application. However, admin consent is not a hard requirement for the owning application to act on the consuming tenant. SharePoint Embedded apps that operate exclusively on behalf of a user do not need to be granted admin consent. Granting admin consent for apps that operate exclusively on behalf of a user may improve user experience as the app won't require consent from every user who wants to sign into the app. + +> [!CAUTION] +> You need to understand the implications of granting admin consent to an application. To learn more, see [Grant tenant-wide admin consent](/entra/identity/enterprise-apps/grant-admin-consent). + +These are the permissions that the owning application needs to act on the consuming tenant: + +| Permission | Why the app requests it | Consent note | +| --- | --- | --- | +| [`FileStorageContainerTypeReg.Selected`](/graph/permissions-reference#filestoragecontainertyperegselected) | Register the container type in the consuming tenant. | The app can request this as delegated or application permission. If delegated registration is used, no admin consent is required but the user performing the registration must be a SharePoint Embedded Administrator or Global Administrator. | +| [`FileStorageContainer.Selected`](/graph/permissions-reference#filestoragecontainerselected) | Access containers and content for its container type in the consuming tenant. | The app can request this as delegated or application permission. If delegated access is used, no admin consent is required but each user of the app will need to consent when signing into the app. | + +## Review requested permissions + +Before granting consent, review the requested permissions with the app owner. + +| Review item | Why it matters | +| --- | --- | +| Application client ID | Confirms you are consenting to the intended owning app. | +| Publisher | Helps validate trust and support ownership. | +| Permission list | Shows what the app can do after consent. | +| Container type ID | Identifies the container type the app owns. | +| Guest app access | Identifies other apps that may receive access through registration. | +| Billing model | Determines whether the tenant must configure billing before users can use the app. | + +Ask the app owner to explain any permission that does not align with the expected scenario. + +> [!CAUTION] +> - Do NOT grant consent from a copied URL unless you have verified the `client_id` value in the URL. A consent URL grants permissions to the app identified by that client ID. +> - Do NOT grant consent if you don't understand why each permission is being requested. + +## Grant admin consent from the consent endpoint + +The SharePoint Embedded may request admin consent on your tenant by providing you with, or redirecting you to, the admin consent URL. To learn more about the admin consent URL, see [Admin consent on the Microsoft identity platform](/entra/identity-platform/v2-admin-consent). + +```http +https://login.microsoftonline.com/{your-tenant-id}/v2.0/adminconsent?client_id={owning-app-clientid}&scope=https://graph.microsoft.com/.default&redirect_uri={spe-app-redirect-uri} +``` + +Confirm that in the admin consent URL: +- `{your-tenant-id}` matches your Microsoft Entra tenant ID. +- `{owning-app-clientid}` matches the owning application client ID. +- `{spe-app-redirect-uri}` points to a URL in the SharePoint Embedded app. +- The scope value points to the `.default` Microsoft Graph scope. If the app owner gives you a different scope value, make sure you understand why. +- A `state` query parameter may or may not be present. + +For national cloud environments, the admin consent endpoint will vary. See [Microsoft Entra authentication endpoints on national clouds](/entra/identity-platform/authentication-national-cloud#microsoft-entra-authentication-endpoints) for more information. + +## Grant consent from Microsoft Entra admin experiences + +You can grant admin consent through the Microsoft Entra admin center only if the owning application already has a service principal in your tenant. For instructions on how to grant admin consent, see [Grant tenant-wide admin consent in Enterprise apps pane](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal#grant-tenant-wide-admin-consent-in-enterprise-apps-pane). + +## Verify the service principal + +After consent, confirm that the app is installed in your tenant. + +1. In the [Microsoft Entra admin center](https://entra.microsoft.com/), search for the owning application in the Enterprise pane by using its client ID. +1. Confirm that the application exists. +1. Confirm the publisher and application ID. +1. Confirm that permissions show the expected consent state. +1. Confirm that no unexpected permissions were granted. + +If the service principal is missing, consent did not complete. + +## Troubleshoot consent failures + +Use these checks when consent fails. + +- Confirm the admin account can grant tenant-wide admin consent. +- Confirm the consent URL uses the correct consuming tenant ID. +- Confirm the `client_id` is the owning application client ID. +- Confirm the URL uses the expected `v2.0/adminconsent` endpoint and Graph `.default` scope. +- Confirm the app registration exists and is configured correctly by the app owner. +- Confirm the redirect URI or success handling is configured by the app owner. +- Confirm your tenant policies allow user or admin consent for the app. +- Confirm national cloud endpoints are correct when applicable. +- Confirm the app is not blocked by publisher or enterprise app policies. + +## Troubleshoot access denied after consent + +Use these checks when consent succeeds but the app owner reports that API calls fail on your tenant. + +- Confirm the app owner registered the container type using the registration API. +- Confirm the app is the owning application for the container type when invoking the registration API. +- Confirm the app uses the expected `FileStorageContainer.Selected` permission for container and content access. +- Confirm the app uses app-only authentication when required. +- Confirm the app uses the correct delegated or app-only registration flow for its design. +- Confirm billing is active when the app uses pass-through billing. + +## Related content + +- [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) +- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Manage containers with PowerShell](manage-containers-powershell.md) +- [Register file storage container type application permissions](../build/register-application-permissions.md) +- [Admin overview](admin-overview.md) + +## Next steps +Configure billing in [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). diff --git a/docs/embedded/admin/install-sharepoint-embedded-app.md b/docs/embedded/admin/install-sharepoint-embedded-app.md new file mode 100644 index 0000000000..4aa2ea9832 --- /dev/null +++ b/docs/embedded/admin/install-sharepoint-embedded-app.md @@ -0,0 +1,230 @@ +--- +title: Install a SharePoint Embedded App +description: Install or register a SharePoint Embedded app in a consuming tenant and validate the tenant setup. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan +ms.localizationpriority: high +--- + +# Install a SharePoint Embedded App + +**Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin + + + +Install a SharePoint Embedded app when a consuming Microsoft 365 tenant needs to use the app. +Installation makes the app visible for tenant administration, but the tenant may still need admin consent, container type permission registration, and billing setup before users can access content. + +This article focuses on the consuming-tenant administrator path in the SharePoint admin center. + +> [!IMPORTANT] +> A consuming tenant admin is typically a user assigned the **SharePoint Embedded Administrator** role. +> Global Administrators can also perform SharePoint Embedded administration tasks. + +Use this article with [Choose an App Model: Single-Tenant or Multitenant](../plan/choose-app-model.md) and the app creation guidance. +The app model determines who owns the app, who installs or onboards it, where containers are created, who pays, and which admins must consent or configure billing. + +## Before you begin + +Confirm these prerequisites. + +- You can sign in to the consuming tenant. +- Your account has the SharePoint Embedded Administrator role or Global Administrator role. +- The SharePoint Embedded app exists in the owning tenant. +- You have the app identity or installation link provided by the app owner. +- You know whether billing is handled by the app owner or by the user organization. +- You know which permissions the app requests. +- You can complete admin consent if the installation flow requires it. +- You know whether the app is a single-tenant line-of-business app or a multitenant ISV app. + +For role information, see [Admin overview](admin-overview.md). + +## Understand the consuming tenant path + +A consuming tenant is the Microsoft 365 tenant where users run the SharePoint Embedded app and where the app stores content in containers. +The consuming tenant admin manages the app and containers in that tenant. +For a single-tenant line-of-business app, the owning tenant and consuming tenant are usually the same. +For a multitenant ISV app, each customer tenant is a consuming tenant and customer files remain in the customer Microsoft 365 tenant boundary. + +Consuming tenant administrators use two administration surfaces. + +| Surface | Use it for | +| --- | --- | +| SharePoint admin center | View installed apps, active containers, deleted containers, and container details. | +| SharePoint Online Management Shell | Enumerate applications, enumerate containers, update labels, configure sharing, and manage lifecycle operations. | + +Use the SharePoint admin center when you need guided installation and validation. +Use PowerShell for repeatable inventory and operations after installation. + +## Install from the SharePoint admin center + +Use the SharePoint Embedded **Apps** experience in the SharePoint admin center when the app is available to install. +The **Installed apps** tab lists SharePoint Embedded apps built by your organization and by external organizations. It currently doesn't include Microsoft-built SharePoint Embedded apps. + +1. Sign in to the [SharePoint admin center](https://admin.microsoft.com/sharepoint). +1. In the left navigation, expand **SharePoint Embedded**. +1. Select **Apps**. +1. Review **Installed apps** to confirm whether the app is already installed. +1. If you own the app, review **Owned apps** and locate the app. +1. Select the available install action for the app. +1. Review the app name, publisher, and billing information. +1. Continue through the installation prompts. +1. Complete admin consent if the flow directs you to consent. +1. Finish the installation. + +The exact installation prompts can vary by app ownership and billing model. +Do not continue if the app identity or publisher is unexpected. + +> [!CAUTION] +> Install only apps that your organization trusts. +> A SharePoint Embedded app can create and access containers according to the permissions granted to it. + +## Install an owned app that didn't install + +A successful create flow installs the app automatically, so you don't usually install an owned app separately. +Only when the install step in the create flow fails is the SharePoint Embedded app created but not installed. +In that case, install the app from the **Owned apps** tab. + +1. Go to **SharePoint Embedded** > **Apps**. +1. Open **Owned apps**. +1. Locate the app that isn't installed. +1. Select the install action for the app. +1. Complete the installation prompts. + +After installation completes, the app appears on the **Installed apps** tab. + +## Validate installation + +After installation, validate the app inventory. + +1. Return to **SharePoint Embedded** > **Apps**. +1. Open **Installed apps**. +1. Confirm that the app is listed. +1. Confirm the app name and publisher. +1. Confirm the billing type and billing status. +1. If the app is owned by your organization, open **Owned apps** and confirm ownership metadata. +1. Record the owning application ID for future PowerShell and permission review. + +Select an app on the **Installed apps** tab to open its details panel. The panel shows the app's status, Entra app ID, SharePoint Embedded app ID, publisher, and billing information. + +![App details panel for an installed app, showing an Active status, the Entra app ID, the SharePoint Embedded app ID, the publisher, and billing info that includes billing status, Azure subscription ID, resource group, and billing type.](../images/installed-app-details-panel.png) + +*Figure 1: The app details panel on the Installed apps tab shows identifiers and billing information, and lets you copy the Entra and SharePoint Embedded app IDs.* + +If the app is not visible, refresh the page and confirm that installation completed successfully. +If the app remains missing, contact the app owner and verify the app identity. + +## Complete admin consent + +Installation and consent are related but not always the same task. +The owning app must have a service principal installed in the consuming tenant and admin consent before it can register container type application permissions. + +> [!NOTE] +> When you create the app in the SharePoint admin center, consent is granted as part of the create flow, so you don't complete the manual admin consent step in this section. Use this section when the app is created another way, such as an app that another organization owns or an app registered directly in Microsoft Entra. + +Use [Grant admin consent and permissions](grant-admin-consent-permissions.md) to review the requested permissions and complete consent. + +Admin consent may be requested through the Microsoft identity platform admin consent endpoint, for example: + +```http +https://login.microsoftonline.com/{your-tenant-id}/v2.0/adminconsent?client_id={owning-app-clientid}&scope=https://graph.microsoft.com/.default&redirect_uri={spe-app-redirect-uri} +``` + +Use the exact client ID provided by the app owner. +Do not substitute a different application ID. + +## Confirm billing requirements + +SharePoint Embedded supports standard and pass-through billing models. +For pass-through billing, a Global Administrator in the consuming tenant must set up billing in the Microsoft 365 admin center before users can access the app. Only a Global Administrator can set up billing; the SharePoint Embedded Administrator role can't. + +If billing is invalid or SharePoint Embedded is turned off, users can no longer create new containers, although existing containers and their content remain accessible. + +### Attach or change billing from the details panel + +If billing was skipped during app creation, you can attach it later from the app details panel on the **Installed apps** tab. For an **Owner org** app that your organization owns, you can also change the billing subscription that's already attached from the same panel. + +1. Open **SharePoint Embedded** > **Apps** > **Installed apps**. +1. Select the app to open its details panel. +1. In **Billing info**, attach a billing subscription or update the existing one. + +For a **User org** app, billing isn't attached from this panel. A Global Administrator in the consuming tenant sets up billing in the Microsoft 365 admin center. See [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). + +Use [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) to configure billing for consuming-tenant scenarios. +Use [Monitor usage, billing, and cost](monitor-usage-billing-cost.md) to review ongoing cost. + +## Verify containers after app use + +The app may not create containers until users or app processes start using it. +After containers exist, validate them. + +1. In the SharePoint admin center, go to **SharePoint Embedded** > **Active containers**. +1. Search or filter by application name. +1. Open a container details panel. +1. Review general metadata. +1. Review membership. +1. Confirm sensitivity label state if labels are required. +1. Review storage use. + +For detailed steps, see [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md). + +## Validate with PowerShell + +Use SharePoint Online Management Shell when you need a scripted check. +Install the latest SharePoint Online Management Shell and connect to SharePoint Online. +Then use the supported application inventory cmdlets. + +```powershell +Get-SPOApplication +``` + +To view details for a specific application, use the owning application ID. + +```powershell +Get-SPOApplication -OwningApplicationId +``` + +For command details, see [Manage containers with PowerShell](manage-containers-powershell.md) and [Get-SPOApplication](/powershell/module/sharepoint-online/get-spoapplication). + +## Manage container type registrations with Microsoft Graph + +Consuming tenant admins can also manage container type registrations programmatically. The [fileStorageContainerTypeRegistration](/graph/api/resources/filestoragecontainertyperegistration) resource represents the registration of a container type in a consuming tenant. Managing all registrations in the tenant requires the `FileStorageContainerTypeReg.Manage.All` delegated permission. + +| Operation | API | +| --- | --- | +| List registrations | [List container type registrations](/graph/api/filestorage-list-containertyperegistrations) | +| Get a registration | [Get container type registration](/graph/api/filestoragecontainertyperegistration-get) | +| Update a registration | [Update container type registration](/graph/api/filestoragecontainertyperegistration-update) | +| Delete a registration | [Delete container type registration](/graph/api/filestorage-delete-containertyperegistrations) | + +## Troubleshoot installation + +Use these checks when installation does not complete. + +- Confirm the administrator has the SharePoint Embedded Administrator role. +- Confirm the app identity and publisher. +- Confirm the app is available for your tenant. +- Confirm admin consent is granted for the correct application. +- Confirm the app has a service principal in the consuming tenant after consent. +- Confirm billing is active for pass-through apps. +- Confirm the app owner registered container type application permissions when required. +- Confirm users are assigned the required app roles or memberships. + +> [!NOTE] +> Access denied errors after installation often indicate missing consent, missing container type permission registration, or app-level permission configuration rather than a container problem. + +## Related content + +- [Admin overview](admin-overview.md) +- [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md) +- [Grant admin consent and permissions](grant-admin-consent-permissions.md) +- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) + +## Next steps +Grant consent and verify permissions in [Grant admin consent and permissions](grant-admin-consent-permissions.md). diff --git a/docs/embedded/admin/manage-containers-powershell.md b/docs/embedded/admin/manage-containers-powershell.md new file mode 100644 index 0000000000..a7efd09664 --- /dev/null +++ b/docs/embedded/admin/manage-containers-powershell.md @@ -0,0 +1,266 @@ +--- +title: Manage Containers with PowerShell +description: Use SharePoint Online Management Shell to inventory and manage SharePoint Embedded apps and containers. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan +ms.localizationpriority: high +--- + +# Manage Containers with PowerShell + +**Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin + + + +Use SharePoint Online Management Shell to automate SharePoint Embedded application and container administration. +PowerShell is useful for inventory, reporting, lifecycle operations, sensitivity label updates, sharing configuration, and permission review. + +This article states the supported administrator cmdlets and links to canonical cmdlet references for deeper syntax details. + +> [!IMPORTANT] +> Use the latest version of SharePoint Online Management Shell before running SharePoint Embedded container administration cmdlets. + +## Before you begin + +Confirm these prerequisites. + +- Your account has the SharePoint Embedded Administrator role or Global Administrator role. +- You can connect to the tenant with SharePoint Online Management Shell. +- You know the tenant admin URL. +- You know the owning application ID when filtering application or container results. +- You understand the business impact before deleting containers. + +For role details, see [SharePoint Embedded administrator](admin-overview.md). + +## Install SharePoint Online Management Shell + +Install the [SharePoint Online Management Shell](https://www.microsoft.com/download/details.aspx?id=35588). +Open it from the Start menu or use a supported PowerShell host with the module available. + +Install the latest shell and connect to SharePoint Online before you run SharePoint Embedded cmdlets. + +For connection details, see [Connect-SPOService](/powershell/module/sharepoint-online/connect-sposervice). + +## Connect to SharePoint Online + +Connect to your tenant admin endpoint. + +```powershell +Connect-SPOService -Url https://-admin.sharepoint.com +``` + +Replace `` with your tenant name. +Sign in with an account that has the required admin role. + +> [!TIP] +> Use a dedicated administrative account that follows your organization's privileged access policies. + +## Inventory SharePoint Embedded applications + +List SharePoint Embedded applications registered in the tenant. + +```powershell +Get-SPOApplication +``` + +View details for a specific owning application. + +```powershell +Get-SPOApplication -OwningApplicationId +``` + +For command details, see [Get-SPOApplication](/powershell/module/sharepoint-online/get-spoapplication). + +## View guest application permissions + +View guest application permissions for a SharePoint Embedded application. + +```powershell +Get-SPOApplication -OwningApplicationId -ApplicationId +``` + +`OwningApplicationId` is the ID of the SharePoint Embedded owning application. +`ApplicationId` is the guest application ID that has access to the SharePoint Embedded application. + +Application administration cmdlets do not apply to Microsoft Loop. + +## Configure application sharing + +Consuming tenant admins can configure the external sharing capability at the application level. + +```powershell +Set-SPOApplication -OwningApplicationId -SharingCapability -OverrideTenantSharingCapability +``` + +`SharingCapability` supports these values: + +- `Disabled` +- `ExistingExternalUserSharingOnly` +- `ExternalUserSharingOnly` +- `ExternalUserAndGuestSharing` + +The `OverrideTenantSharingCapability` value can be `$true` or `$false`. +Review your tenant sharing policy before overriding tenant sharing behavior. + +## List active containers + +List active containers for a SharePoint Embedded application. + +```powershell +Get-SPOContainer -OwningApplicationId | FT +``` + +The `OwningApplicationId` is the ID of the SharePoint Embedded application. + +For Microsoft Loop containers, use this owning app ID with container administration cmdlets: + +```text +a187e399-0c36-4b98-8f04-1edc167a0996 +``` + +For command details, see [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer). + +## List containers sorted by storage + +Sort containers by storage when investigating cost or growth. + +```powershell +Get-SPOContainer -OwningApplicationId -SortByStorage | FT +``` + +Use `Ascending` or `Descending` for ``. + +Use this view with [Monitor usage, billing, and cost](monitor-usage-billing-cost.md) to find high-growth apps or containers. + +## Get container details + +View details for a specific container by container ID or site URL. + +```powershell +Get-SPOContainer -Identity +Get-SPOContainer -Identity +``` + +The detailed result can include storage, ownership details, site URL, label information, and owner count. +Use the site URL when configuring some compliance controls in Microsoft Purview. + +## Set or remove a sensitivity label + +Set the sensitivity label for a container. + +```powershell +Set-SPOContainer -Identity -SensitivityLabel +``` + +Remove the sensitivity label from a container. + +```powershell +Set-SPOContainer -Identity -RemoveLabel +``` + +Coordinate sensitivity label changes with compliance administrators. +For compliance guidance, see [Apply security and compliance controls](apply-security-compliance-controls.md). + +## Manage container membership + +Consuming-tenant administrators can add, remove, or change a user's role on a container directly (September 2025): + +```powershell +Add-SPOContainerUser -ContainerId -User -Role +Set-SPOContainerUser -ContainerId -User -Role +Remove-SPOContainerUser -ContainerId -User +``` + +For command details, see [Add-SPOContainerUser](/powershell/module/microsoft.online.sharepoint.powershell/add-spocontaineruser), [Set-SPOContainerUser](/powershell/module/microsoft.online.sharepoint.powershell/set-spocontaineruser), and [Remove-SPOContainerUser](/powershell/module/microsoft.online.sharepoint.powershell/remove-spocontaineruser). + +## Delete a container + +Move a container to the deleted container collection. + +```powershell +Remove-SPOContainer -Identity +``` + +Deleting a container can cause data loss, broken links, application failures, and permission issues. +Notify container owners and app owners before deleting. + +> [!WARNING] +> Deleting a container may interrupt usage of the SharePoint Embedded application that owns it. + +For command details, see [Remove-SPOContainer](/powershell/module/sharepoint-online/remove-spocontainer). + +## View deleted containers + +List deleted containers in the deleted container collection. + +```powershell +Get-SPODeletedContainer +``` + +For command details, see [Get-SPODeletedContainer](/powershell/module/sharepoint-online/get-spodeletedcontainer). + +## Restore a deleted container + +Restore a deleted container from the deleted container collection. + +```powershell +Restore-SPODeletedContainer -Identity +``` + +After restore, validate the container in the SharePoint admin center and ask the app owner to test the app. + +## Permanently delete a container + +Permanently delete a container from the deleted container collection when recovery is no longer required. + +```powershell +Remove-SPODeletedContainer -Identity +``` + +For command details, see [Remove-SPODeletedContainer](/powershell/module/sharepoint-online/remove-spodeletedcontainer). + +> [!CAUTION] +> Permanent deletion cannot be reversed. +> Confirm retention and legal requirements before running this command. + +## Manage guest application permissions + +If permitted, admins can add, edit, and remove guest application access to SharePoint Embedded applications. +Use `Set-SPOApplicationPermission` for this scenario. + +```powershell +Set-SPOApplicationPermission + [[-OwningApplicationId] ] + [[-ApplicationId] ] + [[-PermissionAppOnly] ] + [[-PermissionDelegated] ] +``` + +For command details, see [Set-SPOApplicationPermission](/powershell/module/sharepoint-online/set-spoapplicationpermission). + +## Script safely + +Follow these operational practices. + +- Export inventory before lifecycle changes. +- Test filters with read-only commands first. +- Use explicit container IDs for delete and restore operations. +- Log command output for change records. +- Notify app owners before deleting or restoring containers. +- Review storage-heavy containers before making cost decisions. +- Coordinate label and compliance changes with compliance admins. + +## Related content + +- [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) +- [Monitor usage, billing, and cost](monitor-usage-billing-cost.md) +- [Review audit events](review-audit-events.md) +- [Apply security and compliance controls](apply-security-compliance-controls.md) + +## Next steps +Monitor consumption in [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). diff --git a/docs/embedded/admin/manage-containers-sharepoint-admin-center.md b/docs/embedded/admin/manage-containers-sharepoint-admin-center.md new file mode 100644 index 0000000000..19229e4924 --- /dev/null +++ b/docs/embedded/admin/manage-containers-sharepoint-admin-center.md @@ -0,0 +1,310 @@ +--- +title: Manage Containers in SharePoint Admin Center +description: View, inspect, delete, restore, and manage SharePoint Embedded containers in the SharePoint admin center. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan +ms.localizationpriority: high +--- + +# Manage Containers in SharePoint Admin Center + +**Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin + + + +Use the SharePoint admin center to manage SharePoint Embedded containers through a graphical experience. +The SharePoint Embedded container pages help consuming tenant admins view active containers, inspect details, manage membership, apply sensitivity labels, archive and reactivate containers, delete containers, restore deleted containers, and permanently delete containers. + +> [!IMPORTANT] +> To manage SharePoint Embedded containers, assign the **SharePoint Embedded Administrator** role. +> A Global Administrator can also perform these tasks. + +## Before you begin + +Confirm these prerequisites. + +- You can sign in to the [SharePoint admin center](https://admin.microsoft.com/sharepoint). +- Your account has the SharePoint Embedded Administrator role or Global Administrator role. +- The SharePoint Embedded app is installed in the tenant. +- Containers exist for the app. +- You understand the business impact before deleting or permanently deleting any container. + +For role context, see [Admin overview](admin-overview.md). + +## Open container management + +1. Sign in to the [SharePoint admin center](https://admin.microsoft.com/sharepoint). +1. In the left navigation, expand **SharePoint Embedded**. +1. Select **Active containers** to view active containers. +1. Select **Archived containers** to view containers in the archived state. +1. Select **Deleted containers** to view containers in the deleted container collection. + +A SharePoint Embedded Administrator sees only the SharePoint Embedded-specific pages that apply to the role. +The role does not expose general SharePoint **Active sites** or **Deleted sites** pages. + +![SharePoint admin center left navigation for a SharePoint Embedded Administrator, showing only the Active containers and Deleted containers pages.](../images/ctaux2.png) + +## View active containers + +The **Active containers** page shows active containers in the tenant. +Use it for inventory, compliance review, and lifecycle decisions. + +The **Active containers** page shows these container properties. + +| Column or property | Meaning | +| --- | --- | +| Container name | Name provided by the container owner. | +| Application name | SharePoint Embedded application that the container belongs to. | +| Publisher | Organization that owns the application. | +| Ownership type | Tenant-owned, user-owned, or group-owned. | +| Principal owner | User or group whose lifecycle affects the container lifecycle, when applicable. | +| Storage | Storage used by files in the container. | +| Owners | Users assigned the owner role. | +| Owner count | Number of owners. | +| Sensitivity label | Label assigned to the container. | +| Created on | Date and time the container was created. | + +Use these fields to identify stale, large, unlabeled, or ownership-risk containers. + +![Active containers page listing containers with columns for name, application, publisher, ownership type, storage, owners, sensitivity label, and created date.](../images/ctaux3.png) + +## Search, sort, and filter active containers + +Use the active container page controls to narrow the inventory. + +1. Search by container name. +1. Sort by supported columns such as storage or created date. +1. Filter by application name. +1. Filter by publisher. +1. Filter by ownership type. +1. Filter by principal owner. +1. Filter by owner count. +1. Filter by created date. + +> [!NOTE] +> Filtering behavior on the **Active containers** page differs from the **Active sites** page in the SharePoint admin center. + +![Active containers page search box used to find a container by name.](../images/search.png) + +![Active containers page sort control applied to the storage and created-on columns.](../images/sorting.png) + +![Active containers page filter panel with options for application name, publisher, ownership type, principal owner, owner count, and created date.](../images/filter.png) + +## Inspect container details + +Open a container details panel when you need more information. +The details view includes two tabs. + +| Tab | Use it for | +| --- | --- | +| General | Review container metadata, usage, and configuration settings. | +| Membership | Review and manage user permissions for roles associated with the container. | + +Review the general tab before lifecycle operations. +Review membership before changing users or owner assignments. + +![Container details General tab showing container metadata, usage, and configuration settings.](../images/ctaux4.png) + +## Manage membership + +The SharePoint Embedded platform supports four roles: Owner, Manager, Writer, and Reader. +An individual SharePoint Embedded application may not use all four roles and may display different role names in its own user experience. + +In the SharePoint admin center membership panel, administrators can: + +1. Add a user to a role. +1. Reassign a user from one role to another role. +1. Remove a user from a role. + +Use membership changes to maintain access continuity when owners change roles or leave the organization. +Coordinate with app owners when the app has its own membership workflow. + +![Container details Membership tab showing the Owner, Manager, Writer, and Reader roles with their assigned users.](../images/ctaux5.png) + +![Add-user picker used to select a tenant user and assign a container role.](../images/add-owners-one.png) + +![Reassign control used to move a user from one container role to another.](../images/reassign-user.png) + +![Remove control used to confirm removing a user from a container role.](../images/remove-user.png) + +## Set a sensitivity label + +Admins can set a sensitivity label on a container from the Active containers page. +Open the container details panel and use the settings area. + +Before applying a label, confirm: + +- The label exists and is published to the right administrators. +- The label is appropriate for the content and app scenario. +- The app owner understands any access or protection impact. +- Compliance administrators approve the labeling approach. + +![Container details settings area with the sensitivity label selector for an active container.](../images/sensitivity-label.png) + +For broader controls, see [Apply security and compliance controls](apply-security-compliance-controls.md). + +## Archive a container + +Archive a container when it's no longer actively used but must be retained for legal, compliance, or business purposes. Documents in an archived container can't be accessed by any user or application until the container is reactivated. + +1. Open **Active containers**. +1. Select the container. +1. Select **Archive**. +1. Review the side panel that explains the archival implications and reactivation options. +1. Select **Archive** to confirm, or cancel to return to active containers. + +The container moves to the **Archived containers** page. + +![Archive action on the Active containers page with a container selected.](../images/active-containers-archive-action.png) + +## View archived containers + +The **Archived containers** page lists containers in the tenant's archived container collection. It shows the following metadata: + +- Container name +- Application name +- Publisher +- Status +- Time archived +- Archived by +- Storage (GB) +- Ownership type +- Principal owner + +Use this page to review archived containers, decide on reactivation timing, and manage their lifecycle. The Archived containers page also provides the same delete experience as active containers for selecting and deleting containers. + +![Archived containers page listing containers with columns for name, application, publisher, status, time archived, archived by, storage, ownership type, and principal owner.](../images/archived-containers-page.png) + +## Reactivate archived containers + +Archived containers aren't accessible to users or applications until reactivated. Reactivation time depends on how long the container has been archived. + +### Reactivate recently archived containers + +Containers archived within the last seven days are in the **Recently archived** state and reactivate quickly. + +1. Open **Archived containers**. +1. Select a Recently archived container. +1. Select **Reactivate**. +1. Review the side panel with reactivation timing. +1. Select **Reactivate** to confirm, or cancel to return. + +The container moves to the **Active containers** page. + +![Reactivate action on a recently archived container in the Archived containers page.](../images/reactivate-recently-archived-container.png) + +### Reactivate fully archived containers + +Containers archived longer than seven days are in the **Fully archived** state and require a 24-hour reactivation window. + +1. Open **Archived containers**. +1. Select a Fully archived container. +1. Select **Reactivate**. +1. Review the side panel that states the **24 hours** reactivation time. +1. Select **Reactivate** to submit the request, or cancel to return. + +The request displays as "Reactivating" on the Archived containers page. After 24 hours, the container moves to the **Active containers** page. + +![Reactivate action on a fully archived container, showing the 24-hour reactivation notice.](../images/reactivate-fully-archived-container.png) + +## Delete an active or archived container + +Delete a container only when there is a clear business reason. +Container deletion can affect the SharePoint Embedded app that owns the container. + +Potential impacts include: + +- Content loss from the app experience. +- Broken links or references. +- Application errors if the app expects the container to exist. +- Permission or workflow disruption. + +To delete a container: + +1. Open **Active containers**. +1. Select the container. +1. Select the delete action when it becomes available. +1. Review the warning panel. +1. Confirm deletion only after validating business impact. + +The container moves to the deleted container collection. + +![Delete action enabled on the Active containers page after a container is selected.](../images/ctaux7.png) + +> [!WARNING] +> Deleting a container may interrupt the associated SharePoint Embedded application. +> Notify app owners before deleting containers. + +## View deleted containers + +The **Deleted containers** page lists containers in the tenant deleted container collection. +The **Deleted containers** page shows metadata similar to active containers and adds **Deleted on**. + +Use the deleted container view to: + +1. Confirm that a deleted container is recoverable. +1. Review storage and ownership. +1. Sort by supported columns such as storage, created date, or deleted date. +1. Filter by app, publisher, ownership type, principal owner, owner count, created date, or deleted date. +1. Decide whether to restore or permanently delete the container. + +Deleted containers are permanently purged after 93 days unless a retention policy changes the outcome. + +![Deleted containers page listing containers with a Deleted on column added.](../images/ctaux6.png) + +![Sort control on the Deleted containers page applied to storage, created-on, and deleted-on columns.](../images/sorting-on-deleted.png) + +![Filter panel on the Deleted containers page with options for application, publisher, ownership type, principal owner, owner count, created date, and deleted date.](../images/filter-on-delete.png) + +## Restore a deleted container + +Restore a container when deletion was accidental or the app still needs the content. + +1. Open **Deleted containers**. +1. Select the container. +1. Select **Restore**. +1. Wait for the background operation to complete. +1. Confirm the container appears on **Active containers**. +1. Ask the app owner to validate the app experience. + +![Restore link on the Deleted containers page for a selected container.](../images/ctaux10.png) + +## Permanently delete a container + +Permanently delete a container only when recovery is no longer required and retention policies allow deletion. + +1. Open **Deleted containers**. +1. Select the container. +1. Select **Permanently delete**. +1. Review the confirmation warning. +1. Confirm the action only if the organization no longer needs the content. + +After permanent deletion, the container is removed from the deleted container collection and cannot be restored. + +![Permanently delete action enabled on the Deleted containers page for a selected container.](../images/ctaux12.png) + +> [!CAUTION] +> Permanent deletion is irreversible. +> Confirm retention, legal hold, and app owner requirements before proceeding. + +## When to use PowerShell instead + +Use PowerShell when you need automation or repeatable reporting. +For example, use PowerShell to enumerate applications, list containers for an owning application, sort containers by storage, set sensitivity labels, delete containers, restore deleted containers, or permanently delete deleted containers. + +Continue with [Manage containers with PowerShell](manage-containers-powershell.md). + +## Related content + +- [Admin overview](admin-overview.md) +- [Manage containers with PowerShell](manage-containers-powershell.md) +- [Monitor usage, billing, and cost](monitor-usage-billing-cost.md) +- [Apply security and compliance controls](apply-security-compliance-controls.md) + +## Next steps +Automate container management in [Manage containers with PowerShell](manage-containers-powershell.md). diff --git a/docs/embedded/admin/monitor-usage-billing-cost.md b/docs/embedded/admin/monitor-usage-billing-cost.md new file mode 100644 index 0000000000..084166d7da --- /dev/null +++ b/docs/embedded/admin/monitor-usage-billing-cost.md @@ -0,0 +1,188 @@ +--- +title: Monitor Usage, Billing, and Cost +description: Monitor SharePoint Embedded usage and pay-as-you-go costs with billing meters and Azure Cost Management. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan +ms.localizationpriority: high +--- + +# Monitor Usage, Billing, and Cost + +**Applies to:** Billing administrator + + + +Monitor SharePoint Embedded usage and cost after billing is configured. +SharePoint Embedded uses pay-as-you-go billing through an Azure subscription. +Cost is based on usage meters, so administrators should review storage, archived storage, API transactions, and egress regularly. + +Use this article to understand cost drivers, review billing in Azure Cost Management, and establish operational controls. + +> [!IMPORTANT] +> Admin actions taken through the SharePoint admin center or SharePoint PowerShell are not charged as SharePoint Embedded API transactions according to the SharePoint Embedded billing meters. + +## Before you begin + +Confirm these prerequisites. + +- SharePoint Embedded billing is configured for the app or tenant. +- You can access the Azure subscription linked to SharePoint Embedded billing. +- You can open [Azure Cost Management](https://portal.azure.com/#view/Microsoft_Azure_CostManagement/Menu/~/overview/openedBy/AzurePortal). +- You know the app IDs, tenant IDs, or container type IDs used for filtering when available. +- You can review container inventory in the SharePoint admin center or PowerShell. + +For billing setup, see [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). + +## Understand SharePoint Embedded meters + +SharePoint Embedded uses these billing meters. +Both standard billing and pass-through billing container types use the same meters. + +| Meter | Unit concept | Cost driver | +| --- | --- | --- | +| Storage | GB | Files, documents, metadata, versions, recycle bin content, and deleted container collection content. | +| Archived Storage | GB | Data in archived containers, held in a lower-cost cold storage tier. | +| API transactions | Transactions | Microsoft Graph calls made explicitly by the SharePoint Embedded application. | +| Egress | GB | Data downloaded from SharePoint Embedded to a customer's client device, subject to exemptions. | + +For related details, see [SharePoint Embedded Billing Meters](../reference/billing-meters.md). + +## Monitor storage + +Storage consumption includes more than current visible files. +Storage includes files, documents, metadata, versions, recycle bin content, and deleted container collection content. + +Use these actions to manage storage. + +1. Review large containers in the SharePoint admin center. +1. Use PowerShell sorting to find containers by storage. +1. Review deleted containers that still contribute to storage. +1. Confirm whether retention policies require deleted content to remain. +1. Ask app owners to reduce unnecessary versions or obsolete content when appropriate. +1. Monitor storage growth after app releases or migrations. + +To sort containers by storage with PowerShell, see [Manage containers with PowerShell](manage-containers-powershell.md). + +## Monitor API transactions + +Each Microsoft Graph call made explicitly by the SharePoint Embedded application counts as one transaction. +Calls made by internal services to containers are not charged when the application has no control over those calls. + +Nonchargeable transactions include: + +- eDiscovery service queries that search container content for compliance or legal purposes. +- Admin actions taken by SharePoint Embedded Admins or Global Admins through SharePoint admin center or SharePoint PowerShell. + +Use app telemetry from the owning application to correlate app releases, user activity, and transaction growth. +Work with app owners when transaction growth is unexpected. + +## Monitor egress + +Egress refers to data downloaded from SharePoint Embedded to a customer's client device. Some Microsoft service transfers are exempt. + +Exempt transfers include: + +- File downloads from the SharePoint Embedded application server to the customer's Office Desktop client. +- File downloads from the SharePoint Embedded application server to the Web Application Companion (WAC). + +Review app download behavior when egress grows. +Large exports, sync-like patterns, or repeated downloads can increase egress. + +## Open Azure Cost Management + +1. Open the [Azure portal](https://portal.azure.com/). +1. Select **Cost Management + Billing**. +1. If you do not see it, search for **Cost Management + Billing**. +1. Select the subscription linked to SharePoint Embedded billing. +1. Open the subscription overview to review current spending, forecasted costs, and anomalies. + +![Azure portal with Cost Management + Billing selected in the left navigation.](../images/billmanag1.png) + +## Use Cost analysis + +1. In **Cost Management + Billing**, open **Cost analysis**. +1. Select the date range to review. +1. Group or filter by meter when available. +1. Use filters such as app ID, tenant ID, or container type ID when available. +1. Save views that your operations team uses repeatedly. +1. Export data if your organization uses a separate reporting process. + +![Azure Cost analysis view with filters to break down cost by meter, app ID, tenant ID, or container type ID.](../images/billmanag2.png) + +Compare cost trends to app deployment dates and usage campaigns. +If cost increases suddenly, review storage, transaction volume, and egress separately. + +## Download invoices + +Use the **Invoices** area under Billing to view and download billing invoices for the billing period. +Store invoices according to your organization's finance and procurement processes. + +If invoice values do not match expected usage, compare invoice periods with Cost analysis date ranges. + +## Configure budgets and alerts + +Use Azure Cost Management budgets to notify administrators before spend exceeds expected levels. + +1. In **Cost Management**, select **Budgets**. +1. Create a budget for the linked subscription or billing scope. +1. Set the amount and time period. +1. Configure alerts for warning and critical thresholds. +1. Include app owners and billing owners in notifications. + +![Azure Cost Management Budgets page for creating a budget and alerts on the linked subscription.](../images/billmanag3.png) + +> [!TIP] +> Create separate review views for storage-heavy apps and transaction-heavy apps. +> Different owners may need to respond to different cost drivers. + +## Review app and container inventory + +Billing review should include operational inventory. + +1. In the SharePoint admin center, review **SharePoint Embedded** > **Apps**. +1. Confirm billing status for installed apps. +1. Review **Active containers** for high-storage containers. +1. Review **Deleted containers** for deleted content that may still contribute to storage. +1. Use PowerShell for repeatable exports. + +For container management, see [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md). + +## Common cost questions + +Use these checks during cost review. + +- Which app generated the most consumption? +- Which meter increased since the last review? +- Did storage grow because of active content, versions, recycle bin content, or deleted containers? +- Did transaction volume increase after a feature release? +- Did egress increase after a new download workflow? +- Are budgets and alerts configured for the billing subscription? +- Are app owners aware of their cost drivers? + +## Operational guidance + +Establish a recurring review process. + +- Review cost weekly during pilot or migration. +- Review cost monthly after steady state. +- Track app IDs and container type IDs in an admin inventory. +- Notify app owners before large lifecycle cleanup. +- Coordinate deleted container cleanup with retention and legal requirements. +- Include SharePoint Embedded in Azure subscription budget reviews. +- Validate billing status after subscription or resource group changes. + +## Related content + +- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) +- [Manage containers with PowerShell](manage-containers-powershell.md) +- [Review audit events](review-audit-events.md) +- [SharePoint Embedded Billing Meters](../reference/billing-meters.md) + +## Next steps +Review compliance activity in [Review audit events](review-audit-events.md). diff --git a/docs/embedded/admin/review-audit-events.md b/docs/embedded/admin/review-audit-events.md new file mode 100644 index 0000000000..aab3a7eeca --- /dev/null +++ b/docs/embedded/admin/review-audit-events.md @@ -0,0 +1,216 @@ +--- +title: Review Audit Events +description: Find and interpret SharePoint Embedded audit activity in Microsoft Purview audit. +ms.date: 07/10/2026 +ms.reviewer: dilucesr +ms.localizationpriority: high +--- + +# Review Audit Events + +**Applies to:** Consuming tenant admin — Compliance admin / Security admin / Audit reader + + + +Review SharePoint Embedded audit activity in Microsoft Purview audit when investigating user, admin, file, or container activity. +SharePoint Embedded audit capabilities mirror existing SharePoint audit capabilities, and user and admin operations performed in SharePoint Embedded applications are captured in the organization's unified audit log. + +> [!IMPORTANT] +> Use Microsoft Purview audit as the authoritative investigation surface for audit records. +> Use SharePoint Embedded app and container identifiers to narrow results to embedded content. + +## Before you begin + +Confirm these prerequisites. + +- Audit is available for your Microsoft 365 organization. +- You can access Microsoft Purview audit with the required compliance permissions. +- You know the date range for the investigation. +- You know the SharePoint Embedded application, container, user, or file involved. +- You can obtain container details from the SharePoint admin center or PowerShell when needed. + +For supported SharePoint Embedded compliance capabilities, see [Security and Compliance](apply-security-compliance-controls.md). + +## Understand SharePoint Embedded audit coverage + +Audit capabilities in SharePoint Embedded mirror existing SharePoint audit capabilities. +User and admin operations performed in applications hosted in SharePoint Embedded are captured, recorded, and retained in the unified audit log. + +Audit can help answer questions such as: + +- Who accessed a file? +- Who modified content? +- Who deleted or restored content? +- Which admin changed container settings? +- Which container was involved in an event? +- Which container type was involved in an event? + +Retention and availability depend on your Microsoft Purview audit licensing and configuration. +For audit platform details, see [Auditing solutions in Microsoft Purview](/purview/audit-solutions-overview). + +## Identify SharePoint Embedded fields + +In addition to existing SharePoint file properties, SharePoint Embedded audit events include extra data that helps isolate SharePoint Embedded content. +SharePoint Embedded audit events include these fields: + +| Field | Use it for | +| --- | --- | +| `ContainerInstanceId` | Identify the specific SharePoint Embedded container instance involved in the event. | +| `ContainerTypeId` | Identify the SharePoint Embedded container type involved in the event. | + +Use these fields with app and user context to scope an investigation. +If a result set includes regular SharePoint and SharePoint Embedded activity, filter or inspect these fields to isolate embedded content. + +## SharePoint Embedded audit activities + +To view all SharePoint Embedded audit log activities, see [Audit events](../reference/audit-events.md). + +Container type events include the `ContainerTypeId` property. Unlike container-level file events, they don't include `ContainerInstanceId` because they apply at the type level, not to an individual container instance. + +You can search these events with the [`Search-UnifiedAuditLog`](/powershell/module/exchangepowershell/search-unifiedauditlog) cmdlet. For example: + +```powershell +Search-UnifiedAuditLog -Operations ContainerTypeCreated,ContainerTypeDeleted,ContainerTypeUpdated,ContainerTypeOwnersUpdated -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) +``` + +## Get container context + +Before searching audit, collect the context you have. + +1. Identify the SharePoint Embedded application name. +1. Identify the owning application ID when available. +1. Identify the container name or container ID. +1. Identify the container site URL when available. +1. Identify the users, groups, or app identities involved. +1. Identify the time period. +1. Identify the suspected operation, such as read, update, delete, restore, sharing, or label change. + +Use [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) to inspect container details. +Use [Manage containers with PowerShell](manage-containers-powershell.md) to retrieve container IDs and URLs for repeatable investigations. + +## Search in Microsoft Purview audit + +Use Microsoft Purview audit to search activity. + +1. Open the Microsoft Purview portal. +1. Go to the audit solution. +1. Choose the date and time range. +1. Add users or app identities when known. +1. Add activities that match the investigation. +1. Search SharePoint-related activities when investigating file and container content. +1. Use **SharePoint Embedded Container Type activities** or **SharePoint Embedded Container Type Registration activities** when you know the investigation is about app setup or container type administration. +1. Run the search. +1. Open relevant results. +1. Inspect event details for SharePoint Embedded fields such as `ContainerInstanceId` and `ContainerTypeId`. + +Use the most restrictive filters that still capture the incident. +Then widen the search if results are incomplete. + +> [!TIP] +> Start with a narrow time range and known users. +> Expand to container identifiers or broader SharePoint activity if the first search does not return enough context. + +## Interpret event details + +When reviewing an event, capture the fields needed for the investigation record. + +| Event detail | Why it matters | +| --- | --- | +| Operation or activity | Describes what happened. | +| User or actor | Identifies who performed the action. | +| Timestamp | Places the event on the investigation timeline. | +| Object or file path | Identifies the affected item. | +| Site or container URL | Helps map the item to a container. | +| `ContainerInstanceId` | Links the event to a specific SharePoint Embedded container. | +| `ContainerTypeId` | Links the event to a SharePoint Embedded container type. | +| Client or app context | Helps distinguish user action from app action when available. | + +Export or preserve results according to your compliance investigation process. + +## Common audit scenarios + +Use audit records for common SharePoint Embedded investigations. + +### Content access review + +Search for file access or read activity by user, date range, and container context. +Use `ContainerInstanceId` to confirm the activity occurred in the expected SharePoint Embedded container. + +### Content change review + +Search for create, modify, rename, move, or delete activity. +Review the sequence of operations to identify whether content was changed by a user, app, or admin process. + +### Container lifecycle review + +Search for admin operations related to deletion, restore, or permanent deletion. +Correlate audit records with SharePoint admin center or PowerShell change records. + +### Sensitivity label review + +Search for label-related activity when investigating data classification changes. +Correlate audit records with the container's current sensitivity label and any policy changes in Microsoft Purview. + +### External sharing review + +Search for sharing-related SharePoint activities when investigating access outside the organization. +Also review application-level sharing settings when the app supports external sharing. + +## Correlate with eDiscovery and DLP + +Audit shows activity. +Other Microsoft Purview tools help with content investigation and policy enforcement. + +- Use eDiscovery to search, hold, and export content in SharePoint Embedded containers. +- Use DLP to identify and protect sensitive information. +- Use retention policies to preserve or delete content according to policy. +- Use sensitivity labels to classify and protect containers. + +For broader controls, see [Apply security and compliance controls](apply-security-compliance-controls.md). + +## Troubleshoot missing audit results + +Use these checks when expected results are missing. + +- Confirm the date range includes the activity time. +- Confirm the correct user or app identity was searched. +- Confirm audit is available for the tenant and workload. +- Confirm the operation maps to SharePoint or file activity in Purview audit. +- Confirm the content is in a SharePoint Embedded container and not another storage location. +- Search with fewer filters, then inspect `ContainerInstanceId` and `ContainerTypeId`. +- Confirm your account has permissions to search audit records. +- Review Purview audit documentation for retention and search latency. + +> [!NOTE] +> Audit records can take time to appear. +> If an event is recent, retry after the normal audit ingestion delay for your environment. + +## Preserve investigation context + +For each investigation, record: + +1. Search date. +1. Search filters. +1. Exported result location. +1. Container identifiers. +1. App identifiers. +1. Users or app identities reviewed. +1. Actions taken after review. + +Keep records according to your compliance and legal process. + +## Related content + +- [Apply security and compliance controls](apply-security-compliance-controls.md) +- [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) +- [Manage containers with PowerShell](manage-containers-powershell.md) +- [Security and Compliance](apply-security-compliance-controls.md) +- [Auditing solutions in Microsoft Purview](/purview/audit-solutions-overview) + +## Next steps +Apply broader controls in [Apply security and compliance controls](apply-security-compliance-controls.md). diff --git a/docs/embedded/admin/setup-billing-m365-admin-center.md b/docs/embedded/admin/setup-billing-m365-admin-center.md new file mode 100644 index 0000000000..6c22bc01b2 --- /dev/null +++ b/docs/embedded/admin/setup-billing-m365-admin-center.md @@ -0,0 +1,198 @@ +--- +title: Set Up Billing in Microsoft 365 Admin Center +description: Configure SharePoint Embedded pass-through billing in the Microsoft 365 admin center for a consuming tenant. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan +ms.localizationpriority: high +--- + +# Set Up Billing in Microsoft 365 Admin Center + +**Applies to:** Consuming tenant admin — Billing admin / Global admin + + + +Set up SharePoint Embedded billing in the Microsoft 365 admin center when your tenant uses an app with pass-through or user organization billing. +No user can access a pass-through SharePoint Embedded app before valid billing is configured for the SharePoint Embedded platform in the consuming tenant. + +> [!IMPORTANT] +> Only a Global Administrator can set up SharePoint Embedded billing in the Microsoft 365 admin center. The SharePoint Embedded Administrator role can't configure billing. + +SharePoint Embedded billing is pay-as-you-go through Azure. +Charges are based on supported meters such as storage, archived storage, API transactions, and egress. + +> [!IMPORTANT] +> If SharePoint Embedded is turned off or the linked Azure subscription is disconnected, users can no longer create new containers. Existing containers and their content remain accessible. + +## Before you begin + +Confirm these prerequisites. + +- You can sign in to the [Microsoft 365 admin center](https://admin.microsoft.com/). +- You have the Global Administrator role. Only a Global Administrator can set up billing in the Microsoft 365 admin center. +- You have owner or contributor permissions on the Azure subscription used for billing. +- You have an Azure subscription in the tenant. +- You have a resource group attached to the subscription. +- The SharePoint Embedded app is installed or ready to use in the consuming tenant. +- You understand whether the app uses pass-through billing. + +For tenant role context, see [Admin overview](admin-overview.md). +For billing models, see [Choose a Billing Model](../plan/choose-billing-model.md). + +## Understand billing models + +SharePoint Embedded supports two billing models. + +| Billing model | Who pays | +| --- | --- | +| Standard | The tenant that owns or develops the app is billed for consumption. | +| Pass-through | The tenant registered to use the app is billed for consumption. | + +> [!NOTE] +> A container type's billing model is set when the container type is created and cannot be changed later. To switch billing models, the developer creates a new container type with the wanted model. + +The following diagram shows standard billing, where consumption charges are billed to the tenant that owns or develops the app. + +![Standard billing model, where the developer or owning tenant is billed for all consumption.](../images/1bill521.png) + +The following diagram shows pass-through billing, where consumption charges are billed to the consuming tenant that is registered to use the app. + +![Pass-through billing model, where the consuming tenant is billed for all consumption.](../images/2bill521.png) + +For standard billing, a Global Administrator in the developer tenant sets up billing for the container type. +For pass-through billing, a Global Administrator in the consuming tenant sets up billing in the Microsoft 365 admin center. + +This article focuses on the consuming tenant pass-through path. + +## Understand cost meters + +SharePoint Embedded uses a consumption-based model. +SharePoint Embedded uses four primary meters. + +| Meter | What it measures | +| --- | --- | +| Storage | Data stored in files, documents, metadata, versions, recycle bin, and deleted container collection, in active and archived states. | +| Archived Storage | Storage consumed by archived containers. Archiving moves data to the cold storage tier, which costs less than active storage. | +| API transactions | Microsoft Graph calls made explicitly by the SharePoint Embedded application. | +| Egress | Data that exits SharePoint Embedded, such as documents downloaded to customer client devices or data transferred to customer-operated servers, subject to documented exemptions. | + +For cost monitoring, see [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). + +## Open the billing setup experience + +1. Sign in to the [Microsoft 365 admin center](https://admin.microsoft.com/). +1. Select **Setup**. +1. In **Files and Content**, select **Automate Content with Microsoft Syntex**. +1. Select **Go to Syntex settings**. +1. Under **Syntex services for**, select **Apps**. +1. Select **SharePoint Embedded**. +1. Follow the instructions on the **SharePoint Embedded** panel to turn on SharePoint Embedded apps. + +The Microsoft 365 admin center **Files and Content** section provides the entry point. Select **Automate Content with Microsoft Syntex** to open Syntex settings. + +![Microsoft 365 admin center Files and Content section with the Automate Content with Microsoft Syntex option.](../images/DTCBilling1.png) + +In Syntex settings, under **Apps**, select **SharePoint Embedded** to open the panel that turns on SharePoint Embedded apps for the tenant. + +![Syntex settings Apps view with SharePoint Embedded selected to configure billing.](../images/DTCBilling2.png) + +Use this Microsoft 365 admin center path for consuming tenant billing setup. + +> [!NOTE] +> The admin center user interface can change. +> If labels differ, search the Microsoft 365 admin center for Syntex or SharePoint Embedded billing settings. + +## Select the billing profile + +During setup, connect SharePoint Embedded billing to the appropriate Azure billing resources. + +1. Select the Azure subscription approved for SharePoint Embedded usage. +1. Select or confirm the resource group. +1. Review the billing scope. +1. Confirm that the subscription is active. +1. Confirm that you have the required permissions. +1. Save the configuration. + +Use the same internal controls you use for other pay-as-you-go Microsoft 365 connected services. + +## Validate billing setup + +After setup, validate that billing is active. + +1. Return to the Microsoft 365 admin center SharePoint Embedded settings. +1. Confirm that SharePoint Embedded apps are turned on. +1. Confirm that the billing subscription remains connected. +1. Open the SharePoint admin center. +1. Go to **SharePoint Embedded** > **Apps**. +1. Confirm that the installed app does not show a billing issue. +1. Ask the app owner or a pilot user to validate app access. + +If the app remains inactive, review the app billing model and the selected billing resources. + +## Validate in Azure Cost Management + +Use Azure Cost Management to confirm usage and prepare monitoring. + +1. Open the [Azure portal](https://portal.azure.com/). +1. Go to **Cost Management + Billing**. +1. Select the subscription linked to SharePoint Embedded billing. +1. Open **Cost analysis**. +1. Filter or group costs using available dimensions such as meter, resource, app ID, tenant ID, or container type ID when available. +1. Save views or exports according to your operations process. + +For detailed monitoring steps, see [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). + +## Common issues + +Use these checks when setup fails. + +- The admin does not have the Global Administrator role required to set up billing. +- The admin lacks owner or contributor permissions on the Azure subscription. +- The subscription is disabled or unavailable. +- No resource group is available for billing setup. +- The app uses pass-through billing but the consuming tenant has not turned on SharePoint Embedded apps. +- The app uses owner organization billing, so the app owner must resolve billing instead. +- Tenant policies restrict access to the Microsoft 365 admin center billing experience. + +## Common access symptoms + +Users may report access failures when billing is not valid. +Look for these symptoms. + +- The SharePoint Embedded app is installed but inactive. +- Users cannot create new containers or store new content. +- The SharePoint admin center shows billing warnings for the app. +- Azure Cost Management shows no linked usage because setup has not completed. +- New container creation stops immediately after SharePoint Embedded is turned off or the subscription is disconnected, although existing containers remain accessible. + +> [!WARNING] +> Do not disconnect the linked Azure subscription during business hours unless you intend to block new container creation for SharePoint Embedded apps. Existing containers stay accessible, but users can't create new containers until billing is valid again. + +## Operational guidance + +After setup, establish a billing operations process. + +- Assign subscription owners who understand SharePoint Embedded usage. +- Create budgets and alerts in Azure Cost Management. +- Review storage growth for large containers. +- Review API transaction patterns after app releases. +- Review egress for download-heavy scenarios. +- Keep app owners informed when billing anomalies appear. +- Include SharePoint Embedded in tenant cost reviews. + +## Related content + +- [Grant admin consent and permissions](grant-admin-consent-permissions.md) +- [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) +- [Monitor usage, billing, and cost](monitor-usage-billing-cost.md) +- [Choose a Billing Model](../plan/choose-billing-model.md) +- [SharePoint Embedded Billing Meters](../reference/billing-meters.md) +- [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) + +## Next steps +Manage containers in [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md). diff --git a/docs/embedded/administration/adminrole.md b/docs/embedded/administration/adminrole.md deleted file mode 100644 index 39ec3fc773..0000000000 --- a/docs/embedded/administration/adminrole.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: SharePoint Embedded administrator -description: This article explains the new admin role for SharePoint Embedded. -ms.date: 05/21/2024 -ms.localizationpriority: high ---- - -# The SharePoint Embedded administrator - -The SharePoint Embedded administrator is a dedicated role to manage SharePoint Embedded containers through [SharePoint PowerShell](/powershell/module/sharepoint-online/connect-sposervice) and SharePoint admin center. This role is required for [developer admins](./developer-admin/dev-admin.md) to create new container types through PowerShell cmdlets and also for consuming tenant admins to manage containers created in their tenants. - -The global administrator role already has all the permissions of the SharePoint Embedded administrator role. A global administrator can assign a user the SharePoint Embedded administrator role to act as a consuming tenant admin or a developer administrator for SharePoint Embedded. - -The SharePoint Embedded administrator role is available in Microsoft Entra and Microsoft 365 Admin Center. This role doesn't have access to site management. This means that a SharePoint Embedded administrator can't see 'Active sites' and 'Deleted sites' pages on the SharePoint Admin Center and also can't run site specific PowerShell cmdlets. - -## SharePoint Embedded administrator tasks in the developer tenant - -The following are some of the container-specific commands actions currently supported on PowerShell: - -- Creation of container types - - Creation of a Standard container type with standard billing - - Creation of a Standard container type with direct to customer billing - - Creation of a Trial container type - -- Container type management - - Viewing of container types in the developer tenant - - Editing properties of a container type in the developer tenant - - Configuration properties of a container type in the developer tenant - - Manage billing of applications/ container types for standard billing - -## SharePoint Embedded administrator tasks in consuming tenant - -The following are some of the container-specific commands actions currently supported on PowerShell: - -- Application administration - - Get details of all SharePoint Embedded applications in the tenant - - Get detail of a specific application in the tenant - - Get the permissions of owning applications in the tenant - - Configure External sharing setting of a container of an application in tenant - -- Container administration - - Get details of all containers of an application in the tenant - - Get details of all containers of an application in the tenant sorted by storage - - Get details of all archived containers of an application in the tenant - - Get details of a specific container of an application in the tenant - - Set Sensitivity label of a specific container of an application in the tenant - - Soft delete a container of an application in the tenant - - Get details of all soft deleted containers in the tenant - - Restore a soft deleted container of an application in the tenant - - Permanently delete a soft deleted container of an application in the tenant - -The following are some of the actions currently supported on SharePoint Admin Center: - -- View Active container page -- View Archived container page -- View Deleted container page -- View the detailed information of a container -- Archive an active container -- Reactivate an archived container -- Soft delete a container -- Restore a deleted container -- Purge a deleted container - -## Assigning the SharePoint Embedded administrator Role - -The Global admin can assign the SharePoint Embedded Admin role to users through both Entra and Microsoft admin center. - -### Through Entra - -Follow the following steps to assign the role of SharePoint Embedded administrator on Entra: - -1. Sign into Entra as a Global admin -1. Select the **“Users”** tab on the left-hand panel and select **“All users”** -1. Select the user to assign the role of SharePoint Embedded administrator under **“All users”** -1. Select the **“Assigned role”** tab on the left panel -1. Select on **“Add assignments”** button and search for **“SharePoint Embedded”** in the panel that opens -1. Select the 'SharePoint Embedded administrator' option and select on **“Add”** -1. The selected user is assigned the role of SharePoint Embedded administrator - -### Through Microsoft 365 Admin Center - -1. Sign into Microsoft 365 Admin Center as a Global admin -1. Select **“Users”** and select **“Active users”** under it -1. Select the user to assign the role of SharePoint Embedded administrator -1. Select on **“Manage roles”** option under Roles -1. Select **“Admin center access”** and under **“Collaboration”**, select **“SharePoint Embedded administrator”** -1. Select **"Save changes"**. Now the selected user is assigned the role of SharePoint Embedded administrator diff --git a/docs/embedded/administration/billing/billing.md b/docs/embedded/administration/billing/billing.md deleted file mode 100644 index bed44b63f0..0000000000 --- a/docs/embedded/administration/billing/billing.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Pay-as-you-go billing for SharePoint Embedded -description: This article explains the billing models and how to set up pay-as-you-go billing. -ms.date: 08/13/2025 -ms.localizationpriority: high ---- - -# SharePoint Embedded billing models - -SharePoint Embedded is a consumption-based, pay-as-you-go (PAYG) offering, meaning you pay only for what you use. SharePoint Embedded provides two billing models that the tenant developing the SharePoint Embedded application can select when creating their container type, tailoring it to their unique business requirements. The two billing models are Standard and Passthrough billing. - -> [!NOTE] -> Once a container type is created, its billing model can't be changed. To change the billing model, a new container type must be created with the desired billing model. - -## Standard billing - -With the standard billing model, all consumption-based charges are directly billed to the tenant who owns or develops the application. After creating the container type, the admin in the developer tenant must establish a valid billing profile before the container type can be used. This billing profile will be used to charge for all consumption incurred by any consuming tenant that uses the SharePoint Embedded application associated with this container type. To set up the billing profile for a standard container type, see [set the billing profile](../../getting-started/containertypes.md#set-the-billing-profile). - -![Standard billing](../../images/1bill521.png) - -## Passthrough billing - -With passthrough billing, consumption-based charges are billed directly to the consuming tenant registered to use the SharePoint Embedded application. Admins in the developer tenant don't need to set up a billing profile for a passthrough SharePoint Embedded container type. Once the container type is registered in the consuming tenant, the consuming tenant admin (SharePoint Admin or Global Admin) needs to set up the billing profile in the consuming tenant to use the SharePoint Embedded application. - -![PassThrough billing](../../images/2bill521.png) - -## Create a SharePoint Embedded container type - -For information on how to create a container type with billing enabled, see [creating a container type](../../getting-started/containertypes.md#creating-container-types). - -## View & edit billing properties of standard container type - -You can view the properties of a container type using the **fileStorageContainerType** APIs: - -- [List container types](/graph/api/filestorage-list-containertypes) -- [Get container type](/graph/api/filestoragecontainertype-get) - -To update the billing properties on a container type with standard billing, see [set the billing profile](../../getting-started/containertypes.md#set-the-billing-profile). - -## Set up billing for passthrough container types in consuming tenant - -To set up billing for a passthrough container type in the consuming tenant, see the [setup guide in the consuming tenant Admin Center](../consuming-tenant-admin/cta.md#set-up-billing-for-passthrough-container-type). - -## SharePoint Embedded meters - -To learn more about the supported pay-as-you-go meters, refer to the [SharePoint Embedded meters](meters.md) article. diff --git a/docs/embedded/administration/billing/billingmanagement.md b/docs/embedded/administration/billing/billingmanagement.md deleted file mode 100644 index b2e03cac54..0000000000 --- a/docs/embedded/administration/billing/billingmanagement.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: SharePoint Embedded Billing Management -description: This article describes how to view SharePoint Embedded application consumption in Azure portal. -ms.date: 05/21/2024 -ms.localizationpriority: high ---- - -# SharePoint Embedded Billing Management - -The Microsoft Cost Management portal provides a comprehensive overview of your costs, allowing you to track and analyze your spending for SharePoint Embedded application. This guide walks you through the steps to view your billing details and SharePoint Embedded consumption in the Microsoft Cost Management portal. - -## Step-by-Step Guide - -### Sign in to Azure portal - -1. Open your web browser and navigate to the [Azure portal](https://portal.azure.com/). -1. Sign in using your Azure account credentials. - -### Navigate to Cost Management + Billing - -1. Once signed in, locate the left-hand navigation menu. -1. Select on "Cost Management + Billing". If it's not visible, you can search for it using the search bar at the top of the portal. - - ![Cost Management](../../images/billmanag1.png) - -### Select Your Subscription - -1. In the Cost Management + Billing section, you see a list of your subscriptions. -1. Select the subscription for which you want to view the billing details. - -### View Billing Overview - -1. After selecting your subscription, you'll be taken to the Overview page. -1. Here, you can see a summary of your costs, including current spending, forecasted costs, and any spending anomalies. - -### Access Cost Analysis - -1. For a more detailed view, select "Cost analysis" under the Cost Management section. -1. In the Cost Analysis page, you can customize the date range to view costs for specific periods. -1. Use the filters to break down costs by tags - app ID, tenant ID or container type ID. Filters can also set by Meters, Resources etc. Refer to the [SharePoint Embedded meters](meters.md) article to learn more about the pay-as-you-go meters supported. - -![Meters](../../images/billmanag2.png) - -### Download Invoices - -1. To download invoices, go to the "Invoices" section under Billing. -1. Here, you can view and download your billing invoices for any billing period. - -### Set Up Budgets and Alerts - -1. To better manage your spending, you can set up budgets and alerts. -1. Select "Budgets" under the Cost Management section. - - ![Budgets](../../images/billmanag3.png) - -1. Create a new budget by specifying the amount and the time period. -1. Set up alerts to notify you when spending approaches or exceeds your budget. diff --git a/docs/embedded/administration/billing/meters.md b/docs/embedded/administration/billing/meters.md deleted file mode 100644 index 703f510fe6..0000000000 --- a/docs/embedded/administration/billing/meters.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: SharePoint Embedded Billing Meters -description: This article describes the meters in SharePoint Embedded. -ms.date: 01/20/2026 -ms.localizationpriority: high ---- - -# SharePoint Embedded billing meters - -SharePoint Embedded employs a pay-as-you-go (PAYG) billing model through an Azure subscription. Billing is determined by how much data in GB you store in SharePoint Embedded in active and archived states, transactions used to access and modify the container and container contents, and data that is egressed from the SharePoint Embedded platform. Each of these factors contributes to the overall cost, ensuring that you only pay for the resources and services you use. You can view this usage and billing details in the [Azure Cost Management](https://ms.portal.azure.com/). Both Standard Billing container type and Pass-through Billing container type will use the same meters. - -SharePoint Embedded has four billing meters as shown. Refer to the [product page](https://adoption.microsoft.com/en-us/sharepoint/embedded/) for pricing details. - -## Storage - -Storage consumption meters in SharePoint Embedded apply to the storage used by files and documents along with their metadata and versions. Storage consumption also includes all content in the recycle bin and deleted container collection within SharePoint Embedded. - -## Archived Storage - -Archived Storage meters in SharePoint Embedded measure the storage consumed by archived containers within a tenant. By archiving containers, data is moved to the cold storage tier, which offers lower storage costs compared to active storage. - -## API Transactions - -Each Microsoft Graph call made explicitly by the SharePoint Embedded application is counted as one transaction, and customers are billed based on the transaction count. See the [examples](/graph/api/resources/filestoragecontainer) of Microsoft Graph calls that can be made by a SharePoint Embedded application. - -However, calls made by internal services to the containers, which the application has no control over, are **not** charged. Some examples of such nonchargeable transactions include: - -1. Queries performed by the eDiscovery service to search through container content for compliance or legal purposes. -1. Admin actions taken by the SharePoint Embedded Admin or Global Admin on containers through SharePoint Admin Center or SPO PowerShell. - -## Egress - -Egress refers to the data that exits the SharePoint Embedded platform. For example, this can refer to a document downloaded into the customer's client device, such as a desktop or mobile device, or data transferred to a server operated by the customer. Egress charges are based on the total volume of data transferred out of SharePoint Embedded, measured in gigabytes (GB). - -However, certain types of data transfers are exempt from egress charges. These exemptions ensure that customers aren't billed for data transfers occurring within integrated Microsoft services, promoting seamless usage without extra costs for these specific internal operations. Some examples of these exemptions include: - -1. File downloads from the SharePoint Embedded application server to the customer's Office Desktop client aren't charged. -1. File downloads from the SharePoint Embedded application server to the Web Application Companion (WAC) aren't charged. - -## Pay-as-you-go message (private preview) - -SharePoint Embedded agents use the Copilot Studio meter for $0.01/message (messages are the unit that measures agent usage). Each interaction with the SharePoint Embedded agent will use twelve (12) messages (2 messages for the generative answer feature and 10 messages for the tenant graph grounding feature), so customers are billed at $0.12 per interaction with SharePoint Embedded agents. diff --git a/docs/embedded/administration/consuming-tenant-admin/ctaUX.md b/docs/embedded/administration/consuming-tenant-admin/ctaUX.md deleted file mode 100644 index 653a58708f..0000000000 --- a/docs/embedded/administration/consuming-tenant-admin/ctaUX.md +++ /dev/null @@ -1,286 +0,0 @@ ---- -title: Manage containers in SharePoint Admin Center -description: This article describes how administrators can manage containers in the SharePoint Admin Center (SPAC). -ms.date: 07/09/2025 -ms.localizationpriority: high ---- -# Manage SharePoint Embedded containers in SharePoint Admin Center - -The organizations that use the SharePoint Embedded applications on their Microsoft 365 tenants are the consuming tenants and the persona that's responsible for managing these applications on their Microsoft 365 tenancy is the consuming tenant administrator (CTA). Consuming tenant administrators can manage containers through a graphical user interface (GUI) using the [SharePoint Administrator Center](https://go.microsoft.com/fwlink/?linkid=2185219). - -To manage SharePoint Embedded containers, the CTA needs to be assigned the SharePoint Embedded Administrator role. - -For information on the SharePoint Embedded Administrator role, see [SharePoint Embedded Admin](../adminrole.md). - -The following actions are supported in SharePoint Admin Center: - -1. View active containers in the tenant -2. View archived containers in the tenant -1. View deleted containers in the tenant -1. View detailed information about a container -1. Archive an active container -1. Reactivate an archived container -1. Delete an active or archived container -1. Restore a deleted container -1. Permanently deleted a container -1. Sort active containers in the tenant -1. Filter active containers in the tenant -1. Set sensitivity label on active containers -1. Add users to different roles on a container -1. Reassign users from existing roles on a container -1. Remove users from existing roles on a container - -![Active Containers global admin](../../images/ctaux1.png) - -**SharePoint Embedded Administrator** will only see the "Active containers" and "Deleted containers" page when they sign in to SharePoint Admin Center. - -![Active Containers SPE admin](../../images/ctaux2.png) - -## Active Containers - -The Active Containers page displays all the active containers within the tenant, providing a comprehensive overview and management capabilities. This page includes the following metadata for each container: - -1. **Container name:** Name of the container provided by the container owner. -1. **Application name:** Name of the SharePoint Embedded application the container belongs to. -1. **Publisher:** The name of the organization that owns the application. For all publishers other than Microsoft, the value is currently stored as "Other" -1. **Ownership type:** Mentions whether the container is tenant-owned, user-owned, or group-owned. -1. **Principal owner:** The user whose lifecycle impacts the lifecycle of the container. There's no principal owner for a tenant owned container, while it's a user for a user-owned container and a group for a group owned containers. -1. **Storage:** The total storage of the files stored in the containers. -1. **Owners:** Users assigned the owner role on the container. -1. **Owner count:** The count of number of owners of the container. -1. **Sensitivity label:** Name of the label assigned to the container. -1. **Created on:** Date and time when the container was created. - -![Active Container Properties](../../images/ctaux3.png) - -### View details of a container - -The detailed container view provides a deeper dive into container-specific metadata, organized under two tabs: - -1. **General:** This panel displays all the general metadata about a container, usage, and configuration settings. - - ![Container Details](../../images/ctaux4.png) - -1. **Membership:** This panel shows the user permissions for different users associated with the container. The admin can manage the membership on a container through this panel. - -> [!IMPORTANT] -> The SharePoint Embedded platform supports four distinct [roles](../../development/sharing-and-perm.md): Owner, Manager, Writer, and Reader. The SharePoint Embedded application on your tenant may not use all four roles and might refer to these roles using different names. - -![SharePoint Embedded Membership Roles](../../images/ctaux5.png) - -## Archived Containers - -The Archived containers page lists all containers in the tenant's archived container collection. It lists the following metadata: - -1. Container name -1. Application name -1. Publisher -1. Status -1. Time archived -1. Archived by -1. Storage (GB) -1. Ownership type -1. Principal owner - -![Archived Containers](../../images/archived-containers-page.png) - -## Archive a container - -A container can be archived when it’s no longer actively used but must be retained for legal, compliance, or business purposes. From the Active containers page, the CTA can select a container and choose Archive option to start the archival process. - -![Active Containers Archive action](../../images/active-containers-archive-action.png) - -This opens the side panel that educates admin about the implication of archival action and ways of getting back the archived content. The CTA can at this stage either cancel the panel and go back to the active containers page or proceed further with the archival by clicking on “Archive”. - -![Archive Containers Confirmation Panel](../../images/archive-container-confirmation-panel.png) - -The selected container is successfully archived and moved into the Archived containers page. - -![Container Archival confirmed](../../images/container-archived-confirmation.png) - -## Reactivate Archived Containers - -Archived containers aren’t accessible to users or applications until they’re reactivated. The time required to reactivate a container depends on how long it has been archived. Containers archived within the last seven days are in the Recently archived state. After this period, containers transition to the Fully archived state. - -### Reactivate Recently Archived Containers - -From the Archived containers page, the CTA can select a Recently archived container and choose Reactivate option to start the reactivation process. - -![Reactivate Recently Archived Container](../../images/reactivate-recently-archived-container.png) - -This opens a side panel that informs admin about the reactivation time. The CTA can at this stage either cancel the panel and go back to the Archived containers page or proceed further with the reactivation by clicking on “Reactivate”. - -![Reactivate Recently Archived Container Confirmation](../../images/reactivate-recently-archived-container-confirmation.png) - -The selected container is successfully reactivated and moved into the Active containers page. - -![Container Reactivated Confirmation](../../images/container-reactivated-confirmation.png) - -### Reactivate Fully Archived Containers - -From the Archived containers page, the CTA can select a Fully archived container and choose Reactivate option to start the reactivation process. - -![Reactivate Fully Archived Container](../../images/reactivate-fully-archived-container.png) - -This opens a side panel that informs admin about the reactivation time of __24 hours__. The CTA can at this stage either cancel the panel and go back to the Archived containers page or proceed further with the reactivation by clicking on “Reactivate”. - -![Reactivate Fully Archived Container Confirmation](../../images/reactivate-fully-archived-container-confirmation.png) - -Reactivation request gets submitted for the selected container and it's displayed on the Archived containers page in the "Reactivating" state. Once the reactivation completes after 24 hours, the container is moved to the Active containers page. - -![Reactivation Request Submission](../../images/reactivation-request-submission.png) - -## Deleted Containers - -The deleted containers page lists all containers in the tenant's deleted container collection. It lists the following metadata: - -1. Container name -1. Application name -1. Publisher -1. Ownership type -1. Principal owner -1. Storage -1. Owners -1. Sensitivity label -1. Created on -1. **Deleted on**: Date and time when the container was deleted. - -![Container Deletion](../../images/ctaux6.png) - -## Delete a container - -> [!WARNING] -> Deleting a container may cause unexpected issues for the SharePoint Embedded application it belongs to and may interrupt the application's usage. This action should only be performed by admins when necessary. - -Deleting a container can have implications on the functionality of a SharePoint Embedded app Here are some examples of the potential issues that an application can encounter when deleting a container. - -1. **Data Loss:** Deleting a container removes all its content. If the SharePoint Embedded application relies on the data stored within the deleted container, the app might no longer function as expected or might lose access to critical information. -1. **Broken Links:** If the SharePoint Embedded application contains links or references to the deleted container, those links become broken, leading to errors or malfunctioning features within the app. - -A container can be deleted from the Active containers page for any business reason by the CTA. By default, the delete button is deactivated. On selecting a container, the delete button is activated. The CTA can then select the delete button. - -![Container Deletion Process](../../images/ctaux7.png) - -This opens a side panel that warns the user about the effect on the associated SPE application due to the deletion of a container and informs the user about the restoration policy. The CTA can at this stage either cancel the panel and go back to the active containers page or proceed further with the deleting by clicking on “Delete container”. - -![Container deletion selection](../../images/ctaux8.png) - -The selected container is successfully deleted and moved into the deleted containers page. - -![Deleted SPE Container](../../images/ctaux9.png) - -**Deleted containers are permanently purged after 93 days unless there is a retention policy applied to the containers.** - -Archived containers page also provides the same delete experience for selecting archived containers and deleting. - -## Restore a container - -A container in the deleted container collection can be restored on the Deleted containers page by selecting the corresponding containers by selecting the "Restore" link - -![Restore Button SPE Container](../../images/ctaux10.png) - -Restoration of the container happens in the background and the status of the same is displayed on the top-right corner of the page. Upon successful restoration, the container will be available in the Active Containers page. If the container was in archived state at the time of deletion, then the container will be restored back to archived state. - -![Restored SPE Container](../../images/ctaux11.png) - -## Permanently delete a container - -> [!WARNING] -> Deleting a container may cause unexpected issues for the SharePoint Embedded application it belongs to and may interrupt the application's usage. This action should only be done by admins when necessary. - -The CTA can permanently delete a deleted container from the deleted container collection if they decide to. - -The CTA selects the container to be permanently deleted. The “Permanently delete” button is enabled. - -![Permanent SPE Container deletion](../../images/ctaux12.png) - -Upon selecting the button, a pop-up appears. warning the CTA on the action they're performing. If sure, the CTA can proceed and select “Delete”. Otherwise, the CTA can cancel the action. - -![Container Deletion warning](../../images/ctaux13.png) - -Upon selecting Delete, the container is permanently deleted, and the status of the same appears in the top-right corner of the page. Upon successful deletion, the container is permanently removed from the deleted container collection and can't be restored. - -![SPE Container Deleted](../../images/ctaux15-n.png) - -## Sorting on Active containers page - -The CTA can perform their compliance and storage management tasks better by using sorting capabilities on the Active containers page. Currently, sorting is supported on the following columns: - -1. Storage -1. Created on - -![ SPE Container Sorting](../../images/sorting.png) - -## Filtering on Active containers page - -The CTA can perform their compliance and storage management tasks better by using filtering capabilities on the Active containers page. Currently, filtering is supported on the following columns: - -1. Application name: The filter provides the list of all Microsoft SharePoint Embedded applications along with all SharePoint Embedded applications published by other publishers that is registered in the tenant. -1. Publisher: Describes whether the application is Microsoft-owned or published by an "Other" publisher. -1. Ownership type: The filter provides the options of Tenant, User, and Group, irrespective of the type of containers present in the tenant. -1. Principal owner: The filtering experience is a people picker experience. -1. Owner count: This filter provides a range of owner count for the administrator to choose from. -1. Created on: This filter provides a range of dates for the administrator to choose from. - -> [!IMPORTANT] -> The behavior of the filtering experience on the Active containers page differs from the experience on the Active sites page in SharePoint Admin Center. - -![ SPE Container Filtering](../../images/filter.png) - -## Searching on Active Containers Page - -The search bar on the Active Containers Page can be used to search containers in the active state by their "container name". -![SPE Container Search](../../images/search.png) - -## Editing the sensitivity label of a container on the Active containers page - -The sensitivity label of a container can be set on the Active container page, on the detailed panel of a container. Under the settings panel, the administrator can set the sensitivity label from a list of available sensitivity label. - -![SPE Container Sensitivity](../../images/sensitivity-label.png) - -## Managing user membership of a container - -The administrator can manage the membership of users of a container on the Active container page, on the detailed panel of a container. Under the membership panel, the administrator can view the four roles and the corresponding users in each role. The administrator can: - -**Add a user to a role:** The administrator can navigate to the desired role using the left panel and select on the Add option. This opens up a picker, using which the administrator can select a user from the tenant and assign the role. In case the selected user is already assigned to a different role, the role is displayed when the role is selected and the operation changes from Add to Reassign. - -![SPE Container owner-one](../../images/add-owners-one.png) - -![SPE Container owner-two](../../images/add-owners-two.png) - -**Reassign user to another role:** The administrator can navigate to the desired user under a role using the left panel. On selecting the user, the Reassign option appears. On selecting the option, a drop-down menu appears and the administrator can select the role to which the user needs to be reassigned to. - -![ SPE Container reassign](../../images/reassign-user.png) - -**Remove user from a role:** The administrator can navigate to the desired user under a role using the left panel. On selecting the user, the Remove option appears. On selecting the option, a pop-up screen appears, and the administrator can confirm the removal of the user from the role. - -![SPE Container remove](../../images/remove-user.png) - -## Sorting on the Deleted Containers Page - -Similar to the sorting experience on the Active containers page, the CTA can use sorting capabilities on the Deleted containers page. Currently, sorting is supported on the following columns: - -1. Storage -1. Created on -1. Deleted on - -![ SPE Container Sorting_on_Delete](../../images/sorting-on-deleted.png) - -## Filtering on the Deleted containers page - -The CTA can perform their compliance and storage management tasks better by using filtering capabilities on the Deleted containers page, on the following columns: - -1. **Application name**: The filter provides the list of all Microsoft SharePoint Embedded applications along with all SharePoint Embedded applications published by other publishers that is registered in the tenant. -1. **Publisher**: Describes whether the application is Microsoft-owned or published by an "Other" publisher. -1. **Ownership type**: The filter provides the options of Tenant, User, and Group, irrespective of the type of containers present in the tenant. -1. **Principal owner**: The filtering experience is a people picker experience. -1. **Owner count**: This filter provides a range of owner counts for the administrator to choose from. -1. **Created on**: This filter provides a range of dates for the administrator to choose from. -1. **Deleted on**: This filter provides a range of dates for the administrator to choose from. - -![ SPE Container Filter_on_Delete](../../images/filter-on-delete.png) - -## Upcoming features - -1. Search on the Deleted containers page -1. Sorting and filtering on the Sensitivity Label column diff --git a/docs/embedded/administration/consuming-tenant-admin/ctapowershell.md b/docs/embedded/administration/consuming-tenant-admin/ctapowershell.md deleted file mode 100644 index cb5c40f860..0000000000 --- a/docs/embedded/administration/consuming-tenant-admin/ctapowershell.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: Consuming Tenant Admin PowerShell -description: This article describes how an admin can manage containers through SPO PowerShell. -ms.date: 03/03/2025 -ms.localizationpriority: high ---- - -# SharePoint Embedded container management in PowerShell - -The consuming tenant administrator can manage containers using PowerShell commands, designed for container management. To access these commands, they must be assigned the role of Microsoft 365 SharePoint Embedded Administrator. Global Administrators in Microsoft 365 can assign users the SharePoint Embedded Administrator role. The Global Administrator role inherently includes all permissions of the SharePoint Embedded Administrator role. The SharePoint Embedded Administrator role is available in both Microsoft Entra and the Microsoft 365 Admin Center. - -For more information on assigning the SharePoint Embedded admin role, see the [SharePoint Embedded Administrator](../adminrole.md). - -The following are some of the container-specific command actions currently supported on PowerShell: - -### Application administration - -- Get the details of all SharePoint Embedded applications registered in the tenant -- Get the details of all SharePoint Embedded applications in the tenant sorted by storage -- Get the details of a specific SharePoint Embedded application in the tenant -- Get details of all archived containers of a particular SharePoint Embedded application in the tenant -- Get the permissions of the owning applications in the tenant -- Configure the External sharing setting of a container of a SharePoint Embedded application in the tenant - -### Container administration - -- Get details of all containers of a particular SharePoint Embedded application in the tenant -- Get details of a specific container -- Set the Sensitivity label of a specific container -- Soft delete a container -- Get details of all soft deleted containers -- Restore a soft deleted container -- Permanently delete a soft deleted container - -## Administration through SharePoint PowerShell - -Consuming tenant admin can manage SharePoint Embedded applications with PowerShell commands using [SharePoint Online Management Shell](/powershell/sharepoint/sharepoint-online/connect-sharepoint-online). - -To get started using PowerShell to manage SharePoint Embedded, you have to install the [SharePoint Online Management Shell](https://www.microsoft.com/download/details.aspx?id=35588) and [connect to SharePoint Online](/powershell/module/sharepoint-online/connect-sposervice). - -> [!IMPORTANT] -> You must use the latest version of SharePoint PowerShell to use container administration cmdlets. - - -## Application Administration - -With PowerShell cmdlets, tenant admin can get a list of SharePoint Embedded applications registered in their Microsoft 365 tenancy. They can also view all the applications that have "read" and/or "write" access and the level of access to these SharePoint Embedded applications. - -The following commands can be used to manage SharePoint Embedded applications registered on your Microsoft 365 tenants: - -```powershell -Get-SPOApplication -``` - -```powershell -Get-SPOApplication -OwningApplicationId -``` - -For more information, see [Get-SPOApplication cmdlet](/powershell/module/sharepoint-online/get-spoapplication). - -### View guest application permissions - -Admins can view the guest application permissions for any SharePoint Embedded application within their tenant using this command: - -```powershell -Get-SPOApplication -OwningApplicationId -ApplicationId -``` - -`OwningApplicationId` is the ID of the SharePoint Embedded application and ApplicationId is the guest application ID that has access to the SharePoint Embedded application. Application Administration cmdlets don't apply to Microsoft Loop. For more information, see [Get-SPOApplication cmdlet](/powershell/module/sharepoint-online/get-spoapplication). - -### Set sharing capability of applications - -Consuming tenant admins can set the sharing capability at an application level to determine whether files of the containers of the application be shared with external guests or not. - -```powershell -Set-SPOApplication -OwningApplicationId – SharingCapability - OverrideTenantSharingCapability <$ OverrideTenantSharingCapability > -``` - -`SharingCapability` can take the following values: `Disabled`; `ExistingExternalUserSharingOnly`; `ExternalUserSharingOnly`; ExternalUserAndGuestSharing - -`$OverrideTenantSharingCapability` can take the following values: `$true`; `$false` - -## Container Administration - -### View Containers - -Admins can get a list of all the containers for a SharePoint Embedded application using the following commands. This command lists all the active containers within the application: - -```powershell -Get-SPOContainer -OwningApplicationId | FT -``` - -The `OwningApplicationId` is the ID of the SharePoint Embedded application. For more information about using this command, see [Get-SPOContainer cmdlet](/powershell/module/sharepoint-online/get-spocontainer). - -Similarly, this command lists all the archived containers within the application with Id OwningApplicationId: - -```powershell -Get-SPOContainer -OwningApplicationId -ArchiveStatus Archived | FT -``` - -> [!NOTE] -> To enumerate Microsoft Loop containers, use Owning App ID: **a187e399-0c36-4b98-8f04-1edc167a0996** for all the cmdlets of container administration. - -### View containers sorted by storage -Consuming tenant admins can also get a list of all the containers of a SharePoint Embedded application sorted by storage using the following commands. - -```powershell -Get-SPOContainer -OwningApplicationId -SortByStorage | FT -``` - -`` can be `Ascending` or `Descending`. - -### View details of a Container - -Consuming tenant admins can get the details of a container within an application using the following command. This command returns more details of a container including StorageUsed, Ownership details, SiteURL, Label information, Owners count, etc. - -Consuming tenant admins can use the following command: - -```powershell -Get-SPOContainer -Identity -Get-SPOContainer -Identity -``` - -Here, the `containerId` is the ID of the container & `siteURL` is the URL of the SharePoint site that is associated with the container. - -### Sensitivity Label of a container - -Consuming tenant admins can set the sensitivity label of a container of an application using the following: - -```powershell -Set-SPOContainer -Identity -SensitivityLabel -``` - -Consuming tenant admins can remove the sensitivity label of a container of an application using the following: - -```powershell -Set-SPOContainer -Identity -RemoveLabel -``` - -The `ContainerId` is the ID of the container whose sensitivity label is being set. - -### Delete containers - -Deleting a container can have implications on the functionality of a SharePoint Embedded app, Here are some examples of the potential issues that an application can encounter when deleting a container. - -- Data Loss: Deleting a container removes all its content. If the SharePoint Embedded application relies on the data stored within the deleted container, the app might no longer function as expected or might lose access to critical information. -- Broken Links: If the SharePoint Embedded application contains links or references to the deleted container, those links become broken, leading to errors or malfunctioning features within the app. -- Permissions Issues: Deleting a container can affect permissions settings. If the SharePoint Embedded app relies on specific permissions granted to the deleted container, it might encounter permission issues and fail to function properly. - -Therefore, it's essential to carefully consider the consequences of deleting a container and ensure that appropriate measures are taken to mitigate any potential issues. - -### Permanent deletion - -When admins delete a Container, it goes into the Recycle Bin. A deleted container can be restored from the Recycle Bin within 93 days. If a container is deleted from the Recycle Bin, or it exceeds the 93-day retention period, it's permanently deleted. Deleting a container deletes everything within it, including all documents and files. - -Admins should notify the Container owners before they delete a Container so they can move their data to another location, and also inform users when the Container is deleted. - -> [!WARNING] -> Deleting a container may cause unexpected issues for the SharePoint Embedded application the Container belongs to and may interrupt usage of the application. - -```powershell -Remove-SPOContainer -Identity -``` - -The `ContainerId` is the ID of the container that is moved to the deleted container collection. For more information about using this command, see [Remove-SPOContainer cmdlet](/powershell/module/sharepoint-online/remove-spocontainer). - -### View deleted containers - -Admins can get a list of deleted containers on the deleted container collection using the following command. For more information about using this command, see [Get-SPODeletedContainer](/powershell/module/sharepoint-online/get-spodeletedcontainer). - -```powershell -Get-SPODeletedContainer -``` - -### Restore deleted containers - -Admins can restore a deleted container from the deleted container collection using the following command. For more information about using this command, see [Restore-SPODeletedContainer cmdlet](/powershell/module/sharepoint-online/get-spodeletedcontainer). - -```powershell -Restore-SPODeletedContainer -Identity -``` -If the container was in archived state at the time of deletion, it gets restored to archived state again. - -### Permanently delete containers - -Admins can permanently delete a container from the deleted container collection if the container has no further retention policies applied to it. For more information about using this command, see [Remove-SPODeletedContainer cmdlet](/powershell/module/sharepoint-online/remove-spodeletedcontainer). - -```powershell -Remove-SPODeletedContainer -Identity -``` - -### Guest application permission management - -If permitted, Admins can add, edit, and remove guest application access to SharePoint Embedded applications. A guest application is defined as any application within the enterprise applications of the owning tenant. For more information about using this command, see [Set-SPOApplicationPermission](/powershell/module/sharepoint-online/set-spoapplicationpermission). - -```powershell -Set-SPOApplicationPermission - [[-OwningApplicationId] ] - [[-ApplicationId] ] - [[-PermissionAppOnly] ] - [[-PermissionDelegated] ] -``` - -## Security and Compliance Administration - -SharePoint Embedded uses Microsoft’s comprehensive compliance and data governance solutions to help organizations manage risks, protect, and govern sensitive data, and respond to regulatory requirements. Security and compliance solutions work similarly in the SharePoint Embedded platform as they do today in the Microsoft 365 platform so that data is stored in a secure, protected way that meets customers’ business and compliance policies while making it easy for Compliance and SharePoint Administrators to enforce critical security and compliance policies on the content. For information on supported security and compliance capabilities, see [Security and Compliance](../../compliance/security-and-compliance.md). diff --git a/docs/embedded/administration/developer-admin/dev-admin.md b/docs/embedded/administration/developer-admin/dev-admin.md deleted file mode 100644 index 4969c7c427..0000000000 --- a/docs/embedded/administration/developer-admin/dev-admin.md +++ /dev/null @@ -1,162 +0,0 @@ ---- -title: SharePoint Embedded developer administrator -description: This article describes the role and responsibilities of developer tenant admin in SharePoint Embedded. -ms.date: 11/21/2023 -ms.localizationpriority: high ---- -# SharePoint Embedded Developer Administrator - -## Overview - -Organizations that use SharePoint Embedded for file management are included in the developer ecosystem which developer administrators oversee. These administrators are responsible for managing applications and the container types that have containers, the foundation of an application that needs to store content. Additionally, they can connect billing profiles to their applications. This article describes the management features available to developer administrators. - -## Developer Admin role - -> [!IMPORTANT] -> Global Administrators can assign the SharePoint Embedded Administrator role available in Microsoft 365 Admin Center or Microsoft Entra ID to execute SharePoint Embedded container cmdlets mentioned in this article. -> -> Global Administrators can continue to execute SharePoint Embedded container cmdlets. - -A Microsoft 365 SharePoint Embedded Administrator serves as the developer admin. Global Administrators in Microsoft 365 can assign users the SharePoint Embedded Administrator role. The Global Administrator role already has all the permissions of the SharePoint Embedded Administrator role. The SharePoint Embedded Role is available in Microsoft Entra ID and Microsoft 365 Admin Center. For information on the [SharePoint Embedded Administrator](../adminrole.md) role. - -> [!NOTE] -> The PowerShell cmdlets in this article require the [SharePoint Embedded Administrator](../adminrole.md) or [Global Administrator](/entra/identity/role-based-access-control/permissions-reference#global-administrator) role. The equivalent Microsoft Graph container type endpoints (create, get, update, delete) don't require an administrator role. Any non-guest user in the owning tenant can [create a container type using Microsoft Graph](../../getting-started/containertypes.md#creating-container-types) and is automatically assigned as an [owner](../../development/auth.md#container-type-owner-capabilities). Other SharePoint Embedded Graph operations (for example, container management with `FileStorageContainer.Manage.All`) continue to require an administrator role. - -The following are some of the SharePoint Embedded actions currently supported on PowerShell: - -- Creation of container types - - Creation of a standard container type with standard billing - - Creation of a standard container type with passthrough billing - - Creation of a trial container type -- Container type management - - Viewing of container types in the tenant - - Editing properties of a container type in the tenant - - Configuration properties of a container type in the tenant - - Manage billing of applications/ container types for standard billing - - Removing a container type in the tenant - -### Billing responsibilities of the developer admin - -There are two types of billing models in SharePoint Embedded. To learn more, see [SharePoint Embedded billing](../billing/billing.md). - -#### Standard billing - -The developer admin is responsible for the billing of SharePoint Embedded applications. The developer admin needs to [set the billing profile for the container type](../../getting-started/containertypes.md#set-the-billing-profile) after its creation, provided they have owner or contributor permissions on an Azure subscription. To learn more about how to set up billing, read about [creating container types](../../getting-started/containertypes.md#creating-container-types) and [SharePoint Embedded billing](../billing/billing.md). - -#### Passthrough billing - -In this model, the customer, or the consuming tenant admin, is responsible for billing. For this reason, this billing model is also known as "direct-to-customer billing." To ensure the passthrough billing model is in place, the developer admin must set the `billingClassification` on the container type to `directToCustomer`. To learn more about how to set up passthrough billing in the container type, read about [creating container types](../../getting-started/containertypes.md#creating-container-types). To learn more about how to configure billing for SharePoint Embedded applications with passthrough billing in a consuming tenant, see [setup guide in the consuming tenant Admin Center](../consuming-tenant-admin/cta.md#set-up-billing-for-passthrough-container-type). - -## Administration Tools - -Developer admins are able to manage SharePoint Embedded applications with Microsoft Graph APIs and PowerShell commands using the SharePoint Online Management Shell. - -To get started using the Microsoft Graph APIs for SharePoint Embedded management, see: - -- [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource representing a container type and its related methods -- [fileStorageContainerTypeRegistration](/graph/api/resources/filestoragecontainertyperegistration) resource representing the registration of a container type in a consuming tenant and its related methods - -## PowerShell cmdlets for admin experience - -To get started using PowerShell to manage SharePoint Embedded, you have to install the SharePoint Online Management Shell and connect to SharePoint. - -> [!IMPORTANT] -> You must use the latest version of SharePoint PowerShell to use container type administration cmdlets. - -### Creation of container types - -The developer administrator can create a container type using PowerShell cmdlets. Each container type is associated with an application ID, a one-to-one mapping, and an Azure subscription ID. The developer administrator can also create trial container types that have a validity of 30 days to test out SharePoint Embedded. The following [commands](/powershell/module/sharepoint-online/new-spocontainertype) can be used to create SharePoint Embedded container types on the developer admin’s tenant: - -Standard billing container type: - -```powershell -New-SPOContainerType -ContainerTypeName -OwningApplicationId -Add-SPOContainerTypeBilling -ContainerTypeId -AzureSubscriptionId -ResourceGroup -Region ​ -``` - -Passthrough billing container type: - -```powershell -New-SPOContainerType -IsPassThroughBilling -ContainerTypeName -OwningApplicationId -``` - -Trial container type: - -```powershell -New-SPOContainerType –TrialContainerType -ContainerTypeName -OwningApplicationId -``` - -`OwningApplicationId` is the ID of the SharePoint Embedded application. `AzureSubscriptionId` is the ID of the Azure subscription for billing purposes. - -### Viewing of container types - -The developer administrator can view container types and the corresponding applications created in their tenant using PowerShell commandlets. The following commands can be used to view SharePoint Embedded applications created on the developer admin’s tenant: - -```powershell -Get-SPOContainerType​ -Get-SPOContainerType -ContainerTypeId -``` - -### Manage properties of container types - -The developer administrator can change the properties of container types, both standard and trial. The following commands can be used to change the properties of SharePoint Embedded applications created on the developer admin’s tenant: - -```powershell -Set-SPOContainerType -ContainerTypeId - [-OwningApplicationId ] - [-ContainerTypeName ] - [-WhatIf] [-Confirm] -``` - -### Container type configuration properties - -The developer administrator can change container type configuration settings using PowerShell commandlets. The following container type properties can be set: - -1. Discoverability Disabled: Controls if file items inside the container surface in other Microsoft 365 properties (MRU, etc.). -1. Sharing Restricted: Only manager and owner can share files in the container if restricted sharing is true. -2. Is Archive Enabled: If set to true, the application can support archival of containers. Default value is false. - -The following commands can be used to change the configuration settings of SharePoint Embedded applications created on the developer admin’s tenant: - -```powershell -Set-SPOContainertypeConfiguration -ContainerTypeId < ContainerTypeId > -DiscoverabilityDisabled $value -``` - -For `DiscoverabilityDisabled` `$value` can be set to `$true`; `$false` - -The default value `$true` - ensures all content is hidden. - -```powershell -Set-SPOContainertypeConfiguration -ContainerTypeId < ContainerTypeId > -SharingRestricted $value -``` - -For `SharingRestricted` `$value` can be set to `$true`; `$false` - -```powershell -Set-SPOContainertypeConfiguration -ContainerTypeId < ContainerTypeId > - DiscoverabilityDisabled $value -SharingRestriced $value -``` - -The developer admin can view the container type configuration settings using the following cmdlet: - -```powershell -Get-SPOContainertypeConfiguration -ContainerTypeId < ContainerTypeId > -``` - -## Manage billing profile of container types - -The developer administrator can change the billing profile of container types using PowerShell cmdlets. The following commands can be used to change the properties of SharePoint Embedded applications created on the developer admin’s tenant: - -```powershell -Set-SPOContainerType -ContainerTypeId - [-AzureSubscriptionId ] - [-ResourceGroup ]​[-WhatIf] - [-Confirm] -``` - -For more information about billing, see [Billing](../billing/billing.md). - -## Roles and Permissions - -The user or admin who creates the billing relationship for SharePoint Embedded needs to have owner or contributor permissions on an Azure subscription. - -If you don't have an Azure subscription, follow the steps here to [create a subscription](/azure/cloud-adoption-framework/ready/azure-best-practices/initial-subscriptions). diff --git a/docs/embedded/build/agent-experiences.md b/docs/embedded/build/agent-experiences.md new file mode 100644 index 0000000000..a7b7cb7e66 --- /dev/null +++ b/docs/embedded/build/agent-experiences.md @@ -0,0 +1,26 @@ +--- +title: Add Microsoft 365 Copilot and agent experiences +description: Ground Copilot-style agents in SharePoint Embedded content and expose SharePoint Embedded to Microsoft Foundry. +ms.date: 07/10/2026 +ms.reviewer: pemtaira +ms.localizationpriority: high +--- +# Add Microsoft 365 Copilot and agent experiences +**Applies to:** Developer + +SharePoint Embedded agent experiences let your app answer questions over files stored in SharePoint Embedded containers. The recommended path is to use **Microsoft Foundry Agent Service** with a **SharePoint knowledge source** configured for SharePoint Embedded. For setup steps, see [Set up SharePoint Embedded as a Foundry knowledge source](sharepoint-embedded-knowledge-source.md). + +> [!CAUTION] +> The earlier **SharePoint Embedded agent SDK** (the React `ChatEmbedded` control) was **deprecated in March 2026** and replaced by [Microsoft Foundry Agent Service](/azure/foundry/agents/overview) with a [SharePoint knowledge source (preview)](/azure/search/agentic-knowledge-source-how-to-sharepoint-remote) configured for SharePoint Embedded. Use the Foundry knowledge source for new work. + +## Test user experience +Sign in with a user who has a Microsoft 365 Copilot license when required. Upload supported files to a container, wait for indexing, open the chat, and ask questions the file content can answer. If answers omit expected files, check discoverability, supported file formats, app access, user access, scope selection, and indexing delay. + +## Next steps + +- [Set up SharePoint Embedded as a Foundry knowledge source](sharepoint-embedded-knowledge-source.md) diff --git a/docs/embedded/build/archive-restore-containers.md b/docs/embedded/build/archive-restore-containers.md new file mode 100644 index 0000000000..d0aee7c9ad --- /dev/null +++ b/docs/embedded/build/archive-restore-containers.md @@ -0,0 +1,80 @@ +--- +title: Archive and Restore Containers +description: Archive inactive SharePoint Embedded containers and reactivate them with Microsoft Graph beta APIs. +ms.date: 06/25/2026 +ms.reviewer: jaeccles +ms.localizationpriority: high +--- +# Archive and Restore Containers +**Applies to:** Developer + +Use SharePoint Embedded container archival when a container must be retained but no longer needs to be active accessed or used for collaboration. Archival uses Microsoft 365 Archive, a cold-storage tier that reduces storage cost while keeping the same security, compliance, and search standards. For the Microsoft 365 Archive overview, see [Microsoft 365 Archive](/microsoft-365/archive/archive-overview). + +> [!IMPORTANT] +> Microsoft 365 Archive is in Preview for SharePoint Embedded. Validate tenant availability, billing, and API behavior before you expose archive actions to users. + +## Enable archival on a container type +Archival must be enabled on the container type. Use SharePoint Embedded admin PowerShell for an existing container type. + +```powershell +Set-SPOContainerTypeConfiguration -ContainerTypeId -IsArchiveEnabled $true +``` + +Enable archival when you create a new container type by passing `-IsArchiveEnabled $true`. + +```powershell +New-SPOContainerType -ContainerTypeName -OwningApplicationId -IsArchiveEnabled $true +``` + +Only show archive commands in your app after the owning application and consuming tenant are configured for the container type. + +## Archive a container +Call the Microsoft Graph beta archive action for the target container. + +```http +POST https://graph.microsoft.com/beta/storage/fileStorage/containers/{containerId}/archive +``` + +The caller must have the `Owner` or `PrincipalOwner` role on the container. Global Administrators and SharePoint Embedded Administrators can act on all containers. The app must also have write permission on the container. + +An archived container is inaccessible until it is reactivated. Stop uploads, background processors, webhook-dependent workflows, and interactive edits before submitting the archive request. + +## Get archived containers +Read one archived container with the normal container get operation. + +```http +GET https://graph.microsoft.com/beta/storage/fileStorage/containers/{containerId} +``` + +List archived containers for a container type by filtering for containers that have archival details. + +```http +GET https://graph.microsoft.com/beta/storage/fileStorage/containers?$filter=containerTypeId eq {containerTypeId} and archivalDetails ne null +``` + +Use this list for lifecycle views, admin reports, or reactivation flows. Make the archived state visible in your UI so users understand why files cannot be opened. + +## Reactivate a container +Call the Microsoft Graph beta unarchive action to reactivate an archived container. + +```http +POST https://graph.microsoft.com/beta/storage/fileStorage/containers/{containerId}/unarchive +``` + +Reactivation is instantaneous during the first seven days after archival. After seven days, reactivation can take up to 24 hours. Keep the container read and write actions disabled until the service reports that the container is active again. + +## Design lifecycle controls +Require explicit user intent before archive and unarchive requests. Record the container ID, actor, timestamp, and Graph request correlation data in your application logs. Do not treat archive as deletion; retention, eDiscovery, audit, and compliance requirements still apply to archived data. + +If a lifecycle operation fails, check the caller role, app write permission, container type archival setting, and whether the target container is already in the requested state. + +## Next steps + +- [Upload, download, and manage files](manage-files.md) +- [Respond to file and container changes with webhooks](respond-to-changes-webhooks.md) +- [Manage containers with PowerShell](../admin/manage-containers-powershell.md) diff --git a/docs/embedded/build/configure-authentication-authorization.md b/docs/embedded/build/configure-authentication-authorization.md new file mode 100644 index 0000000000..074dbb3a8d --- /dev/null +++ b/docs/embedded/build/configure-authentication-authorization.md @@ -0,0 +1,172 @@ +--- +title: Configure Authentication and Authorization +description: Configure Microsoft Entra ID authentication and SharePoint Embedded authorization for your application. +ms.date: 07/10/2026 +ms.reviewer: cindylay +ms.localizationpriority: high +--- +# Configure Authentication and Authorization +**Applies to:** Developer + +Configure authentication and authorization before your SharePoint Embedded application calls Microsoft Graph or SharePoint Embedded APIs. +Complete [Register application permissions](register-application-permissions.md) first so the container type is registered in the consuming tenant. + +## Understand the access model +SharePoint Embedded uses two permission layers. +Microsoft Graph permissions allow the app to call SharePoint Embedded endpoints. +Container type application permissions allow the app to access containers of a specific container type. +Both layers are required. +> [!IMPORTANT] +> Microsoft Graph consent alone doesn't grant access to containers. The app must also be granted permission to the container type. + +## Configure the Microsoft Entra ID app +Start with a Microsoft Entra ID app registration. +Configure it for your application type: +1. Register or identify the owning application. +1. Add redirect URIs for development and production clients. +1. Add credentials for app-only flows when needed. +1. Add Microsoft Graph permissions for SharePoint Embedded access. +1. Add the Microsoft Graph permission required for registration scenarios. +1. Ask an administrator to grant consent where required. +For general steps, see [Register an application with the Microsoft identity platform](/graph/auth-register-app-v2). + +## Request Microsoft Graph permissions +SharePoint Embedded operations through Microsoft Graph require `FileStorageContainer.Selected`. +Use delegated `FileStorageContainer.Selected` for access on behalf of a user. +Use application `FileStorageContainer.Selected` for app-only access. +Both forms require admin consent in the consuming tenant. +For administrative capabilities on behalf of an administrator user — such as enumerating, deleting, restoring, purging, and updating containers and managing their permissions across all governable container types in the consuming tenant — request `FileStorageContainer.Manage.All`. +> [!NOTE] +> The combination of Microsoft Graph permissions and container type application permissions determines what the application can actually do. + +## Request the permission for registration +Container type registration uses the Microsoft Graph container type registration API (currently in preview). +For registration, request the `FileStorageContainerTypeReg.Selected` Microsoft Graph permission (delegated or app-only). +| Scope name | Type | Use | +|---|---|---| +| `FileStorageContainerTypeReg.Selected` | Delegated or Application | Enables container type registration on a consuming tenant. | +For delegated registration calls, the signed-in user must have the SharePoint Embedded Administrator or Global Administrator role. +Use this permission with [Register application permissions](register-application-permissions.md). + +## Prefer delegated access when possible +Use access on behalf of a user whenever possible. +Delegated access improves security, accountability, auditability, and alignment with the user's container membership. +When using delegated access, effective permissions are the intersection of application permissions and user container permissions. +The user must be a member of the container. +Use a confidential client application to keep your app in control of actions taken on behalf of a user. A public client application can expose user tokens to the end user, which can lead to actions taken outside your app's control. For more information, see [Public client and confidential client applications](/entra/identity-platform/msal-client-applications). + +## Configure delegated token acquisition +For delegated calls: +1. Sign in the user with Microsoft identity platform. +1. Request delegated `FileStorageContainer.Selected`. +1. Ensure admin consent is granted in the consuming tenant. +1. Acquire an access token for Microsoft Graph. +1. Call Microsoft Graph SharePoint Embedded endpoints. +1. Verify the user is a member of the target container. +If the user isn't a container member, the app can't access that container on the user's behalf. + +## Configure app-only token acquisition +Use app-only access for service workloads that don't run as a user. +For app-only calls: +1. Configure an application credential, such as a certificate. +1. Request application `FileStorageContainer.Selected`. +1. Have a consuming tenant administrator grant admin consent. +1. Acquire a token using the client credentials flow. +1. Call Microsoft Graph SharePoint Embedded endpoints. +1. Limit container type permissions to the workload's needs. +> [!CAUTION] +> An app-only token can access all containers enabled by its container type application permissions. Use least privilege. + +## Call Microsoft Graph APIs +After token acquisition, call SharePoint Embedded operations through Microsoft Graph. +Useful references include: +- [File storage container resource type](/graph/api/resources/filestoragecontainer) +- [Create fileStorageContainer](/graph/api/filestoragecontainer-post) +- [Microsoft Graph authentication and authorization basics](/graph/auth/auth-concepts) +Continue with [Create and manage containers](create-manage-containers.md) for lifecycle operations. + +## Handle operations not exposed through Graph +Some operations have exceptional access patterns. +These operations use exceptional access patterns: +- Container type management in the owning tenant through the Microsoft Graph container type API (`FileStorageContainerType.Manage.All` delegated permission). +- Container type registration in the consuming tenant through the Microsoft Graph container type registration API (`FileStorageContainerTypeReg.Selected`). +- SharePoint Embedded agent experiences through their own permission requirements. +- **Search**: Microsoft Search on SharePoint Embedded content requires the delegated `Files.Read.All` permission in addition to `FileStorageContainer.Selected`. +- **Operations that require a user license**: [List containers](/graph/api/filestorage-list-containers) returns `403 Forbidden` for a delegated user who doesn't have a OneDrive (app-only calls aren't affected), and users need a Microsoft 365 license to appear in the Office @mentions people picker. +- **Administrative actions on containers**: `FileStorageContainer.Manage.All` requires the signed-in user to be a SharePoint Embedded Administrator or Global Administrator. For a non-admin user it grants nothing — if only `Manage.All` is granted, the app gets access denied; if both `Manage.All` and `FileStorageContainer.Selected` are granted, `Manage.All` is ignored. +> [!IMPORTANT] +> Don't assume every operation uses the same token or permission resource. Check exceptional access patterns before implementing a flow. + +## Grant container type application permissions +The owning application grants container type application permissions through [container type registration](register-application-permissions.md) in a consuming tenant. These permissions determine what an application can do with containers of the container type. +| Permission | Description | +|---|---| +| None | No permissions to any containers or content of this container type. | +| ReadContent | Read the content of containers of this container type. | +| WriteContent | Write content to containers of this container type. Requires ReadContent. | +| Create | Create containers of this container type. | +| Delete | Delete containers of this container type. | +| Read | Read the metadata of containers of this container type. | +| Write | Update the metadata of containers of this container type. | +| EnumeratePermissions | Enumerate the members of a container and their roles. | +| AddPermissions | Add members to a container. | +| UpdatePermissions | Change the roles of existing members. | +| DeletePermissions | Remove other members (but not self) from a container. | +| DeleteOwnPermission | Remove own membership from a container. | +| ManagePermissions | Add, remove (including self), or update members in container roles. | +| ManageContent | Manage container content (WriteContent plus discard checkout in app-only mode). | +| Full | All permissions for containers of this container type. | + +## Manage container type owners +Any Microsoft Entra user that isn't an external identity can be a container type owner. Owners are managed through the [permissions](/graph/api/filestoragecontainertype-post-permissions) navigation property on the [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource. Each entry has the `owner` role and identifies the user through `grantedToV2`. +- **Automatic assignment**: The user who [creates a container type](/graph/api/filestorage-post-containertypes) is automatically assigned as an owner. +- **Add owners**: Use [`POST /containerTypes/{id}/permissions`](/graph/api/filestoragecontainertype-post-permissions) to add up to three owners per container type. +- **Remove owners**: Use [`DELETE /containerTypes/{id}/permissions/{id}`](/graph/api/filestoragecontainertype-delete-permissions) to remove an owner. +- **Read owners**: Use [`GET /containerTypes/{id}?$expand=permissions`](/graph/api/filestoragecontainertype-get) or [`GET /containerTypes/{id}/permissions`](/graph/api/filestoragecontainertype-list-permissions) to retrieve owners. + +SharePoint Embedded Administrators can manage all applications created in the owning tenant and installed in the consuming tenant. Assign the least privileged role necessary; the SharePoint Embedded Administrator role is recommended over Global Administrator for these tasks. +## Understand container permissions +Container permissions apply only to delegated access. An app that accesses containers without a user gets the full access defined by its container type application permissions instead. + +Users get container membership in two ways: +- **Direct membership** — the user is added directly to a container with specific permissions. +- **Transitive membership** — the user belongs to a [Microsoft 365 group](/microsoft-365/admin/create-groups/office-365-groups) that is a member of the container. + +A user must be a member of the container with one of these roles: +| Role | Access summary | +|---|---| +| Reader | Read container properties and content. | +| Writer | Reader access plus create, update, and delete content and update applicable properties. | +| Manager | Writer access plus manage container membership. | +| Owner | Manager access plus delete containers. | +When a user creates a container through delegated calls, that user is automatically assigned the Owner role. + +To share individual items without granting container access, use the [driveItem invite](/graph/api/driveitem-invite) or [permission create](/graph/api/driveitem-post-permissions) endpoints. Sharing an item doesn't grant access to the container or to any other item in it. + +## Validate authentication +Validate the flow before feature code: +1. Confirm admin consent completed successfully. +1. Acquire a delegated token. +1. Acquire an app-only token. +1. Call a simple Graph endpoint that matches the token type. +1. Confirm registration includes the calling app. +1. Confirm user membership for delegated calls. +1. Confirm app-only access is limited by container type permissions. + +## Troubleshoot authorization failures +| Symptom | Check | +|---|---| +| Graph call returns unauthorized | Token is missing, expired, or for the wrong resource. | +| Graph call returns forbidden | Consent, Graph permission, or container type permission is missing. | +| Delegated call fails for one user | User isn't a container member or lacks the needed role. | +| App-only call has too much access | Container type permission is broader than necessary. | +| Registration call fails | Use `FileStorageContainerTypeReg.Selected`; for delegated calls the user needs the SharePoint Embedded Administrator or Global Administrator role. | +| Search call fails | Review search-specific exceptional access patterns. | + +## Next steps +Use your configured flow to [Create and manage containers](create-manage-containers.md). diff --git a/docs/embedded/build/container-metadata.md b/docs/embedded/build/container-metadata.md new file mode 100644 index 0000000000..97de31e681 --- /dev/null +++ b/docs/embedded/build/container-metadata.md @@ -0,0 +1,122 @@ +--- +title: Store and Query Container Metadata +description: Define SharePoint Embedded metadata columns and query drive items by field values. +ms.date: 07/10/2026 +ms.reviewer: cindylay +ms.localizationpriority: high +--- +# Store and Query Container Metadata +**Applies to:** Developer + +Use metadata when your app needs structured fields on files in a SharePoint Embedded container. Metadata is stored as columns on a `fileStorageContainer` and as field values on the container drive's items. Your application is responsible for creating and managing the column schema for each container instance. For the complete list of container resource properties, see [fileStorageContainer resource type](/graph/api/resources/filestoragecontainer). + +## Permissions and supported callers +Call the metadata APIs with an app-only or delegated bearer token. Use `FileStorageContainer.Selected` for application and delegated calls. + +Container owners can create, update, and delete columns. Container members can read and list columns. + +## Choose column types +SharePoint Embedded metadata supports these column type properties : `boolean`, `choice`, `currency`, `dateTime`, `hyperlinkOrPicture`, `number`, `personOrGroup`, and `text`. It also supports column settings such as `indexed`, `isDeletable`, `isSealed`, `name`, `readOnly`, and `type`. + +Column names must follow SharePoint rules. Do not use names that contain `!`, start with a digit or punctuation, contain spaces, look like spreadsheet cell references, represent localized true or false values, or use reserved names such as `Author`, `Created`, or `Description`. + +## Create a column +Create a column on the container before writing field values on files. + +```http +POST https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns +Content-Type: application/json +``` + +```json +{ + "description": "test", + "displayName": "Title", + "enforceUniqueValues": false, + "hidden": false, + "indexed": false, + "name": "Title", + "text": { + "allowMultipleLines": false, + "appendChangesToExistingText": false, + "linesForEditing": 0, + "maxLength": 255 + } +} +``` + +The create request doesn't support `type`, and text `maxLength` must be less than or equal to 255. + +> [!NOTE] +> As of January 2026, the container column APIs (list, create, update, delete columns) are also generally available on the **v1.0** Microsoft Graph endpoint. You can replace `/beta/` with `/v1.0/` in the column requests below. The beta endpoint remains available. + +## Manage columns +Use the column ID returned by the create or list operation. + +```http +GET https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns +GET https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns/{column-id} +PATCH https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns/{column-id} +DELETE https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns/{column-id} +``` + +Patch supported properties when the schema changes. You can update any property of a column except the `id` property. + +```json +{ + "required": true, + "hidden": false, + "description": "This is my new column description" +} +``` + +## Read and write file metadata +Field values are stored on the drive item's list item fields. Read all fields or select the ones your UI needs. + +```http +GET https://graph.microsoft.com/beta/drives/{drive-id}/items/{item-id}/listitem/fields +GET https://graph.microsoft.com/beta/drives/{drive-id}/items/{item-id}/listitem/fields?$select=Name,Color +``` + +Patch field values to update metadata. Use `null` to clear a field value when the column allows empty values. + +```http +PATCH https://graph.microsoft.com/beta/drives/{drive-id}/items/{item-id}/listitem/fields +Content-Type: application/json +``` + +```json +{ + "Color": "Fuchsia", + "Quantity": 934 +} +``` + +```json +{ + "Color": null +} +``` + +## Query files by metadata +Use OData query options on custom columns when you need structured filtering or ordering inside a container drive. + +```http +GET https://graph.microsoft.com/beta/drives/{drive-id}/items?$orderby=listitem/fields/TestField asc&$filter=startswith(listitem/fields/TestField, '3')&$expand=listitem($expand=fields) +``` + +Use `$expand=listitem($expand=fields)` when the result needs field values in the response. Create indexed columns for high-cardinality filters that your app runs frequently. + +For full-text search across containers and custom metadata (using the `OWSTEXT` property suffix), see [Search containers and files](search-containers-files.md). Use OData `$filter` for structured queries inside a single container drive; use search for free-text queries across many containers. + +## Keep schema consistent +Create required columns during container provisioning. Store the expected schema version in your app data, and run migrations when new columns are introduced. Avoid deleting columns until you know no workflows, queries, exports, or search experiences depend on their values. + +## Next steps + +- [Share files and manage permissions](share-files-manage-permissions.md) diff --git a/docs/embedded/build/create-container-type.md b/docs/embedded/build/create-container-type.md new file mode 100644 index 0000000000..f086020ad6 --- /dev/null +++ b/docs/embedded/build/create-container-type.md @@ -0,0 +1,147 @@ +--- +title: Create and configure a container type +description: Create a trial or production SharePoint Embedded container type and configure its owning app and billing model. +ms.date: 07/10/2026 +ms.reviewer: stpuceli +ms.localizationpriority: high +--- +# Create and configure a container type +**Applies to:** Developer + +Create a SharePoint Embedded container type for your application to create containers or store files. A container type defines access, billing accountability, and selected behaviors for containers created by your app. +If you're just starting, complete [Quickstart: Build your first app with VS Code](quickstart-vscode.md). Then use this article for trial, standard, and pass-through decisions. +To decide between single-tenant and multitenant models first, see [Choose an app model](../plan/choose-app-model.md). +## Understand the container type relationship +A container type is strongly coupled with one Microsoft Entra ID application, called the owning application. +SharePoint Embedded requires a one-to-one relationship between one owning application and one container type. +The container type ID is stored on each container as an immutable property. +The ID is used for access authorization, trial exploration, billing, and configurable behaviors. + +> [!NOTE] +> The Microsoft Graph API — [Create fileStorageContainerType](/graph/api/filestorage-post-containertypes) — is delegated-only and can be called by any non-guest owning-tenant user. The caller doesn't need an administrator role and is automatically assigned as an owner of the new container type. +## Choose trial or production +Choose the container type purpose when you create it. +You can't convert a trial container type to production later. +You can't convert a standard billing type to pass-through billing later. +| Use case | Container type | +|---|---| +| Local proof of concept | Trial container type | +| App owner pays | Standard container type with billing profile | +| Customer tenant pays | Standard container type with pass-through billing | +> [!IMPORTANT] +> If you choose the wrong purpose or billing model, you must recreate the container type. +## Prerequisites +Before you create a container type, make sure you have: +- A Microsoft 365 tenant with SharePoint available. +- A Microsoft Entra ID app registration for the owning app. +- A non-guest member account in the owning tenant. +- For standard billing, an Azure subscription and resource group. +- For standard billing setup, owner or contributor permissions on the Azure subscription. + +> [!NOTE] +> Creating a container type through Microsoft Graph requires only the `FileStorageContainerType.Manage.All` delegated permission. Any non-guest user in the owning tenant can create one and is automatically assigned as an [owner of that container type](../plan/authentication-permissions.md#container-type-owners). For tenant-wide administrative operations, see [Create apps with PowerShell](../admin/create-apps-powershell.md). + +> [!NOTE] +> Users who authenticate into containers must exist in Microsoft Entra ID as members or guests. An Office license isn't required to collaborate on Office documents stored in a container, except for documented exceptional experiences such as mentions. + +## Create a trial container type +Use a trial container type for evaluation. +You can create one with the SharePoint Embedded Visual Studio Code extension or Microsoft Graph. +The Visual Studio Code path is fastest for a first app. See [Quickstart: Build your first app with VS Code](quickstart-vscode.md). +For Microsoft Graph, create the container type with the `trial` billing classification. +The following restrictions are applied to trial container types: +- The tenant can have up to five containers of the container type. This includes active containers and those in the recycle bin. +- Each container has up to 200 MB of storage space. +- The container type expires after 30 days, and access to any existing containers of that container type is then removed. +- The developer must permanently delete all containers of an existing container type in trial status to create a new container type for trial. This includes containers in the deleted container collection. +- The container type is restricted to work in the developer tenant. It can't be deployed in other consuming tenants. +## Create a standard container type with app-owner billing +Use standard billing when the developer or app owner tenant pays for consumption. +Each tenant can have up to 25 standard container types at a time. +1. Create or identify the owning Microsoft Entra ID application. +1. Create the container type with the `standard` billing classification. +1. Attach an Azure billing profile with the SharePoint Embedded Visual Studio Code extension or an administrator-managed billing flow. +1. Record the container type ID. +1. Continue to registration in the consuming tenant. +> [!NOTE] +> If billing setup fails with `SubscriptionNotRegistered`, wait several minutes and retry. The `Microsoft.Syntex` resource provider registration can take time. +## Create a pass-through billing container type +Use pass-through billing when the consuming tenant pays for consumption. +1. Create or identify the owning Microsoft Entra ID application. +1. Create the container type with the `directToCustomer` billing classification. +1. Register the container type in the consuming tenant. +1. Have the consuming tenant admin activate pay-as-you-go services. +> [!IMPORTANT] +> The consuming tenant must complete billing setup before a pass-through application can be used successfully. + +The consuming tenant admin activates pay-as-you-go services in the Microsoft 365 admin center. In **Setup** > **Billing and licenses**, select **Activate pay-as-you-go services**. + +![Microsoft 365 admin center Billing and licenses section with the Activate pay-as-you-go services option.](../images/SyntexActivatePAYGSetup.png) + +Under **Syntex services for**, select **Apps**, then select **SharePoint Embedded** to enable billing for the app. + +![Microsoft 365 admin center Apps panel with SharePoint Embedded selected to activate pay-as-you-go billing.](../images/SyntexPAYGActivateSPE.png) +## Configure the owning Entra app +Configure the app so it can own exactly one container type. +Request Microsoft Graph permissions for SharePoint Embedded access. +Request Microsoft Graph `FileStorageContainerTypeReg.Selected` application permission for container type registration on consuming tenants. +Use redirect URIs that match your development and production clients. +Use credentials appropriate for delegated or app-only flows. +For auth details, see [Configure authentication and authorization](configure-authentication-authorization.md). +## Set basic properties +| Property | Guidance | +|---|---| +| Container type name | Use a durable name that maps to your workload. | +| Owning application ID | Use the app registration that owns this type. | +| Application redirect URL | Use the URL where files from this app should redirect. | +| Billing model | Choose trial, standard, or pass-through at creation time. | +> [!CAUTION] +> The container type ID and owning application ID can't be updated later. +## Configure container type behavior +Developers can configure selected behaviors after creation. +Available settings include: +- `ApplicationRedirectUrl` +- `DiscoverabilityDisabled` +- `SharingRestricted` +Use the Microsoft Graph [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) API for supported container type updates. For tenant-wide administrative settings, see [Create apps with PowerShell](../admin/create-apps-powershell.md). + +> [!IMPORTANT] +> Updating settings on a container type can take up to **24 hours** to replicate to all consuming tenants. If a consuming tenant applied setting overrides, those overrides remain in place. Some settings apply only to new content, not to existing content. +## View and update container types +Use Microsoft Graph to list and update container types. +A non-administrator container type owner can update the container types they own. +You need owner or contributor access to billing subscriptions for billing changes. + +### Manage container types with Microsoft Graph + +You can also manage container types with the `fileStorageContainerType` Microsoft Graph APIs. + +| Operation | API | +| --- | --- | +| Create a container type | [Create fileStorageContainerType](/graph/api/filestorage-post-containertypes) | +| List container types | [List fileStorageContainerType](/graph/api/filestorage-list-containertypes) | +| Update a container type | [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) | +| Delete a container type | [Delete fileStorageContainerType](/graph/api/filestorage-delete-containertypes) | + +List results are filtered by ownership. Non-administrator users see only the container types they have a permission on, while SharePoint Embedded Administrators and Global Administrators see every container type in the tenant. For the settings you can configure, see [fileStorageContainerTypeSettings](/graph/api/resources/filestoragecontainertypesettings). + +You can delete only trial container types; deletion of standard container types isn't yet supported. Before you delete a container type, remove every container of that type, including containers in the deleted container collection. +## Understand billing dependency +For app-owner billing, the developer tenant attaches an Azure subscription and resource group. +For pass-through billing, the consuming tenant activates pay-as-you-go services. +For details, see [SharePoint Embedded meters](../reference/billing-meters.md) and [SharePoint Embedded billing management](../admin/monitor-usage-billing-cost.md). +## Link to multitenant onboarding +A multitenant app usually has an owning tenant and one or more consuming tenants. +Use this sequence for each consuming tenant: +1. Create the container type in the owning tenant. +1. Ask the consuming tenant admin to grant admin consent. +1. Register container type application permissions. +1. Configure pass-through billing when the consuming tenant pays. +1. Validate container creation and access. +## Next steps +Register permissions in [Register application permissions](register-application-permissions.md). diff --git a/docs/embedded/build/create-manage-containers.md b/docs/embedded/build/create-manage-containers.md new file mode 100644 index 0000000000..f488f5d7b1 --- /dev/null +++ b/docs/embedded/build/create-manage-containers.md @@ -0,0 +1,138 @@ +--- +title: Create and Manage Containers +description: Create, list, update, recycle, restore, and delete SharePoint Embedded containers in your app. +ms.date: 06/25/2026 +ms.reviewer: jaeccles +ms.localizationpriority: high +--- +# Create and Manage Containers +**Applies to:** Developer + +Create and manage containers after your container type is created, registered, and authorized. Containers are the basic storage unit in SharePoint Embedded. +Complete [Configure authentication and authorization](configure-authentication-authorization.md) before you call container APIs. +## Understand containers +All SharePoint Embedded files and documents are stored in containers. +A container: +- Belongs to a consuming Microsoft 365 tenant. +- Has an immutable container type ID. +- Stores content for your application. +- Defines a boundary for membership and permissions. +- Is accessed through Microsoft Graph. +For the architecture overview, see [SharePoint Embedded app architecture](../plan/app-tenant-architecture.md). +## Know the lifecycle +A typical container lifecycle includes: +1. Create a container. +1. Add or confirm members. +1. Upload and manage files. +1. Read or update container metadata. +1. Recycle a container when it is no longer active. +1. Restore a recycled container when needed. +1. Permanently delete containers during cleanup. +Continue to [Upload, download, and manage files](manage-files.md) for content operations. +## Prerequisites +Before creating containers, make sure: +- The container type exists. +- The container type is registered in the consuming tenant. +- The app has Microsoft Graph `FileStorageContainer.Selected` consent. +- The app has container type permissions for the operation. +- For delegated calls, the signed-in user can receive the needed container role. +- For trial container types, you are within trial limits. +> [!IMPORTANT] +> Trial container types can create up to five containers, including active containers and containers in the recycle bin. +## Choose delegated or app-only creation +Use delegated access when a user initiates creation, the user should be accountable, or the creating user should become container Owner. +Use app-only access when a service provisions containers, no user is present, and the app has permission to create containers. +> [!NOTE] +> A user creating a new container through delegated calls is automatically assigned the Owner role. +## Create a container +Use Microsoft Graph to create a file storage container for your registered container type. +For the canonical API shape, see [Create fileStorageContainer](/graph/api/filestoragecontainer-post). +Implementation steps: +1. Acquire a valid Microsoft Graph token. +1. Include the target container type information required by the API. +1. Send the create request. +1. Store the returned container ID. +1. Store display metadata your app needs. +1. Assign or confirm membership for delegated scenarios. +> [!TIP] +> Store the container ID in your application database as the durable link between your business object and the SharePoint Embedded container. +## Create a container in Visual Studio Code +For trial development, the Visual Studio Code extension can create containers. +1. Open the SharePoint Embedded view. +1. Expand the registered trial container type. +1. Right-click **Containers**. +1. Select **Create container**. +1. Enter a name. +1. Confirm the container appears under the container type. +See [Quickstart: Build your first app with VS Code](quickstart-vscode.md) for the extension flow. +## List containers +List containers to show available containers, validate provisioning, or run maintenance. +For the canonical API shape, see [List containers](/graph/api/filestorage-list-containers?tabs=http). +When listing containers: +- Use app-only access for service inventory scenarios. +- Use delegated access only when the user context is appropriate. +- Handle paging. +- Map results to your application data. +> [!NOTE] +> Delegated list containers currently returns `403 Forbidden` if the user doesn't have a OneDrive. This dependency doesn't apply to app-only list calls. +## Get a container +Get a container when you need the latest metadata before acting. +Use this operation to confirm the container exists, read display properties, verify the container type, check state before file operations, and confirm restoration. +Link implementations to [fileStorageContainer resource type](/graph/api/resources/filestoragecontainer). +## Update container metadata +Update metadata when supported properties change. +Before updating: +1. Confirm the app has container type `Write` permission. +1. Confirm the delegated user has an appropriate role. +1. Read the current container state. +1. Apply only intended changes. +1. Validate the response. +## Delete or recycle a container +Use delete behavior when a container is no longer active. +Before deletion: +- Confirm the caller has permission. +- Confirm your app has archived business references. +- Decide whether the container should be recycled first. +- Explain restore options. + +The Visual Studio Code extension includes recycle and recovery capabilities for trial development. +## Restore a recycled container +A restore flow should: +1. Identify the recycled container. +1. Confirm the caller has permission. +1. Restore the container. +1. Refresh application state. +1. Confirm files and metadata are available. +1. Notify the user. +> [!IMPORTANT] +> For trial container types, containers in the recycle bin still count toward the five-container limit. +## Permanently delete containers +Permanently delete only when you're sure the container is no longer needed. +You must remove all containers of a container type, including deleted containers, before deleting the container type itself. +Use permanent deletion for trial cleanup, test data removal, retiring a container type, or meeting lifecycle requirements. +## Validate lifecycle operations +Create a smoke test: +1. Create a test container. +1. Retrieve it by ID. +1. List containers and confirm it appears. +1. Update a supported metadata value. +1. Upload a small file. +1. Recycle or delete the container. +1. Restore it if supported. +1. Permanently delete it during cleanup. +## Troubleshoot lifecycle issues +| Symptom | Check | +|---|---| +| Create fails | Registration and `Create` permission. | +| Delegated create fails | User consent and role assignment behavior. | +| List fails for delegated user | OneDrive dependency noted in the auth article. | +| Delete fails | `Delete` permission and user Owner role. | +| Trial create fails | Active plus recycled containers may have reached the limit. | +| Container type delete fails | All active and deleted containers must be removed first. | +## Next steps +Add file operations in [Upload, download, and manage files](manage-files.md). diff --git a/docs/embedded/build/fluid-framework.md b/docs/embedded/build/fluid-framework.md new file mode 100644 index 0000000000..b1a81202f5 --- /dev/null +++ b/docs/embedded/build/fluid-framework.md @@ -0,0 +1,64 @@ +--- +title: Add real-time collaboration with Fluid Framework +description: Use Fluid Framework with SharePoint Embedded for synchronized collaborative application state. +ms.date: 07/10/2026 +ms.reviewer: jaeccles +ms.localizationpriority: high +--- +# Add real-time collaboration with Fluid Framework +**Applies to:** Developer + +Use Fluid Framework when your SharePoint Embedded app needs real-time shared state, such as collaborative controls, live counters, cursors, annotations, or multi-user form state. Fluid provides client libraries for distributing, synchronizing, and saving shared data. + +## Prepare SharePoint Embedded +Create or identify a SharePoint Embedded application before you run the Fluid sample. You need admin credentials for a Microsoft 365 tenant, the application client ID, the container type ID, and at least one container created for that container type. + +If you used the SharePoint Embedded Visual Studio Code extension, use the generated sample configuration to find `ContainerTypeId` and `ClientID`. You can also find the client ID in Microsoft Entra ID under **App registrations**. + +To try SharePoint Embedded at no cost, create a trial container type. See [Create and Configure a Container Type](create-container-type.md). + +## Run the item counter sample +The `item-counter-spe` sample lives in the Fluid Examples repository. + +```console +git clone https://github.com/microsoft/FluidExamples.git +cd FluidExamples\item-counter-spe +``` + +Create an empty `.env` file in the sample folder and add the SharePoint Embedded identifiers. + +```text +SPE_CLIENT_ID=YOUR_CLIENTID +SPE_CONTAINER_TYPE_ID=YOUR_CONTAINERTYPE_ID +``` + +Install packages and start the development server. + +```console +npm install +npm run dev +``` + +After Webpack completes, open `https://localhost:8080`, sign in with tenant credentials, and grant admin consent for the app when prompted. Open the same URL in another browser tab or send it to another user in the same tenant. Changes to the item counter synchronize across connected clients. + +![Item Counter sample app running in the browser, showing a shared counter that synchronizes across connected clients.](../images/itemcount.png) + +## Decide what belongs in Fluid +Use Fluid for collaborative application state that benefits from low-latency synchronization. Store durable documents and files in SharePoint Embedded containers. Persist final business output to your own durable model or to SharePoint Embedded files when your scenario needs audit, retention, search, or reporting. + +Treat Fluid shared objects as user-visible collaboration state. Do not place secrets, access tokens, SAS URLs, or privileged Graph responses in shared data structures. + +## Handle identity and access +Your app still needs the SharePoint Embedded client ID and container type ID to acquire the correct tokens and access containers. Test the sample with one tab, two tabs for the same user, and two different users from the tenant. Verify behavior for users who can view the container but should not edit the collaborative state. + +## Move from sample to app design +Use the item counter sample to prove tenant setup, consent, and client connectivity. In your own app, plan reconnect behavior, token refresh, offline transitions, container switching, and cleanup for collaborative sessions that users abandon. + +## Next steps + +- [Set up SharePoint Embedded as a Foundry knowledge source](sharepoint-embedded-knowledge-source.md) diff --git a/docs/embedded/build/manage-files.md b/docs/embedded/build/manage-files.md new file mode 100644 index 0000000000..c21b0abb32 --- /dev/null +++ b/docs/embedded/build/manage-files.md @@ -0,0 +1,129 @@ +--- +title: Upload, Download, and Manage Files +description: Use Microsoft Graph DriveItem APIs to upload, download, organize, update, delete, and restore SharePoint Embedded files. +ms.date: 06/25/2026 +ms.reviewer: cindylay +ms.localizationpriority: high +--- +# Upload, Download, and Manage Files +**Applies to:** Developer + +Use Microsoft Graph file and DriveItem APIs to manage files inside SharePoint Embedded containers. +Complete [Create and manage containers](create-manage-containers.md) first so you have a container ID. +## Understand file storage +A SharePoint Embedded container is the storage boundary for your application content. +Each container exposes file content through Microsoft Graph file storage and DriveItem APIs. +Use your application data model to decide which business object owns each container, which folders your app creates, which users or services can read and write, and which file IDs your app stores. +For architecture, see [SharePoint Embedded app architecture](../plan/app-tenant-architecture.md). +## Use Microsoft Graph file storage APIs +Start with these Microsoft Graph references: +- [fileStorageContainer resource type](/graph/api/resources/filestoragecontainer) +- [DriveItem resource type](/graph/api/resources/driveitem) +- [Microsoft Graph file storage overview](/graph/api/resources/onedrive) +> [!IMPORTANT] +> Use documented Microsoft Graph DriveItem and file storage APIs. Don't invent SharePoint Embedded-specific file API names. +## Prerequisites +Before managing files, make sure: +- Your app can acquire Microsoft Graph tokens. +- The app has `FileStorageContainer.Selected` consent. +- The app has container type permissions for intended operations. +- The target container exists. +- For delegated calls, the user is a member of the container. +- Your app stores the container ID and DriveItem IDs it needs. +## Map container IDs to drives +The preview source notes that the Graph preview endpoint uses a `driveId`, and for SharePoint Embedded the drive ID is the container ID that starts with `b!`. +In your app: +1. Store the container ID returned when the container is created. +1. Use the container ID when calling DriveItem APIs that require a drive identifier. +1. Store item IDs returned by upload or folder creation operations. +1. Avoid reconstructing IDs from URLs. +## Upload files +Use Microsoft Graph upload patterns for DriveItems. +For small files (up to 250 MB), use the simple upload API documented for DriveItems with a single `PUT` to the item's content. +For larger files (over 250 MB), use an upload session as documented by Microsoft Graph and send the file in byte-range chunks (for example, 320 KB multiples) until the upload completes. +In your upload flow: +1. Validate write access. +1. Choose a destination folder in the container. +1. Create folders first if the path doesn't exist. +1. Upload file bytes with the appropriate Graph method. +1. Store the returned DriveItem ID. +1. Display file name, size, and status. +> [!TIP] +> Keep business metadata in your application database, and keep file content in SharePoint Embedded. +## Download files +Use Microsoft Graph DriveItem download capabilities for file content. +In your download flow: +1. Validate read access. +1. Resolve the container ID and DriveItem ID. +1. Request the file content or download URL using DriveItem APIs. +1. Stream the content to the user or service. +1. Handle expiration for short-lived download URLs. +1. Log according to your audit requirements. +## Create folders +Use DriveItem folder creation APIs to organize content. +Create folders for predictable content structure, workflow stages, related uploads, and stable parent items for Office launch URLs. +When creating folders: +1. Check whether the folder exists. +1. Create only the missing path segment. +1. Store the folder DriveItem ID if needed. +1. Apply naming rules consistently. +## Update file content +Use Microsoft Graph DriveItem update or upload session patterns to replace content. +Before replacing content: +- Confirm write permission. +- Read current metadata if concurrency checks are needed. +- Preserve the DriveItem ID where supported. +- Update your app metadata after Graph succeeds. +Office files stored in SharePoint Embedded have versioning enabled automatically for Word, Excel, and PowerPoint files. +See [Open Office files from your app](open-office-files.md) for Office behavior. +## Rename or move items +Use documented DriveItem update and move operations where supported. +A safe flow should read the current DriveItem, confirm the destination folder, apply the operation, refresh stored path or display name, and keep the DriveItem ID as the durable reference when possible. +## Delete files +Use delete operations when a file should no longer appear in the active content experience. +Before deleting: +- Confirm user intent. +- Confirm write or delete permission. +- Decide whether your app needs soft delete. +- Update app state only after Graph returns success. +## Restore files +Use Microsoft Graph and SharePoint file restore capabilities documented for DriveItems and the service experience. +A restore flow should identify the deleted item or version, confirm permission, perform the restore, refresh the item list, and communicate the restored location. + +> [!NOTE] +> [recycleBinItem: restore](/graph/api/filestoragecontainer-restore-recyclebinitem) supports `driveItemId` as an alternate key (October 2025). If you know the ID of the original **driveItem**, you can restore the corresponding **recycleBinItem** directly without first enumerating the recycle bin. +> [!NOTE] +> For exact file operation request and response details, use Microsoft Graph DriveItem documentation. +## Connect to Office and preview experiences +After upload, add richer experiences: +- [Open Office files from your app](open-office-files.md) for Word, Excel, and PowerPoint launch behavior. +- [Preview files in your app](preview-files.md) for browser previews. +- [Search containers and files](../build/search-containers-files.md) for discovery. +## Validate file operations +Create a smoke test: +1. Create a test container. +1. Create a folder. +1. Upload a file. +1. Read returned DriveItem metadata. +1. Download the file. +1. Replace the content. +1. Rename the file. +1. Delete the file. +1. Restore it if supported. +1. Clean up the test container. +## Troubleshoot file operations +| Symptom | Check | +|---|---| +| Upload fails | `WriteContent` permission and user Writer role. | +| Download fails | `ReadContent` permission and user Reader role. | +| Folder create fails | Parent folder ID and write permissions. | +| Preview fails | File type support and preview URL generation. | +| Office launch opens wrong mode | Launch URL `action` parameter or Office URI scheme. | +| Access differs by user | Delegated access intersects app permissions with membership. | +## Next steps +Enable Office launch experiences in [Open Office files from your app](open-office-files.md). diff --git a/docs/embedded/build/migrate-azure-blob-storage.md b/docs/embedded/build/migrate-azure-blob-storage.md new file mode 100644 index 0000000000..399fb81691 --- /dev/null +++ b/docs/embedded/build/migrate-azure-blob-storage.md @@ -0,0 +1,134 @@ +--- +title: Migrate from Azure Blob Storage +description: Move files from Azure Blob Storage into SharePoint Embedded containers with Microsoft Graph. +ms.date: 07/10/2026 +ms.reviewer: stpuceli +ms.localizationpriority: high +--- +# Migrate from Azure Blob Storage +**Applies to:** Developer + +Use this guide when you move content from Azure Blob Storage to SharePoint Embedded. A C# migration app reads blobs with the Azure Storage SDK and uploads them to a SharePoint Embedded container with Microsoft Graph. + +> [!TIP] +> For migrating from SharePoint or OneDrive sources, SharePoint Embedded also provides dedicated [migration APIs](/graph/api/resources/sharepointmigration-api-overview) that are generally available on the **v1.0** Microsoft Graph endpoint (November 2025) and support migrating **file version history** (February 2026). The manual sample in this article is best when copying from Azure Blob Storage specifically. + +## Prepare authentication +For Azure Blob Storage, the sample uses a container-level SAS URL with `Read` and `List` permissions. + +```csharp +_containerClient = new BlobContainerClient(new Uri(_containerLevelSASUrl)); +``` + +For SharePoint Embedded, the sample uses delegated Microsoft Graph scopes `User.Read` and `FileStorageContainer.Selected` with `InteractiveBrowserCredential`. + +```csharp +string[] scopes = { "User.Read", "FileStorageContainer.Selected" }; +InteractiveBrowserCredentialOptions options = new InteractiveBrowserCredentialOptions() +{ + ClientId = clientId, + RedirectUri = new Uri("http://localhost"), +}; +InteractiveBrowserCredential credential = new InteractiveBrowserCredential(options); +_graphClient = new GraphServiceClient(credential, scopes, null); +``` + +Because the sample uses `InteractiveBrowserCredential` with a `http://localhost` redirect URI, the Microsoft Entra ID app registration must include a **Mobile and desktop applications** platform that lists `http://localhost` as a redirect URI. Add this platform in the [Microsoft Entra admin center](https://entra.microsoft.com) under the app registration's **Authentication** page before you run the sample. + +![Screenshot of the Authentication page for a Microsoft Entra ID app registration. A Mobile and desktop applications platform is configured with http://localhost listed as a redirect URI.](../images/app-registration-console-platform.png) + +*Figure 1: Add a Mobile and desktop applications platform with the `http://localhost` redirect URI so the interactive sign-in flow can return the token to the migration app.* + +The consuming tenant must have the application and container type registered. The sample also requires a SharePoint Embedded container ID for the destination. + +## Enumerate source blobs +List blob names from the Azure Blob Storage container before queuing migration work. + +```csharp +var blobs = new List(); +await foreach (var blobItem in _containerClient.GetBlobsAsync()) +{ + blobs.Add(blobItem.Name); +} +return blobs; +``` + +Azure Blob Storage uses a flat namespace. If blob names include `/`, parse those segments into SharePoint Embedded folders or decide to upload all files to the container root. + +## Create destination folders +The sample creates a top-level folder named after the Azure Blob Storage container, then creates nested folders as it traverses each blob name. Check for an existing item before creating a folder. + +```csharp +var item = await _graphClient.Drives[_containerId].Items[parentFolderId].ItemWithPath(itemPath).GetAsync(); +``` + +Create a folder under the destination parent with conflict behavior set to `fail`. + +```csharp +var folder = new DriveItem +{ + Name = folderName, + Folder = new Folder(), + AdditionalData = new Dictionary() + { + { "@microsoft.graph.conflictBehavior", "fail" } + } +}; +var createdFolder = await _graphClient.Drives[_containerId].Items[parentFolderId].Children.PostAsync(folder); +``` + +## Upload files with Graph sessions +Download each blob to a stream, reset the stream position, create an upload session, and upload with `LargeFileUploadTask`. + +```csharp +BlobClient blobClient = _containerClient.GetBlobClient(blobName); +MemoryStream memoryStream = new MemoryStream(); +await blobClient.DownloadToAsync(memoryStream); +memoryStream.Position = 0; +``` + +```csharp +int maxChunkSize = 320 * 1024; +var uploadSessionRequestBody = new CreateUploadSessionPostRequestBody() +{ + AdditionalData = new Dictionary + { + { "@microsoft.graph.conflictBehavior", "fail" } + } +}; + +var uploadSession = await _graphClient.Drives[_containerId] + .Items[parentFolderId] + .ItemWithPath(fileName) + .CreateUploadSession + .PostAsync(uploadSessionRequestBody); + +var fileUploadTask = new LargeFileUploadTask(uploadSession, memoryStream, maxChunkSize, _graphClient.RequestAdapter); +IProgress progress = new Progress(prog => Console.WriteLine($"Uploaded {fileName} {prog} bytes")); +var uploadResult = await fileUploadTask.UploadAsync(progress); +``` + +Use `fail` when duplicate files should not be overwritten. Change the conflict behavior only after you define replacement, rename, and audit rules. + +## Run the sample +The sample uses Microsoft Graph SDK 5.56.0, Azure.Identity 1.12.0, Azure.Storage.Blobs 12.21.0, CommandLineParser 2.9.1, and Newtonsoft.Json 13.0.3. + +```console +dotnet run Program.cs -- --sasurl "" --tenantid "" --clientid "" --containerid "" [ --blobfile "" --outputfile "" ] +``` + +Use the optional blob list file for controlled batches and the optional output file to capture failed blobs for reruns. + +## Validate migrated content +Compare source blob counts with destination drive item counts. Check folder paths, file sizes, upload failures, duplicate handling, and required metadata. Open representative files through your SharePoint Embedded app, then validate search and metadata queries after indexing has had time to complete. + +Do not delete source blobs until business owners approve the migration result and retention requirements are satisfied. + +## Next steps + +- [Prepare your app for customer installation](../publish/prepare-customer-installation.md) diff --git a/docs/embedded/build/open-office-files.md b/docs/embedded/build/open-office-files.md new file mode 100644 index 0000000000..5900183ed2 --- /dev/null +++ b/docs/embedded/build/open-office-files.md @@ -0,0 +1,188 @@ +--- +title: Open Office Files From Your App +description: Launch Word, Excel, and PowerPoint files from SharePoint Embedded in Office web or desktop clients. +ms.date: 07/10/2026 +ms.reviewer: cindylay +ms.localizationpriority: high +--- +# Open Office Files From Your App +**Applies to:** Developer + +Open Office files from your SharePoint Embedded app by using Microsoft Graph DriveItem metadata and Office launch patterns supported by Microsoft 365. +Complete [Upload, download, and manage files](manage-files.md) first so your app has files to launch. + +## Understand Office experiences +SharePoint Embedded Office file experiences work similarly to Microsoft 365 file experiences. +Supported experiences include: +- Opening Office documents in Office for the web. +- Opening Office documents in Office desktop clients. +- Viewing and editing files. +- AutoSave for Word, Excel, and PowerPoint files. +- Version history for Office documents. +- Coauthoring. +- Sharing and shareable links. +- Comments and mentions, with documented limitations. +- Breadcrumbs in Office clients that associate a file with your app. + +> [!NOTE] +> Documents stored in an archived container can't be viewed or accessed. Your app must handle the archived state by showing an appropriate error and guiding users on next steps, such as reactivating the container. + +## Prerequisites +Before launching Office files, make sure: +- The file is stored in a SharePoint Embedded container. +- The app can read DriveItem metadata for the file. +- The user has permission to view or edit the file. +- The file type is supported by the target Office client. +- Your app handles browser redirects or new-window behavior. + +## Get the DriveItem web URL +When your app retrieves a DriveItem from Microsoft Graph, the response can include `webUrl`. +For supported Office file types, `webUrl` can point to a WOPI URL that opens the document in Office for the web. +A supported Office web URL has this shape: +```http +https://host/:w:r/contentstorage/sitecollection/_layouts/15/doc2.aspx?sourcedoc=guid&file=filename.docx&action=default&mobileredirect=true +``` +For request details, see [Get a DriveItem resource](/graph/api/driveitem-get). + +## Launch Office for the web +Use the DriveItem `webUrl` when your app should open Office in the browser. +1. Read the DriveItem for the selected file. +1. Confirm the response includes `webUrl`. +1. Open the URL in a browser tab, window, or app-controlled navigation surface. +1. Preserve app context so users can return after editing. +1. Handle access denied errors by checking file permissions and container membership. +> [!NOTE] +> Office files use AutoSave when users edit Word, Excel, and PowerPoint files stored in SharePoint Embedded. + +## Configure the default launch experience +By default, the WOPI URL can include `action=default`. +To force a mode, update the query parameter with this pattern: +```csharp +System.UriBuilder builder = new System.UriBuilder(webUrl); +System.Collections.Specialized.NameValueCollection queryDictionary = System.Web.HttpUtility.ParseQueryString(builder.Query); +queryDictionary["action"] = "view"; +builder.Query = queryDictionary.ToString(); +string modifiedWebUrl = builder.ToString(); +``` +Use: +- `action=view` for read-only viewing. +- `action=edit` for editing when the user has edit permission. +- `action=default` when Office should choose the default behavior. +For WOPI action details, see [WOPI Discovery - WOPI Actions](/microsoft-365/cloud-storage-partner-program/online/discovery#wopi-actions). +## Open files in Office desktop clients +Use Office URI schemes when your app should open desktop clients directly. +The format is: +```text +:|| +``` +Common values include: +| Segment | Value | +|---|---| +| Scheme name | `ms-word`, `ms-excel`, or `ms-powerpoint` | +| Open File View command | `ofv` | +| Open File Edit command | `ofe` | +| URL descriptor | `u` | +Examples: +```text +ms-word:ofv|u|https://contoso.com/document.docx +ms-powerpoint:ofe|u|https://contoso.com/presentation.pptx +``` +> [!NOTE] +> The URI must be opened in a blank window or new tab. + +## Build a desktop client URL +Because `webUrl` points to Office Online for Office documents, build the desktop URI in two steps: +1. Get the `webUrl` of the parent folder. +1. Append the file name. +Example pattern: +```text +ms-word:ofe|u|{folder.WebUrl}/{item.Name} +``` +Resulting shape: +```text +ms-word:ofe|u|https://contoso.sharepoint.com/contentstorage/CSP_1234765465/Document%20Library/MyDocument.docx +``` +For scheme details, see [Office URI Schemes](/office/client-developer/office-uri-schemes). + +## Configure redirect behavior +Use redirect settings to route users back to your app when Microsoft 365 can't open a file in a supported viewer. + +`ApplicationRedirectUrl` configures the application redirect URL on the container type. Use it for the app route that handles file-return scenarios for your workload. + +The `urlTemplate` setting controls where Microsoft 365 sends users for files without a supported viewer. Supported Office web viewer files, such as Word, Excel, and PowerPoint, open in the Office web viewer. PDF files open in the embedded viewer. Other file types redirect through `urlTemplate` when it is configured. If `urlTemplate` is not configured, Microsoft 365 sends users to a Microsoft help page. + +Set `settings.urlTemplate` with the Microsoft Graph `PATCH /storage/fileStorage/containerTypes/{containerTypeId}` API. Use a valid absolute `https://` URL that doesn't resolve to a loopback address. + +```http +PATCH https://graph.microsoft.com/v1.0/storage/fileStorage/containerTypes/{containerTypeId} +Content-Type: application/json + +{ + "settings": { + "urlTemplate": "https://app.contoso.com/open?t={tenant-id}&d={drive-id}&i={item-id}" + } +} +``` + +Microsoft 365 resolves supported tokens, URL-encodes their values, and substitutes them into the template. Common tokens include `{tenant-id}`, `{drive-id}`, `{folder-id}`, `{item-id}`, `{site-domain}`, `{list-id}`, and `{site-url}`. + +When your app receives a `urlTemplate` redirect, authenticate the user, parse the token values, and use Microsoft Graph to retrieve the file. If you need the canonical file URL, use the DriveItem `webDavUrl` property instead of `webUrl`. + +When you design redirects: + +- Use a stable production URL for your app. +- Use development URLs only for local or trial work. +- Keep Microsoft Entra ID redirect URIs aligned with app routes. +- Validate that users return to the right in-app context after Office actions. +- Avoid URL rewriting that removes required Office query parameters. +- Verify `urlTemplate` after updates because invalid values are stored as `null`. +## Support sharing and coauthoring +Office experiences include collaboration features. +Users can share documents, create shareable links, coauthor in real time, see presence indicators, use comments, and use mentions where supported. + +When a user creates a sharing link, they choose who it grants access to: + +| Sharing scope | Who can use the link | +|---|---| +| **Anyone** | Anyone who receives the link, including people outside your organization, whether you send it directly or it's forwarded. | +| **People in your organization** | Anyone in your organization who has the link, whether sent directly or forwarded. | +| **Specific people** | Only the people you specify. If the invitation is forwarded, only people who already have access can use the link. | +| **People with existing access** | People who already have access to the file or folder. This scope doesn't change existing permissions. | + +> [!NOTE] +> Mentions require target users to have a Microsoft 365 license assigned. Mentions are restricted to people inside the consuming tenant's organization and exclude guests and users from other tenants in multitenant settings. +## Use version history +Versioning is automatically enabled for Word, Excel, and PowerPoint files stored in SharePoint Embedded apps. +Users can see changes, compare versions, restore previous versions, recover from mistakes, and review changes from coauthoring sessions. +## Use breadcrumb properties +Office clients can display breadcrumb-style elements that associate Office files with your application. +Breadcrumb patterns are constructed from container properties configured for your app. +Use Current Channel to get breadcrumb patterns and future Office app enhancements. +For Office update channel information, see [Overview of update channels for Microsoft 365 Apps](/deployoffice/updates/overview-update-channels). +## Validate Office launch +Test each launch path: +1. Upload a Word document to a container. +1. Read the DriveItem and capture `webUrl`. +1. Open `webUrl` with `action=default`. +1. Modify the query string to `action=view`. +1. Modify the query string to `action=edit`. +1. Build an Office URI scheme for desktop launch. +1. Confirm permissions block edit when appropriate. +1. Confirm AutoSave and version history behavior. +1. Confirm the user can return to your app. +## Troubleshoot Office launch +| Symptom | Check | +|---|---| +| URL opens in view instead of edit | `action` parameter and user edit permission. | +| Desktop client doesn't open | Office URI scheme, browser policy, and new-tab behavior. | +| User can't coauthor | File type, permissions, and Office client support. | +| Mentions don't find a user | Microsoft 365 license and tenant membership limitations. | +| Breadcrumb doesn't look right | Container properties and Office update channel. | +| Redirect returns to wrong route | `ApplicationRedirectUrl` and app route handling. | +## Next steps +Add embedded previews in [Preview files in your app](preview-files.md). diff --git a/docs/embedded/build/preview-files.md b/docs/embedded/build/preview-files.md new file mode 100644 index 0000000000..b48828976b --- /dev/null +++ b/docs/embedded/build/preview-files.md @@ -0,0 +1,187 @@ +--- +title: Preview Files in Your App +description: Create Microsoft Graph preview links and embed supported SharePoint Embedded file previews in your app. +ms.date: 07/10/2026 +ms.reviewer: cindylay +ms.localizationpriority: high +--- +# Preview Files in Your App +**Applies to:** Developer + +Add file preview UX so users can inspect SharePoint Embedded content without downloading files or opening a full Office editing experience. +Complete [Open Office files from your app](open-office-files.md) when you need Office editing. Use this article for lightweight previews. +## Understand preview flow +The preview flow has two steps: +1. Call the Microsoft Graph DriveItem preview endpoint. +1. Use the returned URL in an iframe or new browser page. +The Graph endpoint is: +```http +POST https://graph.microsoft.com/{version}/drives/{driveId}/items/{itemId}/preview +``` +Where: +- `{version}` is the Microsoft Graph version, such as `v1.0`. +- `{driveId}` is the container ID that starts with `b!`. +- `{itemId}` is the DriveItem ID. +For the canonical API reference, see [Preview a DriveItem](/graph/api/driveitem-preview). +## Know supported file types +Microsoft 365 supports previews for many file types, including common document, image, video, and PDF formats. +Examples include: +- PDF files. +- JPG and other image files. +- MP4 and other supported media files. +- Office files supported by Microsoft 365 preview experiences. +For the current list, see [File types supported for previewing files in OneDrive, SharePoint, and Teams](https://support.microsoft.com/office/file-types-supported-for-previewing-files-in-onedrive-sharepoint-and-teams-e054cd0f-8ef2-4ccb-937e-26e37419c5e4). +> [!NOTE] +> File type support can vary by service capability, tenant policy, and client experience. Always handle preview failures gracefully. + +## Native PDF viewing +The SharePoint Embedded native PDF viewing experience supports **searching within the file**, **viewing comments and sticky notes** embedded on the file, and **printing** (added March 2026). These capabilities are available through the [driveItem: preview](/graph/api/driveitem-preview) API in **both the beta and v1.0** Microsoft Graph endpoints. + +### Enhance the PDF previewer with query parameters +Enhance the SharePoint Embedded PDF previewer by appending query parameters to the driveItem's `webUrl` property. To get `webUrl`, call the [driveItem GET API](/graph/api/driveitem-get), for example `GET /drives/{drive-id}/items/{item-id}?$select=webUrl`. + +Pass parameters as a JSON-encoded `embed` query string. You can include one or more parameters in the same object. + +```text +?&embed={"":,"":} +``` + +| Parameter | Effect | +|---|---| +| `mpp` | Enables the print icon and Ctrl+P printing. For example, `?&embed={"mpp":true}`. | +| `mpsn` | Shows sticky note content when the PDF contains sticky notes. For example, `?&embed={"mpsn":true}`. | +## Prerequisites +Before creating previews, make sure: +- The file is stored in a SharePoint Embedded container. +- Your app knows the container ID and DriveItem ID. +- Your app can acquire a Microsoft Graph token. +- The caller has permission to read the file. +- The file type is supported for preview. +- Your UI can host an iframe or open a new page. +## Create a preview link +Call the preview endpoint from your service layer. +Use this C# SDK pattern: +```csharp +ItemPreviewInfo preview = await graphServiceClient.Drives[driveId].Items[itemId] + .Preview() + .Request() + .PostAsync(); +``` +The response includes preview URL information: +```json +{ + "getUrl": "https://www.onedrive.com/embed?foo=bar&bar=baz", + "postParameters": "param1=value¶m2=another%20value", + "postUrl": "https://www.onedrive.com/embed_by_post" +} +``` +Use `getUrl` when available. +> [!CAUTION] +> `getUrl` currently contains an encrypted token that can only be used with your application. This behavior may change. +## Remove the preview banner +Add `nb=true` to the obtained URL to remove the banner at the top. +Example: +```http +https://contoso.sharepoint.com/restOfUrl/embed.aspx?param1=value&nb=true +``` +Use this only when it fits your user experience and compliance requirements. +## Embed the preview in an iframe +Create an app page that hosts the preview URL. +Example shape: +```html + + + +

Preview

+

Preview of {file name}:

+ + + +``` +In production, also provide: +- A descriptive iframe title. +- Responsive sizing. +- Loading states. +- Error states. +- A fallback download or open action. +## Load previews dynamically +Don't call Microsoft Graph directly from a browser script if that creates CORS issues or exposes tokens. +Use a server-side endpoint that: +1. Authenticates the user. +1. Validates access to the requested file. +1. Acquires a Graph token. +1. Calls the DriveItem preview endpoint. +1. Returns the preview URL to the client. +Use this server-side pattern: +```csharp +[HttpGet] +[AuthorizeForScopes(Scopes = new string[] { "Files.Read.All" })] +public async Task> GetPreviewUrl(string driveId, string itemId) +{ + return url + "&nb=true"; +} +``` +Then the client can request the URL and set the iframe source. +```javascript +async function preview(driveId, itemId) { + const url = `/GetPreviewUrl?driveId=${driveId}&itemId=${itemId}`; + const response = await fetch(url, { + credentials: 'include', + }).then(response => response.text()); + document.getElementById('preview').src = response + "&nb=true"; +} +``` +## Design preview UX +A good preview UX should: +- Show the file name. +- Show a loading indicator. +- Reserve enough space for the iframe. +- Provide an open-in-Office action for Office files. +- Provide a download action when preview isn't available. +- Preserve keyboard accessibility. +- Avoid trapping focus inside the preview frame. +- Explain errors in user-friendly language. +## Handle preview errors +| Failure | Handling | +|---|---| +| Unsupported file type | Show a download or open action instead. | +| Missing permission | Ask the user to request access or sign in again. | +| Expired URL | Request a fresh preview URL. | +| CORS error | Move the Graph call to your server-side endpoint. | +| File deleted | Refresh the file list and remove stale selections. | +| Service error | Retry once, then show a stable fallback. | +> [!IMPORTANT] +> Don't cache preview URLs as durable identifiers. Store the container ID and DriveItem ID, then create a fresh preview URL when needed. +## Secure preview requests +Treat preview as a read operation on protected content. +Your service should: +1. Validate the signed-in user or service context. +1. Confirm the caller can read the container content. +1. Confirm the requested item belongs to the expected container. +1. Avoid exposing Graph tokens to the browser. +1. Avoid logging preview URLs that include sensitive tokens. +1. Expire app-side preview sessions when the user signs out. +## Validate the preview experience +Test with multiple file types and users: +1. Upload a PDF file. +1. Upload an image file. +1. Upload an Office file. +1. Create a preview URL for each file. +1. Render each preview in an iframe. +1. Test a user with read access. +1. Test a user without access. +1. Delete a file and confirm the error is handled. +1. Refresh an expired preview URL. +1. Confirm the fallback action works. +## Connect to the next build task +After preview is working, add discovery experiences so users can find content across containers and files. +Continue to [Search containers and files](../build/search-containers-files.md). + +## Next steps + +- [Search containers and files](search-containers-files.md) diff --git a/docs/embedded/build/quickstart-vscode.md b/docs/embedded/build/quickstart-vscode.md new file mode 100644 index 0000000000..1097169b7a --- /dev/null +++ b/docs/embedded/build/quickstart-vscode.md @@ -0,0 +1,150 @@ +--- +title: "Quickstart: Build your first app with VS Code" +description: Create a standard SharePoint Embedded container type in Visual Studio Code and run the sample application locally. +ms.date: 07/10/2026 +ms.reviewer: mawin +ms.localizationpriority: high +--- +# Quickstart: Build your first app with VS Code +**Applies to:** Developer + +Use the [SharePoint Embedded Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=SharepointEmbedded.ms-sharepoint-embedded-vscode-extension) to create a standard container type for your first app. The extension also configures the owning app, attaches Azure billing, and registers the container type. Then you create a container and run a local sample app. +This article starts the build journey. For more billing guidance, see [Create and configure a container type](create-container-type.md). +## Prerequisites +Before you start, make sure you have: +- [Visual Studio Code](https://code.visualstudio.com/) installed. +- Administrative access to a Microsoft 365 tenant. +- A tenant with SharePoint available. +- An Azure subscription and resource group that your account can access. +- Owner or Contributor permissions on the Azure subscription. +- Node.js and npm installed for the sample app. +- Permission to grant admin consent in Microsoft Entra ID. +> [!IMPORTANT] +> You need administrative access to a Microsoft 365 tenant. If you don't have a tenant, use the Microsoft 365 Developer Program, Microsoft Customer Digital Experience, or a Microsoft 365 E3 trial. +## Install the extension +1. Open Visual Studio Code. +1. Open **Extensions** from the activity bar. +1. Search for **SharePoint Embedded**. +1. Select **Install**. +1. If the extension is already installed, update it. +1. Select the SharePoint Embedded icon in the activity bar. + +## Sign in +1. In the SharePoint Embedded view, select the sign-in action. +1. Use a Microsoft 365 administrator account. +1. Complete authentication in the browser. +1. Review the requested permissions. +1. Select **Accept** to grant admin consent. +1. Return to Visual Studio Code when redirected. +> [!IMPORTANT] +> Review the consent prompt carefully. The extension needs tenant permissions to configure development resources. + +![Screenshot of the SharePoint Embedded sign-in view in Visual Studio Code.](../images/vsx-images/n2vsx-signin.png) + +After you sign in, the extension shows the SharePoint Embedded home view. + +![Screenshot of the SharePoint Embedded home view in Visual Studio Code after sign-in. The view lists actions to create a container type and load a sample app.](../images/vsx-images/n4vsx-home-screen.png) + +## Create a standard container type +A container type defines the relationship, access privileges, billing accountability, and selected behaviors for a set of SharePoint Embedded containers. +1. Select **Create Container Type**. +1. For the billing method, select **standard**. +1. Enter a container type name. +1. Follow the prompts until creation completes. + +![Screenshot of the Visual Studio Code input box prompting for a container type name during the Create Container Type flow.](../images/vsx-images/n5a-name-ct.png) + +Use a standard container type when the organization that owns the app pays for SharePoint Embedded usage. +For evaluation, choose **trial**. For customer-tenant billing, choose the pass-through option, which uses the `directToCustomer` billing classification. + +## Create or select the owning app +Every container type has one owning Microsoft Entra ID application. +1. Create a new Microsoft Entra ID application or select an existing application ID. +1. If you create a new application, enter its name. +1. Let the extension configure development settings. + +![Screenshot of the Visual Studio Code input box prompting for a Microsoft Entra ID application name while creating the owning app for the container type.](../images/vsx-images/n6aname-app.png) + +> [!CAUTION] +> If you select an existing application, the extension updates that app's configuration. Don't use a production app for this quickstart. +For the model, see [SharePoint Embedded app architecture](../plan/app-tenant-architecture.md). +## Configure standard billing +Standard container types require Azure billing. The extension attaches billing by using an Azure subscription and resource group that your account can access. +1. Select an Azure subscription. +1. Select a resource group. +1. Wait for the extension to register the **Microsoft.Syntex** resource provider and attach billing. + +If you skip billing setup or don't have the required Azure permissions, the tree shows **Billing not set up**. To finish setup later, right-click the container type. Then select **Attach billing**. + +## Register the container type locally +You must register the container type in the consuming tenant before your app can create containers or access content. +1. After creation, follow the prompt to register the container type in the local tenant. +1. If the prompt isn't visible, right-click the container type and select **Register**. +1. Review the permissions. +1. Grant admin consent in the browser. +1. Return to Visual Studio Code. +Registration configures the permissions the owning app can use against containers of the container type. + +![Screenshot of the SharePoint Embedded extension prompting to register the container type on the local tenant, with the registration action highlighted.](../images/vsx-images/n7aregister-ct.png) + +## Create your first container +1. In the SharePoint Embedded tree, expand your container type. +1. Right-click **Containers**. +1. Select **Create container**. +1. Enter a container name. +1. Confirm the container appears in the tree. +A container is the basic storage unit and security boundary in SharePoint Embedded. + +![Screenshot of the SharePoint Embedded tree in Visual Studio Code. A container type is expanded, the Containers node is right-clicked, and the Create container command is selected.](../images/vsx-images/n10acreate-container.png) + +![Screenshot of the Visual Studio Code input box prompting for a container name.](../images/vsx-images/n11aname-first-cont.png) + +## Load a sample app +1. In the SharePoint Embedded view, select **Load Sample App**. +1. Choose a SharePoint Embedded sample. + +![Screenshot of the SharePoint Embedded extension home view with the Load Sample App action selected to scaffold a sample application.](../images/vsx-images/n15vsxsa-c.png) + +1. Review the warning about local plain text secrets. +1. If prompted to create a client secret, select **OK** for local development. +1. Let the extension populate the runtime configuration file. +> [!IMPORTANT] +> The sample configuration is for development only. It stores authentication secrets in plain text on your local machine. +## Run the sample app +Open a terminal and run the sample app from the generated sample directory. +```console +cd [your-path]\SharePoint-Embedded-Samples\Custom Apps\boilerplate-typescript-react +npm run start +``` +The sample starts: +- A React client application. +- An Azure Functions application server. +Wait for both console outputs to appear. +Then: +1. Open `http://localhost:8080`. +1. Sign in with the same Microsoft 365 administrator account. +1. Select **Containers** on the home page. +1. Create containers and upload files from the sample UI. + +> [!NOTE] +> Initial startup can take several minutes while dependencies install and both applications build. +## Troubleshoot startup +| Symptom | Check | +|---|---| +| Port conflict | The app tries the next available port when port 8080 is in use. | +| Dependencies fail | Run `npm install`, then run `npm run start` again. | +| Authentication error | Confirm the Microsoft Entra ID app has the expected redirect URIs. | +| Access denied | Confirm registration and admin consent succeeded. | +| Billing not set up | Confirm you have Owner or Contributor permissions on the selected Azure subscription, then use **Attach billing**. | +## Clean up +When you're finished testing: +1. Remove test containers that you no longer need. +1. Review Azure billing resources that you created for this quickstart. +1. Remove local sample secrets that are no longer needed. +## Next steps +Learn more about container type options in [Create and configure a container type](create-container-type.md). diff --git a/docs/embedded/build/register-application-permissions.md b/docs/embedded/build/register-application-permissions.md new file mode 100644 index 0000000000..ff46c3b9f3 --- /dev/null +++ b/docs/embedded/build/register-application-permissions.md @@ -0,0 +1,141 @@ +--- +title: Register Application Permissions +description: Register SharePoint Embedded container type application permissions in a consuming tenant. +ms.date: 07/10/2026 +ms.reviewer: stpuceli +ms.localizationpriority: high +--- +# Register Application Permissions +**Applies to:** Developer + +Register container type application permissions before your SharePoint Embedded app creates containers or accesses content in a consuming tenant. +Complete [Create and configure a container type](create-container-type.md) first so you have a container type ID and owning application. +## Why registration is required +A SharePoint Embedded application can't interact with containers in a consuming tenant until the container type is registered in that tenant. +Registration controls: +- Which application IDs can access the container type. +- Which delegated permissions each application has. +- Which app-only permissions each application has. +- Whether guest applications can interact with the owning application's containers. +If registration is missing or incomplete, later calls can fail with access denied errors. +## Understand who can register +Only the owning application of the container type can invoke the registration API in the consuming tenant. +The owning application must have: +- A service principal installed on the consuming tenant. +- Admin consent to perform registration in the consuming tenant. +- The `FileStorageContainerTypeReg.Selected` Microsoft Graph permission (user-delegated or app-only). +- A valid token for the Microsoft Graph resource. +> [!NOTE] +> The container type registration API is a Microsoft Graph API. It's currently in preview and subject to change. +When the owning application calls the registration API on behalf of a user (delegated), that user must be assigned the [SharePoint Embedded Administrator](/entra/identity/role-based-access-control/permissions-reference#sharepoint-embedded-administrator) or [Global Administrator](/entra/identity/role-based-access-control/permissions-reference#global-administrator) role. When it calls without a user context (app-only), it uses the client credentials grant flow. +## Grant admin consent +Ask a consuming tenant administrator to grant admin consent to the owning application. +Use the Microsoft identity platform admin consent endpoint: +```http +https://login.microsoftonline.com/{consuming-tenant-id}/v2.0/adminconsent?client_id={owning-app-clientid}&scope=https://graph.microsoft.com/.default&redirect_uri={spe-app-redirect-uri} +``` +Configure success and error handling for your onboarding flow. +For national cloud endpoints, see [Microsoft identity platform endpoints on national clouds](/entra/identity-platform/authentication-national-cloud#microsoft-entra-authentication-endpoints). +## Acquire a token for registration +Use either delegated or app-only authentication for registration. +Registration requires: +- The `FileStorageContainerTypeReg.Selected` Microsoft Graph permission. +- For app-only calls, the [client credentials grant flow](/entra/identity-platform/v2-oauth2-client-creds-grant-flow). +- For delegated calls, a signed-in user with the SharePoint Embedded Administrator or Global Administrator role. +## Register container type permissions +Call the registration endpoint in the consuming tenant. +```http +PUT https://graph.microsoft.com/beta/storage/fileStorage/containerTypeRegistrations/{containerTypeId} +``` +`{containerTypeId}` is the container type ID created in the owning tenant. +In the request body, provide the application permission grants for the container type. +## Grant permissions to the owning app +A common first registration grants the owning app full permissions for delegated and app-only calls. +```json +{ + "applicationPermissionGrants": [ + { + "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab", + "delegatedPermissions": ["full"], + "applicationPermissions": ["full"] + } + ] +} +``` +Replace the sample app ID with your owning application ID. +> [!CAUTION] +> Use least privilege for production. Grant `full` only when the application needs full container type access. +## Grant permissions to a guest app +The owning app can also register permissions for another application. +Use this pattern when a guest app needs a defined workload, such as backup or processing. +```json +{ + "applicationPermissionGrants": [ + { + "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab", + "delegatedPermissions": ["full"], + "applicationPermissions": ["full"] + }, + { + "appId": "89ea5c94-7736-4e25-95ad-3fa95f62b6", + "delegatedPermissions": ["read", "write"], + "applicationPermissions": ["none"] + } + ] +} +``` +Replace both app IDs with your applications. +## Permission values +| Permission | Use | +|---|---| +| `None` | Grant no permissions. | +| `ReadContent` | Read content in containers of this type. | +| `WriteContent` | Write content in containers of this type. | +| `Create` | Create containers of this type. | +| `Delete` | Delete containers of this type. | +| `Read` | Read container metadata. | +| `Write` | Update container metadata. | +| `EnumeratePermissions` | Enumerate container members and roles. | +| `AddPermissions` | Add container members. | +| `UpdatePermissions` | Update existing memberships. | +| `DeletePermissions` | Delete other members. | +| `DeleteOwnPermissions` | Remove the caller's own membership. | +| `ManagePermissions` | Manage container role assignments. | +| `ManageContent` | Manage the content of containers of this type. | +| `Full` | Grant all permissions. | +> [!NOTE] +> `WriteContent` can't be granted without `ReadContent`. +## Validate registration +A successful registration returns `201 Created` and the configured permissions in the response body. +After registration succeeds: +1. Confirm the response includes expected app IDs. +1. Confirm delegated and app-only arrays match your intended grants. +1. Acquire a Microsoft Graph token with SharePoint Embedded permissions. +1. Try a low-risk operation that matches the registered permission. +1. Continue to [Configure authentication and authorization](configure-authentication-authorization.md). +## Troubleshoot consent issues +| Symptom | Likely cause | Action | +|---|---|---| +| `401 Unauthorized` | Missing or invalid token | Request a valid app-only token. | +| `403 Forbidden` | App lacks permission or isn't owning app | Confirm `FileStorageContainerTypeReg.Selected`, consent, and app ID. | +| `404 Not Found` | Container type doesn't exist | Verify ID and tenant. | +| Access denied on Graph calls | Registration missing or insufficient | Re-register with needed permissions. | +| Admin can't find hidden permission | Portal doesn't expose it | Use an admin consent URL. | +## Re-register safely +There are no restrictions on how many times the registration API can be invoked. +The last successful registration call determines the settings used in the consuming tenant. +Use a safe update process: +1. Build a complete registration payload. +1. Include all apps that should retain access. +1. Submit the registration call. +1. Validate the response. +1. Run smoke tests for each app role. +> [!IMPORTANT] +> Don't send a partial payload unless you intend the resulting registration to contain only that set of applications and permissions. +## Next steps +Configure tokens and authorization flows in [Configure authentication and authorization](configure-authentication-authorization.md). diff --git a/docs/embedded/build/respond-to-changes-webhooks.md b/docs/embedded/build/respond-to-changes-webhooks.md new file mode 100644 index 0000000000..dea167a08b --- /dev/null +++ b/docs/embedded/build/respond-to-changes-webhooks.md @@ -0,0 +1,107 @@ +--- +title: Respond to file and container changes with webhooks +description: Subscribe to SharePoint Embedded drive changes and handle Microsoft Graph webhook notifications. +ms.date: 07/10/2026 +ms.reviewer: jaeccles +ms.localizationpriority: high +--- +# Respond to file and container changes with webhooks +**Applies to:** Developer + +Use Microsoft Graph webhooks when your app must react to file changes in a SharePoint Embedded container. A subscription tells Microsoft Graph to call your HTTPS endpoint when the subscribed resource changes. + +![Diagram of the SharePoint Embedded webhook flow: the app creates a Microsoft Graph subscription for a container drive, and Microsoft Graph sends change notifications to the app's HTTPS endpoint.](../images/Using-Webhooks.png) + +## Create a notification endpoint +Expose an HTTPS endpoint that accepts `POST` requests. During local development, use ngrok to tunnel requests to a local server. + +```console +ngrok http 3001 +``` + +![ngrok terminal output showing the public HTTPS forwarding URL that tunnels to the local server.](../images/ngrok-registration.png) + +When Microsoft Graph creates a subscription, it validates the endpoint by sending a `validationToken` query parameter. Return that token as plain text with HTTP 200. + +```typescript +export const onReceiptAdded = async (req: Request, res: Response) => { + const validationToken = req.query['validationToken']; + if (validationToken) { + res.send(200, validationToken, { "Content-Type": "text/plain" }); + return; + } + + const driveId = req.query['driveId']; + if (!driveId) { + res.send(200, "Notification received without driveId, ignoring", { "Content-Type": "text/plain" }); + return; + } + + console.log(`Received driveId: ${driveId}`); + res.send(200, ""); +} +``` + +Register the route in your API server and enable request body and query parsing before the route handles notifications. + +```typescript +server.use(restify.plugins.bodyParser(), restify.plugins.queryParser()); +server.post('/api/onReceiptAdded', async (req, res, next) => { + try { + const response = await onReceiptAdded(req, res); + res.send(200, response); + } catch (error: any) { + res.send(500, { message: `Error in API server: ${error.message}` }); + } + next(); +}); +``` + +## Subscribe to a container drive +Create the subscription with Microsoft Graph. In this pattern, the SharePoint Embedded container ID is the drive ID. + +```http +POST https://graph.microsoft.com/v1.0/subscriptions +Content-Type: application/json +``` + +```json +{ + "changeType": "updated", + "notificationUrl": "https://contoso.example/api/onReceiptAdded?driveId={container-id}", + "resource": "drives/{container-id}/root", + "expirationDateTime": "2026-06-25T03:58:34.088Z", + "clientState": "" +} +``` + +Subscribe to changes under `drives/{container-id}/root` and append `driveId={container-id}` to the notification URL so the handler can identify the container. + +## Calculate expiration +Drive item subscriptions have a maximum lifetime of 4,230 minutes. Use a pre-request script or backend scheduler to set the expiration time before creating the subscription. + +```javascript +var now = new Date(); +var duration = 1000 * 60 * 4230; +var expiry = new Date(now.getTime() + duration); +pm.environment.set("ContainerSubscriptionExpiry", expiry.toISOString()); +``` + +Store the subscription ID, resource, container ID, and expiration time. Renew each subscription before it expires. + +## Process notifications safely +Return quickly from the webhook request. Queue background work, fetch the current file or container state with Microsoft Graph, and make processing idempotent because notifications can be duplicated or delayed. + +Use webhooks for actions such as document processing, index refresh, user notifications, or workflow triggers. Keep a periodic reconciliation job for missed notifications or expired subscriptions. + +## Verify the flow +Create a subscription, upload or update a file in the container, and confirm your endpoint logs the expected drive ID. If validation fails, check the public HTTPS URL, the `validationToken` response content type, and whether your server parses query parameters before route execution. + +## Next steps + +- [Archive and restore containers](archive-restore-containers.md) diff --git a/docs/embedded/build/search-containers-files.md b/docs/embedded/build/search-containers-files.md new file mode 100644 index 0000000000..56e84460e6 --- /dev/null +++ b/docs/embedded/build/search-containers-files.md @@ -0,0 +1,130 @@ +--- +title: Search Containers and Files +description: Search SharePoint Embedded containers and files with Microsoft Search in Microsoft Graph. +ms.date: 07/10/2026 +ms.reviewer: cindylay +ms.localizationpriority: high +--- +# Search Containers and Files +**Applies to:** Developer + +Use Microsoft Search in Microsoft Graph when your app needs keyword search across SharePoint Embedded containers or content. The search API ranks matching results and returns `drive` resources for containers or `driveItem` resources for files and folders. + +> [!NOTE] +> SharePoint Embedded search is in preview and is available only on the Microsoft Graph **`/beta`** endpoint — there is no `v1.0` search API for containers. Search supports delegated permissions only and follows the [exceptional access pattern](configure-authentication-authorization.md#handle-operations-not-exposed-through-graph). + +## Choose the search scope +Scope every request to the container type or container that belongs to your app. Search runs in the context of the signed-in user, so the service trims results to content the user can access. Your app must also have access to the corresponding container type before it can open returned containers or files. + +Use these managed properties in the `queryString`: + +| Scope | Entity type | Query pattern | +| --- | --- | --- | +| All containers of a type | `drive` | `ContainerTypeId:{containerTypeId}` | +| One container by title | `drive` | `Title:'contoso' AND ContainerTypeId:{containerTypeId}` | +| One container by description | `drive` | `Description:'Everything' AND ContainerTypeId:{containerTypeId}` | +| Files in one container | `driveItem` | `Title:'contoso' AND ContainerId:{containerId}` | +| Files across a container type | `driveItem` | `'contoso' AND ContainerTypeId:{containerTypeId}` | + +If your application opted out of Microsoft 365 content discoverability, set `sharePointOneDriveOptions.includeHiddenContent` to `true` in the request body. + +## Search containers +Send a `POST` request to Microsoft Graph search and request `drive` resources. + +```http +POST https://graph.microsoft.com/beta/search/query +Content-Type: application/json +``` + +```json +{ + "requests": [ + { + "entityTypes": ["drive"], + "query": { + "queryString": "ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae" + }, + "sharePointOneDriveOptions": { + "includeHiddenContent": true + }, + "from": 0, + "size": 25 + } + ] +} +``` + +The response includes `hitsContainers`. Each hit contains a `hitId`, `rank`, `summary`, and a `resource` whose `@odata.type` is `#microsoft.graph.drive`. + +## Search files and folders +Request `driveItem` resources when the user searches file names or file content. Scope to a specific container with `ContainerId` when the user is already inside a workspace. + +```json +{ + "requests": [ + { + "entityTypes": ["driveItem"], + "query": { + "queryString": "Title:'contoso' AND ContainerId:b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0" + }, + "sharePointOneDriveOptions": { + "includeHiddenContent": true + }, + "from": 0, + "size": 25 + } + ] +} +``` + +A `driveItem` result can include file metadata such as `id`, `name`, `size`, `createdDateTime`, `lastModifiedDateTime`, `parentReference`, `createdBy`, `lastModifiedBy`, and `webUrl`. + +## Return selected fields and sort results +Use the `fields` collection to request specific managed properties in the response. Use `sortProperties` only with sortable properties. + +```json +{ + "requests": [ + { + "entityTypes": ["driveItem"], + "query": { "queryString": "Everything about contoso" }, + "sharePointOneDriveOptions": { "includeHiddenContent": true }, + "fields": ["SampleOWSText", "id", "name", "parentReference", "webUrl", "createdDateTime", "lastModifiedDateTime", "size"], + "sortProperties": [ + { "name": "Created", "isDescending": false } + ] + } + ] +} +``` + +Use `from` and `size` to page through ranked results. Read `hitsContainers[].total` and `hitsContainers[].moreResultsAvailable` to decide whether to request another page. + +## Search custom properties +For container custom properties, append `OWSTEXT` to the custom property name in the query string. + +```text +customPropertyNametOWSTEXT:customPropertyValue AND ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae +``` + +Use full-text **search** (the `/beta/search/query` endpoint above) when users type free-text terms and you want relevance ranking across containers. Use direct enumeration instead of search when your app must filter on known metadata values without relevance ranking. For example, query drive items with `$filter`, `$expand`, and `$orderby`: + +```http +GET https://graph.microsoft.com/v1.0/drives/{container-id}/items?$filter=startswith(listitem/fields/{column}, '{value}')&$expand=listitem($expand=fields) +``` + +When a container has more than 5,000 items and you enumerate with `$orderby`, include the `Prefer: HonorNonIndexedQueriesWarningMayFailRandomly` header required for large ordered enumerations. + +## Known limitations +Search enforces the signed-in user's access, not your app's authorization. Results include every container and item the user can access that matches the query — even containers whose container type your app isn't authorized to use. Always include `ContainerTypeId` in the `queryString` to scope results to your app. + +To open a container or file returned by search, your app must have access permissions to the corresponding container type. + +## Next steps + +- [Store and query container metadata](container-metadata.md) diff --git a/docs/embedded/build/share-files-manage-permissions.md b/docs/embedded/build/share-files-manage-permissions.md new file mode 100644 index 0000000000..f6236673df --- /dev/null +++ b/docs/embedded/build/share-files-manage-permissions.md @@ -0,0 +1,86 @@ +--- +title: Share files and manage permissions +description: Grant targeted SharePoint Embedded file access with additive permissions and role-based sharing. +ms.date: 07/10/2026 +ms.reviewer: cindylay +ms.localizationpriority: high +--- +# Share files and manage permissions +**Applies to:** Developer + +SharePoint Embedded content inherits permissions from its container hierarchy. You cannot break inheritance on arbitrary files or folders. Use additive permissions to extend access to a specific drive item without changing the baseline container membership. + +## Understand container roles +Container roles provide the inherited baseline access for a container. These roles are defined in [container permissions](configure-authentication-authorization.md#understand-container-permissions): + +| Role | Access summary | +| --- | --- | +| `Reader` | Reads container properties and contents. | +| `Writer` | Has Reader access, plus permission to create, update, and delete content and update applicable container properties. | +| `Manager` | Has Writer access, plus permission to manage container membership. | +| `Owner` | Has Manager access, plus permission to delete containers. | + +A user with inherited `Reader` access can receive additive edit access on one document. Removing that added permission does not remove the user's inherited container role. + +## Grant additive access +Grant additive access with Microsoft Graph drive item invite. Set `sendInvitation` to `false`. App-only permissions aren't supported for this operation. + +```http +POST https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/invite +Content-Type: application/json +``` + +```json +{ + "recipients": [ + { "email": "user@contoso.com" } + ], + "message": "", + "requireSignIn": true, + "sendInvitation": false, + "roles": ["write"] +} +``` + +Use `roles: ["read"]` for view access and `roles: ["write"]` for edit access. Do not grant additive permissions to the root folder of a container; add the user to an appropriate container role instead. + +## Retrieve and delete permissions +List permissions when you need to show direct sharing state on a file or folder. + +```http +GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/permissions +GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/permissions/{perm-id} +``` + +Delete only the additive permission on the drive item where it was originally added. + +```http +DELETE https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/permissions/{perm-id} +``` + +If the user still has access after deletion, inspect inherited container roles, Microsoft Entra groups, and any other additive permission on parent folders. + +## Configure who can share +SharePoint Embedded supports a role-based sharing model on the container type. The restrictive model allows only `Owner` and `Manager` members to add new permissions to files. The open model allows container members and guests with edit permissions to add new file permissions. By default, a container type uses the open model. + +Application owner developers control this container type setting. Design your UI so the share action is disabled or hidden when the current user's role cannot add permissions. For administrative configuration, see [Create apps with PowerShell](../admin/create-apps-powershell.md). + +## Respect tenant sharing policy +By default, SharePoint Embedded application sharing follows the consuming tenant's sharing configuration. If the tenant disables guest sharing, your app cannot add guests to container roles or grant guest additive permissions. + +A consuming tenant SharePoint Embedded Administrator can configure application-level sharing in administrative tools. + +Report policy failures in user-facing language. Distinguish inherited container access from direct item access in permission panels so users understand why a person can still open a file. + +## Manage membership from the consuming tenant + +Consuming-tenant administrators can manage container membership directly in administrative tools. These tools complement the app-driven Microsoft Graph permission APIs and are useful for administrative or break-glass membership changes. + +## Next steps + +- [Respond to file and container changes with webhooks](respond-to-changes-webhooks.md) diff --git a/docs/embedded/build/sharepoint-embedded-knowledge-source.md b/docs/embedded/build/sharepoint-embedded-knowledge-source.md new file mode 100644 index 0000000000..4201497f64 --- /dev/null +++ b/docs/embedded/build/sharepoint-embedded-knowledge-source.md @@ -0,0 +1,84 @@ +--- +title: Set up SharePoint Embedded as a Foundry knowledge source +description: Configure Microsoft Foundry Agent Service to use SharePoint Embedded content as a SharePoint knowledge source. +ms.date: 07/10/2026 +ms.localizationpriority: high +--- + +# Set up SharePoint Embedded as a Foundry knowledge source + +**Applies to:** Developer + + + +Use Microsoft Foundry Agent Service with a SharePoint knowledge source when your app needs a grounded agent experience over files stored in SharePoint Embedded containers. + +> [!NOTE] +> SharePoint knowledge sources for SharePoint Embedded are in preview. + +## Prerequisites + +Before you start, make sure you have: + +- A SharePoint Embedded app with at least one container. +- The container type ID for the SharePoint Embedded app. +- A Microsoft Foundry Agent Service project. +- At least one Microsoft 365 Copilot license in the tenant during preview. +- Permission to update the container type registration in each consuming tenant where the agent must access content. + +During preview, the Copilot license is required. After preview, this feature is expected to move to metered billing. + +## Configure the SharePoint knowledge source + +Configure the Foundry SharePoint knowledge source with `remoteSharePointParameters.containerTypeId` set to your SharePoint Embedded container type ID. + +For source-specific configuration details, see [SharePoint knowledge source properties](/azure/search/agentic-knowledge-source-how-to-sharepoint-remote#source-specific-properties). + +## Grant Foundry access to the container type + +Grant Microsoft Foundry read access to your container type in each consuming tenant. The Foundry application ID is `880da380-985e-4198-81b9-e05b1cc53158`. + +The container type's owning application must call the registration API in the consuming tenant. + +```http +PUT /storage/fileStorage/containerTypeRegistrations/{fileStorageContainerTypeId}/applicationPermissionGrants/880da380-985e-4198-81b9-e05b1cc53158 +Content-Type: application/json +``` + +```json +{ + "delegatedPermissions": ["readContent"], + "applicationPermissions": ["none"] +} +``` + +Replace `{fileStorageContainerTypeId}` with your container type ID. + +You can also grant this permission during initial container type registration by using the [Create container type registration](/graph/api/filestorage-post-containertyperegistrations) endpoint. + +## Validate retrieval + +1. Upload supported files to a SharePoint Embedded container. +1. Wait for indexing to complete. +1. Sign in as a user who has access to the container content. +1. Ask the agent a question that the uploaded files can answer. +1. Confirm that the answer is grounded in the expected SharePoint Embedded content. + +If the answer omits expected files, check: + +- Container type registration in the consuming tenant. +- Foundry application permission grants. +- User access to the container and files. +- Supported file formats. +- Content discoverability settings. +- Indexing delay. + +## Next steps + +- [Add Microsoft 365 Copilot and agent experiences](agent-experiences.md) +- [Register application permissions](register-application-permissions.md) diff --git a/docs/embedded/compliance/audit-events.md b/docs/embedded/compliance/audit-events.md deleted file mode 100644 index 0c72d6857f..0000000000 --- a/docs/embedded/compliance/audit-events.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: SharePoint Embedded audit log events -description: Learn about audit log events for SharePoint Embedded container type and container type registration operations in the Microsoft Purview unified audit log. -ms.date: 04/24/2026 -ms.localizationpriority: medium ---- - -# SharePoint Embedded audit log events - -SharePoint Embedded container type and container type registration operations are captured in the Microsoft 365 unified audit log through [Microsoft Purview](/purview/audit-solutions-overview). These events let compliance administrators and developers track changes to container type definitions and their tenant registrations. - -For general information about searching the audit log, see [Search the audit log](/purview/audit-search). For a broader overview of all compliance capabilities available for content stored in SharePoint Embedded, see [Security and Compliance](security-and-compliance.md). - -## Container type activities - -The following events are logged when a container type is created, updated, or deleted. For more information, see [SharePoint Embedded container types](../getting-started/containertypes.md). - -These events use **Workload** value **SharePoint** in the unified audit log. - -| Friendly name | Operation | Description | -| :-- | :-- | :-- | -| Created container type | ContainerTypeCreated | A new SharePoint Embedded container type definition was created. | -| Deleted container type | ContainerTypeDeleted | A SharePoint Embedded container type owned by the tenant was deleted. | -| Updated container type | ContainerTypeUpdated | Properties of a SharePoint Embedded container type, such as name or configuration, were changed. | -| Updated container type owners | ContainerTypeOwnersUpdated | Owners were added to or removed from a SharePoint Embedded container type. | - -These events appear in the Microsoft Purview audit log under the **SharePoint Embedded Container Type activities** category. For the full reference of all audit activities, see [Audit log activities](/purview/audit-log-activities#sharepoint-embedded-container-type-activities). - -## Container type registration activities - -The following events are logged when a container type registration is created, updated, or deleted in a consuming tenant. Container type registrations are required for a SharePoint Embedded application to operate in a given tenant. For more information, see [Consuming Tenant Admin](../administration/consuming-tenant-admin/cta.md). - -These events use **Workload** value **SharePoint** in the unified audit log. - -| Friendly name | Operation | Description | -|:-- | :-- | :-- | -| Created container type registration | ContainerTypeRegistrationCreated | A SharePoint Embedded container type registration was created in a tenant. | -| Deleted container type registration | ContainerTypeRegistrationDeleted | A SharePoint Embedded container type registration was deleted from a tenant. | -| Updated container type registration | ContainerTypeRegistrationUpdated | A SharePoint Embedded container type registration was updated in a tenant. | - -These events appear in the Microsoft Purview audit log under the **SharePoint Embedded Container Type Registration activities** category. For the full reference of all audit activities, see [Audit log activities](/purview/audit-log-activities#sharepoint-embedded-container-type-registration-activities). - -## Searching for SharePoint Embedded audit events - -To search for these events, use the [Microsoft Purview audit log search](/purview/audit-search). When searching, set the activity category filter to **SharePoint Embedded Container Type activities** or **SharePoint Embedded Container Type Registration activities** to find the relevant events. - -You can also search using PowerShell: - -```powershell -Search-UnifiedAuditLog -Operations ContainerTypeCreated,ContainerTypeDeleted,ContainerTypeUpdated,ContainerTypeOwnersUpdated,ContainerTypeRegistrationCreated,ContainerTypeRegistrationDeleted,ContainerTypeRegistrationUpdated -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) -``` - -Container type audit events include the `ContainerTypeId` property to identify the relevant container type. Unlike container-level file events, container type events don't include `ContainerInstanceId` because they apply at the type level, not to individual container instances. - -## Schema reference - -Container type and container type registration audit events use the SharePoint base schema. For the full schema definition and enum values, see the [Office 365 Management Activity API schema](/office/office-365-management-api/office-365-management-activity-api-schema#sharepoint-base-schema). - -## Related content - -- [SharePoint Embedded container types](../getting-started/containertypes.md) -- [Security and Compliance](security-and-compliance.md) -- [Consuming Tenant Admin](../administration/consuming-tenant-admin/cta.md) -- [Audit log activities](/purview/audit-log-activities#sharepoint-embedded-container-type-activities) -- [Office 365 Management Activity API schema](/office/office-365-management-api/office-365-management-activity-api-schema) diff --git a/docs/embedded/compliance/security-and-compliance.md b/docs/embedded/compliance/security-and-compliance.md deleted file mode 100644 index d002720fcc..0000000000 --- a/docs/embedded/compliance/security-and-compliance.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Security and Compliance -description: Details Security and Compliance methods provided by SharePoint Embedded -ms.date: 11/21/2023 -ms.localizationpriority: high ---- - -# Security and Compliance - -Microsoft's SharePoint Embedded provides a faster way to create secure and compliant documents stored in various applications. SharePoint Embedded uses Microsoft’s comprehensive compliance and data governance solutions to help organizations manage risks, protect, and govern sensitive data, and respond to regulatory requirements. Security and compliance solutions work similarly in the SharePoint Embedded platform as they do today on the Microsoft 365 (Microsoft 365) platform so that data is stored in a secure, protected way that meets customers’ business and compliance policies while making it easy for Compliance and SharePoint Administrators to enforce critical security and compliance policies on the content. - -In this article, we describe the security and compliance policies that are supported today on content that resides in the SharePoint Embedded platform, and their capabilities and limitations. - -Since SharePoint Embedded by design doesn’t have any user interface, some Compliance scenarios necessitating user interaction aren't natively supported. The owning application that governs the container can choose to support these scenarios and provide the optimal experience to end users by using the Microsoft Graph. - -## Compliance Policies using Microsoft Purview - -Currently, SharePoint Embedded supports the following Compliance features under Microsoft Purview. You can follow the following steps to retrieve the details of a container that the policy needs to be applied to. - -1. View a list of registered SharePoint Embedded applications registered in the specified tenant: - - ```powershell - Get-SPOApplication - ``` - -1. Retrieve a list of containers in a SharePoint Embedded application by providing the ApplicationID returned in Step #1: - - ```powershell - Get-SPOContainer -OwningApplicationId - ``` - -1. Retrieve the details of a container including the ContainerSiteURL by providing the ContainerID returned in Step #2: - - ```powershell - Get-SPOContainer -OwningApplicationId -Identity - ``` - -For information on how to retrieve the `ContainerSiteURL` to set the various compliance policies described in this article at a container level, see [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer). - -### Audit - -The Audit capabilities provided by SharePoint Embedded mirror the existing Audit functionalities currently supported within SharePoint. All user and admin operations performed in various applications hosted in SharePoint Embedded are captured, recorded, and retained in your organization's unified audit log. For more information on Audit, see [Auditing solutions in Microsoft Purview](/purview/audit-solutions-overview). - -For a detailed list of container type and container type registration audit events, see [SharePoint Embedded audit log events](audit-events.md). - -In addition to existing file properties, Audit events related to SharePoint Embedded are logged with the following more data to help filter the Audit search results to isolate the relevant SharePoint Embedded content: - -- `ContainerInstanceId` -- `ContainerTypeId` - -![Audit events](../images/sc1.png) - - -### eDiscovery - -Compliance Admins can use eDiscovery tools in Microsoft Purview to search/hold/export content hosted in the SharePoint Embedded platform. For more information on eDiscovery, see [Microsoft Purview eDiscovery solutions](/purview/ediscovery). - -To perform an eDiscovery Search on all SharePoint Embedded content, Admins should select **All** SharePoint Sites when configuring the eDiscovery Search in Microsoft Purview. This enables the Search for content stored in all SharePoint Sites and all SharePoint Embedded containers. - -![eDiscovery search](../images/sc2.png) - -To limit the eDiscovery Search to one/few SharePoint Embedded containers, Admins can **Choose sites** under the **SharePoint sites** workload and provide the desired container URL. - -![choose sites in eDiscovery search](../images/sc3.png) - -### Data Lifecycle Management (DLM) - -SharePoint Embedded supports retention and holds policies on content stored in its applications using the Microsoft Purview compliance portal. For more information on DLM, see [Learn about Microsoft Purview Data Lifecycle Management](/purview/data-lifecycle-management). - -The existing retention policy is applied to all SharePoint Embedded containers if the policy is configured for **All sites**. Similarly, creating a new retention/hold policy on *all* SharePoint Sites workload automatically enforces the policy on all SharePoint Sites and all containers within SharePoint Embedded. - -![retention policy](../images/sc4.png) - -To selectively enforce the policy on one or more SharePoint Embedded containers, copy the container URL and configure the policy to be selectively enforced only on those containers. - -![enforce retention policy](../images/sc5.png) - -Since SharePoint Embedded doesn't have a built-in user interface, DLM scenarios requiring user interaction aren't natively supported. For instance, if an end user attempts to apply a retention label on a container using a SharePoint Embedded application (app), the app governing the access to the container must furnish that functionality. In such cases, Graph APIs for DLM functionalities can be used. - -### Data Loss Protection (DLP) - -Using Microsoft Purview, Admins can identify, monitor, and automatically protect sensitive items stored in applications using SharePoint Embedded. For more information on DLP, see  [Learn about data loss prevention](/purview/dlp-learn-about-dlp). - -Like retention policies, DLP policies can be enforced on all SharePoint Sites and SharePoint Embedded containers by choosing to configure the policy on ‘All sites’. - -![DLP Policy](../images/sc6.png) - -Admins can also restrict the enforcement of a DLP policy to specific SharePoint Embedded containers by specifying the relevant container URLs during policy configuration. - -![Configure DLP Policy](../images/sc7.png) - -Several scenarios supported by DLP today need user interaction that isn’t natively supported by SharePoint Embedded. For instance, based on its configuration, a DLP policy that prevents external sharing might allow end users to provide a business justification to override the policy. The client app that renders this DLP-flagged file item needs to support such user interactions. - -Policy tips are shown today for files hosted in SharePoint so that users are kept informed about DLP-flagged file items and corresponding restrictions. Similarly, for policy tips to be displayed for files hosted in SharePoint Embedded, the client app can choose to provide more support by utilizing the Microsoft Graph for this purpose. - -## Security features - -### Sensitivity labels on containers - -Global Administrators and SharePoint Administrators can set and remove sensitivity labels on a SharePoint Embedded container by using the newly created SharePoint PowerShell cmdlet: - -```powershell -Set-SPOContainer -Identity -SensitivityLabel -``` - -To learn more about setting sensitivity labels, see [Learn about sensitivity labels](/purview/sensitivity-labels). - -### Block Download policy - -Block Download policy allows SharePoint Administrator or Global Administrator to block the download of files from SharePoint Embedded containers using the following SharePoint PowerShell cmdlet. - -```powershell -Set-SPOSite -Identity -BlockDownloadPolicy $true -``` - -A SharePoint Advanced Management (SAM) license is needed to enforce this policy. Read the full documentation for advanced capabilities at [Block download policy for SharePoint sites and OneDrive](/sharepoint/block-download-from-sites). - -### Conditional Access policy - -SharePoint Embedded supports basic Conditional Access policy configurations such as: - -- `AllowFullAccess`: Allows full access from desktop apps, mobile apps, and the web -- `AllowLimitedAccess`: Allows limited, web-only access -- `BlockAccess`: Blocks Access - -These settings are available with the following PowerShell cmdlet. The `AuthorizationContext` will also be supported soon. - -```powershell -Set-SPOContainer -Identity -ConditionalAccessPolicy -``` - -To learn more about conditional access policies, see [Control access from unmanaged devices](/sharepoint/control-access-from-unmanaged-devices). diff --git a/docs/embedded/development/app-architecture.md b/docs/embedded/development/app-architecture.md deleted file mode 100644 index d3eb1d73cb..0000000000 --- a/docs/embedded/development/app-architecture.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: App Architecture -description: Anatomy of a SharePoint Embedded application -ms.date: 05/21/2024 -ms.localizationpriority: high ---- - -# SharePoint Embedded app architecture - -All files and documents in SharePoint Embedded are stored in containers, with all containers and container content created and stored within a Microsoft 365 Tenant. All containers and container content are created, managed, and interacted via the SharePoint Embedded application using Microsoft Graph. - -![SharePoint Embedded Architecture](../images/SPEArch.png) - -## SharePoint Embedded application - -A Microsoft Entra ID application registration. As an owning or guest application to a container type, it has access to containers of that container type. - -## Owning tenant and consuming tenant - -SharePoint Embedded introduces the concepts of owning tenant and consuming tenant. Owning tenant is a Microsoft Entra ID tenant where a container type is created. This is often also the tenant where your SharePoint Embedded application is registered. Consuming tenant is a Microsoft Entra ID tenant where a container type is used. Only a consuming tenant may have containers of such container type. All container and content created via the application is stored within the consuming tenant's Microsoft 365 tenant boundary. - -The same Microsoft Entra ID tenant can be both owning and consuming tenant of a given container type in the SharePoint Embedded ecosystem. - -## Container, container type, and owning application - -A container is the basic storage unit in SharePoint Embedded. Also, a container defines a security and compliance boundary. - -A container type is a SharePoint Embedded resource that defines the relationship, access privileges, and billing accountability between an application and a set of containers. Also, the container type defines behaviors on the set of containers. Learn more about [container types](../getting-started/containertypes.md). - -The container type is represented on each container as an immutable property and is used across the entire SharePoint Embedded ecosystem. Each container type is strongly coupled with one SharePoint Embedded application, which is referred to as the owning application. The owning application developer (the owning tenant) is responsible for creating and managing their container types. SharePoint Embedded mandates a 1:1 relationship between owning application and container type. - -## Access Model - -An application's access to containers and container content is determined by a set of permissions configured between the application and the container type it attempts to access. This set of permission is determined at container Type creation time for owning application. The SharePoint Embedded ecosystem allows applications to access containers of container types it doesn't own. - -In this illustration, multiple applications are deployed in the tenancy, including two apps developed by ISVs (App 1 and 2) and a LOB app (App 3). Each application can access only to the stack of containers of the container type they own. - -![SPE multi app architecture](../images/SPECTDedicated.png) - -In this illustration, both App 1 and App 2 in the tenancy have access to the same container type. Both apps can access the stack of the containers of that type. - -![SPE multi app architecture sharing Container Types](../images/SPECTShared.png) - -#### Example - -Contoso is an ISV and built a human resource management application on SharePoint Embedded. The application is registered and deployed in Fabrikam, an auditing firm. Fabrikam also developed an LOB auditing application on SharePoint Embedded that is used internally. - -In this scenario, both the human resource management application developed by Contoso and the auditing application developed by Fabrikam have their own container type. Contoso is the owning tenant of the human resource management application; and the application is the owning app for its container Type. Likewise, Fabrikam is the owning tenant the auditing application; and the application is the owning app for its container type. In addition, Fabrikam is the consuming tenant for both applications. - -![Example](../images/apparchexample.png) diff --git a/docs/embedded/development/auth.md b/docs/embedded/development/auth.md deleted file mode 100644 index fdf13bc278..0000000000 --- a/docs/embedded/development/auth.md +++ /dev/null @@ -1,244 +0,0 @@ ---- -title: SharePoint Embedded Authentication and Authorization -description: This article describes the authentication and authorization model for SharePoint Embedded applications. -ms.date: 11/21/2023 -ms.localizationpriority: high ---- - -# SharePoint Embedded authentication and authorization - -To use SharePoint Embedded, your application must utilize Microsoft Graph. Learn more about [Microsoft Graph authentication and authorization](/graph/auth/auth-concepts). Learn more about the [SharePoint Embedded architecture](./app-architecture.md). - -## Overview - -Here are some key principles of SharePoint Embedded authentication and authorization: - -- Applications interact with SharePoint Embedded via Microsoft Graph. -- Applications need container type application permissions to access containers of that container type. -- Applications can only access content that the user has access to when using access on behalf of a user. -- Applications can access all containers enabled by their container type application permissions when using access without a user. -- Applications use access on behalf of users whenever possible to enhance security and accountability. - -## Prerequisites - -- A Microsoft Entra ID application registration. See [register an application](/graph/auth-register-app-v2). -- Your Microsoft Entra ID tenant has a Microsoft 365 subscription. - -## Authorization - -SharePoint Embedded operations are exposed via Microsoft Graph. SharePoint Embedded supports [access on behalf of a user](/graph/auth-v2-user) and also [access without a user](/graph/auth-v2-service). - -> [!IMPORTANT] -> Microsoft Graph permissions granted to your application allow it to call SharePoint Embedded endpoints. However, your application must be granted [permission to a container type](#container-type-application-permissions) before it gets access to containers of that type. - -### Application permissions - -SharePoint Embedded applications need to request the following Microsoft Graph permissions in their application manifest to work with SharePoint Embedded: - -- **[FileStorageContainerType.Manage.All](/graph/permissions-reference#filestoragecontainertypemanageall)** to allow an application to create and manage container types on the owning tenant. This permission is only needed on the owning tenant where the container type is created. -- **[FileStorageContainerTypeReg.Selected](/graph/permissions-reference#filestoragecontainertyperegselected)** to allow an application to register the container type on consuming tenants. -- **[FileStorageContainer.Selected](/graph/permissions-reference#filestoragecontainerselected)** to allow an application to access containers of the given container type on consuming tenants. - -#### Access on behalf of a user - -SharePoint Embedded operations [on behalf of a user](/graph/auth-v2-user) support two Microsoft Graph permissions: - -- **[FileStorageContainer.Selected](/graph/permissions-reference#filestoragecontainerselected)** to allow an application to access containers on behalf of the signed-in user. - - In addition to your application receiving consent for the permission on a consuming tenant, the user that it's acting on behalf of is required to have [user permissions](#user-permissions). The effective permissions that the application has are the intersection of the application permissions and the user permissions when acting on behalf of a user. -- **[FileStorageContainer.Manage.All](/graph/permissions-reference#filestoragecontainermanageall)** to allow an application to utilize administration capabilities on all containers of all governable container types within the consuming tenant on behalf of an administrator user. The administration capabilities include the ability to enumerate, delete, restore, purge, and update containers, and manage their permissions. - -> [!IMPORTANT] -> -> - Using SharePoint Embedded on behalf of a user is the recommended approach. This type of access enhances the security of your application. It also improves the auditability of actions performed by your application. -> - Using a confidential client application is the recommended approach to ensure your application remains in control of actions taken on behalf of a user. A public client application may expose user tokens to the end user, which may lead to actions being taken outside of your application's control. See [Public client and confidential client applications](/entra/identity-platform/msal-client-applications) to learn more. - -#### Access without a user - -SharePoint Embedded operations [without a user](/graph/auth-v2-service) require applications to receive consent for Microsoft Graph **[FileStorageContainer.Selected](/graph/permissions-reference#filestoragecontainerselected)** application permission. This permission requires admin consent on the consuming tenant. - -> [!NOTE] -> An administrator on the consuming tenant must consent to your application's request for permissions. To learn more, see [Grant admin consent](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal). - -### Container type application permissions - -SharePoint Embedded applications need to be granted container type application permissions by the owning application before they can access containers of the given container type. Container type application permissions are granted to applications via [container type registration](../getting-started/register-api-documentation.md) in a consuming tenant. - -| Permission | Description | -| ------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| **None** | Has no permissions to any containers or content of this container type. | -| **ReadContent** | Can read the content of containers of this container type. | -| **WriteContent** | Can write content to containers for this container type. This can't be granted without the ReadContent permission. | -| **Create** | Can create containers of this container type. | -| **Delete** | Can delete containers of this container type. | -| **Read** | Can read the metadata of containers of this container type. | -| **Write** | Can update the metadata of containers of this container type. | -| **EnumeratePermissions** | Can enumerate the members of a container and their roles for containers of this container type. | -| **AddPermissions** | Can add members to the container for containers of this container type. | -| **UpdatePermissions** | Can update (change roles of) existing memberships in the container for containers of this container type. | -| **DeletePermissions** | Can delete other members (but not self) from the container for containers of this container type. | -| **DeleteOwnPermission** | Can remove own membership from the container for containers of this container type. | -| **ManagePermissions** | Can add, remove (including self), or update members in the container roles for containers of this container type. | -| **ManageContent** | Can manage the content of the container (WriteContent plus discard checkout permission in app-only mode). | -| **Full** | Has all permissions for containers of this container type. | - -> [!NOTE] -> The combination of Microsoft Graph permissions and container type application permissions encompasses the client authorization for applications. - -### User permissions - -Users are granted different access levels to SharePoint Embedded based on the scenario: - -- [Accessing content in containers](#accessing-content-in-containers) -- [Managing SharePoint Embedded applications installed in the consuming tenant](#managing-sharepoint-embedded-applications-installed-in-the-consuming-tenant) -- [Managing SharePoint Embedded applications created in the owning tenant](#managing-sharepoint-embedded-applications-created-in-the-owning-tenant) - -#### Accessing content in containers - -There are two ways in which users can gain access to content in containers: - -- [Container permissions](#container-permissions) -- [Access to specific items in a container](#access-to-specific-items-in-a-container) - -##### Container permissions - -Users can be assigned container permissions in two ways: - -- Direct membership. A user is directly added as a member of a container with specific permissions. -- Transitive membership. A user is a member of a [Microsoft 365 group](/microsoft-365/admin/create-groups/office-365-groups) that is itself a member of a container with specific permissions. - -Membership to a container [grants users container permissions](/graph/api/filestoragecontainer-post-permissions). These permissions define the access level that users have on a given container. Container permissions only apply to access on behalf of a user and not to access without a user. A SharePoint Embedded application accessing containers without a user gets the full access defined in its [container type application permissions](#container-type-application-permissions) instead. - -> [!IMPORTANT] -> The calling user creating a new container via delegated calls is automatically assigned the Owner role. - -| Permission | Description | -| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Reader** | This role allows the user to read the properties and the contents of the container. | -| **Writer** | This role has all the permissions a Reader has, plus the permission to create, update, and delete content inside the container, and to update applicable container properties. | -| **Manager** | This role has all the permissions a Writer has, plus the permission to manage membership of the container. | -| **Owner** | This role has all the permissions a Manager has, plus the permission to delete containers and restore deleted containers. | - -##### Access to specific items in a container - -Specific items in a container can be shared with users via the [driveItem invite](/graph/api/driveitem-invite) or the [permission create](/graph/api/driveitem-post-permissions) endpoints. Sharing grants users access to the specific items, but it doesn't grant them access to the container itself or any other item in the container. For information on the access levels supported, see [permission roles](/graph/api/resources/permission#roles-property-values). - -> [!NOTE] -> For more information about sharing, see [Sharing and permissions in SharePoint Embedded](./sharing-and-perm.md). - -#### Managing SharePoint Embedded applications installed in the consuming tenant - -[SharePoint Embedded Administrators](/entra/identity/role-based-access-control/permissions-reference#sharepoint-embedded-administrator) can manage all SharePoint Embedded applications installed in the **consuming** tenant. To learn more about managing installed applications in the consuming tenant, see [Manage SharePoint Embedded applications installed in the consuming tenant](../administration/consuming-tenant-admin/cta.md). - -> [!NOTE] -> [Global Administrators](/entra/identity/role-based-access-control/permissions-reference#global-administrator) have all the permissions that SharePoint Embedded Administrators have and more, so they can also manage SharePoint Embedded applications installed in the consuming tenant. However, you should assign the least privileged role necessary to perform administrative tasks, so using the SharePoint Embedded Administrator role is recommended for managing SharePoint Embedded applications. - -#### Managing SharePoint Embedded applications created in the owning tenant - -[SharePoint Embedded Administrators](/entra/identity/role-based-access-control/permissions-reference#sharepoint-embedded-administrator) can manage all SharePoint Embedded applications created in the **owning** tenant. Additionally, any Microsoft Entra user that isn't an external identity can be assigned as an owner of a [container type](/graph/api/resources/filestoragecontainertype). Container type owners can manage that specific container type. To learn more about managing applications created in the owning tenant, see [SharePoint Embedded developer administrator](../administration/developer-admin/dev-admin.md). - -#### Container type owner capabilities - -Container type owners are managed through the [permissions](/graph/api/filestoragecontainertype-post-permissions) navigation property on the [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource. Each permission entry has a role of `owner` and identifies the user via `grantedToV2`. Owners can be managed in the following ways: - -- **Automatic assignment**: The user who [creates a container type](/graph/api/filestorage-post-containertypes) is automatically assigned as an owner. -- **Add owners**: Use [`POST /containerTypes/{id}/permissions`](/graph/api/filestoragecontainertype-post-permissions) to add up to three owners per container type. -- **Remove owners**: Use [`DELETE /containerTypes/{id}/permissions/{id}`](/graph/api/filestoragecontainertype-delete-permissions) to remove an owner. -- **Read owners**: Use [`GET /containerTypes/{id}?$expand=permissions`](/graph/api/filestoragecontainertype-get) or [`GET /containerTypes/{id}/permissions`](/graph/api/filestoragecontainertype-list-permissions) to retrieve the container type owners. - -Container type owners can do the following operations on the **owning tenant** when using an application with **[FileStorageContainerType.Manage.All](/graph/permissions-reference#filestoragecontainertypemanageall)** in delegated mode: - -- **Create, read, update, and delete** the container type they own. Non-admin owners can manage only container types on which they have a permission, and the calling app must match the owning application. -- **Add and remove** other owners on the container type they own (via the permissions endpoint). -- **Create containers** of the container type they own, as long as the call is delegated (not app-only). - -> [!NOTE] -> The user who creates a container type is automatically assigned as an owner. External identities (guest users) can't be assigned as container type owners and can't perform owner operations. - -> [!IMPORTANT] -> Container type owners exist only in the owning tenant. When a container type is registered in a consuming tenant, the owner information is **not** propagated to that tenant. For example, if Contoso creates a container type with owners and registers it in Fabrikam, those Contoso users don't exist in Fabrikam's tenant and have no owner capabilities there. - -> [!IMPORTANT] -> Container type owner capabilities are user permissions. The effective access is the intersection of the application permissions (Microsoft Graph permissions) and the user permissions (owner role). The application must have sufficient Graph permissions for the intersection to grant the desired access. - -### Exceptional access patterns - -Currently, there are three types of operations with exceptional access patterns: - -- [Operations involving searching SharePoint Embedded content](#operations-involving-searching-sharepoint-embedded-content) -- [Operations that require a user license](#operations-that-require-a-user-license) -- [Operations that involve administrative actions on containers](#operations-that-involve-administrative-actions-on-containers) - -> [!IMPORTANT] -> Consider the repercussions of these exceptional access patterns on how your application and other applications can access SharePoint Embedded content in your container type. - -#### Operations involving searching SharePoint Embedded content - -This section refers only to the search scenarios in [Search Content](./content-experiences/search-content.md), and not the enumeration scenarios. - -To use [Microsoft Search](/microsoftsearch/overview-microsoft-search) on SharePoint Embedded content, you must request the Delegated **[Files.Read.All](/graph/permissions-reference#filesreadall)** Microsoft Graph permission on top of **[FileStorageContainer.Selected](/graph/permissions-reference#filestoragecontainerselected)**, normally used for SharePoint Embedded access. During the Preview stage of this feature, the **[Files.Read.All](/graph/permissions-reference#filesreadall)** application permission grants applications access to search capabilities on all SharePoint Embedded content. - -> [!NOTE] -> Microsoft Search support for SharePoint Embedded content is in Preview and is subject to change. The access requirements for Microsoft Search on SharePoint Embedded content will align with the SharePoint Embedded authorization model in the future. Stay tuned. - -#### Operations that require a user license - -SharePoint Embedded is designed to work without the need for end users to have any kind of Microsoft 365 product licenses assigned to them. However, there are certain operations that don't abide by this principle yet. - -##### List containers - -The [List containers](/graph/api/filestorage-list-containers?tabs=http) operation returns a **403 Forbidden** response code if called on behalf of a user who doesn't have a OneDrive. There are plans to remove this dependency soon. This dependency doesn't apply to the List containers operation when called without a user context (app-only mode). - -##### Mention users in Office documents - -The common [Office experience](./content-experiences/office-experience.md) includes reviewing documents and adding comments to those documents. For users to show up in the @mentions people picker, they need to have a Microsoft 365 license assigned to them. - -#### Operations that involve administrative actions on containers - -The **[FileStorageContainer.Manage.All](/graph/permissions-reference#filestoragecontainermanageall)** permission requires the signed-in user to be a SharePoint Embedded Administrator or Global Administrator. - -If the user isn't an administrator, **[FileStorageContainer.Manage.All](/graph/permissions-reference#filestoragecontainermanageall)** doesn't grant the application any permissions: -- If only **[FileStorageContainer.Manage.All](/graph/permissions-reference#filestoragecontainermanageall)** is granted, the application will get an access denied error when trying to access the container on behalf of the non-admin user. -- If both **[FileStorageContainer.Manage.All](/graph/permissions-reference#filestoragecontainermanageall)** and **[FileStorageContainer.Selected](/graph/permissions-reference#filestoragecontainerselected)** are granted, **[FileStorageContainer.Manage.All](/graph/permissions-reference#filestoragecontainermanageall)** will be ignored. - -## What's next - -Here are some actions you can take next: - -1. Configure your SharePoint Embedded [application manifest](/entra/identity-platform/reference-app-manifest#requiredresourceaccess-attribute) (you can use [Microsoft Entra PowerShell](/powershell/entra-powershell/manage-apps#assign-permissions-to-an-app) or the [Azure CLI](/cli/azure/ad/app/permission#az-ad-app-permission-add)) to request the required permissions on your _owning_ tenant: - - - Add the Microsoft Graph permission **[FileStorageContainerType.Manage.All](/graph/permissions-reference#filestoragecontainertypemanageall)** to create container types on the _owning_ tenant: - - **resourceAppId**: `00000003-0000-0000-c000-000000000000` - - **type**: `Scope` - - **ID**: `8e6ec84c-5fcd-4cc7-ac8a-2296efc0ed9b` - - > [!NOTE] - > **[FileStorageContainerType.Manage.All](/graph/permissions-reference#filestoragecontainertypemanageall)** is a delegated permission and doesn't require admin consent. Any non-guest user in the owning tenant can consent to it and use it to create a container type; that user is then automatically added as an [owner of the container type](#container-type-owner-capabilities). - -1. [Create a new container type](../getting-started/containertypes.md) on the _owning_ tenant. -1. Reconfigure your SharePoint Embedded [application manifest](/entra/identity-platform/reference-app-manifest#requiredresourceaccess-attribute) to request only the required permissions on consuming tenants: - - - Remove the Microsoft Graph permission **[FileStorageContainerType.Manage.All](/graph/permissions-reference#filestoragecontainertypemanageall)** as this is only needed to create the container type on the _owning_ tenant: - - **resourceAppId**: `00000003-0000-0000-c000-000000000000` - - **type**: `Scope` - - **ID**: `8e6ec84c-5fcd-4cc7-ac8a-2296efc0ed9b` - - > [!NOTE] - > After creating the container type on the _owning_ tenant, you should remove the **[FileStorageContainerType.Manage.All](/graph/permissions-reference#filestoragecontainertypemanageall)** permission from your application's manifest. - > Your application DOES NOT need this on _consuming_ tenants, only on the _owning_ tenant to create the container type. Failure to remove this permission from the application's manifest will lead to your customers being concerned about the excessive permissions requested by your application. - - - Add the Microsoft Graph permission **[FileStorageContainerTypeReg.Selected](/graph/permissions-reference#filestoragecontainertyperegselected)** to register the container type on _consuming_ tenants: - - **resourceAppId**: `00000003-0000-0000-c000-000000000000` - - **type**: `Role` - - **ID**: `2dcc6599-bd30-442b-8f11-90f88ad441dc` - - Add the Microsoft Graph permission **[FileStorageContainer.Selected](/graph/permissions-reference#filestoragecontainerselected)** to access containers on _consuming_ tenants on behalf of users: - - **resourceAppId**: `00000003-0000-0000-c000-000000000000` - - **type**: `Scope` - - **ID**: `085ca537-6565-41c2-aca7-db852babc212` - - Optionally add the Microsoft Graph permission **[FileStorageContainer.Selected](/graph/permissions-reference#filestoragecontainerselected)** to access the container on _consuming_ tenants without a user: - - **resourceAppId**: `00000003-0000-0000-c000-000000000000` - - **type**: `Role` - - **ID**: `40dc41bc-0f7e-42ff-89bd-d9516947e474` - -1. [Grant admin consent](/entra/identity-platform/v2-admin-consent) to your application on a _consuming_ tenant (which can be the same as the owning tenant). -1. [Register the container type](../getting-started/register-api-documentation.md) on the _consuming_ tenant. -1. [Create a container](/graph/api/filestoragecontainer-post) on the _consuming_ tenant diff --git a/docs/embedded/development/content-experiences/configure-redirect-behavior.md b/docs/embedded/development/content-experiences/configure-redirect-behavior.md deleted file mode 100644 index 6f0be236b4..0000000000 --- a/docs/embedded/development/content-experiences/configure-redirect-behavior.md +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Configuring redirect behavior -description: Configure the urlTemplate property on a SharePoint Embedded container type to control how Microsoft 365 routes users to container content from Microsoft 365 search results and from the driveItem.webUrl property returned by Microsoft Graph. -ms.date: 07/09/2026 -ms.localizationpriority: high ---- - -# Configuring redirect behavior - -The `urlTemplate` property on a SharePoint Embedded [container type](../../getting-started/containertypes.md) governs where Microsoft 365 sends users when they open files in your containers. It controls the destination on two surfaces: - -- Microsoft 365 search results. -- The `driveItem.webUrl` property is used to open an item in a browser. - -For files without a supported viewer (the Office web viewer or the embedded viewer), both surfaces use `urlTemplate` to route users to your application. This article explains how Microsoft 365 chooses a destination and how to configure `urlTemplate`. - -## Prerequisites - -Before you configure `urlTemplate`, ensure you have: - -- A SharePoint Embedded [container type](../../getting-started/containertypes.md) that you own. -- The delegated Microsoft Graph permission scope(s) listed in the **Permissions** section of [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update). Application permissions aren't supported. - -> [!NOTE] -> Discoverability is separate from redirect behavior: you don't need to enable it to configure or use `urlTemplate`. The [`isDiscoverabilityEnabled`](/graph/api/resources/filestoragecontainertypesettings) setting is **disabled by default** and controls only whether your content is surfaced in the broader Microsoft 365 experience, such as **My Activity**, office.com, OneDrive.com, other intelligent file discovery features, and Copilot grounding. Leaving it disabled doesn't prevent search: applications can still query content in non-discoverable containers with the [Microsoft Search API](search-content) by setting `sharePointOneDriveOptions.includeHiddenContent` to `true`. To learn how discoverability affects Microsoft 365 surfaces, see [Content discovery in Microsoft 365](user-experiences-overview.md#content-discovery-in-microsoft-365). - -## How Microsoft 365 chooses a destination - -Microsoft 365 chooses a destination based on the file type. `urlTemplate` applies only to files without a supported viewer (the Office web viewer or the embedded viewer). This file-type scope is the same today and after the `webUrl` rollout described in [driveItem.webUrl behavior](#driveitemweburl-behavior). - -If `urlTemplate` isn't configured, Microsoft 365 sends users who open files without a supported viewer to a generic [Microsoft help page](https://aka.ms/spe-openfilelocation). The help page explains that the file is stored in a third-party application and directs the user to open it there. - -### How file types are handled - -The destination for a file depends on the file type and whether `urlTemplate` is set: - -| File type | `urlTemplate` set? | Behavior when opened | -| --- | --- | --- | -| Files with a supported Office web viewer (Word, Excel, PowerPoint, Visio, OneNote, and others) | Either | Opens in the corresponding Office web viewer | -| PDF | Either | Opens in the embedded viewer | -| All other types | Yes | Redirected to your application through `urlTemplate` | -| All other types | No | Redirected to a [Microsoft help page](https://aka.ms/spe-openfilelocation) | - -### `driveItem.webUrl` behavior - -For SharePoint Embedded items, the `driveItem.webUrl` property returned by Microsoft Graph reflects the same redirect behavior described above: - -- For files without a supported viewer, when `urlTemplate` is set: `webUrl` returns the resolved `urlTemplate` redirect URL. -- For files without a supported viewer, when `urlTemplate` isn't set: `webUrl` returns the `aka.ms` help link. -- For files with a supported viewer: `webUrl` returns the viewer URL. - -> [!IMPORTANT] -> `driveItem.webUrl` will soon reflect the redirect behavior described above. If your application currently relies on `webUrl` returning the file's canonical URL, switch to the [`webDavUrl`](/graph/api/resources/driveitem) property, which returns the canonical URL today and continues to do so after the rollout. - -## Configure `urlTemplate` - -Set `urlTemplate` on your container type by calling the [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) API (`PATCH /storage/fileStorage/containerTypes/{id}`) and setting `settings.urlTemplate`. The value applies to every tenant that registers the container type. This API requires the delegated permission scope(s) listed in its **Permissions** section; application permissions aren't supported. - -The value is a URL with placeholder tokens that Microsoft 365 resolves to actual item identifiers when a user opens an item. - -The SharePoint Embedded PowerShell cmdlet exposes the same setting as a "redirect URI" parameter. The PowerShell "redirect URI" is the `urlTemplate` value and is unrelated to the app-registration redirect URI used for authentication. - -### Requirements - -The `urlTemplate` value must: - -- Be a valid absolute URL that uses the `https://` scheme. HTTP URLs aren't accepted. -- Not resolve to a loopback address, such as `localhost` or `127.0.0.1`. - -> [!IMPORTANT] -> If the URL fails validation, `urlTemplate` is silently set to `null` without returning an error. To confirm your configuration, see [Verify your configuration](#verify-your-configuration). - -### URL template syntax - -```text -https://app.contoso.com/open?tenant={tenant-id}&drive={drive-id}&item={item-id} -``` - -Each placeholder token uses curly braces. When a user opens an item, Microsoft 365 resolves each token to a value that corresponds to the item, URL-encodes the value, and substitutes it in the template. - -If Microsoft 365 can't resolve a token, it drops the entire query parameter that contains that token from the resolved URL (for example, `&folder={folder-id}` is dropped entirely rather than emitted as `&folder=`). The exceptions are `{tenant-id}` and `{drive-id}`: when Microsoft 365 can't resolve them, their query parameters remain in the URL with the token left as literal text (for example, `&tenant={tenant-id}`). - -### Supported tokens - -| Token | Value your application receives | -| --- | --- | -| `{tenant-id}` | GUID of the consuming tenant. Used to make tenant-scoped Microsoft Graph API calls. | -| `{drive-id}` | Drive ID of the container. Use it with Microsoft Graph APIs to reference the container. | -| `{folder-id}` | Item ID of the file's immediate parent folder. Item IDs aren't GUIDs. If the file is at the root of the container, Microsoft 365 drops the entire query parameter that contains `{folder-id}` from the redirect URL rather than passing it with an empty value. | -| `{item-id}` | Item ID of the driveItem. Item IDs aren't GUIDs. | -| `{site-domain}` | The hostname of the container's site (for example, contoso.sharepoint.com). | -| `{list-id}` | The GUID identifier of the document library that backs the container. | -| `{site-url}` | The container site's full web URL without the scheme (authority + path + query + fragment). For example: `contoso.sharepoint.com/contentstorage/CSP_6fa4ae51-5276-4437-b4f5-9b42388a9e1c` | - -#### Advanced tokens - -The following tokens cover specialized scenarios. Most applications can rely on the [supported tokens](#supported-tokens) above. - -| Token | Value your application receives | -| --- | --- | -| `{ownershipType}` | The container's ownership type: TenantOwned, UserOwned, GroupOwned, or ApplicationOwned. | -| `{itemname-guid}` | The GUID parsed from the item's filename, if the file is named `.extension`. Empty if the filename isn't a GUID. | -| `{folderpath-guids}` | Comma-separated GUIDs found in the folder path segments leading to the item. Path segments split on / or _ are each checked for a valid GUID. | - -### Example - -If your container type has `urlTemplate` set to: - -```text -https://app.contoso.com/open?t={tenant-id}&d={drive-id}&i={item-id} -``` - -When a user opens a `.txt` file, Microsoft 365 redirects the user to a URL like the following: - -```text -https://app.contoso.com/open?t=72f988bf-86f1-41af-91ab-2d7cd011db47&d=b%21abc123def456ghi789jkl0&i=01ABC23DEF45GHI67JKL890 -``` - -Your application receives the tenant ID, drive ID, and item ID as the values of whatever query-parameter names you defined in the template. The parameter names (`t`, `d`, and `i` in this example) are arbitrary and developer-defined; Microsoft 365 doesn't require any specific names. Use the parsed values to retrieve and open the file through the Microsoft Graph API. - -### Update `urlTemplate` with Microsoft Graph - -Use the PATCH endpoint [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) to update `urlTemplate`: - -```http -PATCH https://graph.microsoft.com/v1.0/storage/fileStorage/containerTypes/{containerTypeId} -Content-Type: application/json - -{ - "settings": { - "urlTemplate": "https://app.contoso.com/open?t={tenant-id}&d={drive-id}&i={item-id}" - } -} -``` - -To clear `urlTemplate`, set the property to `null` in the PATCH request body. - -### Verify your configuration - -Because validation failures are silent, confirm your update by reading the value back. Call [Get fileStorageContainerType](/graph/api/filestoragecontainertype-get) with the `$select` query option to retrieve the current `urlTemplate` value: - -```http -GET https://graph.microsoft.com/v1.0/storage/fileStorage/containerTypes/{containerTypeId}?$select=settings -``` - -If the response shows `urlTemplate` as `null`, the URL you submitted didn't meet the [requirements](#requirements). Update the value and try again. - -## What your application does when called - -When Microsoft 365 routes a user to your application, your application must: - -1. Authenticate the user. The user might not have an active session in your app. Microsoft 365 doesn't pass authentication context in the redirect URL. -1. Parse the token values from the redirect URL query string. -1. Call Microsoft Graph with the drive ID and item ID values from the query string to retrieve the [driveItem](/graph/api/resources/driveitem) and open the file in your application's UI. - -For information about calling Microsoft Graph against a consuming tenant's containers, see [Authentication and authorization](../auth.md). - -## Troubleshooting - -| Symptom | Possible cause | -| --- | --- | -| Your files don't appear in Microsoft 365 search results. | The container type's `isDiscoverabilityEnabled` setting is `false`. Search indexing can also take time after enablement. | -| Users land on the Microsoft help page instead of your application. | `urlTemplate` is `null` (likely because the URL failed validation), or the file type opens in a supported viewer (the Office web viewer or the embedded viewer) instead of redirecting. | -| A token appears as literal text (such as `{tenant-id}`) in the redirect URL. | Microsoft 365 couldn't resolve the token for the current item. Verify the token name matches a [supported token](#supported-tokens) or a [custom property](/graph/api/filestoragecontainer-post-customproperty). | -| Updates to `urlTemplate` don't appear in search results. | Search index updates aren't instantaneous. See [Limitations](#limitations). | - -## Limitations - -### Updates to `urlTemplate` aren't instantaneous - -Microsoft 365 stores the destination URL for each file in the search index. If you configure or update `urlTemplate` after files are indexed, search results continue to use the previous destination until Microsoft 365 updates the index. Updates to a container type's settings can take up to 24 hours to reach existing container type registrations. - -### Search results for already-indexed content require a recrawl - -Setting or updating `urlTemplate` takes effect immediately for Microsoft Graph API responses. However, search results for content that's already indexed continue to use the previously indexed destination until Microsoft 365 recrawls and reindexes that content. Today, there's no self-serve mechanism to trigger a recrawl. - -### `urlTemplate` is scoped to the container type - -The template applies to all container instances of the corresponding container type across all consuming tenants. Use the `{tenant-id}` token to route users to the correct tenant within your application. - -## Related content - -- [Container types](../../getting-started/containertypes.md) -- [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) -- [fileStorageContainerTypeSettings](/graph/api/resources/filestoragecontainertypesettings) -- [Add custom properties to a fileStorageContainer](/graph/api/filestoragecontainer-post-customproperty) -- [Authentication and authorization](../auth.md) diff --git a/docs/embedded/development/content-experiences/office-experience.md b/docs/embedded/development/content-experiences/office-experience.md deleted file mode 100644 index 03f75af649..0000000000 --- a/docs/embedded/development/content-experiences/office-experience.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Office Experiences -description: Overview of Office experiences with SharePoint Embedded content -ms.date: 06/18/2025 -ms.localizationpriority: high ---- - -# Office file experiences for SharePoint Embedded - -Office file experiences for SharePoint Embedded platform will work in a similar manner to Microsoft 365 platform. - -## Opening Office documents from SharePoint Embedded - -Office documents from SharePoint Embedded apps can be opened for viewing and editing in Office web or in the Office application for a richer viewing and editing experience. AutoSave feature saves your files automatically as your user's work and is enabled for each Word, Excel, and PowerPoint file stored in your SharePoint Embedded Application Apps. - -Documents stored in an archived container can’t be viewed or accessed. Applications must handle the archived state of the container by displaying an appropriate error message and guiding end users on the next steps to regain access, such as reactivating the container. - -## View or restore a previous version of an Office document from SharePoint Embedded - -Versioning is automatically enabled on each Word, Excel, and PowerPoint file stored in your SharePoint Embedded Apps, that helps your users to see what changes have been made in a file, compare different versions, or restore the version you want. This is incredibly important to your users if a mistake was made, a previous version is preferred, or in multi-user coauthoring scenarios when your users are collaborating with others and someone makes changes your users didn't want in a file. - -## Collaborating on Office documents from SharePoint Embedded - -It's simple for your users to collaborate on your SharePoint Embedded Application's Office documents – they can **Share documents** with specific peers or with people outside your organization by Creating a shareable link to use wherever needed, Send an email invitation or @mention in comments to tag someone for feedback and, **Collaborate in real time** by co-authoring in Office with SharePoint Embedded Applications. - -> [!NOTE] -> Mentions require target users to [have an Microsoft 365 license assigned to them](../auth.md#mention-users-in-office-documents). -> -> Mentions are restricted to people inside the consuming tenant's organization. Mentions exclude guests and users from other tenants in a multitenant setting. - -### Share your documents - -#### Send an email invite - -Share your SharePoint Embedded documents by sending an email invitation to specific people: - -- Select Share, start typing the email addresses or contact names of people you want to share with. When you begin to enter info in the box, you can also choose a contact from the list that appears. -- Include a message if you want and hit Send. - -#### Create a shareable link - -Creating a shareable link makes it simple to share your SharePoint Embedded document in an email, document, or IM. - -- Select Share, Copy Link, and Paste the link wherever you want -- Change any permissions of the link if needed - -#### Co-Author - -If you want others to edit with you, you can easily share files and collaborate with trusted peers for a fresh perspective. When you need help with a presentation, you can invite trusted peers to help you get it into shape. This means that when you work on a file, they can as well. You’ll see their changes and they’ll see yours—as you make them! Use @mentions in comments to get someone's attention. - -- See who else is in the document and where they're working. -- A presence indicator shows where someone is making changes. See any changes right as they're being made. -- See changes made by others and see what's happened while you were away. - -#### Levels of sharing access - -There are different options for sharing SharePoint Embedded Application Office Documents from: - -| If you want to … | Sharing Setting to Set | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Allow Anyone who receives the link access to SharePoint Embedded Application File | **Anyone**  gives access to anyone who receives this link, whether they receive it directly from you or are forwarded from someone else. This might include people outside of your organization. | -| Allow anyone in your organization to access to your SharePoint Embedded Application File | **People in \** gives anyone in your organization who has the link access to the file, whether they receive it directly from you or forwarded from someone else. | -| Secure your SharePoint Embedded Application docs only to specific people. | When you need to prevent recipients from forwarding a shared link, use the **Specific People**  permission. **Specific people**  gives access only to the people you specify, although other people might already have access. If people forward the sharing invitation, only people who already have access to the item will be able to use the link. | -| Reshare the link with specific people | **People with existing access**  can be used by people who already have access to the document or folder. It doesn't change the permissions on the item. Use this if you just want to send a link to somebody who already has access. | - -## Breadcrumb properties on Office documents from SharePoint Embedded - -Breadcrumb properties are used by Office clients to display breadcrumb-style elements within Office client UI that aid your users in associating Office files with your Application. - -> [!NOTE] -> We recommend specifying 'Current Channel' to take advantage of Breadcrumb patterns and future enhancements to Office Apps. Learn more about [specifying update channels for Office Apps](/deployoffice/updates/overview-update-channels). - -Breadcrumb patterns for SharePoint Embedded Application Apps are constructed from container properties configured for your Apps. The following diagram maps the container properties to breadcrumb presentation in Office clients: - -![Screenshot of breadcrumb pattern in SharePoint Embedded Applications](../../images/office2.png) - -Here are few examples of SharePoint Embedded Application breadcrumb display within Office client experiences. - -![Screenshot of breadcrumb options in SharePoint Embedded Applications.](../../images/office1.png) diff --git a/docs/embedded/development/content-experiences/search-content.md b/docs/embedded/development/content-experiences/search-content.md deleted file mode 100644 index 98afb1bd1a..0000000000 --- a/docs/embedded/development/content-experiences/search-content.md +++ /dev/null @@ -1,832 +0,0 @@ ---- -title: Search SharePoint Embedded containers and content -description: Overview on how to search SharePoint Embedded containers and content -ms.date: 03/28/2025 -ms.localizationpriority: high ---- - -# Search SharePoint Embedded content - -Use the [Microsoft Search](/microsoftsearch/overview-microsoft-search) API in Microsoft Graph to search SharePoint Embedded containers and content. The Search API lets you scope the container type and file type for your queries by specifying the corresponding parameter in the request body. This article describes some examples. - -> [!NOTE] -> -> 1. Searching SharePoint Embedded content is in Preview stage and is subject to change. Please refer to the [exceptional access pattern](../auth.md#operations-involving-searching-sharepoint-embedded-content) that describes its current permission requirements. -> 1. Search API only supports Delegated permissions. -> 1. Your search requests must specify and set the `includeHiddenContent` parameter if your application has opted out of content discoverability in Microsoft 365. Learn more about [SharePoint Embedded content discoverability](./user-experiences-overview.md). - -## Example 1: Search containers by container type - -This example queries all containers by the specified container type with the SharePoint Embedded application opted out from content discoverability on Microsoft 365. The response includes all container instances (`drive`) of the specified container type in the tenant: - -### Request - -```HTTP -POST /search/query -Content-Type: application/json - -{ - "requests": [ - { - "entityTypes": [ - "drive" - ], - "query": { - "queryString": "ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae" - }, - "sharePointOneDriveOptions": { - "includeHiddenContent": true - } - } - ] -} -``` - -### Response - -```HTTP -HTTP/1.1 200 OK -Content-type: application/json - -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)", - "value": [ - { - "searchTerms": [], - "hitsContainers": [ - { - "hits": [ - { - "hitId": "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0", - "rank": 1, - "summary": "Everything about Contoso", - "resource": { - "@odata.type": "#microsoft.graph.drive", - "id": "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0", - "createdBy": { - "user": { - "displayName": "Dylan Williams" - } - }, - "lastModifiedDateTime": "2024-01-18T19:45:25Z", - "name": "AllItems.aspx", - "parentReference": { - "sharepointIds": { - "listId": "26d6a67d-bd07-4646-9c5b-85b0e519d6f4" - }, - "siteId": "contoso.sharepoint.com,05031a50-e9c7-474c-889e-7cf44659a5b2,e00b849e-3cec-4ade-8f7b-96d1f0f598fa" - }, - "webUrl": "https://contoso.sharepoint.com/contentstorage/CSP_05031a50-e9c7-474c-889e-7cf44659a5b2/Document Library/Forms/AllItems.aspx" - } - } - ], - "total": 1, - "moreResultsAvailable": false - } - ] - } - ] -} -``` - -## Example 2: Search containers by title - -This example queries all containers by a specified container display name and the SharePoint Embedded application didn't opt out from content discoverability on Microsoft 365. The response includes all container instances in the tenant that match the criteria: - -### Request - -```HTTP -POST /search/query -Content-Type: application/json - -{ - "requests": [ - { - "entityTypes": [ - "drive" - ], - "query": { - "queryString": "Title:'contoso' AND ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae" - } - } - ] -} -``` - -### Response - -```HTTP -HTTP/1.1 200 OK -Content-type: application/json - -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)", - "value": [ - { - "searchTerms": [ - "contoso" - ], - "hitsContainers": [ - { - "hits": [ - { - "hitId": "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0", - "rank": 1, - "summary": "Everything about Contoso", - "resource": { - "@odata.type": "#microsoft.graph.drive", - "id": "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0", - "createdBy": { - "user": { - "displayName": "Dylan Williams" - } - }, - "lastModifiedDateTime": "2024-01-18T19:45:25Z", - "name": "AllItems.aspx", - "parentReference": { - "sharepointIds": { - "listId": "26d6a67d-bd07-4646-9c5b-85b0e519d6f4" - }, - "siteId": "contoso.sharepoint.com,05031a50-e9c7-474c-889e-7cf44659a5b2,e00b849e-3cec-4ade-8f7b-96d1f0f598fa" - }, - "webUrl": "https://contoso.sharepoint.com/contentstorage/CSP_05031a50-e9c7-474c-889e-7cf44659a5b2/Document Library/Forms/AllItems.aspx" - } - } - ], - "total": 1, - "moreResultsAvailable": false - } - ] - } - ] -} -``` - -## Example 3: Search containers by container description - -This example queries all containers by the specified container type and container description, with the SharePoint Embedded application opted out from content discoverability on Microsoft 365. The response includes all container instances in the tenant that match the criteria: - -### Request - -```HTTP -POST /search/query -Content-Type: application/json - -{ - "requests": [ - { - "entityTypes": [ - "drive" - ], - "query": { - "queryString": "Description:'Everything' AND ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae" - }, - "sharePointOneDriveOptions": { - "includeHiddenContent": true - } - } - ] -} -``` - -### Response - -```HTTP -HTTP/1.1 200 OK -Content-type: application/json - -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)", - "value": [ - { - "searchTerms": [], - "hitsContainers": [ - { - "hits": [ - { - "hitId": "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0", - "rank": 1, - "summary": "Everything about Contoso", - "resource": { - "@odata.type": "#microsoft.graph.drive", - "id": "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0", - "createdBy": { - "user": { - "displayName": "Dylan Williams" - } - }, - "lastModifiedDateTime": "2024-01-18T19:45:25Z", - "name": "AllItems.aspx", - "parentReference": { - "sharepointIds": { - "listId": "26d6a67d-bd07-4646-9c5b-85b0e519d6f4" - }, - "siteId": "contoso.sharepoint.com,05031a50-e9c7-474c-889e-7cf44659a5b2,e00b849e-3cec-4ade-8f7b-96d1f0f598fa" - }, - "webUrl": "https://contoso.sharepoint.com/contentstorage/CSP_05031a50-e9c7-474c-889e-7cf44659a5b2/Document Library/Forms/AllItems.aspx" - } - } - ], - "total": 1, - "moreResultsAvailable": false - } - ] - } - ] -} -``` - -## Example 4: Search for content by title in a specific container - -This example queries all the content by a specific title in a specific container instance, with the SharePoint Embedded application opted out from content discoverability on Microsoft 365. The response includes all `driveItems` in the specific container instance that match the criteria: - -### Request - -```HTTP -POST /search/query -Content-Type: application/json - -{ - "requests": [ - { - "entityTypes": [ - "driveItem" - ], - "query": { - "queryString": "Title:'contoso' AND ContainerId:b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0" - }, - "sharePointOneDriveOptions": { - "includeHiddenContent": true - } - } - ] -} -``` - -### Response - -```HTTP -HTTP/1.1 200 OK -Content-type: application/json - -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)", - "value": [ - { - "searchTerms": [ - "contoso", - "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0" - ], - "hitsContainers": [ - { - "hits": [ - { - "hitId": "01SHAK4OWIBDXV4NG2JVFLSGUXVKZ5VF5E", - "rank": 1, - "summary": "Contoso Detailed Design Contoso Product Specification", - "resource": { - "@odata.type": "#microsoft.graph.driveItem", - "size": 56, - "fileSystemInfo": { - "createdDateTime": "2024-01-18T19:46:48Z", - "lastModifiedDateTime": "2024-01-18T19:46:48Z" - }, - "listItem": { - "@odata.type": "#microsoft.graph.listItem", - "fields": {}, - "id": "5eef08c8-da34-4a4d-b91a-97aab3da97a4" - }, - "id": "01SHAK4OWIBDXV4NG2JVFLSGUXVKZ5VF5E", - "createdBy": { - "user": { - "displayName": "Dylan Williams", - "email": "dywilliams@contoso.onmicrosoft.com" - } - }, - "createdDateTime": "2024-01-18T19:46:48Z", - "lastModifiedBy": { - "user": { - "displayName": "Dylan Williams", - "email": "dywilliams@contoso.onmicrosoft.com" - } - }, - "lastModifiedDateTime": "2024-01-18T19:46:48Z", - "name": "contoso.txt", - "parentReference": { - "driveId": "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0", - "id": "01SHAK4OVPJ5Q5P6YD6VCZHPV7PKILUJ65", - "sharepointIds": { - "listId": "26d6a67d-bd07-4646-9c5b-85b0e519d6f4", - "listItemId": "1", - "listItemUniqueId": "5eef08c8-da34-4a4d-b91a-97aab3da97a4" - }, - "siteId": "contoso.sharepoint.com,05031a50-e9c7-474c-889e-7cf44659a5b2,e00b849e-3cec-4ade-8f7b-96d1f0f598fa" - }, - "webUrl": "https://contoso.sharepoint.com/contentstorage/CSP_05031a50-e9c7-474c-889e-7cf44659a5b2/Document Library/contoso.txt" - } - } - ], - "total": 1, - "moreResultsAvailable": false - } - ] - } - ] -} -``` - -## Example 5: Search by content - -This example queries all the content by the specified words across all containers of a specific container type, with the SharePoint Embedded application opted out from content discoverability on Microsoft 365. The response includes all `driveItems` that match the criteria: - -### Request - -```HTTP -POST /search/query -Content-Type: application/json - -{ - "requests": [ - { - "entityTypes": [ - "driveItem" - ], - "query": { - "queryString": "'contoso' AND ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae" - }, - "sharePointOneDriveOptions": { - "includeHiddenContent": true - } - } - ] -} -``` - -### Response - -```HTTP -HTTP/1.1 200 OK -Content-type: application/json - -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)" - "value": [ - { - "searchTerms": [ - "contoso" - ], - "hitsContainers": [ - { - "hits": [ - { - "hitId": "01SHAK4OWIBDXV4NG2JVFLSGUXVKZ5VF5E", - "rank": 1, - "summary": "Contoso Detailed Design Contoso Product Specification", - "resource": { - "@odata.type": "#microsoft.graph.driveItem", - "size": 56, - "fileSystemInfo": { - "createdDateTime": "2024-01-18T19:46:48Z", - "lastModifiedDateTime": "2024-01-18T19:46:48Z" - }, - "listItem": { - "@odata.type": "#microsoft.graph.listItem", - "fields": {}, - "id": "5eef08c8-da34-4a4d-b91a-97aab3da97a4" - }, - "id": "01SHAK4OWIBDXV4NG2JVFLSGUXVKZ5VF5E", - "createdBy": { - "user": { - "displayName": "Dylan Williams", - "email": "dywilliams@contoso.onmicrosoft.com" - } - }, - "createdDateTime": "2024-01-18T19:46:48Z", - "lastModifiedBy": { - "user": { - "displayName": "Dylan Williams", - "email": "dywilliams@contoso.onmicrosoft.com" - } - }, - "lastModifiedDateTime": "2024-01-18T19:46:48Z", - "name": "contoso.txt", - "parentReference": { - "driveId": "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0", - "id": "01SHAK4OVPJ5Q5P6YD6VCZHPV7PKILUJ65", - "sharepointIds": { - "listId": "26d6a67d-bd07-4646-9c5b-85b0e519d6f4", - "listItemId": "1", - "listItemUniqueId": "5eef08c8-da34-4a4d-b91a-97aab3da97a4" - }, - "siteId": "contoso.sharepoint.com,05031a50-e9c7-474c-889e-7cf44659a5b2,e00b849e-3cec-4ade-8f7b-96d1f0f598fa" - }, - "webUrl": "https://contoso.sharepoint.com/contentstorage/CSP_05031a50-e9c7-474c-889e-7cf44659a5b2/Document Library/contoso.txt" - } - } - ], - "total": 1, - "moreResultsAvailable": false - } - ] - } - ] -} -``` -## Example 6: Search containers by container custom property - -This example queries all containers by the specified custom property key:value pair, with the SharePoint Embedded application that has opted out from content discoverability on Microsoft 365. The response includes all containers that match the criteria: - -> [!NOTE] -> The custom property name must be appended with the text "OWSTEXT" in the query string. - -### Request - -```HTTP -POST /search/query -Content-Type: application/json - -{ - "requests": [ - { - "entityTypes": [ - "drive" - ], - "query": { - "queryString": "customPropertyNametOWSTEXT:customPropertyValue AND ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae" - }, - "sharePointOneDriveOptions": { - "includeHiddenContent": true - } - } - ] -} -``` - -### Response - -```HTTP -HTTP/1.1 200 OK -Content-type: application/json - -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)", - "value": [ - { - "searchTerms": [], - "hitsContainers": [ - { - "hits": [ - { - "hitId": "b!C4Psl-ZZZkaZINVay8RKt2fqu3agJbVNlIUjNuIzqlPhOJMrr7ThS4aR8L8XdZu4", - "rank": 1, - "summary": "Everything about Contoso", - "resource": { - "@odata.type": "#microsoft.graph.drive", - "id": "b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0", - "createdBy": { - "user": { - "displayName": "Dylan Williams" - } - }, - "lastModifiedDateTime": "2024-08-02T17:31:06Z", - "name": "AllItems.aspx", - "parentReference": { - "sharepointIds": { - "listId": "2b9338e1-b4af-4be1-8691-f0bf17759bb8" - }, - "siteId": "contoso.sharepoint.com,97ec830b-59e6-4666-9920-d55acbc44ab7,76bbea67-25a0-4db5-9485-2336e233aa53" - }, - "webUrl": "https://contoso.sharepoint.com/contentstorage/CSP_97ec830b-59e6-4666-9920-d55acbc44ab7/Document Library/Forms/AllItems.aspx" - } - } - ], - "total": 1, - "moreResultsAvailable": false - } - ] - } - ] -} -``` -## Example 7: Search for content with specific content properties in the response body and sort the results - -This example queries container content by specific words and requires the response to include all specified attributes on the content. Properties that are [sortable](/sharepoint/technical-reference/crawled-and-managed-properties-overview) can be used to sort the results. - -### Request - -```HTTP -POST /search/query -Content-Type: application/json - -{ - "requests": [ - { - "entityTypes": [ - "driveItem" - ], - "query": { - "queryString": "Everything about contoso" - }, - "sharePointOneDriveOptions": { - "includeHiddenContent": true - }, - "fields": [ - "SampleOWSText", - "id", - "name", - "parentReference", - "file", - "folder", - "webUrl", - "createdDateTime", - "lastModifiedDateTime", - "size", - "fileSystemInfo", - "createdBy", - "lastModifiedBy", - "fileSystemInfo", - "fileSystemInfo" - ], - "sortProperties": [ - { - "name": "Created", - "isDescending": false - } - ] - } - ] -} -``` - -### Response - -```HTTP -HTTP/1.1 200 OK -Content-type: application/json - -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)", - "value": [ - { - "searchTerms": [ - "everything", - "about", - "contoso" - ], - "hitsContainers": [ - { - "hits": [ - { - "hitId": "017JL52SWZQ2M5MULUKFBIL7SZ56EB4V2Z", - "rank": 1, - "summary": "Everything about Contoso", - "resource": { - "@odata.type": "#microsoft.graph.driveItem", - "size": 17363, - "fileSystemInfo": { - "createdDateTime": "2024-06-20T21:49:03Z", - "lastModifiedDateTime": "2024-04-01T16:57:00Z" - }, - "listItem": { - "@odata.type": "#microsoft.graph.listItem", - "id": "d69986d9-7451-4251-85fe-59ef881e5759", - "fields": { - "sampleOWSText": "Sample Value", - "id": "AAAAAH_MwHAjYctMtjgTN1cWJnYHAApvY20ubJFGtzLui9sETKcAAAAAASsAAApvY20ubJFGtzLui9sETKcAAAAAJqsAAA2", - "size": 17363, - "createdBy": "Dylan Williams" - } - }, - "id": "017JL52SWZQ2M5MULUKFBIL7SZ56EB4V2Z", - "createdBy": { - "user": { - "displayName": "Dylan Williams", - "email": "dywilliams@contoso.onmicrosoft.com" - } - }, - "createdDateTime": "2024-06-20T21:49:03Z", - "lastModifiedBy": { - "user": { - "displayName": "Dylan Williams", - "email": "dywilliams@contoso.onmicrosoft.com" - } - }, - "lastModifiedDateTime": "2024-04-01T16:57:00Z", - "name": "Constoso Details.docx", - "parentReference": { - "driveId": "b!rWzsZXXFWEOeeP31bSE5BTjn_6qC3dFNloUBMv62EMilewHuRwQrQau-zcJu2BT0", - "id": "017JL52SXQSKBKPB7VKZCJE5ZSWUN4LZDZ", - "sharepointIds": { - "listId": "ee017ba5-0447-412b-abbe-cdc26ed814f4", - "listItemId": "1", - "listItemUniqueId": "d69986d9-7451-4251-85fe-59ef881e5759" - }, - "siteId": "contoso.sharepoint.com,65ec6cad-c575-4358-9e78-fdf56d213905,aaffe738-dd82-4dd1-9685-0132feb610c8" - }, - "webUrl": "https://contoso.sharepointt.com/contentstorage/CSP_65ec6cad-c575-4358-9e78-fdf56d213905/Document Library/Constoso Details.docx" - } - } - ], - "total": 1, - "moreResultsAvailable": false - } - ] - } - ] -} -``` - -## Known Limitations - -- Search requests run in the context of the signed-in user. Search results are only scoped to enforce any access control applied to the items by the user. For example, search results will include all container or container content matching the search criteria and accessible by the user regardless of whether the SharePoint Embedded application is authorized to access. You should specify the desired container type by including the ContainerTypeId as part of your **queryString** when searching for containers or container content to ensure search results are properly scoped. -- For your application to access the containers or container content in search results, it must have access permissions to the corresponding container types. - -## Enumerate (filter) SharePoint Embedded content - -Content can also be enumerated using URL parameters to return specific content in SharePoint Embedded containers. This does not use the search API to retrieve items. See the [enumerate query parameter](/graph/filter-query-parameter?tabs=http) for reference. - -## Example 1: enumerate content by a specific column property and view the results - -This example enumerates the specified container content by the column property that is on the item: - -### Request - -```HTTP -GET https://graph.microsoft.com/v1.0/drives/{{ContainerID}}/items?$filter=startswith(listitem/fields/{{ColumnProperty}}, '{{Value}}')&$expand=listitem($expand=fields) -``` - -### Response - -```HTTP -HTTP/1.1 200 OK -Content-type: application/json -{ - "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('b%21CORq-a8orUGIrd3_z9t1_vjCBSeqM3JKhDglEU3DIDvEl-Hms0qoQ7QCWYNQfGOF')/items(listItem(fields()))", - "value": [ - { - "@odata.etag": "\"{B8051D89-836E-4B8E-BD2B-7634BAC92825},21\"", - "@microsoft.graph.downloadUrl": "https://.sharepoint.com/contentstorage/CSP_f96ae408-28af-41ad-88ad-ddffcfdb75fe/_layouts/15/download.aspx?UniqueId=b8051d89-836e-4b8e-bd2b-7634bac92825&Translate=false&tempauth=v1.eyJzaXRlaWQiOiJmOTZhZTQwOC0yOGFmLTQxYWQtODhhZC1kZGZmY2ZkYjc1ZmUiLCJhcHBfZGlzcGxheW5hbWUiOiJTUEUtQmFzZWJhbGwiLCJhcHBpZCI6ImZiN2NmNTIwLWNiMzMtNDViZi1hMjM4LWFlNTFkMzE2NjY1ZiIsImF1ZCI6IjAwMDAwMDAzLTAwMDAtMGZmMS1jZTAwLTAwMDAwMDAwMDAwMC9wdWNlbGlrZW50ZXJwcmlzZS5zaGFyZXBvaW50LmNvbUAxNTNhNmViZS1mZjYyLTRiY2UtYjFiYy1hMWVkYTNiYzY2NDUiLCJleHAiOiIxNzMxNjE3MDE3In0.CgoKBHNuaWQSAjY5EgsIzpKzp9W7wj0QBRoNMjAuMTkwLjEzNS40MioscW54cjFGalBneHh2N1lGTkp1dUpxTFZWdFFIS1hOQ2RlQ3EvUUk2aHhlcz0wuAE4AUIQoWPmC1YwAABF4iHcgCWrfkoQaGFzaGVkcHJvb2Z0b2tlbnIpMGguZnxtZW1iZXJzaGlwfDEwMDM3ZmZlOWE5NDg5ZGRAbGl2ZS5jb216ATKCARIJvm46FWL_zksRsbyh7aO8ZkWSAQVTdGV2ZZoBB1B1Y2VsaWuiASdzdGV2ZUBwdWNlbGlrZW50ZXJwcmlzZS5vbm1pY3Jvc29mdC5jb22qARAxMDAzN0ZGRTlBOTQ4OUREsgFyY29udGFpbmVyLnNlbGVjdGVkIGFsbGZpbGVzLnJlYWQgYWxsZmlsZXMud3JpdGUgY29udGFpbmVyLnNlbGVjdGVkIGFsbHNpdGVzLnJlYWQgYWxscHJvZmlsZXMucmVhZCBhbGxwcm9maWxlcy5yZWFkyAEB.tfaYgtjhQxMctJeHUWb9RU7CChHXqFHT0FaM9Dt7J9I&ApiVersion=2.1", - "createdDateTime": "2024-09-20T16:46:00Z", - "eTag": "\"{B8051D89-836E-4B8E-BD2B-7634BAC92825},21\"", - "id": "01UELPCREJDUC3Q3UDRZF32K3WGS5MSKBF", - "lastModifiedDateTime": "2024-11-01T08:14:28Z", - "name": "ClaimExample-1.docx", - "size": 2299607, - "webUrl": "https://.sharepoint.com/contentstorage/CSP_f96ae408-28af-41ad-88ad-ddffcfdb75fe/_layouts/15/Doc.aspx?sourcedoc=%7BB8051D89-836E-4B8E-BD2B-7634BAC92825%7D&file=ClaimExample-1.docx&action=default&mobileredirect=true", - "cTag": "\"c:{B8051D89-836E-4B8E-BD2B-7634BAC92825},5\"", - "commentSettings": { - "commentingDisabled": { - "isDisabled": false - } - }, - "createdBy": { - "application": { - "displayName": "SPEContainerType", - "id": "fb7cf520-cb33-45bf-a238-ae51d316665f" - }, - "user": { - "displayName": "SharePoint App" - } - }, - "lastModifiedBy": { - "application": { - "displayName": "SPEContainerType", - "id": "fb7cf520-cb33-45bf-a238-ae51d316665f" - }, - "user": { - "displayName": "Steve Pucelik", - "email": "Steve@.onmicrosoft.com" - } - }, - "parentReference": { - "driveId": "b!CORq-a8orUGIrd3_z9t1_vjCBSeqM3JKhDglEU3DIDvEl-Hms0qoQ7QCWYNQfGOF", - "driveType": "other", - "id": "01UELPCRF6Y2GOVW7725BZO354PWSELRRZ", - "path": "/drives/b!CORq-a8orUGIrd3_z9t1_vjCBSeqM3JKhDglEU3DIDvEl-Hms0qoQ7QCWYNQfGOF/root:", - "sharepointIds": { - "listId": "e6e197c4-4ab3-43a8-b402-5983507c6385", - "listItemUniqueId": "c4782251-bdd3-4766-a747-b2a2f51c3a00", - "siteId": "f96ae408-28af-41ad-88ad-ddffcfdb75fe", - "siteUrl": "https://.sharepoint.com/contentstorage/CSP_f96ae408-28af-41ad-88ad-ddffcfdb75fe", - "tenantId": "153a6ebe-ff62-4bce-b1bc-a1eda3bc6645", - "webId": "2705c2f8-33aa-4a72-8438-25114dc3203b" - } - }, - "file": { - "mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - "hashes": { - "quickXorHash": "DMzi0kCsuukcHlMXiPX9tmTCXtA=" - } - }, - "fileSystemInfo": { - "createdDateTime": "2024-09-20T16:46:00Z", - "lastModifiedDateTime": "2024-11-01T08:14:28Z" - }, - "shared": { - "scope": "unknown" - }, - "listItem@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('b%21CORq-a8orUGIrd3_z9t1_vjCBSeqM3JKhDglEU3DIDvEl-Hms0qoQ7QCWYNQfGOF')/items('01UELPCREJDUC3Q3UDRZF32K3WGS5MSKBF')/listItem(fields())/$entity", - "listItem": { - "@odata.etag": "\"{B8051D89-836E-4B8E-BD2B-7634BAC92825},21\"", - "createdDateTime": "2024-09-20T16:46:00Z", - "eTag": "\"{B8051D89-836E-4B8E-BD2B-7634BAC92825},21\"", - "id": "23", - "lastModifiedDateTime": "2024-11-01T08:14:28Z", - "webUrl": "https://.sharepoint.com/contentstorage/CSP_f96ae408-28af-41ad-88ad-ddffcfdb75fe/_layouts/15/Doc.aspx?sourcedoc=%7BB8051D89-836E-4B8E-BD2B-7634BAC92825%7D&file=ClaimExample-1.docx&action=default&mobileredirect=true", - "createdBy": { - "application": { - "displayName": "SPEContainerType", - "id": "fb7cf520-cb33-45bf-a238-ae51d316665f" - }, - "user": { - "displayName": "SharePoint App" - } - }, - "lastModifiedBy": { - "application": { - "displayName": "SPEContainerType", - "id": "fb7cf520-cb33-45bf-a238-ae51d316665f" - }, - "user": { - "displayName": "Steve Pucelik", - "email": "Steve@M.onmicrosoft.com" - } - }, - "parentReference": { - "id": "0", - "path": "Document Library", - "siteId": "f96ae408-28af-41ad-88ad-ddffcfdb75fe" - }, - "contentType": { - "id": "0x0101004368E78BC3115C4CAD94FEA35E0F9D90", - "name": "Document" - }, - "fields@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('b%21CORq-a8orUGIrd3_z9t1_vjCBSeqM3JKhDglEU3DIDvEl-Hms0qoQ7QCWYNQfGOF')/items('01UELPCREJDUC3Q3UDRZF32K3WGS5MSKBF')/listItem/fields/$entity", - "fields": { - "@odata.etag": "\"{B8051D89-836E-4B8E-BD2B-7634BAC92825},21\"", - "id": "23", - "FileLeafRef": "ClaimExample-1.docx", - "": "", - "ContentType": "Document", - "Created": "2024-09-20T16:46:00Z", - "AuthorLookupId": "1073741822", - "Modified": "2024-11-01T08:14:28Z", - "EditorLookupId": "7", - "_CheckinComment": "", - "LinkFilenameNoMenu": "ClaimExample-1.docx", - "LinkFilename": "ClaimExample-1.docx", - "DocIcon": "docx", - "FileSizeDisplay": "2299607", - "ItemChildCount": "0", - "FolderChildCount": "0", - "_ComplianceFlags": "", - "_ComplianceTag": "", - "_ComplianceTagWrittenTime": "", - "_ComplianceTagUserId": "", - "_CommentCount": "", - "_LikeCount": "", - "_DisplayName": "Confidential \\ Internal only", - "AppAuthorLookupId": "1", - "AppEditorLookupId": "1", - "Edit": "0", - "_UIVersionString": "19.0", - "MediaServiceImageTags@odata.type": "#Collection(microsoft.graph.Json)", - "MediaServiceImageTags": [] - } - } - } - ] -} -``` - -## Example 2: Enumerate content by a specific column property and Order the results - -This example enumerates the specified container content by the column property that is on the item and will order the results by the column specified: - -### Request - -```HTTP -GET https://graph.microsoft.com/v1.0/drives/{{ContainerID}}/items?$filter=listitem/fields/{{ColumnProperty}} eq '{{Value}}'&$select=id,name,lastModifiedDateTime,size&$expand=listitem($expand=fields)&$orderby=createdDateTime desc -Headers: -Content-Type: application/json -Prefer: HonorNonIndexedQueriesWarningMayFailRandomly -``` - -> [!NOTE] -> -> When a container has more than 5,000 items and you are using the enumerate method with the OrderBy clause, you must include the following in the header of your request. -> -> `Content-Type: application/json` -> `Prefer: HonorNonIndexedQueriesWarningMayFailRandomly` -## Example 3: Enumerate content by mulitple column properties and Order the results - -This example enumerates the specified container content by the column property you specify and the name of the document (listitem/fields/FileLeafRef) that is on the item and will order the results by the column specified: - -### Request - -```HTTP -GET https://graph.microsoft.com/v1.0/drives/{{ContainerID}}/items?$filter=listitem/fields/{{ColumnProperty1}} eq '{{Value}}' AND listitem/fields/FileLeafRef eq '{{Value}}' &$select=id,name,lastModifiedDateTime,size&$expand=listitem($expand=fields)&$orderby=createdDateTime desc -Headers: -Content-Type: application/json -Prefer: HonorNonIndexedQueriesWarningMayFailRandomly -``` \ No newline at end of file diff --git a/docs/embedded/development/content-experiences/user-experiences-overview.md b/docs/embedded/development/content-experiences/user-experiences-overview.md deleted file mode 100644 index b54e0205ff..0000000000 --- a/docs/embedded/development/content-experiences/user-experiences-overview.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Content Experiences Overview -description: Experiences with SharePoint Embedded content -ms.date: 07/30/2024 -ms.localizationpriority: high ---- - -# User experiences overview - -SharePoint Embedded provides a comprehensive set of user experience features like open and editing Office files, file preview, or in-app search that you can use to build the right user experiences for your applications. - -## Open & edit using Office - -Office documents from SharePoint Embedded applications can be opened for viewing, editing, and collaborating using either the web or Office applications for a richer viewing and editing experience. Learn more about [Office experiences available on SharePoint Embedded](./office-experience.md). - -You can set up your applications to launch Office when a user selects an Office document within your application. This includes options to directly launch an Office application or to open it in a specific mode, such as view (for read-only content) or edit (for editing mode). Learn how to [configure the right Office Experience for your Office Documents](../tutorials/launch-experience.md) - -## Preview content - -Integrate your application with SharePoint Embedded player plugin to offer file preview experiences on a wide range of supported file types. You can embed the file preview experiences either in an iFrame or open a new page. Learn how to [offer File Preview experiences for content on your applications](../tutorials/using-file-preview.md) - -## Download - -You can use [Microsoft Graph's Download DriveItem API](/graph/api/driveitem-get-content) to offer download file user experiences for your applications. This will generate a short-lived, pre-authenticated URL that allows users to download files from your applications. - -> [!NOTE] -> A direct link to the file lacks the appropriate authorization from your application. If used directly in a browser, this would yield an access denied. - -## Content discovery in Microsoft 365 - -You can control how your content appears in the Microsoft 365 experience. The default behavior is SharePoint Embedded application content will be hidden in Microsoft 365 environments including office.com, oneDrive.com, or other Microsoft intelligent file discovery features. The default behavior also excludes Copilot for Microsoft 365 from grounding with your SharePoint Embedded application content. - -If you want to opt into the Microsoft 365 experience, during container type creation, you can change the default settings using cmdlet [Set-SPOContainerTypeConfiguration](../../administration/developer-admin/dev-admin.md#container-type-configuration-properties) as per this example: - -```powershell -Set-SPOContainerTypeConfiguration - -ContainerTypeID - -discoverabilityDisabled $False -``` - -In this way, your files will be integrated into the Microsoft 365 environment, participating in intelligent file discovery. - -> [!NOTE] -> -> 1. If you modify the settings after creating some content, it may take up to 30 days for these changes to achieve full consistency across all consuming tenants. -> 1. To enable the sharing user experience for your content in Office.com, additional application permissions **must** be added at the time of the container type registration process. To add more permission to enable sharing dialog, refer to the following code: - -```http -PUT /storageContainerTypes/{containerTypeId}/applicationPermissions -Content-Type: application/json - -{ - "appId": "4765445b-32c6-49b0-83e6-1d93765276ca", - "delegated": ["readContent","writeContent"], - "appOnly": ["none"] -} -``` - -## Archived containers - -You can use Microsoft Graph to archive containers, which moves the container’s data to the cold storage tier and helps reduce storage costs. - -While a container is archived, it can’t be accessed by any user or application. To access the container again, it must be reactivated. If the data is no longer required, archived containers can be deleted without first reactivating them. - -## Recycle bin - -You can use Microsoft Graph to either delete or permanently delete items in containers. Deleted items are moved to the container’s recycle bin and retained for 93 days. During this period, the items can be restored or permanently deleted using Microsoft Graph. An item in the recycle bin is permanently deleted when it exceeds the 93-day retention period. Permanently deleted items can't be restored. diff --git a/docs/embedded/development/declarative-agent/sharepoint-embedded-knowledge-source.md b/docs/embedded/development/declarative-agent/sharepoint-embedded-knowledge-source.md deleted file mode 100644 index 52e2f34c4e..0000000000 --- a/docs/embedded/development/declarative-agent/sharepoint-embedded-knowledge-source.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Set up SharePoint Embedded as a knowledge source in Microsoft Foundry -description: Instructions to configure SPE in Azure's knowledge retrieval -ms.date: 11/12/2025 -ms.localizationpriority: high ---- - -# Set up SharePoint Embedded as a knowledge source in Microsoft Foundry (Preview) - -> [!NOTE] -> -> This functionality is currently in preview. - -This article helps you configure [Microsoft Foundry Agent Service](/azure/foundry/agents/overview) with a [SharePoint knowledge source (Preview)](/azure/search/agentic-knowledge-source-how-to-sharepoint-remote) configured for SharePoint Embedded (SPE). - -## Prerequisites - -- You have set up an SPE app with at least one container. To get started, learn more at [SharePoint Embedded Overview](../../overview.md). -- You have at least one Copilot license on your tenant. This requirement is for the preview period only. We will switch to metered billing once we transition out of preview. - -## Set up the SharePoint knowledge source for SharePoint Embedded - -The SharePoint knowledge source must be configured with the `remoteSharePointParameters.containerTypeId` pointing to your application's container type. For more information, see the [SharePoint knowledge source properties](/azure/search/agentic-knowledge-source-how-to-sharepoint-remote#source-specific-properties). - -## Grant Foundry access to a container type - -You also need to grant Microsoft Foundry the necessary application permission to access your container type. You can do this by updating the container type registration in your consuming tenants as shown below. Replace `{fileStorageContainerTypeId}` with your container type ID. The container type's owning application must call this API on consuming tenants. - -```http -PUT /storage/fileStorage/containerTypeRegistrations/{fileStorageContainerTypeId}/applicationPermissionGrants/880da380-985e-4198-81b9-e05b1cc53158 -Content-Type: application/json - -{ - "delegatedPermissions": ["readContent"], - "applicationPermissions": ["none"] -} -``` - -> [!TIP] -> This may also be done during initial container type registration using the [Create container type registration](/graph/api/filestorage-post-containertyperegistrations) endpoint. diff --git a/docs/embedded/development/declarative-agent/spe-da-adv.md b/docs/embedded/development/declarative-agent/spe-da-adv.md deleted file mode 100644 index b6c0d00da7..0000000000 --- a/docs/embedded/development/declarative-agent/spe-da-adv.md +++ /dev/null @@ -1,319 +0,0 @@ ---- -title: SharePoint Embedded agent Advanced Topics -description: Learn how the semantic index powers Retrieval-Augmented Generation (RAG) to provide accurate, context-aware AI responses in SharePoint Embedded agent. -ms.date: 03/06/2025 -ms.localizationpriority: high ---- - -# SharePoint Embedded agent Advanced Topics Overview - -> [!CAUTION] -> SharePoint Embedded agent has been deprecated in its current form and replaced with [Microsoft Foundry Agent Service](/azure/foundry/agents/overview) with a [SharePoint knowledge source (Preview)](/azure/search/agentic-knowledge-source-how-to-sharepoint-remote) configured for SharePoint Embedded. Learn how to [set up SharePoint Embedded as a knowledge source in Microsoft Foundry](sharepoint-embedded-knowledge-source.md). - -This article will remain in place for a limited time for historical reference. - -This advanced guide covers how the semantic index powers Retrieval-Augmented Generation (RAG) to provide accurate, context-aware AI responses. We explore how these concepts work together to ensure your agent retrieves relevant information from your data and returns grounded answers. - -## Caveats - -### Configuration - -#### Required Container Type Configuration - -##### DiscoverabilityDisabled - -The [`discoverabilityDisabled`](../../administration/developer-admin/dev-admin.md#container-type-configuration-properties) property controls whether Microsoft 365 can discover [drive items](/graph/api/resources/driveitem) within a specific container type. - -If you’re updating an existing container type to set this property to `false`, allow up to **24 hours** for the configuration change to fully propagate before: - -- Creating new containers, -- Uploading files to containers, or -- Using SPE agent to interact with folders or files. - -This ensures the agent can correctly access and surface the content. - -Here's an example of how to set `discoverabilityDisabled` to `false` with [Set-SPOContainerTypeConfiguration](/powershell/module/SharePoint-online/set-spocontainertypeconfiguration#examples) - -```powershell -Set-SPOContainerTypeConfiguration -ContainerTypeId 4f0af585-8dcc-0000-223d-661eb2c604e4 -DiscoverabilityDisabled $false -``` - -Discoverability can also be disabled using the Visual Studio Code SharePoint Embedded extension - -![Using the VS Code extension for SPE to set DiscoverabilityDisabled to false](../../images/speco-vscodeextensiondisablediscovery.png) - -##### CSP Policies - -The Content-Security-Policy (CSP) for embedded chat hosts ensures that only specified hosts can load the chat component. Specifically, the `CopilotEmbeddedChatHosts` setting is used in a [Content-Security-Policy](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy) header as a `frame-ancestors` value. This helps in securing the application by restricting which domains can embed the chat component. - -The SPE Administrator on the owning tenant can set this setting by using the `Set-SPOContainerTypeConfiguration` cmdlet: - -```powershell -# Note this MUST be run in Windows PowerShell. It will not work in PowerShell. -Import-Module -Name "Microsoft.Online.SharePoint.PowerShell" -Connect-SPOService "https://-admin.sharepoint.com" -# Login with your admin account. -# ... - -Set-SPOContainerTypeConfiguration -ContainerTypeId XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -CopilotEmbeddedChatHosts @("http://localhost:3000", "https://contoso.sharepoint.com", "https://fabrikam.com") - -# This will set the container type configuration “CopilotEmbeddedChatHosts” accordingly. -# Replication of this configuration on consuming tenants can take up to 24 hours -# ... - -# Confirm setting value -Get-SPOContainerTypeConfiguration -ContainerTypeId XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - -# On a consuming tenant, you may confirm the setting value as follows -Get-SPOApplication -OwningApplicationId | Select-Object CopilotEmbeddedChatHosts - -OwningApplicationId : -OwningApplicationName : SharePoint Embedded App -Applications : {} -CopilotEmbeddedChatHosts : {http://localhost:3000, https://contoso.sharepoint.com, https://fabrikam.com} -``` - -> [!NOTE] -> -> If this configuration isn't set, the [Content-Security-Policy](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy) is by default set to -> [frame-ancestors](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors): "none", which means no one can embed the agent. - -A SharePoint Embedded Administrator on a consuming tenant may override the values specified by the owning application, by using the consuming tenant cmdlets: - -- [Set-SPOApplication](/powershell/module/SharePoint-online/set-spoapplication) to set the `CopilotEmbeddedChatHosts` property. -- [Get-SPOApplication](/powershell/module/SharePoint-online/get-spoapplication) to get the `CopilotEmbeddedChatHosts` property. - -> [!NOTE] -> -> A consuming tenant override must be a subset of what the owning tenant configured for `CopilotEmbeddedChatHosts`. An administrator -> in a consuming tenant can't set values that the application owner hasn't specified for the container type. The override capability is intended for consuming tenant administrators to enable the agent in only a subset of hosts that the owning application has defined. - -Here's an example of how a consuming tenant can override the setting: - -```powershell -# Note this MUST be run in Windows PowerShell. It will not work in PowerShell. -Import-Module -Name "Microsoft.Online.SharePoint.PowerShell" -Connect-SPOService "https://-admin.sharepoint.com" -# Login with your admin account. -# ... - -Set-SPOApplication -OwningApplicationId XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -CopilotEmbeddedChatHosts @("https://contoso.sharepoint.com", "https://fabrikam.com") - -# This will set the container type configuration “CopilotEmbeddedChatHosts” accordingly -# Note that @("https://contoso.sharepoint.com", "https://fabrikam.com") is a subset of what we defined in the owning tenant -# Those values were @("http://localhost:3000", "https://contoso.sharepoint.com", "https://fabrikam.com") - -# Confirm the configuration - -Get-SPOApplication -OwningApplicationId | Select-Object CopilotEmbeddedChatHosts - -OwningApplicationId : -OwningApplicationName : SharePoint Embedded App -Applications : {} -CopilotEmbeddedChatHosts : {https://contoso.sharepoint.com, https://fabrikam.com} -``` - -#### Optional Configuration - -##### Authentication and Third-Party Cookies - -The `iframe` used by SharePoint Embedded agent authenticates users using third-party cookies. If third-party cookies are disabled in the user's browser, the iframe can't authenticate automatically. In this case, a popup prompts the user to sign in manually, ensuring that authentication can still be completed. - -## Advanced Topics - -### Application Scoping - -Application scoping in SharePoint Embedded agent (SPE agent) involves defining the boundaries and context within which the tool operates, ensuring its features and capabilities are tailored to meet the specific needs of different applications. This process helps customize the agent's functionality, making it more effective and relevant for various use cases. - -When SPE agent users query the LLM, it will only have access to files that the **User+Application** have access to. The effective permissions for the agent session will be the intersection of your SharePoint Embedded application's permissions and the user's permissions. - -![Venn Diagram with SPE application access on left, SPE agent in middle and consuming tenant user on right, overlapped area is what agent can access](../../images/speco-appscopingvenn.png) - -### Information Architecture - -Files in SharePoint Embedded are naturally [semantic indexed](spe-da-adv.md#semantic-index). This semantic index underpins retrieval augmented generation [(RAG)](spe-da-adv.md#retrieval-augmented-generation-rag) workflows by providing relevant context from your stored content at query time. In essence, it [grounds](spe-da-adv.md#grounding) the AI responses, ensuring they directly reference accurate information in your containers rather than relying on general knowledge alone. - -![How RAG works in SPE](../../images/speco-ragm365.png) - -With SharePoint Embedded agent, you can further ground the large language models (LLM) response on [specific files or drive items.](spe-da-adv.md#scoping-your-agent-to-specific-content). - -### Semantic index - -[Learn more about semantic index for Microsoft 365 Copilot here](/microsoftsearch/semantic-index-for-copilot) - -The semantic index allows for quick and accurate searches based on data similarity. This means it can find the most relevant information not just by exact matches, but also by understanding the context and meaning. - -### Retrieval-Augmented Generation (RAG) - -RAG enables you to reference relevant source materials stored in a repository at runtime. The data is retrieved from the index and is used to augment the prompt sent to the large language model (LLM). Some benefits of RAG​: - -- Treat data sources as knowledge without having to train your model​ -- Uses search (retrieval) results as additional context in your prompt​ -- Generates the output using the prompt and the supplied context - -The LLM uses the data to inform and construct the response. - -​![The flow of a RAG query](../../images/speco-ragquery.png) - -### Grounding - -Grounding in the context of SPE agent refers to the process of providing input sources to the large language model (LLM) related to the user's prompt. This helps improve the specificity of the prompt and ensures that the responses are relevant and actionable to the user's specific task. The data the agent is grounded on will be the contents of the container type in the agent application. Behind the scenes, SPE agent uses Microsoft 365 Copilot. [Learn more about Microsoft 365 Copilot architecture](/copilot/microsoft-365/microsoft-365-copilot-architecture). - -### Scoping your agent to specific content - -SharePoint Embedded (SPE) agent has the ability to restrict the data sources it has access to. The sample code below shows the available data source types. [This example](https://github.com/microsoft/SharePoint-Embedded-Samples/blob/main/Custom%20Apps/boilerplate-typescript-react/react-client/src/providers/ChatController.ts#L15) shows how to configure the SDK. - -```typescript -export type IDataSourcesProps = - | IFileDataSource - | IFolderDataSource - | IDocumentLibraryDataSource - | ISiteDataSource - | IWorkingSetDataSource - | IMeetingDataSource; - -export enum DataSourceType { - File = 'File', - Folder = 'Folder', - DocumentLibrary = 'DocumentLibrary', - Site = 'Site', - WorkingSet = 'WorkingSet', - Meeting = 'Meeting' -} -``` - -#### Supported document types for scoping - -[Reference - File Formats Support By copilot](https://support.microsoft.com/topic/file-formats-supported-by-copilot-1afb9a70-2232-4753-85c2-602c422af3a8) - -**Documents**: PDF, DOCX, XLSX, PPTX - -**Text-based Files**: RTF, TXT, CSV, LOG, INI, CONFIG - -**Audio**: WAV - -**Programming Languages**: PY, JS, JSX, JAVA, PHP, CS, C, CPP, CXX, H, HPP, M, COFFEE, DART, LUA, PL, PM, RB, RS, SWIFT, GO, KT, KTS, R, SCALA, T, TS, TSX - -**Shell Scripts**: BASH, SH, ZSH - -**Markup and Documentation**: HTML, CSS, MD, RMD, TEX, LATEX - -**Database Languages**: SQL - -**Data Serialization Formats**: IPYNB, JSON, TOML, YAML, YML - -##### Language/Locale - -The agent `iframe` dynamically loads localization settings to ensure that the chat interface is displayed in the appropriate language. These settings are derived from SharePoint, which provides a comprehensive set of localization options. - -When the agent iframe is initialized, it retrieves the current localization settings from SharePoint. These settings dictate the language and regional preferences for the chat interface, ensuring that all UI elements, messages, and interactions are presented in the user's preferred language. - -You can have this localized by setting your language options in the SharePoint account settings: [Change your personal language and region settings - Microsoft Support](https://support.microsoft.com/office/change-your-personal-language-and-region-settings-caa1fccc-bcdb-42f3-9e5b-45957647ffd7). - -> [!NOTE] -> -> If your Microsoft 365 language setting is different from your SharePoint account language setting, your Microsoft 365 language setting takes precedence. You can change your Microsoft 365 language setting here: [Change your display language in Microsoft 365](https://support.microsoft.com/topic/change-your-display-language-and-time-zone-in-microsoft-365-for-business-6f238bff-5252-441e-b32b-655d5d85d15b). - -An additional locale option can be passed in through the `ChatLaunchConfig` to further set the language the agent responds in: - -```typescript - const [chatConfig] = React.useState({ - header: ChatController.instance.header, - theme: ChatController.instance.theme, - zeroQueryPrompts: ChatController.instance.zeroQueryPrompts, - suggestedPrompts: ChatController.instance.suggestedPrompts, - instruction: ChatController.instance.pirateMetaPrompt, - locale: "en", - }); -``` - -###### Locale Options - -Here are some examples of locale options you can use: - -| Locale Code | Common Name | -|--------------|------------------------------------------| -| af | Afrikaans | -| en-gb | English (UK) | -| he | Hebrew | -| kok | Konkani | -| nn-no | Norwegian (Nynorsk) | -| sr-latn-rs | Serbian (Latin, Serbia) | -| am-et | Amharic | -| es | Spanish | -| hi | Hindi | -| lb-lu | Luxembourgish | -| or-in | Odia (India) | -| sv | Swedish | -| ar | Arabic | -| es-mx | Spanish (Mexico) | -| hr | Croatian | -| lo | Lao | -| pa | Punjabi | -| ta | Tamil | -| as-in | Assamese | -| et | Estonian | -| hu | Hungarian | -| lt | Lithuanian | -| pl | Polish | -| te | Telugu | -| az-latn-az | Azerbaijani (Latin, Azerbaijan) | -| eu | Basque | -| hy | Armenian | -| lv | Latvian | -| pt-br | Portuguese (Brazil) | -| th | Thai | -| bg | Bulgarian | -| fa | Persian | -| id | Indonesian | -| mi-nz | Maori (New Zealand) | -| pt-pt | Portuguese (Portugal) | -| tr | Turkish | -| bs-latn-ba | Bosnian (Latin, Bosnia and Herzegovina) | -| fi | Finnish | -| is | Icelandic | -| mk | Macedonian | -| quz-pe | Quechua (Peru) | -| tt | Tatar | -| ca-es-valencia | Catalan (Valencian) | -| fil-ph | Filipino (Philippines) | -| it | Italian | -| ml | Malayalam | -| ro | Romanian | -| ug | Uyghur | -| ca | Catalan | -| fr-ca | French (Canada) | -| ja | Japanese | -| mr | Marathi | -| ru | Russian | -| uk | Ukrainian | -| cs | Czech | -| fr | French | -| ka | Georgian | -| ms | Malay | -| sk | Slovak | -| ur | Urdu | -| cy-gb | Welsh (UK) | -| ga-ie | Irish (Ireland) | -| kk | Kazakh | -| mt-mt | Maltese (Malta) | -| sl | Slovenian | -| uz-latn-uz | Uzbek (Latin, Uzbekistan) | -| da | Danish | -| gd | Scottish Gaelic | -| km-kh | Khmer (Cambodia) | -| nb-no | Norwegian (Bokmål) | -| sq | Albanian | -| vi | Vietnamese | -| de | German | -| gl | Galician | -| kn | Kannada | -| ne-np | Nepali (Nepal) | -| sr-cyrl-ba | Serbian (Cyrillic, Bosnia and Herzegovina)| -| zh-cn | Chinese (Simplified) | -| el | Greek | -| gu | Gujarati | -| ko | Korean | -| nl | Dutch | -| sr-cyrl-rs | Serbian (Cyrillic, Serbia) | -| zh-tw | Chinese (Traditional) | diff --git a/docs/embedded/development/declarative-agent/spe-da.md b/docs/embedded/development/declarative-agent/spe-da.md deleted file mode 100644 index 76047def79..0000000000 --- a/docs/embedded/development/declarative-agent/spe-da.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: SharePoint Embedded agent (Deprecated) -description: Details usage and billing for SharePoint Embedded agents -ms.date: 03/17/2026 -ms.localizationpriority: high ---- - -# Overview - -> [!CAUTION] -> SharePoint Embedded agent has been deprecated in its current form and replaced with [Microsoft Foundry Agent Service](/azure/foundry/agents/overview) with a [SharePoint knowledge source (Preview)](/azure/search/agentic-knowledge-source-how-to-sharepoint-remote) configured for SharePoint Embedded. Learn how to [set up SharePoint Embedded as a knowledge source in Microsoft Foundry](sharepoint-embedded-knowledge-source.md). - -This article will remain in place for a limited time for historical reference. - -> [!NOTE] -> -> The SharePoint Embedded agent SDK is not suitable for production use cases. -> -> SPE agent consumption-based model will be available in May 2025! Starting May 1st, standard billing model will be available to all private preview customers and this rollout is expected to complete by May 15th. This means that starting May 15th, to use SPE agent within an SPE application, you will need to use standard Container Type. SPE Agent interactions, including those from Microsoft 365 Copilot license users, will be billed to the Azure subscription associated with your Container Type. Learn more about [SharePoint Embedded billing management](/sharepoint/dev/embedded/administration/billing/billingmanagement). - -SharePoint Embedded agent enables you to quickly demo AI capabilities into your application through a simple SDK, though it is not intended for production use. This chat control offers the following features: - -- Reason over documents in SharePoint Embedded containers using RAG. -- Developers can configure the application code to limit the search scope to files, folders, and containers. -- Developers can customize and configure chat control including starter prompts, suggested prompts, colors and more. - -Watch this demo to learn more about how to configure this functionality. - -> [!VIDEO https://www.youtube.com/embed/30i7q09EtQo?si=MwLtbrGKnzv7a6My] - -## Why use SharePoint Embedded agent - -SharePoint Embedded agent harness a semantic index to power Retrieval-Augmented Generation (RAG), securely referencing your data within the Microsoft 365 boundary at query time. This ensures accurate, grounded AI responses while reducing reliance on broad knowledge models. A pay-as-you-go billing model is on the horizon, aligning costs with actual usage. - -![Diagram illustrating SPE agent is AI ready](../../images/speco-apparch.png) - -## How to use SharePoint Embedded agent - -### How to build your agent - -Currently, you can use the React SDK library written in TypeScript to build your application. Plans to support additional frameworks and environments will be announced. The SDK is configured with the containerId instance of your containerType, as well as the authorization and authentication token logic you provide through a callback. It will embed itself as an iFrame into your host application. By default, the iFrame is given a `frame-ancestors` property that prevents it from being embedded by any host until configured. Details are provided below. - -#### SPE TypeScript React Application - -Follow the [quick start guide](../tutorials/spe-da-vscode.md) to get started with a prebuilt sample application. - -### API Documentation - -The SharePoint Embedded React TypeScript NPM Package, available at [here](https://github.com/microsoft/SharePoint-Embedded-Samples/tree/feature/copilot-react-sdk/sharepointembedded-chatembedded-react/docs/index.md), provides the SDK for integrating SharePoint Embedded agent into your client applications. - -## Frequently Asked Questions - -### Is consumption-based billing available for SPE agent? - -Yes, starting May 15th you will need to use standard Container Type to use SPE agent within an SPE application. SharePoint Embedded agent interactions, including those from Microsoft 365 Copilot license users, will be billed to the Azure subscription associated with your Container Type. Learn more about [SharePoint Embedded billing management](/sharepoint/dev/embedded/administration/billing/billingmanagement) - -***Trial Container Types expire after 30 days, for this reason we recommend starting off with Standard Container types. There is no upgrade path from Trial to Standard container types.*** - -### Should I use a standard or trial Container Type? - -Once consumption-based billing is enabled, we will be disabling the use of this feature with Trial Container Types and it will only be enabled on Standard Container Types going forward. Please follow this [guide](../../getting-started/containertypes.md) to get started on creating your Standard Container Type. - -## SharePoint Embedded agent Support - -### Chat Control Feedback Dialog - -If you encounter any issues with the chat control, please use the thumbs up or down feedback buttons to report the problem. This method is preferred for sending feedback because it provides us with telemetry data that helps us diagnose and troubleshoot the issue more effectively. - -When you click the thumbs down button, a feedback dialog will appear. Please include any relevant information in this dialog. - -![SPE agent Feedback Modal preview](../../images/speco-feedbackcombined.png) - -## Advanced Topics Overview - -The [advanced topics](spe-da-adv.md) delve into how SharePoint Embedded agent use a semantic index to facilitate Retrieval-Augmented Generation (RAG), ensuring responses are accurately grounded in your stored content. You’ll also learn how to scope your agent to specific data sources, set up various file formats, and configure locale options to tailor the agent experience. By exploring concepts like grounding, semantic indexing, and RAG workflows, you can optimize your agent’s effectiveness and maintain security within the Microsoft 365 boundary. diff --git a/docs/embedded/development/fluid.md b/docs/embedded/development/fluid.md deleted file mode 100644 index 84d879d7fd..0000000000 --- a/docs/embedded/development/fluid.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Fluid Framework in SharePoint Embedded Applications -description: Details Fluid Integration with SharePoint Embedded Applications -ms.date: 05/21/2024 -ms.localizationpriority: high ---- - -# Fluid Framework in SharePoint Embedded Applications - -Integrate Fluid Framework and [SharePoint Embedded](../overview.md) to seamlessly and efficiently incorporate document collaboration into your applications. - -## Background - -[Fluid Framework](https://fluidframework.com/) is a collection of client libraries for distributing, synchronizing, and saving shared data. These libraries allow multiple clients to simultaneously create and operate on shared data structures in real-time. Fluid Framework allows developers to use the same practices with shared data as with local data--for example, a Fluid object works in the same way as a local TypeScript object. - -## Quickstart - -Start [building](https://github.com/microsoft/FluidExamples/) in the Fluid [Sample Apps Directory](https://github.com/microsoft/FluidExamples/tree/main/item-counter-spe). You need to [create](#get-started-with-sharepoint-embedded) a SharePoint Embedded application first. - -### Get started with SharePoint Embedded - -Try SharePoint Embedded for free by creating a container type for [trial purposes](../getting-started/containertypes.md). - -1. Set up a free trial [Microsoft 365 tenant](https://www.microsoft.com/microsoft-365/enterprise/microsoft365-plans-and-pricing). Alternatively, you can use an existing tenant if you have admin credentials. -1. Sign into the [SharePoint Embedded Visual Studio Code Extension](../getting-started/spembedded-for-vscode.md) and follow the steps to create an application and container type for trial purposes. - -## Prerequisites - -To get started building with Fluid Framework, you need: - -1. **Admin Credentials**: You need administrative credentials for a [Microsoft 365](https://www.microsoft.com/microsoft-365/enterprise/microsoft365-plans-and-pricing) tenant. -1. **SharePoint Embedded Application**: Ensure that you register your application in [Microsoft Entra ID](https://entra.microsoft.com/). If you don't have a SharePoint Embedded application, refer to the [earlier section](#get-started-with-sharepoint-embedded). -1. **Application (Client) ID**: Obtain the `ClientID` for your SharePoint Embedded Application. -1. **Container Type Information**: - - Identify the `ContainerTypeId` associated with your app’s container type. -1. **Containers**: - - Make sure you have *at least* one container created of the same container type linked to your SharePoint Embedded Application. - -## Get started with Fluid - -### Access App information - -You need the `ClientID` from your application and the `ContainerTypeId` associated with the containers created on that application. - -The `ClientID` is essential for acquiring the correct access tokens when working with Fluid Framework and documents. The `ContainerTypeId` is necessary for accessing containers associated with your SharePoint Embedded application. - -If you used the [Visual Studio Code Extension](../getting-started/spembedded-for-vscode.md), you can [export](/sharepoint/dev/embedded/getting-started/spembedded-for-vscode#export-postman-environment) your Postman Environment to easily view your both your `ContainerTypeId` and `ClientID`. - -Otherwise, you can access your `ContainerTypeId` by using the [`Get-SPOContainerType`](/sharepoint/dev/embedded/concepts/admin-exp/dev-admin#viewing-of-container-types) PowerShell cmdlet. Your `ClientID` is available in [Microsoft Entra ID](https://entra.microsoft.com/) by navigating to **Identity** > **App Registrations** > **Applications** > **All applications** to view your application overview. - -## Run Fluid Sample App: Item Counter - -Now you can test out and start building with the [Fluid Sample App](https://github.com/microsoft/FluidExamples/tree/main/item-counter-spe) Item Counter. - -**Steps:** - -1. Gather your `ClientID` and `ContainerTypeId` of your SharePoint Embedded Application and tenant admin credentials -1. Change to the directory where you'd like to clone the [Fluid Examples repo](https://github.com/microsoft/FluidExamples) -1. Clone the repository by executing the command: `git clone https://github.com/microsoft/FluidExamples.git` -1. Navigate to the **Item Counter** directory `cd .\FluidExamples\item-counter-spe\` -1. Create an empty **.env** file and input your `ClientID` and `ContainerTypeId` with no spaces like so: - - ```text - SPE_CLIENT_ID=YOUR_CLIENTID - - SPE_CONTAINER_TYPE_ID=YOUR_CONTAINERTYPE_ID - ``` - -1. `npm install` -1. `npm run dev` -1. Once Webpack is completed, go to `https://localhost:8080` -1. Sign in with the Admin credentials for your tenant -1. Grant admin consent for your app in the pop-up window -1. Copy the full URL to another browser tab or send it to someone who has credentials to the same tenant. These can be user credentials as long as they are on the same tenant. The live changes to the Item Counter on both browsers show that the data is synced between clients. -1. Congrats on getting your first Fluid App to run! More details can be found in the Item Counter [README](https://github.com/microsoft/FluidExamples/tree/main/item-counter-spe). - - ![Item Counter Sample App](../images/itemcount.png) diff --git a/docs/embedded/development/limits-calling.md b/docs/embedded/development/limits-calling.md deleted file mode 100644 index 111227fd76..0000000000 --- a/docs/embedded/development/limits-calling.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Limits and Calling Patterns -description: This article explains the limits of SharePoint Embedded. -ms.date: 01/16/2026 -ms.localizationpriority: high ---- - -# Limits and Calling Patterns - -This document explains the limits of SharePoint Embedded during public preview. - -> [!NOTE] -> These are preview limits that are subject to change. - -## Size limits - -The following table defines the size limits of containers: - -| Resource | Limit | -| --------------------------------------------------------- | ------------------------------------------------------ | -| Container types that a partner tenant can create | 25* | -| Container types that an app can own | 1 | -| Containers of a container type per consuming tenant | 100k* | -| Storage per container type per consuming tenant | 100 TB* | -| Files and folders per container | 30M | -| Storage per container | 25 TB | -| Files and folders with additive permissions per container | 5k | -| File size | 250 GB | -| Version count per file | 500 (Automatic Version History Limits Default Setting) | -| Number of users shared per folder or file | 5k | - -> [!NOTE] -> Limit can be increased per request. - -## Throttling - -### Patterns and best practices - -When applications hit service limits, you receive an HTTP status code 429 ("Too many requests"). You might also receive an HTTP status code 503 ("Server Too Busy"). - -In general, the following are the best practices to handle throttling: - -- Reduce the number of concurrent requests. -- Avoid request spikes. -- Honor the `Retry-After` HTTP header. - -In both cases, a `Retry-After` header is included in the response, indicating how long the calling application should wait before retrying or making a new request. Throttled requests count towards usage limits, so failure to honor `Retry-After` might result in more throttling. - -## API rate limits - -SharePoint Embedded provides various APIs. Different APIs have different costs depending on the functionality and complexity of the API. The cost of APIs is normalized and expressed by resource units. API rate limits are also defined using resource units. - -| Resource units per request | Operations | -| -------------------------- | -------------------------------------------------------------------------- | -| 1 | Single item query, such as get item | -| 2 | Multi-item query, such as list children, create, update, delete, and upload | -| 5 | All permission resource operations, including $expand=permissions | - -> [!NOTE] -> We reserve the right to change the API resource unit cost. - -The following table lists the API rate limits for applications and containers. - -| Resource | Limits | -| --------------------------- | --------------------------- | -| Requests per container | 3k resource units per min | -| Requests per app per tenant | 12k resource units per min* | -| Requests per user | 600 resource units per min | - -> [!NOTE] -> \* Limit can be increased per request. - -Application limits are defined in resource units, and the actual request rate, such as requests per minute, varies based on the chosen API and its corresponding resource unit cost. As a general rule, you can estimate the request rate by averaging about two resource units per request and dividing application resource unit limits by 2. Reducing the usage of permission operations can notably improve the call rate since these operations have the most significant impact on overall resource consumption. - -### Container creation rate limiting - -Per consuming tenant, and during the tenant's peak hours, container creation is limited to 5 new containers per second. Requests beyond this limit will be rate limited. Outside of peak hours, containers may be created at a faster rate. diff --git a/docs/embedded/development/sharing-and-perm.md b/docs/embedded/development/sharing-and-perm.md deleted file mode 100644 index 4c63f48430..0000000000 --- a/docs/embedded/development/sharing-and-perm.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Sharing and Permissions -description: Outlines Permission Model for SharePoint Embedded -ms.date: 03/03/2025 -ms.localizationpriority: high ---- - -# Sharing and permissions in SharePoint Embedded - -## Additive permissions - -In SharePoint Embedded, content always inherits permissions from its parent hierarchy. While you can't alter this inherited permission structure, you can extend access within a container by applying "additive permissions" to specific files and folders. For instance, if _UserA_ belongs to the Reader role, you can grant the user edit permission to a particular document in that container using Microsoft Graph: - -| Scenario | Microsoft Graph API(s) | Notes | -| :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Grant an additive permission | [POST /drives/{drive-id}/items/{item-id}/invite](/graph/api/driveitem-invite) | The sendInvitation property must always be false. You can't grant additive permissions to the root folder in a container as this is essentially the same as adding a User to a role. You can't use AppOnly permissions. | -| Retrieve permissions | [GET /drives/{drive-id}/items/{item-id}/permissions](/graph/api/permission-get) & [GET /drives/{drive-id}/items/{item-id}/permissions/{perm-id}](/graph/api/permission-get), | | -| Delete additive permissions | [DELETE /drives/{drive-id}/items/{item-id}/permissions/{perm-id}](/graph/api/permission-delete) | You can only delete the additive permission on the drive item where it was originally added. | - -## Role-based sharing setting - -SharePoint Embedded offers a role-based sharing model that allows developers to configure file-sharing permissions based on container permission roles, offering a choice between restrictive and open sharing models. By default, the sharing setting is configured to the open model, permitting unrestricted content sharing by all users. This sharing setting is part of [container type configuration](../getting-started/containertypes.md#configuring-container-types). This configuration can only be set by the application owner's developers. To learn more about container permission roles, refer to [Authentication and Authorization with SharePoint Embedded](auth.md#container-permissions). - -### Restrictive sharing model - -Only container members who are either the Owner or Manager roles are permitted to add new permissions to files. - -### Open sharing model - -Any container members and guests with edit permissions can add new permissions to this file. - -This can be configured using the PowerShell cmdlet [Set-SPOcontainerTypeConfiguration](../administration/developer-admin/dev-admin.md#container-type-configuration-properties) as per this example: - -```powershell -Set-SPOcontainerTypeConfiguration - -containerTypeID - -sharingRestricted $false -``` - -## Sharing configuration setting - -By default, SharePoint Embedded application sharing configuration is the same as the consuming tenant-sharing configuration. For example, if the consuming tenant is configured to disable sharing for guests, then the SharePoint Embedded application is unable to add guests to container roles or grant them additive permissions. - -### Application external sharing override - -For SharePoint Embedded applications, sharing configurations can be adjusted at the application level. Consuming tenant admin can configure permissions that are different than tenant-level sharing settings. For example, if a tenant's sharing setting prohibits sharing with guests, SharePoint Embedded applications can be configured to allow guest sharing. So, all containers within that SharePoint Embedded application would have the ability to include guests or extend another permission, while other SharePoint Embedded applications and SharePoint maintain restricted sharing permissions. - -This setting can only be set by consuming tenant SharePoint Embedded admin, and can be configured using the latest PowerShell cmdlet [Set-SPOApplication](../administration/consuming-tenant-admin/ctapowershell.md#set-sharing-capability-of-applications) as shown in this example: - -```powershell -Set-SPOApplication - -OwningApplicationID - -OverrideTenantSharingCapability $true - -SharingCapability -``` diff --git a/docs/embedded/development/support-archival-of-containers.md b/docs/embedded/development/support-archival-of-containers.md deleted file mode 100644 index 5cf997fb9c..0000000000 --- a/docs/embedded/development/support-archival-of-containers.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Support archival of SharePoint Embedded containers -description: This article explains how archival functionality can be supported for a container type. -ms.date: 03/20/2026 -ms.localizationpriority: high ---- - -# Onboard your application to support archival functionality - -Archival of containers helps customers in reducing the cost of storing infrequently used data. Support archival in your application by enabling the `-IsArchiveEnabled` flag using the following PowerShell cmdlet. This cmdlet is supported only by the SharePoint Embedded administrator of your organization. - -Use the following command on already existing container type: - -```powershell -Set-SPOContainerTypeConfiguration -ContainerTypeId -IsArchiveEnabled $true -``` - -Use the following command while creating a new container type: - -```powershell -New-SPOContainerType -ContainerTypeName -OwningApplicationId -IsArchiveEnabled $true -``` - -APIs for supporting the archive and reactivate actions on the containers: - -| Action | API Documentation link | Example | -| ------------------------------------------ | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | -| Archive an active container | [Archive](/graph/api/filestoragecontainer-archive) | `POST https://graph.microsoft.com/beta/storage/fileStorage/containers/{ContainerId}/archive` | -| Reactivate an archived container | [Unarchive](/graph/api/filestoragecontainer-unarchive) | `POST https://graph.microsoft.com/beta/storage/fileStorage/containers/{containerId}/unarchive` | -| Retrieve an archived container using ID | [Get](/graph/api/filestoragecontainer-get) | `GET https://graph.microsoft.com/beta/storage/fileStorage/containers/{containerId}` | -| Retrieve all archived container collection | [Get](/graph/api/filestoragecontainer-get) | `GET https://graph.microsoft.com/beta/storage/fileStorage/containers?$filter=containerTypeId eq {containerTypeId} and archivalDetails ne null` | diff --git a/docs/embedded/development/tutorials/doc-processing-acs.md b/docs/embedded/development/tutorials/doc-processing-acs.md deleted file mode 100644 index 2d450bf9e9..0000000000 --- a/docs/embedded/development/tutorials/doc-processing-acs.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Document Processing with Azure Cognitive Services -description: Enabling document processing with Azure Cognitive Services. -ms.date: 03/03/2025 -ms.localizationpriority: high ---- - -# Enabling Document Processing with Azure Cognitive Services - -## Utilizing Azure Cognitive Services - -Azure Cognitive Services is a set of cloud-based APIs that you can use in AI applications and data flows. It provides pre-trained models that are ready to use in your applications, requiring no data and no model training on your part. They can be easily integrated into applications via HTTP REST interfaces. - -You have already learned how to use webhooks with [the application](/training/modules/sharepoint-embedded-create-app/) to get a notification whenever an existing file is updated, or a new file is uploaded in the [Using Webhooks tutorial](./using-webhooks.md). This tutorial will cover connecting it with Azure Cognitive Services to extract data from invoices. - -To set up automatic AI processing with your current SharePoint application upon a change in your container, you need to follow [Using Webhooks](./using-webhooks.md) and then: - -1. Get the delta changes of the container. You're currently able to get the notification whenever there's any change in our container and will now get the files that are added or updated. -1. Call Azure Cognitive Services’s Document Intelligence service API. You'll need to create an Azure AI resource to use the API to extract the fields from an image and get the extracted files. You might store them as shown in this tutorial or you might process them as you like. -![document processing schema](../../images/Document-Processing.png) - -> [!TIP] -> To learn more about the Microsoft Graph APIs used in this tutorial, see [Track changes for a Drive](/graph/api/driveitem-delta), [Get a DriveItem resource](/graph/api/driveitem-get), and [Upload or replace the contents of a DriveItem](/graph/api/driveitem-put-content). - -## Get the delta changes of a container - -Open **GraphProvider.ts** and implement the method `getDriveChanges` to get the list of changed items: - -```typescript -public static async getDriveChanges(driveId: string): Promise { - let changedItems: any[] = []; - const driveDeltaBasePath: string = `/drives/${driveId}/items/root/delta`; - let driveDeltaTokenParams: string = ""; - let hasMoreChanges: boolean = true; - try{ - do { - if (this.changeTokens.has(driveId)) { - driveDeltaTokenParams = `?token=${this.changeTokens.get(driveId)}` - } - const response = await this.graphClient.api(driveDeltaBasePath + driveDeltaTokenParams).get(); - changedItems.push(...response.value); - if (response['@odata.nextLink']) { - const token = new URL(response['@odata.nextLink']).searchParams.get('token'); - this.changeTokens.set(driveId, token); - } else { - hasMoreChanges = false; - const token = new URL(response['@odata.deltaLink']).searchParams.get('token'); - this.changeTokens.set(driveId, token); - } - console.log(this.changeTokens.get(driveId)); - } while (hasMoreChanges); - } - catch(err){ - console.log(err); - } - return changedItems; -} -``` - -Implement the method `getDriveItem` to fetch a file from a container: - -```typescript -public static async getDriveItem(driveId: string, itemId: string): Promise { - return await this.graphClient.api(`/drives/${driveId}/items/${itemId}`).get(); -} -``` - -Create a new file **ReceiptProcessor.ts** and implement a method `processDrive`: - -```typescript -export abstract class ReceiptProcessor { - - public static async processDrive(driveId: string): Promise { - const changedItems = await GraphProvider.getDriveChanges(driveId); - for (const changedItem of changedItems) { - try { - const item = await GraphProvider.getDriveItem(driveId, changedItem.id); - const extension = this.getFileExtension(item.name); - if (this.SUPPORTED_FILE_EXTENSIONS.includes(extension.toLowerCase())) { - console.log(item.name); - const url = item["@microsoft.graph.downloadUrl"]; - const receipt = await this.analyzeReceiptStream(await this.getDriveItemStream(url)); - const receiptString = JSON.stringify(receipt, null, 2) - const fileName = this.getFileDisplayName(item.name) + "-extracted-fields.json"; - const parentId = item.parentReference.id; - await GraphProvider.addDriveItem(driveId, parentId, fileName, receiptString); - } - } catch (error) { - console.log(error); - } - } - } -} -``` - -At this point if you restart the app along with tunneling and subscription, you should see the recently added/updated files listed in the console. - -## Call Azure Cognitive Services' Document Intelligence service API - -To use the Azure Cognitive Services Document Intelligence APIs, you need to create a Multi-Service or Document Intelligence resource for Azure AI Service. Refer to the following tutorials to create the resource: - -- [Quickstart: Create a multi-service resource for Azure AI services](/azure/ai-services/multi-service-resource?tabs=windows&pivots=azportal) -- [Get started with Document Intelligence](/azure/ai-services/document-intelligence/quickstarts/get-started-sdks-rest-api?view=doc-intel-3.1.0&viewFallbackFrom=form-recog-3.0.0&preserve-view=true&pivots=programming-language-javascript) - -After this step, you should have an endpoint and a key ready to use. - -Now open **ReceiptProcessor.ts** to create method `dac` to store the Azure Cognitive Services credentials: - -```typescript -private static dac = new DocumentAnalysisClient( - `${process.env["DAC_RESOURCE_ENDPOINT"]}`, - new AzureKeyCredential(`${process.env["DAC_RESOURCE_KEY"]}`) -); -``` - -Create method `getDriveItemStream`. - -```typescript -private static async getDriveItemStream(url: string): Promise { - const token = GraphProvider.graphAccessToken; - const config: AxiosRequestConfig = { - method: "get", - url: url, - headers: { - "Authorization": `Bearer ${token}` - }, - responseType: 'stream' - }; - const response = await axios.get(url, config); - return response.data; -} -``` - -Create method `analyzeReceiptStream` to get the OCR fields through Azure Cognitive Services processing. Here we're taking the `prebuilt-invoice` model, but other models can be chosen: - -```typescript -private static async analyzeReceiptStream(stream: Readable): Promise { - const poller = await this.dac.beginAnalyzeDocument("prebuilt-invoice", stream, { - onProgress: ({ status }) => { - console.log(`status: ${status}`); - }, - }); - - const { - documents: [result] = [], - } = await poller.pollUntilDone(); - - const fields = result?.fields; - this.removeUnwantedFields(fields); - return fields; -} -``` - -Create a method `removeUnwantedFields` to remove the undesirable fields in Azure Cognitive Services’s response: - -```typescript -private static removeUnwantedFields(fields: any) { - for (const prop in fields) { - if (prop === 'boundingRegions' || prop === 'content' || prop === 'spans') { - delete fields[prop]; - } - if (typeof fields[prop] === 'object') { - this.removeUnwantedFields(fields[prop]); - } - } -} -``` - -Finally, open **GraphProvider.ts** to add the `addDriveItem` method at the end of the `GraphProvider` class. - -```typescript -public static async addDriveItem(driveId: string, parentId: any, fileName: string, receiptString: string) { - await this.graphClient.api(`/drives/${driveId}/items/${parentId}:/${fileName}:/content`).put(receiptString); -} -``` - -Now, restart the demo app and set up the tunneling using ngrok and delta change subscription on the container again. - -If you add/update any file (supported formats: JPEG, JPG, PNG, BMP, TIFF, PDF) in this container, you should see a new JSON file created and containing the fields extracted from the file. diff --git a/docs/embedded/development/tutorials/launch-experience.md b/docs/embedded/development/tutorials/launch-experience.md deleted file mode 100644 index e0b92344db..0000000000 --- a/docs/embedded/development/tutorials/launch-experience.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Configure Default Launch Experience for your Office Files -description: Configure Default Launch Experience for your Office Files -ms.date: 05/21/2024 -ms.localizationpriority: high ---- - -# Configure Default Launch Experience for your Office Files - -## Configure the Launch mode of Office Clients - -When retrieving a `DriveItem` from the Microsoft Graph API with: - -```http -/graph/api/driveitem-get?view=graph-rest-1.0 -``` - -The `webUrl` property in the response can be a link to Web Application Open Platform Interface (WOPI) for rendering supported office file types. The URL will look like: - -```http -https://host/:w:r/contentstorage/sitecollection/_layouts/15/doc2.aspx?sourcedoc=guid&file=filename.docx&action=default&mobileredirect=true -``` - -This `webUrl` will open WOPI in the default mode (`action=default`). If you wish to override the default mode to force a specific mode (for example, View for read-only and Edit for editor), you can augment the `webUrl` like this: - -```csharp -string webUrl = https://host/:w:r/contentstorage/sitecollection/_layouts/15/doc2.aspx?sourcedoc=guid&file=filename.docx&action=default&mobileredirect=true; - -System.UriBuilder builder = new System.UriBuilder(webUrl); -System.Collections.Specialized.NameValueCollection queryDictionary = System.Web.HttpUtility.ParseQueryString(builder.Query); -queryDictionary["action"] = "view"; -//queryDictionary["action"] = "edit"; -builder.Query = queryDictionary.ToString(); -string modifiedWebUrl = builder.ToString(); -``` - -> [!TIP] -> To learn more about WOPI Actions, see: [WOPI Discovery - WOPI Actions](/microsoft-365/cloud-storage-partner-program/online/discovery#wopi-actions). - -### Open Office files directly in Desktop clients - -To open your files directly in the Office desktop clients, you need to create an Office URI scheme. The format is as follows: - -```xml -:"|""|" -``` - -Use the following table to replace the preceding segments: - -- **scheme-name**: the name of the application, for example: *ms-excel* -- **command-name**: - - `ofv` for Open File View - - `ofe` for Open File Edit - - `nft` for New From Template -- **command-argument-descriptor** and **command-argument**: - - `|u|{file url}` - - `|s|{save location}` - - *only for New From Template* - -> [!NOTE] -> The **New From Template** may not work as you would expect for save location since the permissions schema is different from SharePoint Sites. - -The following contains an example usage of the Office URI scheme: - -```text -ms-word:ofv|u|https://contoso.com/document.docx -ms-powerpoint:ofe|u|https://contoso.com/presentation.pptx -``` - -Because the `webUrl` property points to Office Online for Office documents, you must get the actual link in two steps: - -1. Getting the WebUrl of the parent folder -1. Appending the name of the file - -For example, the following scheme: - -```text -ms-word:ofe|u|{folder.WebUrl]/{item.Name} -``` - -... will result in the following scheme: - -```text -ms-word:ofe|u|https://contoso.sharepoint.com/contentstorage/CSP_1234765465/Document%20Library/MyDocument.docx -``` - -To learn more about Office URI schemes, see [Office URI Schemes](/office/client-developer/office-uri-schemes). - -> [!NOTE] -> The Uri must be opened in a blank window or new tab. diff --git a/docs/embedded/development/tutorials/metadata.md b/docs/embedded/development/tutorials/metadata.md deleted file mode 100644 index 1973c22b9e..0000000000 --- a/docs/embedded/development/tutorials/metadata.md +++ /dev/null @@ -1,474 +0,0 @@ ---- -title: SharePoint Embedded Container Metadata -description: Add metadata in Containers and Files. -ms.date: 3/22/2024 -ms.localizationpriority: high ---- - -# Using Metadata with SharePoint Embedded Containers - -In SharePoint Embedded, columns can be added to [Containers](../../getting-started/containertypes.md) to address scenarios requiring custom metadata via Microsoft Graph APIs. Content in the container can then set desired values for corresponding metadata. Metadata is schematized and can be queried. Note the APIs to create and manage columns are on the container instances level – an application is responsible for defining and managing the columns across its containers. - -## Authorization and Authentication - -App+User (Delegated) or App-only (Application) Bearer {token} is required in the Authorization header. - -> [!NOTE] -> Container owners can Create, Update, and Delete Container columns -> All Container members can Read and List Container columns - -### `microsoft.graph.fileStorageContainer` properties - -| Property | Type | Description | Key | Required | ReadOnly | -| -------------------------- | -------------------------------------------------------------- | ---------------------------------------------------------- | --- | -------- | -------- | -| `id` | `Edm.String` | unique stable identifier of the storage container instance | Yes | Yes | Yes | -| `displayName` | `Edm.String` | display name of the container | No | Yes | No | -| `description` | `Edm.String` | description of the container | No | No | No | -| `containerTypeId` | `Edm.Guid` | container type ID | No | Yes | Yes | -| `containerTypeDisplayName` | `Edm.String` | display name of the container type | No | No | Yes | -| `externalGroupId` | `Edm.Guid` | external group ID | No | No | No | -| `permissions` | `Collection` | permissions of users / groups in the container | No | No | No | -| `customProperties` | `microsoft.graph.fileStorageContainerCustomPropertyDictionary` | custom properties | No | No | No | -| `viewpoint` | `microsoft.graph.fileStorageContainerViewpoint` | data that is specific to the current user | No | No | No | -| `drive` | `microsoft.graph.drive` | storage container's drive resource | No | No | Yes | -| `recycleBin` | `microsoft.graph.recycleBin` | storage container's recycleBin resource | No | No | Yes | -| `status` | `microsoft.graph.fileStorageContainerStatus` | an enum value representing the status of the container | No | No | Yes | -| `createdDateTime` | `microsoft.graph.dateTimeOffset` | createdDateTime | No | No | Yes | -| `storageUsedInBytes` | `Edm.Int64` | storage used in bytes | No | No | Yes | -| `assignedSensitivityLabel` | `microsoft.graph.assignedLabel` | the sensitivity label assigned to the container | No | No | No | -| `owners` | `Collection` | The list of users who own the container | No | No | Yes | -| `columns` | `Collection` | the collection of custom metadata fields in the container | No | No | No | - - - -## Limitations - -The following are the properties that SharePoint Embedded Metadata supports: - -| Property name | Type | -| ---------------------- | ------------------------- | -| boolean | booleanColumn | -| choice | choiceColumn | -| currency | currencyColumn | -| dateTime | dateTimeColumn | -| hyperlinkOrPicture | hyperlinkOrPictureColumn | -| isDeletable | Boolean | -| ID | string | -| indexed | Boolean | -| isSealed | Boolean | -| name | string | -| number | numberColumn | -| personOrGroup | personOrGroupColumn | -| readOnly | Boolean | -| text | textColumn | -| type | columnTypes | - -> [!NOTE] -> Please name columns according to the appropriate column naming convention - -### Column Naming Conventions - -Column Names must adhere to the following rules: -- Can't contain "!". -- Can't start with a digit, period, minus sign, or question mark. -- Can't contain any space or any nonalphanumeric characters except "_" or "\". -- Can't look like either type of cell reference. - - A1 mode cell reference with 1 to 3 characters followed by 1 to 5 digits (for example, A3 F02563, ZZZ12). - - R1C1 mode cell references that look like r, or c, or r[#], c[#] or r[#]c[#]. -- Can't be any localized word for "true" or "false". -- Can't be specific names, including "Author", "Created", "Description", etc. - - - -## Create a column in a fileStorageContainer - -This API lets callers create a new column instance in a fileStorageContainer. - -##### Required permissions (at least one of) - -| ScopeName | Type | -| ----------------------------- | ----------- | -| FileStorageContainer.Selected | Application | -| FileStorageContainer.Selected | Delegated | - -#### REST Operation example: create a column in a fileStorageContainer - -##### Request - -```http -POST https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns -Content-Type: application/json - -{ - "description": "test", - "displayName": "Title", - "enforceUniqueValues": false, - "hidden": false, - "indexed": false, - "name": "Title", - "text": { - "allowMultipleLines": false, - "appendChangesToExistingText": false, - "linesForEditing": 0, - "maxLength": 255 - } -} -``` - -> [!NOTE] -> Note Type is not supported. `maxLength` should =< 255. - -##### Response - -```http -HTTP/1.1 201 Created -Content-type: application/json - -{ - "description": "test", - "displayName": "Title", - "enforceUniqueValues": false, - "hidden": false, - "id": "99ddcf45-e2f7-4f17-82b0-6fba34445103", - "indexed": false, - "name": "Title", - "text": { - "allowMultipleLines": false, - "appendChangesToExistingText": false, - "linesForEditing": 0, - "maxLength": 255 - } -} -``` - -## Get a column in a fileStorageContainer by ID - -This API lets callers get a fileStorageContainer column instance by ID. - -##### Required permissions (at least one of) - -| ScopeName | Type | -| ----------------------------- | ----------- | -| FileStorageContainer.Selected | Application | -| FileStorageContainer.Selected | Delegated | - -#### REST Operation example: get a column in a fileStorageContainer by ID - -##### Request - -```http -GET https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns/{column-id} -``` - -##### Response - -```http -HTTP/1.1 200 OK -Content-type: application/json - -{ - "description": "test", - "displayName": "Title", - "enforceUniqueValues": false, - "hidden": false, - "id": "99ddcf45-e2f7-4f17-82b0-6fba34445103", - "indexed": false, - "name": "Title", - "text": { - "allowMultipleLines": false, - "appendChangesToExistingText": false, - "linesForEditing": 0, - "maxLength": 255 - } -} -``` - -## Update a column in a fileStorageContainer by ID - -This API lets callers update a fileStorageContainer column instance by ID. -You can update any property of the column other than the **id** property. - -##### Required permissions (at least one of) - -| ScopeName | Type | -| ----------------------------- | ----------- | -| FileStorageContainer.Selected | Application | -| FileStorageContainer.Selected | Delegated | - -#### REST Operation example: update a column in a fileStorageContainer by ID - -##### Request - -```http -PATCH https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns/{column-id} -Content-Type: application/json - -{ - "required": true, - "hidden": false, - "description": "This is my new column description" -} -``` - -##### Response - -```http -HTTP/1.1 200 OK -Content-type: application/json - -{ - "description": "", - "displayName": "Custom Column", - "enforceUniqueValues": false, - "hidden": false, - "id": "11dfef35-e2f7-4f17-82b0-6fba34445103", - "indexed": false, - "name": "Custom Column", - "readOnly": false, - "required": true, - "text": { - "allowMultipleLines": false, - "appendChangesToExistingText": false, - "linesForEditing": 0, - "maxLength": 255 - } -} -``` - -## Delete a column from a fileStorageContainer - -This API lets callers delete a fileStorageContainer column instance by ID. - -##### Required permissions (at least one of) - -| ScopeName | Type | -| ----------------------------- | ----------- | -| FileStorageContainer.Selected | Application | -| FileStorageContainer.Selected | Delegated | - -#### REST Operation example: delete a column from a fileStorageContainer - -##### Request - -```http -DELETE https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns/{column-id} -``` - -##### Response - -```http -HTTP/1.1 204 No Content -``` - -## List columns in a fileStorageContainer - -This API lets callers enumerate the columns in a fileStorageContainer. - -##### Required permissions (at least one of) - -| ScopeName | Type | -| ----------------------------- | ----------- | -| FileStorageContainer.Selected | Application | -| FileStorageContainer.Selected | Delegated | - -#### REST Operation example: List columns in a fileStorageContainer - -##### Request - -```http -GET https://graph.microsoft.com/beta/storage/fileStorage/containers/{container-id}/columns -``` - -##### Response - -```http -HTTP/1.1 200 OK -Content-type: application/json - -{ - "value": [ - { - "description": "", - "displayName": "Title", - "hidden": false, - "id": "99ddcf45-e2f7-4f17-82b0-6fba34445103", - "indexed": false, - "name": "Title", - "readOnly": false, - "required": false, - "text": { - "allowMultipleLines": false, - "appendChangesToExistingText": false, - "linesForEditing": 0, - "maxLength": 255 - } - }, - { - "description": "", - "displayName": "Address", - "id": "11dfef35-e2f7-4f17-82b0-6fba34445103", - "indexed": false, - "name": "Address", - "readOnly": false, - "required": false, - "text": { - "allowMultipleLines": false, - "appendChangesToExistingText": false, - "linesForEditing": 0, - "maxLength": 255 - } - } - ] -} -``` - -## Get column values of an item in a fileStorageContainer's drive - -This is an existing API used to showcase our new feature of getting the column values of an item in a fileStorageContainer's drive. -This API supports OData $select features for `column`. - - -##### Required permissions (at least one of) - -| ScopeName | Type | -| ----------------------------- | ----------- | -| FileStorageContainer.Selected | Application | -| FileStorageContainer.Selected | Delegated | - -#### REST Operation example: Get column values of an item in a fileStorageContainer's drive - -##### Request - -```http -GET https://graph.microsoft.com/beta/drives/{drive-id}/items/{item-id}/listitem/fields -``` - -##### Response - -```http -HTTP/1.1 200 OK -Content-type: application/json - -{ - "Name": "Widget", - "Color": "Blue", - "Quantity": 2357 -} -``` - -##### Request - -```http -GET https://graph.microsoft.com/beta/drives/{drive-id}/items/{item-id}/listitem/fields?$select=Name,Color -``` - -##### Response - -```http -HTTP/1.1 200 OK -Content-type: application/json - -{ - "Name": "Widget", - "Color": "Blue" -} -``` - -## Patch column values of an item in a fileStorageContainer's drive - -This is an existing API used to showcase our new feature of updating and deleting the column values of an item in a fileStorageContainer's drive. - -##### Required permissions (at least one of) - -| ScopeName | Type | -| ----------------------------- | ----------- | -| FileStorageContainer.Selected | Application | -| FileStorageContainer.Selected | Delegated | - -#### REST Operation example: update column values of an item in a fileStorageContainer's drive - -##### Request - -```http -PATCH https://graph.microsoft.com/beta/drives/{drive-id}/items/{item-id}/listitem/fields - -Content-Type: application/json - -{ - "Color": "Fuchsia", - "Quantity": 934 -} -``` - -##### Response - -```http -HTTP/1.1 200 OK -Content-type: application/json - -{ - "Name": "Widget", - "Color": "Fuchsia", - "Quantity": 934 -} -``` - -#### REST Operation example: delete column values of an item in a fileStorageContainer's drive - -##### Request - -```http -PATCH https://graph.microsoft.com/beta/drives/{drive-id}/items/{item-id}/listitem/fields - -Content-Type: application/json - -{ - "Color": null -} -``` - -##### Response - -```http -HTTP/1.1 200 OK -Content-type: application/json - -{ - "Name": "Widget", - "Quantity": 934 -} -``` - -## Query a fileStorageContainer's driveitems with Odata query options on custom columns - -This API lets users query drive items in a fileStorageContainer with `$expand`, `$filter`, and `$orderby` Odata query options on their custom columns. - -##### Required permissions (at least one of) - -| ScopeName | Type | -| ----------------------------- | ----------- | -| FileStorageContainer.Selected | Application | -| FileStorageContainer.Selected | Delegated | - -#### REST Operation example: filter fileStorageContainer's driveitems by their custom columns 'TestField' and order the results by 'TestField' - -##### Request - -```http -GET https://graph.microsoft.com/beta/drives/{drive-id}/items?$orderby=listitem/fields/TestField asc&$filter=startswith(listitem/fields/TestField, '3')&$expand=listitem($expand=fields) -``` - -##### Response - -```http -HTTP/1.1 200 OK -Content-type: application/json - -{ - "value": [ - {"name": "a.jpg", "size": 2048, "listitem/fields/TestField": "31" }, - {"name": "b.xlsx", "size": 197, "listitem/fields/TestField": "32" }, - {"name": "c.docx", "size": 391, "listitem/fields/TestField": "33" } - ] -} -``` \ No newline at end of file diff --git a/docs/embedded/development/tutorials/migrate-abs-to-spe.md b/docs/embedded/development/tutorials/migrate-abs-to-spe.md deleted file mode 100644 index 8ae025bb82..0000000000 --- a/docs/embedded/development/tutorials/migrate-abs-to-spe.md +++ /dev/null @@ -1,382 +0,0 @@ ---- -title: Tutorial to Migrate from Azure Blob Storage container to SharePoint Embedded container -description: Tutorial in how to migrate from Azure Blob Storage container to SharePoint Embedded container Using C# -ms.date: 08/02/2024 -ms.localizationpriority: high ---- - -# Tutorial For Migrating Content From Azure Blob Storage Container To SharePoint Embedded Container - -## Purpose - -This tutorial will guide you through migrating content from Azure Blob Storage (ABS) to SharePoint Embedded (SPE) using C#. This is useful for customers who have 500 docs in the blob storage container. - -### Prerequisites - -1. A Microsoft Entra ID application registration. See [register an application](/graph/auth-register-app-v2). -1. Your Microsoft Entra ID tenant has a [Microsoft 365 subscription](/training/m365/). -1. A Microsoft Entra ID tenant. If you don't have a tenant, create a [free Azure account to get a free subscription](https://azure.microsoft.com/free/). -1. An account with at least the Global Administrator or SharePoint Embedded Administrator role. -1. .NET Core SDK [version 8.0.303](https://dotnet.microsoft.com/download/dotnet/8.0) -1. Dotnet environment to run the sample app - - - It can be run on Windows, Linux and macOS - -1. SharePoint Embedded container - - - For more information on how to set up a [SPE container](https://aka.ms/start-spe) - -1. Azure Blob Storage container - - - For more information on how to set up an [ABS container](/azure/storage/blobs/storage-blobs-introduction) - -## Authentication - -### Azure Blob Storage - -1. Credentials - Container-level Shared Access Signature (SAS) URL. -1. Permission - Read and List - -### SharePoint Embedded - -1. An [Azure account](https://portal.azure.com) -1. A SharePoint Tenant where you'll create your containers and its Tenant ID -1. An onboarded application ID (sometimes called client ID) and its corresponding ContainerTypeId -1. Create a new App Registration in [Microsoft Entra ID portal](https://entra.microsoft.com). -1. In the App Registration, add a new Mobile & Console application platform in [Microsoft Entra ID App Registration Authenticate portal](https://entra.microsoft.com) - - ![Screenshot of Microsoft Entra ID application configuration](../../images/app-registration-console-platform.png) - -1. A ContainerType -1. A Container -1. Having the application registered in the consuming tenant (even if the owner of the application is the same as the consuming) -1. Having the containerType registered in the consuming tenant (even if the owner of the CT is the same as the consuming) -1. Consuming tenant user name and password credentials - will be required to authenticate the Microsoft Graph client -1. Permission - "User.Read", "FileStorageContainer.Selected" - -## Migrating Data from Azure Blob Storage container to SharePoint Embedded container - -### Description - -This section provides code snippets on how to accomplish the migration. All the validation has been removed for readability. - -### Connecting to Azure Blob Storage Container - -```c# -_containerClient = new BlobContainerClient(new Uri(_containerLevelSASUrl)); -``` - -### Connecting to SharePoint Embedded - -```c# -string[] _scopes = { "User.Read", "FileStorageContainer.Selected" }; -InteractiveBrowserCredentialOptions interactiveBrowserCredentialOptions = new InteractiveBrowserCredentialOptions() - { - ClientId = clientId, - RedirectUri = new Uri("http://localhost"), - }; -InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredential(interactiveBrowserCredentialOptions); - -_graphClient = new GraphServiceClient(interactiveBrowserCredential, scopes, null); - -// Will open up a browser to provide your consuming tenant admin credentials -var user = await _graphClient.Me.GetAsync(); -``` - -### Getting the blob list - -```c# -var blobs = new List(); -await foreach (var blobItem in _containerClient.GetBlobsAsync()) -{ - blobs.Add(blobItem.Name); -} -return blobs; -``` - -### Thread pooling - -```c# -private CountdownEvent _countdown; - -// This is how the thread pool knows how many files are being migrated -_countdown = new CountdownEvent(blobs.Count); -``` - -### FileStructure - -```c# -public class FileStructure -{ - public string blobName { get; set; } - public string parentFolderId { get; set; } -} -``` - -### Traverse blob list - -```c# -// It creates a new folder in the destination. The name of the folder is the blob's container name. -// root means it is the root of the document library. -// If you want to copy it to another drive item, you can put the drive item ID here. -containerFolder = await _graphClient.CreateFolder(_containerName, "root"); - -// Traverse the blob list -foreach (var blobName in fileList) -{ - FileStructure fs = new FileStructure() { blobName = blobName }; - - // This function parses the flat file into the folder hierarchy and creates the folder structure in the destination. It will retrieve the parentFolderId that the file should be copied to. - // If you are going to copy it to root you can comment this line out. The parentFolderId will be containerFolder.Id - fs.parentFolderId = TraverseBlobName(fs, containerFolder.Id) - - // This is where the thread pool happens. - // It takes in a callback function and an Object parameter. - ThreadPool.QueueUserWorkItem(MigrateFile, fs); -} - -// Call so the program doesn't end, it waits for all the files to be processed -_countdown.Wait(); -``` - -### Traverse blob name - -```c# -// Parse for folder path not including the file name and put it in an array -var pathSegments = filePath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); -string[] directoriesParts = pathSegments.Take(pathSegments.Length - 1).ToArray(); - -// Traverse the folder listing and create 1 folder at a time -string relativePath = _containerName; -string newFolderId = parentFolderId; -foreach (string folderName in directoriesParts) -{ - string newPath = relativePath + _separator + folderName; - ... - - DriveItem subFolder = await _graphClient.CheckIfItemExists(folderName, newFolderId); - if (subFolder == null) - { - subFolder = await _graphClient.CreateFolder(folderName, newFolderId); - ... - } - newFolderId = subFolder.Id; - - relativePath = newPath; -} - -return newFolderId; -``` - -### Check if the item exists - -```c# -var item = await _graphClient.Drives[_containerId].Items[parentFolderId].ItemWithPath(itemPath).GetAsync(); -``` - -### Create folder - -```c# -var folder = new DriveItem -{ - Name = folderName, - Folder = new Folder(), - AdditionalData = new Dictionary() - { - { "@microsoft.graph.conflictBehavior", "fail" } - } -}; -var createdFolder = await _graphClient.Drives[_containerId].Items[parentFolderId].Children.PostAsync(folder); -``` - -### Migrate File - -```c# -// The parameter must be of type Object. -internal async void MigrateFile(Object stateInfo) -{ - var fileStructure = (FileStructure)stateInfo; - - // Check if the file exists in the destination. If it exists - // - don't upload - // - check if the file is newer in the source than the destination - then upload - ... - - // Migrate the file - // This is where you download the blob as a stream from abs (code below) - ... - - // Then upload the stream to SPE (code below) - ... - - // Signal the countdown event that a file has been migrated - _countdown.Signal(); - - return; -} -``` - -### Downloading From The Blob From ABS As A Stream - -```c# -BlobClient blobClient = _containerClient.GetBlobClient(blobName); - -MemoryStream memoryStream = new MemoryStream(); -await blobClient.DownloadToAsync(memoryStream); -memoryStream.Position = 0; // Reset the stream position to the beginning -``` - -### Uploading The Stream To SPE - -```c# -int _maxChunkSize = 320 * 1024; - -var uploadSessionRequestBody = new CreateUploadSessionPostRequestBody() -{ - AdditionalData = new Dictionary - { - // Fail is set here, so it doesn't get upload again if it already exist - { "@microsoft.graph.conflictBehavior", "fail" } - } -}; - -var uploadSession = await _graphClient.Drives[_containerId] - .Items[parentFolderId] - .ItemWithPath(fileName) - .CreateUploadSession - .PostAsync(uploadSessionRequestBody); - -// The stream is the same stream from the downloading the blob -var fileUploadTask = new LargeFileUploadTask(uploadSession, memoryStream, _maxChunkSize, _graphClient.RequestAdapter); -IProgress progress = new Progress(prog => Console.WriteLine($"Uploaded {fileName} {prog} bytes")); - -// Check uploadResult.UploadSucceeded to see if it is successful -var uploadResult = await fileUploadTask.UploadAsync(progress); -``` - -## Overview Of The Sample App - -### Description - -A sample app called **MigrateABStoSPE** that is designed to migrate files from an Azure Blob Storage (ABS) container to a SharePoint Embedded (SPE) container. The code snippets provided in the **Migrating Data from Azure Blob Storage container to SharePoint Embedded container** are from the sample app. - -It uses Azure.Storage.Blobs and Newtonsoft.Json libraries for working with ABS and JSON data respectively. The app authenticates with both ABS and SPE using client credentials and performs the migration of files. - -### Packages - -1. Microsoft Graph SDK (version 5.56.0) -1. Azure.Identity (version 1.12.0) -1. Azure.Storage.Blobs (version 12.21.0) -1. CommandLineParser (version 2.9.1) -1. Newtonsoft.Json (13.0.3) - -### Out Of Scope - -1. How to deal with files that already exist in the destination - it fails, it doesn't overwrite or rename -1. How to deal with ABS version newer than the destination - it fails because the file already exists in the destination - -### Running The Sample App - -1. Open a terminal or command prompt. -1. Navigate to the directory where the **Program.cs** file is located. -1. Make sure you have the .NET Core SDK installed on your machine. You can check this by running the command **dotnet --version** in the terminal. If the command isn't recognized, you can download and install the .NET Core SDK from the official Microsoft website. -1. Once you have confirmed that the .NET Core SDK is installed, you can build the application by running the command **dotnet build**. This will compile the code and generate the necessary binaries. -1. After the build process is complete, you can run the application by executing the command **dotnet run** followed by the required arguments. The required arguments are: - - - The container-level SAS URL: This is an Azure Blob container level SAS URL. It provides access to the container and its blobs. - - The SPE tenant ID: This is the tenant you're authenticating against in the SPE. - - The SPE client ID: This is the client you're authenticating against in the SPE. - - The SPE container ID: This is the container you're migrating content to in the SPE. For more information on how to get the [container ID](/graph/api/filestorage-list-containers) - - (optional) File name with full path that contains the blob list. - - (optional) File name with full path where to output failed blobs. - -For example, the command to run the application with the required arguments would look like this: - -```console -# line breaks added for readability -dotnet run Program.cs -- \ - --sasurl "" \ - --tenantid "" \ - --clientid "" \ - --containerid "" \ - [ --blobfile "" --outputfile "" ] -``` - -### Blob and SPE Item Structure - -ABS container doesn't adhere to a folder structure, all the blobs are stored in a flat listing structure. When migrating to SPE, the sample app parses the blob name and creates the folder structure in the container ID provided, with the container name as the top folder. If you're migrating to the root folder, you can ignore this section. - -**Source** - -- Container Name: Container1 - - Blob name: FolderA/blob1.txt - - Blob name: FolderA/FolderB/blob2.txt - - Blob name: FolderA/FolderB/FolderC/blob3.txt - -**Destination** - -- Drive Item folder - - Container1 - - FolderA - - blob1.txt - - FolderB - - blob2.txt - - FolderC - - blob3.txt - -## Handling Errors and Exceptions - -### Common Issues - -1. File already exists in the destination - - - This app checks to see if the file name exists in the destination before it uploads. If a file with the exact same name exists, it will not do the upload again. It will print to stdout a message that the file already exists. To fix it, you can either delete the file from the destination or change the `conflictBehavior` to replace and not call `CheckIfItemExists` on upload. - -1. The file for the list of blobs isn't found -1. The format for the list of blobs - one blob per line, without quotes around the blob name -1. Not giving enough permission to access the ABS container - - - The minimum permissions are **Read** and **List** - -1. Not giving enough permissions to the SPE container - - - The required scope is **User.Read** and **FileStorageContainer.Selected** - - Remember to grant admin consent - - Remember to create the mobile & console platform app - -## Testing the Migration - -### Verification - -1. When the file is queued, it will print to stdout -1. It will print the stats of the total blobs that were processed: total, success, exists in destination, and failed. -1. If there are errors, it will send the failed blob list to a file. The file name will be printed to stdout. It will also, print a command for an incremental re-run. - -## Conclusion - -### Summary - -In this tutorial, we explored how to migrate content from ABS container to SPE container. By following the steps outlined, writing your own app to migrate content should be easy. - -To recap, we: - -1. Authenticated with ABS and Graph -1. How to use a thread pool to queue migration of blob -1. Check if the item exists in destination -1. Retrieved the blob list from ABS container -1. Uploaded the blob to the SPE container - -Understanding these steps is crucial for migrating content from ABS container to SPE container. Now, try implementing these steps in your own projects and see the difference it makes! - -Happy coding! - -### Next Steps - -- For more information about Blob Storage, see [Blob Storage documentation](/azure/storage/blobs/storage-blobs-introduction). -- For more information about SPE, see [SharePoint Embedded documentation](https://aka.ms/start-spe). - -## Appendix - -### Code Repository - -The sample app can be found in the [SharePoint Embedded Samples repository](https://github.com/microsoft/SharePoint-Embedded-Samples/tree/main/Tools/migrate-from-blob-storage). diff --git a/docs/embedded/development/tutorials/spe-da-vscode.md b/docs/embedded/development/tutorials/spe-da-vscode.md deleted file mode 100644 index 43e579d018..0000000000 --- a/docs/embedded/development/tutorials/spe-da-vscode.md +++ /dev/null @@ -1,355 +0,0 @@ ---- -title: SharePoint Embedded agent Tutorial -description: SharePoint Embedded agent tutorial with the SDK and the VS Code SharePoint Embedded Extension -ms.date: 03/06/2025 -ms.localizationpriority: high ---- - -# Tutorial for getting started with SharePoint Embedded agent - -## Prerequisites - -> [!NOTE] -> -> 1. You'll need to create a SharePoint Embedded application. If you don't have one, you can easily build a sample application using the instructions [here](#getting-started-using-the-sharepoint-embedded-visual-studio-code-extension). -> 1. You must specify a standard container type at creation time. Depending on the purpose, you may or may not need to provide your Azure Subscription ID. A container type set for trial purposes can't be converted for production, or vice versa. -> 1. You must use the latest version of SharePoint PowerShell to configure a container type. For permissions and the most current information about Windows PowerShell for SharePoint Embedded, see the documentation at [Intro to SharePoint Embedded Management Shell](/powershell/SharePoint/SharePoint-online/introduction-SharePoint-online-management-shell). -> -> - Set the **CopilotChatEmbeddedHosts** property of your container type configuration to `http://localhost:8080` to be able to work through the following quick start, refer to [the preceding CSP section for more information](../declarative-agent/spe-da-adv.md#csp-policies). -> - Set the **DiscoverabilityDisabled** property of your container type configuration to `false` so that the agent can find the files in your created container. Refer to the [Discoverability Disabled section above for more information](../declarative-agent/spe-da-adv.md#discoverabilitydisabled). -> - Ensure that Copilot for Microsoft 365 is available for your organization. You have two ways to get a developer environment for Copilot: -> - A sandbox Microsoft 365 tenant with Microsoft 365 Copilot (available in limited preview through [TAP membership](https://developer.microsoft.com/microsoft-365/tap)). -> - An [eligible Microsoft 365 or Office 365 production environment](/microsoft-365-copilot/extensibility/prerequisites#customers-with-existing-microsoft-365-and-copilot-licenses) with a Microsoft 365 Copilot license. - -## Getting started using the SharePoint Embedded SDK - -### 1. Install the SDK into your React repo - -```console -# Install the SDK with npm - -npm install "https://download.microsoft.com/download/970802a5-2a7e-44ed-b17d-ad7dc99be312/microsoft-sharepointembedded-copilotchat-react-1.0.9.tgz" -``` - -#### If you want to verify checksums - -In MacOS/Linux - -```console -version="1.0.9"; - -url="https://download.microsoft.com/download/970802a5-2a7e-44ed-b17d-ad7dc99be312/microsoft-sharepointembedded-copilotchat-react-1.0.9.tgz"; - -expected_checksum="3bdf19830ffc098b253cc809f969f50fba236ad95fe85123e7b15c7cf58ecf6b"; - -package_path="microsoft-sharepointembedded-copilotchat-react-$version.tgz"; - -curl -o $package_path $url && [ "$(sha256sum $package_path | awk '{ print $1 }')" == "$expected_checksum" ] && npm install $package_path || { echo "Checksum does not match. Aborting installation."; rm $package_path; } -``` - -In Windows: - -```powershell -$version = "1.0.9" -$url = "https://download.microsoft.com/download/970802a5-2a7e-44ed-b17d-ad7dc99be312/microsoft-sharepointembedded-copilotchat-react-1.0.9.tgz" -$expected_checksum = "3BDF19830FFC098B253CC809F969F50FBA236AD95FE85123E7B15C7CF58ECF6B" -$package_path = "microsoft-sharepointembedded-copilotchat-react-$version.tgz" - -Invoke-WebRequest -Uri $url -OutFile $package_path - -$calculated_checksum = Get-FileHash -Path $package_path -Algorithm SHA256 | Select-Object -ExpandProperty Hash - -if ($calculated_checksum -eq $expected_checksum) { - Write-Output "Checksum matches. Installing the package..." - npm install $package_path -} else { - Write-Output "Checksum does not match. Aborting installation." -} -Remove-Item $package_path -``` - -### 2. Create an `authProvider` object - -This is an object that matches this interface: - -```typescript -export interface IChatEmbeddedApiAuthProvider { - // The hostname for your tenant. Example: https://m365x10735106.sharepoint.com - hostname: string; - // This function will be called when an SPO token is required - // Scope needed: ${hostname}/Container.Selected - getToken(): Promise; -} -``` - -Example usage in app: - -```typescript -// In your app: -import { IChatEmbeddedApiAuthProvider } from '@microsoft/sharepointembedded-copilotchat-react'; - -const authProvider: IChatEmbeddedApiAuthProvider = { - hostname: 'https://m365x10735106.sharepoint.com', - getToken: requestSPOAccessToken, -}; -``` - -Example implementation of `getToken` (you need to customize it): - -```typescript -// -async function requestSPOAccessToken() { - // Use your app's actual msalConfig - const msalConfig = { - auth: { - clientId: "{Your Entra client ID}", // this can likely point to process.env.REACT_APP_CLIENT_ID if you have set it in your .env file - }, - cache: { - // https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/caching.md - /* - Cache Location | Cleared on | Shared between windows/tabs | Redirect flow supported - ----------------- ---------- ------------------------- ------------------------ - sessionStorage | window/tab close | No | Yes - localStorage | browser close | Yes | Yes - memoryStorage | page | refresh/navigation | No | No - */ - cacheLocation: 'localStorage', - storeAuthStateInCookie: false, - }, - }; - - const containerScopes = { - scopes: [`${authProvider.hostname}/Container.Selected`], - redirectUri: '/' - }; - - const pca = new msal.PublicClientApplication(msalConfig); - let containerTokenResponse; - - // Consent FileStorageContainer.Selected scope - try { - // attempt silent acquisition first - containerTokenResponse = await pca.acquireTokenSilent(containerScopes); - return containerTokenResponse.accessToken; - } catch (error) { - if (error instanceof InteractionRequiredAuthError) { - // fallback to interaction when silent call fails - containerTokenResponse = await pca.acquireTokenPopup(containerScopes); - return containerTokenResponse.accessToken; - } - else { - console.log(error); - } - } -} -``` - -### 3. Create a React state to store your `chatApi` in - -```typescript -const [chatApi, setChatApi] = React.useState(null); -``` - -Example: - -```typescript -import React from 'react'; -import { ChatEmbedded, ChatEmbeddedAPI, IChatEmbeddedApiAuthProvider } from '@microsoft/sharepointembedded-copilotchat-react'; - -//... -async function requestSPOAccessToken() { - //... -} - -const authProvider: IChatEmbeddedApiAuthProvider = { - hostname: 'https://m365x10735106.sharepoint.com', - getToken: requestSPOAccessToken, -}; - -function App() { - const [chatApi, setChatApi] = React.useState(null); - - return ( - //... - ); -} -``` - -### 4. Add the `ChatEmbedded` component into your react app - -```typescript -import React from 'react'; -import { ChatEmbedded, ChatEmbeddedAPI, IChatEmbeddedApiAuthProvider } from '@microsoft/sharepointembedded-copilotchat-react'; - -//... -async function requestSPOAccessToken() { - //... -} - -const authProvider: IChatEmbeddedApiAuthProvider = { - hostname: 'https://m365x10735106.sharepoint.com', - getToken: requestSPOAccessToken, -}; - -function App() { - const [chatApi, setChatApi] = React.useState(null); - - return ( - //... - - //... - ); -} -``` - -### 5. Use the `chatApi` object in your state to open the chat and run it - -In the preceding example, call it this way to open the chat. - -```typescript -await chatApi.openChat(); -``` - -You may choose to pass in launch configurations - -```typescript -import { IconName, IconStyle } from './sdk/types'; - -//... -const zeroQueryPrompts = { - headerText: "This is my Starter Prompt", - promptSuggestionList: [{ - suggestionText: 'Hello', - iconRegular: { name: IconName.ChatBubblesQuestion, style: IconStyle.Regular }, - iconHover: { name: IconName.ChatBubblesQuestion, style: IconStyle.Filled }, - }] -}; - -const launchConfig: ChatLaunchConfig = { - header: 'My Awesome Chat', - zeroQueryPrompts, - suggestedPrompts: ["What are my files?",], - instruction: "Response must be in the tone of a pirate", - locale: "en", -}; - -await chatApi.openChat(launchConfig); -``` - -Full example: - -```typescript -import React from 'react'; -import { ChatEmbedded, ChatEmbeddedAPI, IChatEmbeddedApiAuthProvider } from '@microsoft/sharepointembedded-copilotchat-react'; - -//... -async function requestSPOAccessToken() { - //... -} - -const authProvider: IChatEmbeddedApiAuthProvider = { - hostname: 'https://m365x10735106.sharepoint.com', - getToken: requestSPOAccessToken, -}; - -function App() { - const [chatApi, setChatApi] = React.useState(null); - - React.useEffect(() => { - const openChat = async () => { - if (!chatApi) { - return; - } - - await chatApi.openChat(); - }; - - openChat(); - }, [chatApi]); - - - return ( - //... - setChatApi(api)} - authProvider={authProvider} - containerId={container.id} - style={{ width: 'calc(100% - 4px)', height: 'calc(100vh - 8px)' }} - /> - //... - ); -} -``` - -### 6. Your AI chat should be loaded successfully - -## Getting started using the SharePoint Embedded Visual Studio Code Extension - -### Quick Start - -> [!NOTE] -> When using standard container types with the VS Code extension, [DisableDiscoverability](../declarative-agent/spe-da-adv.md#discoverabilitydisabled) and [Grant admin consent](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal) features are currently not supported. This will need to be done using the [SPO Admin PowerShell](/powershell/sharepoint/sharepoint-online/connect-sharepoint-online). - -1. Follow this guide up to the [Load Sample App section](../../getting-started/spembedded-for-vscode.md#load-sample-app) with the Visual Studio Code Extension -1. Within the extension, right select on the owning application, and select `Run sample apps -> Typescript + React + Azure Functions` - - ![Using the SPE VS Code extension to create a TypeScript React Azure Functions project](../../images/speco-runsampleapp.png) - -1. Allow for the extension to copy and create client secrets - - > [!CAUTION] - > Caution for production environments, storing secrets in plain text poses a security risk. - - ![SPE VS Code notification alerting it will copy app secrets in plain text on local machine](../../images/speco-createappsecret.png) - - If the application doesn't already have a client secret, the extension will ask to create one for you. - - ![SPE VS Code notification prompting user to allow it to create a secret for the application if it does not exist.](../../images/speco-createclientsecret.png) - -1. Select a folder to host the application, this will clone the following [repository for SharePoint Embedded Samples](https://github.com/microsoft/SharePoint-Embedded-Samples/tree/main/Custom%20Apps/boilerplate-typescript-react) into the folder - - ![windows File Explorer folder to save project on local machine](../../images/speco-cloneproject.png) - - Next, when prompted, open the folder - - ![VS Code extension with the SPE React Typescript + Azure Functions sample application cloned on local machine and open in VS Code](../../images/speco-vscodeclonedproject.png) - -1. Navigate to `react-client\src\components\ChatSideBar.tsx` and uncomment this section - - ![VS Code file explorer with ChatSideBar.tsx in open window with relevant code to uncomment highlighted](../../images/speco-uncommentchatsidebar.png) - -1. Navigate to `react-client\src\routes\App.tsx` and set the React state of the `showSidebar` variable to `true` - - ![VS Code file explorer with App.tsx open with line of showSidebar variable useState function input changed from false to true to enable showing chat side bar](../../images/speco-setshowsidebartrue.png) - -1. You can follow the instructions of the `README.md` file in the root of the project for further npm commands. Run `npm run start` in the root of the project to start your application with the SPE agent functionality enabled. - - > [!NOTE] - > `npm run start` Should be done in the root folder of the sample project. `\SharePoint-Embedded-Samples\Custom Apps\boilerplate-typescript-react` - - ![VS Code terminal in root folder of SPE Typescript project cloned earlier and npm run start command typed in](../../images/speco-runnpmrunstart.png) - -1. Sign in with a user who has a Microsoft 365 Copilot license enabled. - - ![SPE Typescript App running in Edge with sign in buttons](../../images/speco-reacttypescripthomepage.png) - -1. Navigate to the `containers` page, create one if you don't have any yet - - ![SPE Typescript App running in edge in /containers sub page with modal of user c reatign a container called ContosoCompanyContainer](../../images/speco-createcontosocontainer2.png) - - After it has been created, you'll see it here: - - ![SPE Typescript App running in edge with a created container from above ContosoCompanyContainer](../../images/speco-createdcontainer.png) - -1. Select the container and upload your files. Once a container has been created and you have navigated inside it, your agent chat experience will become enabled. - - ![SPE Typescript App running in edge inside a created container page of ContosoCompanyContainer](../../images/speco-spechatenabled.png) - -### Examples - -The [SharePoint Embedded Samples](https://github.com/microsoft/SharePoint-Embedded-Samples/tree/main/Custom%20Apps/boilerplate-typescript-react) repository has examples for how to use SharePoint Embedded in your custom applications. diff --git a/docs/embedded/development/tutorials/using-file-preview.md b/docs/embedded/development/tutorials/using-file-preview.md deleted file mode 100644 index 3c17ada733..0000000000 --- a/docs/embedded/development/tutorials/using-file-preview.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: File Previews -description: Preview SharePoint Embedded content -ms.date: 03/05/2025 -ms.localizationpriority: high ---- - -# Using File Previews - -## Embedding a file preview in an iFrame - -It's possible to preview a [wide range](https://support.microsoft.com/office/file-types-supported-for-previewing-files-in-onedrive-sharepoint-and-teams-e054cd0f-8ef2-4ccb-937e-26e37419c5e4) of files in your browser without using a special application. Among the files supported, you can view PDF, JPG, MP4, etc. - -In order to preview a file in an `iframe`, you need to - -1. Call Graph's driveItem preview endpoint and obtain the GetUrl -1. Use the URL in an iFrame (or even open it in a new page) - -## Get the preview url using Graph - -Microsoft Graph offers the following endpoint to [preview a file](/graph/api/driveitem-preview): - -```javascript -POST https://graph.microsoft.com/{version}/drives/{driveId}/items/{itemId}/preview -``` - -- `Version` is Graph's version. For example "v1.0" -- The `driveId` is Container ID (starts with "b!") -- The `itemId`, which is the drive item ID. - -If you're using the Microsoft Graph C# SDK, the code would be similar to the following: - -```csharp -ItemPreviewInfo preview = await graphServiceClient - .Drives[driveId] - .Items[itemId] - .Preview() - .Request() - .PostAsync(); -``` - -The JSON response includes the preview URLs for each document. Use the one obtained in `getUrl`: - -```javascript -{ - "getUrl": "https://www.onedrive.com/embed?foo=bar&bar=baz", - "postParameters": "param1=value¶m2=another%20value", - "postUrl": "https://www.onedrive.com/embed_by_post" -} -``` - -> [!TIP] -> It's possible to remove the banner at the top by adding the parameter `nb=true` to the obtained URL. E.g., -> `https://contoso.sharepoint.com/restOfUrl/embed.aspx?param1=value&nb=true` - -> [!CAUTION] -> Currently **getUrl** contains a parameter with an encrypted token that can only be used with your application. However, this may change soon and you may be asked to add an auth header as you do with other requests. - -## Use the URL in an `iframe` - -The next step is simply to use the URL obtained in the previous step in a new page. You could have an endpoint in your application that serves a new page as similar to this one: - -```html - - - -

Preview

-

Preview of {file name}:

- - - - -``` - -## Load the document preview dynamically - -If you intend to dynamically load the preview in the same page without leaving it, you might get a CORS error if you attempt to access the Microsoft Graph endpoint directly from a script from your page. - -One way to solve this problem is to create an endpoint in your application that makes the request and returns the url. - -For example, your server-side code should first obtain the document's preview url: - -```csharp -[HttpGet] -[AuthorizeForScopes(Scopes = new string[] { "Files.Read.All" })] -public async Task> GetPreviewUrl(string driveId, string itemId) -{ - // Obtain tokens for the the request - // Use the function created in the first step - return url + "&nb=true"; //Use nb=true to suppress banner -} -``` - -The client-side application can then use the browser's `fetch` API to request and inject the url into the `iframe`: - -```javascript -async function preview(driveId, itemId) { - const url = `/GetPreviewUrl?driveId=${driveId}&itemId=${itemId}`; - const response = await fetch(url, { - credentials: 'include', - }).then(response => response.text()); - - document.getElementById('preview').src = response + "&nb=true"; //Use nb=true to suppress banner -} -``` - -## PDF Preview - -SharePoint Embedded includes a PDF previewer that you can enhance with query parameters appended to the driveItem's `webUrl` property. To get `webUrl`, call the [driveItem GET API](/graph/api/driveitem-get), for example `GET /drives/{drive-id}/items/{item-id}?$select=webUrl`, and retrieve the `webUrl` field. - -The parameters are passed as a JSON-encoded `embed` query string: - -```text -?&embed={"":,"":} -``` - -You can include one or more parameters in the same object. - -> [!NOTE] -> Additional query parameters will be added to this section as the PDF previewer expands. - -### Print (`mpp`) - -Enables the print icon and Ctrl+P functionality. - -```text -?&embed={"mpp":true} -``` - -### Sticky Notes (`mpsn`) - -Shows sticky note content if sticky notes are present in the PDF. - -```text -?&embed={"mpsn":true} -``` diff --git a/docs/embedded/development/tutorials/using-webhooks.md b/docs/embedded/development/tutorials/using-webhooks.md deleted file mode 100644 index 88fb8ca114..0000000000 --- a/docs/embedded/development/tutorials/using-webhooks.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Using Webhooks -description: Use webhooks with SharePoint Embedded. -ms.date: 03/03/2025 -ms.localizationpriority: high ---- - -# Using Webhooks - -## Set Up Webhooks with SharePoint Embedded - -Webhooks are automated messages that are transmitted by an application when a trigger is activated. They can be used in SPE to enable the automation of workflows, the integration of systems, and to respond to events in real-time. - -You'll use webhooks to invoke the Azure Cognitive Services APIs from the application whenever an existing file is updated, or a new file is uploaded. - -To set up webhooks with your [current SharePoint Embedded application](/training/modules/sharepoint-embedded-create-app/), you need to: - -1. Create and register a webhook endpoint to get notifications whenever there's a change in your container. This will be done using REST APIs. -1. Connect to Graph and subscribe to changes. You can expose your application to the internet by either running it locally or deploying it on the cloud. For this tutorial, you'll be employing the former by utilizing ngrok and then subscribing to the changes by making a POST call. -1. Perform any desired action by handling the webhook data. One such use case is covered in [Enabling document processing with Azure Cognitive Services tutorial](./doc-processing-acs.md). - -![using webhooks schema](../../images/Using-Webhooks.png) - -> [!TIP] -> To learn more about the Microsoft Graph APIs used in this tutorial, see [Create subscription](/graph/api/subscription-post-subscriptions). - -## Create and register a webhook - -Open the **index.ts** file and add an endpoint `onReceiptAdded`: - -```typescript -server.post('/api/onReceiptAdded', async (req, res, next) => { - try { - const response = await onReceiptAdded(req, res); - res.send(200, response) - } catch (error: any) { - res.send(500, { message: `Error in API server: ${error.message}` }); - } - next(); -}); -``` - -You also need to add the query parser plugin at the top of this file so that it runs at server startup: - -```typescript -server.use(restify.plugins.bodyParser(), restify.plugins.queryParser()); -``` - -Create **onReceiptAdded.ts** and implement the method `onReceiptAdded` to read `validationToken` and `driveId`. `validationToken` is required when Microsoft Graph makes a one-time call to verify the endpoint upon creation of the webhook subscription. `driveId` is the container-id for which the subscription is created. - -```typescript -require('isomorphic-fetch'); - -export const onReceiptAdded = async (req: Request, res: Response) => { - - const validationToken = req.query['validationToken']; - if (validationToken) { - res.send(200, validationToken, {"Content-Type":"text/plain"}); - return; - } - - const driveId = req.query['driveId']; - if (!driveId) { - res.send(200, "Notification received without driveId, ignoring", {"Content-Type":"text/plain"}); - return; - } - - console.log(`Received driveId: ${driveId}`); - - res.send(200, ""); - return; -} -``` - -## Connect to Graph and subscribe to changes - -Follow the [documentation](https://ngrok.com/docs/getting-started/) to create a tunnel for your backend server using ngrok. - -After starting the app, run the following command in a terminal: - -```console -ngrok http 3001 -``` - -On successful completion, you should get the following output. The public-facing endpoint for the app is highlighted in the red rectangle: - -![ngrok registration](../../images/ngrok-registration.png) - -Once the tunneling is active, you can subscribe to delta changes in the container by adding the webhook URL. To do that, open Postman and make the following `POST` request with the appropriate graph access token and `notificationUrl` with the `driveId` appended as a query parameter to ensure that you get notifications for changes only in the desired container. - -```json -POST https://graph.microsoft.com/v1.0/subscriptions -{ - "changeType": "updated", - "notificationUrl":"https://5ac2-2404-f801-8028-3-691a-87b2-d309-545b.ngrok-free.app/api/onReceiptAdded?driveId={{ContainerId}}", - "resource": "drives/{{ContainerId}}/root", - "expirationDateTime": "2024-01-20T03:58:34.088Z", - "clientState": "" -} -``` - -You can use the following code snippet for setting the max possible expiration time of 4230 minutes from the current time by adding this to the "Pre-request Script" section. It will set an environment variable that can be used in the request body. - -```javascript -var now = new Date() -var duration = 1000 * 60 * 4230; // max lifespan of driveItem subscription is 4230 minutes -var expiry = new Date(now.getTime() + duration); -var expiryDateTime = expiry.toISOString(); - -pm.environment.set("ContainerSubscriptionExpiry", expiryDateTime); -``` - -At this point, if you add/update any file in the container, you'll get a notification at the previously added endpoint (`/api/onReceiptAdded`) and a log message at the console: `Received driveId: ` diff --git a/docs/embedded/development/tutorials/vendor-install-app-customer.md b/docs/embedded/development/tutorials/vendor-install-app-customer.md deleted file mode 100644 index 949fdfd8ad..0000000000 --- a/docs/embedded/development/tutorials/vendor-install-app-customer.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Install your SharePoint Embedded application for customers. -description: Seamlessly install your SharePoint Embedded application on your customers' tenant. -ms.date: 10/08/2025 -ms.localizationpriority: medium ---- - -# Install your SharePoint Embedded application for customers - -This guide provides instructions for developers looking to get their SharePoint Embedded (SPE) app installed on a Microsoft 365 consuming tenant. - -## Prerequisites - -This guide assumes that you created a SharePoint Embedded container type and developed your application. Learn more about [container types](../../getting-started/containertypes.md). - -The consuming tenant can be any Microsoft 365 tenant (including your own), but it must have at least one SharePoint license. - -## Overview - -Developers looking to get their SharePoint Embedded app installed on a tenant have a few tasks to complete: - -- Get the required admin permission grants for your app on the consuming tenant -- Register your app's container type on the consuming tenant -- Ensure your customer’s tenant completed [SharePoint Embedded pay-as-you-go billing setup](../../administration/consuming-tenant-admin/cta.md#set-up-billing-for-passthrough-container-type) if your container type is [configured for pass-through billing](../../administration/billing/billing.md#passthrough-billing) - -### Application permissions to request - -Your app needs a minimum set of Microsoft Graph permissions to be installed on a consuming tenant. For more information, see [SharePoint Embedded authentication and authorization](../auth.md). - -1. [`FileStorageContainerTypeReg.Selected`](/graph/permissions-reference#filestoragecontainertyperegselected) delegated or application permission to register the SPE container type in the consuming tenant. When your app uses the delegated permission, the user performing the container type registration must be a [SharePoint Embedded Admin](/entra/identity/role-based-access-control/permissions-reference#sharepoint-embedded-administrator) or [Global Admin](/entra/identity/role-based-access-control/permissions-reference#global-administrator). The application permission requires admin consent, but the delegate permission doesn't require admin consent. -1. [`FileStorageContainer.Selected`](/graph/permissions-reference#filestoragecontainerselected) delegated or application permission to interact with SharePoint Embedded content for the container type in the consuming tenant. This permission requires admin consent. - -> [!IMPORTANT] -> Using SharePoint Embedded on behalf of a user is the recommended approach. This type of access enhances the security of your application. It also improves the auditability of actions performed by your application. - -### Request admin consent - -Single-tenant apps (when the app is registered and is used in the same tenant) can benefit from getting admin consent from the Microsoft Entra directory administrator in a simplified manner. [Construct the admin consent URL](/entra/identity-platform/v2-admin-consent#request-the-permissions-from-a-directory-admin) and provide it to your Microsoft Entra directory administrator for them to grant admin consent. For example: - -```http -https://login.microsoftonline.com/{tenant}/v2.0/adminconsent?client_id={client_id}&redirect_uri={redirect_uri} -``` - -> [!NOTE] -> Make sure your app's [redirect URI](/entra/identity-platform/reply-url) can [handle admin consent flows](/entra/identity-platform/v2-admin-consent#successful-response). - -## In-app installation experience (recommended) - -You can facilitate the installation of your SharePoint Embedded app within your own app experience. We recommended that you use the [Microsoft Authentication Library (MSAL)](/entra/identity-platform/msal-overview) to handle all authorization steps. Here's the high-level process: - -1. Provide a [sign-in experience in your app](/entra/identity-platform/quickstart-web-app-sign-in) and obtain an [ID token](/entra/identity-platform/id-tokens) for the user -1. Inspect and [validate the token](/entra/identity-platform/claims-validation) to extract the tenant ID and roles assigned to the user -1. Determine if your app is already installed on the tenant - 1. Request a Microsoft Graph access token with `FileStorageContainerTypeReg.Selected` application permission - 1. Try to [get the registration for your container type](/graph/api/filestoragecontainertyperegistration-get). If your container type is already registered in the consuming tenant, you're done! -1. Determine if the user has either the [Privileged Role Administrator](/entra/identity/role-based-access-control/permissions-reference#privileged-role-administrator) or [Global Administrator](/entra/identity/role-based-access-control/permissions-reference#global-administrator) roles by validating the `wids` claim in the ID token. - 1. If the user isn't a Privileged Role Admin or Global Admin, it's unlikely that they can provide admin consent in the following steps. -1. [Request admin consent](#request-admin-consent) for your app by navigating the user to the admin consent URL. - 1. Ensure your app's redirect URI can handle this redirection appropriately so you can proceed with the next steps within the app experience. -1. Once admin consent is granted, request a Microsoft Graph access token with `FileStorageContainerTypeReg.Selected` application permission -1. [Create your container type registration](/graph/api/filestorage-post-containertyperegistrations) on the consuming tenant -1. If your container type is [configured for pass-through billing](../../administration/billing/billing.md#passthrough-billing), you should make a billable API call to confirm that billing is set up. For example, [create a container](/graph/api/filestoragecontainer-post). - 1. If the call fails with a billing error, point the user to [set up SharePoint Embedded pay-as-you-go billing](../../administration/consuming-tenant-admin/cta.md#set-up-billing-for-passthrough-container-type). diff --git a/docs/embedded/getting-started/containertypes.md b/docs/embedded/getting-started/containertypes.md deleted file mode 100644 index c87544cd4c..0000000000 --- a/docs/embedded/getting-started/containertypes.md +++ /dev/null @@ -1,194 +0,0 @@ ---- -title: Create new SharePoint Embedded container types -description: This article explains how container types work and the steps to create new container types. -ms.date: 11/27/2023 -ms.localizationpriority: high ---- - -# SharePoint Embedded container types - -A container type is a SharePoint Embedded resource that defines the relationship, access privileges, and billing accountability between a SharePoint Embedded application and a set of containers. Also, the container type defines behaviors on the set of containers. - -Each container type is strongly coupled with one SharePoint Embedded application, which is referred to as the owning application. The owning application developer is responsible for creating and managing their container types. SharePoint Embedded mandates a 1:1 relationship between the owning application and a container type. - -A container type is represented on each container instance as an immutable property (ContainerTypeID) and is used across the entire SharePoint Embedded ecosystem, including: - -- **Access authorization**: A SharePoint Embedded application must be associated with a container type to get access to container instances of that type. Once associated, the application has access to all container instances of that type. The actual access privilege is determined by the application-ContainerTypeID permission setting. The owning application by default has full access privilege to all container instances of the container type it's strongly coupled with. Learn more about [SharePoint Embedded Authorization](../development/auth.md). -- **Easy exploration**: Container types can be created for trial purposes, allowing developers to explore SharePoint Embedded application development and assess its features for free. -- **Billing**: Container types for nontrial purposes are billable and must be created with an Azure Subscription. The usage of containers is metered and charged. Learn more about [metering](../administration/billing/meters.md) and the [SharePoint Embedded billing experience](../administration/billing/billingmanagement.md). -- **Configurable behaviors**: Container type defines selected behaviors for all container instances of that type. Learn more about setting [Container type configuration](../getting-started/containertypes.md#configuring-container-types). - -> [!NOTE] -> -> 1. You must specify the purpose of the container type you're creating at creation time. A container type set for trial purposes can't be converted for production; or vice versa. -> 1. Standard and passthrough container types can't be converted once created. If you want to convert a standard container type to passthrough billing or vice versa, you must delete and re-create the container type. - -## Tenant requirements - -- An active instance of SharePoint is required in your Microsoft 365 tenant. -- Users who authenticate into SharePoint Embedded container types and containers must be in Microsoft Entra ID (Members and Guests) -- A Microsoft Entra ID app registration needs to be configured for container type management. For more information, see [SharePoint Embedded authentication and authorization](../development/auth.md). - -> [!NOTE] -> An Office license isn't required to collaborate on Microsoft Office documents stored in a container. - -## Creating container types - -SharePoint Embedded has two different container types you can create. - -1. [Trial container type](#trial-container-type). Uses the `trial` billing classification. -1. [Standard container type](#standard-container-types-nontrial). Uses the `standard` or `directToCustomer` billing classification. - -To create a container type, your Microsoft Entra ID application needs the [`FileStorageContainerType.Manage.All`](/graph/permissions-reference#filestoragecontainertypemanageall) **delegated** Microsoft Graph permission. Application-only access isn't supported for this endpoint. The calling user must be a non-guest member of the owning tenant. Administrator roles aren't required. The calling user is automatically assigned as an owner of the new container type. For details on owner capabilities and how to manage owners, see [Container type owner capabilities](../development/auth.md#container-type-owner-capabilities). - -Call the [Create fileStorageContainerType](/graph/api/filestorage-post-containertypes) endpoint: - -```http -POST https://graph.microsoft.com/beta/storage/fileStorage/containerTypes -Content-Type: application/json - -{ - "name": "{ContainerTypeName}", - "owningAppId": "{ApplicationId}", - "billingClassification": "{BillingClassification}", - "settings": { - ... - } -} -``` - -> [!NOTE] -> Replace: -> -> - `{ContainerTypeName}` with a user-friendly name for your SharePoint Embedded application. -> - `{ApplicationId}` with the ID of your properly configured application. -> - `{BillingClassification}` with `trial`, `standard`, or `directToCustomer`. Keep reading to understand what each means. -> -> You can also [configure your container type](#configuring-container-types) during creation by setting the `settings` field. - -## Trial container type - -A container type can be created for trial/development purposes and isn't linked to any Azure billing profile. Trial container types enable developers to explore SharePoint Embedded application development and assess its features for free. For trial container types, the developer tenant is the same as the consuming tenant. -Each developer can have only one container type with `trial` billing classification in their tenant at a time. The trial container type is valid for up to 30 days but can be removed at any time within this period. - -You can easily set up a trial container type using the [SharePoint Embedded Visual Studio Code extension](../getting-started/spembedded-for-vscode.md). - -The following restrictions are applied to trial container types: - -- The tenant can have up to five containers of the container type. This includes active containers and those in the recycle bin. -- Each container has up to 1 GB of storage space. -- The container type expires after 30 days and access to any existing containers of that container type is then removed. -- The developer must permanently delete all containers of an existing container type in trial status to create a new container type for trial. This includes containers in the deleted container collection. -- The container type is restricted to work in the developer tenant. It can't be deployed in other consuming tenants. - -## Standard container types (nontrial) - -A standard container type can be used in production environments. Each tenant can have 25 container types at a time. Standard container types don't have the same restrictions as trial container types, but they still have limits. For more information, see [SharePoint Embedded Limits](../development/limits-calling.md). - -To learn more about the supported pay-as-you-go meters, refer to the [SharePoint Embedded meters](../administration/billing/meters.md) article. - -### Billing profile - -SharePoint Embedded is a consumption-based, pay-as-you-go (PAYG) offering meaning you pay only for what you use. SharePoint Embedded provides two billing models that the tenant developing the SharePoint Embedded application can select for respective container types, tailoring it to their unique business requirements. The two billing models are Standard and Passthrough billing. - -### Standard container type - with billing profile - -With the standard billing profile, all consumption-based charges are directly billed to the tenant who owns or develops the application. The admin in the developer tenant must establish a valid billing profile when creating a standard container type. - -![Standard](../images/1bill521.png) - -There are limits around the number of container types that each tenant can have. For more information, see [SharePoint Embedded Limits](../development/limits-calling.md). - -### Roles and Permissions - -- The admin who sets up the billing relationship for SharePoint Embedded needs to have owner or contributor permissions on the Azure subscription. -- The admin needs to have a SharePoint Embedded Administrator or Global Administrator role to operate billing cmdlets. - -### Azure Subscription - -For the standard billing container type, the Global Administrator needs to: - -- [Create an Azure subscription in your tenancy](/azure/cloud-adoption-framework/ready/azure-best-practices/initial-subscriptions) -- [Create a resource group](/azure/azure-resource-manager/management/manage-resource-groups-portal) attached to the Azure subscription - -After [creating the container type](#creating-container-types) with `standard` billing classification, you need to attach a billing profile to the container type. - -### Set the billing profile - -The billing profile for your container type is created using **SharePoint Online Management Shell**: - -1. Download and install the [latest version of SharePoint Online Management Shell](https://www.microsoft.com/download/details.aspx?id=35588) -1. Open SharePoint Online Management Shell from **Start** screen, type **sharepoint**, and then select **SharePoint Online Management Shell**. -1. Connect to SPO service using `Connect-SPOService` cmdlet by providing admin credentials associated with tenancy. For information, see [how to use Connect-SPOService](/powershell/module/sharepoint-online/connect-sposervice). -To create the standard billing profile for your container type, use the following cmdlet: - -```powershell -Add-SPOContainerTypeBilling –ContainerTypeId -AzureSubscriptionId -ResourceGroup -Region -``` - -> [!NOTE] -> The admin who sets up a billing relationship for SharePoint Embedded must have owner or contributor permissions on the Azure subscription, and be assigned the SharePoint Embedded Administrator or Global Administrator role. -> -> Every container type must have an owning application. -> -> A single-owning app can only own one container type at a time. -> -> An Azure subscription can be attached to any number of container types. -> -> If the preceding cmdlet fails with a SubscriptionNotRegistered error, it is because **Microsoft.Syntex** isn't registered as a resource provider in the subscription. The cmdlet sends a resource provider registration request on your behalf but it takes a few minutes to be completed. Wait 5-10 minutes and try again until the cmdlet succeeds. - -To update the billing profile for a standard container type, use the following cmdlet: - -```powershell -Set-SPOContainerType -ContainerTypeId [-AzureSubscriptionId ] [-ResourceGroup ] -``` - -> [!NOTE] -> Billing setup for standard container types is done via the SharePoint Online Management Shell. In the future, this operation will be available as a Microsoft Graph operation. - -### Standard container type - passthrough billing - -With passthrough billing, consumption-based charges are billed directly to the tenant registered to use the SharePoint Embedded application (consuming tenant). Admins in the developer tenant don't need to set up an Azure billing profile when creating a passthrough SharePoint Embedded container type. - -![Pass Through](../images/2bill521.png) - -For container types intended to be directly billed to a customer use the `directToCustomer` billing classification during [container type creation](#creating-container-types). For the passthrough billing container types, there's no need to attach a billing profile. - -Once the container type is [registered](../getting-started/register-api-documentation.md) in the consuming tenant, the consuming tenant admin (SharePoint Administrator or Global Administrator) needs to set up the billing profile in the consuming tenant to use the SharePoint Embedded application. - -#### Set up billing profile in consuming tenant - -1. In [Microsoft 365 admin center](https://admin.microsoft.com/), select **Setup**, and the view the **Billing and licenses** section. Select **Activate pay-as-you-go services.** - - ![Microsoft 365 admin center Files and Content](../images/SyntexActivatePAYGSetup.png) - -1. Select **Go to Pay as you go services**. -1. Select **Apps** under **Syntex services for**, then select **SharePoint Embedded** in the Apps panel - - ![Microsoft 365 admin center SharePoint Embedded Billing setting](../images/SyntexPAYGActivateSPE.png) - - > [!NOTE] - > The subscription configured in the Syntex services will reflect the consuming charges in the Azure billing portal. - -## Configuring container types - -The Developer Admin may apply configuration when calling the [Create fileStorageContainerType](/graph/api/filestorage-post-containertypes) endpoint. Alternatively, they may call the [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) endpoint to reconfigure an existing container type. - -> [!IMPORTANT] -> Updating settings on a container type may take up to **24 hours** for the new values to be replicated on all consuming tenants. If a consuming tenant applied overrides on container type settings, the new values aren't applied and the overrides remain in place. Some settings only apply to new content and not to existing content for the container type (for example, storage size, discoverability enabled, and others). - -For information on all the settings supported by container types, see [fileStorageContainerTypeSettings resource type](/graph/api/resources/filestoragecontainertypesettings). - -## Viewing container types - -You can list container types in your tenant by calling the [List fileStorageContainerType](/graph/api/filestorage-list-containertypes) endpoint. Results are filtered by ownership: non-administrator users see only the container types they have a permission on. [SharePoint Embedded Administrators](/entra/identity/role-based-access-control/permissions-reference#sharepoint-embedded-administrator) and [Global Administrators](/entra/identity/role-based-access-control/permissions-reference#global-administrator) see every container type in the tenant. - -## Registering container types - -To create and interact with containers, you must [register](../getting-started/register-api-documentation.md) the container type within the Consuming Tenant. The owning application defines the permissions for the container type by invoking the [Create fileStorageContainerTypeRegistration](/graph/api/filestorage-post-containertyperegistrations) endpoint. - -## Deleting container types - -You can only delete trial container types. Deletion of standard container types isn't yet supported. Before you delete a container type, you need to remove every container of that type, including from the deleted container collection. To remove containers, see [Delete fileStorageContainer](/graph/api/filestorage-delete-containers). - -Once every container is deleted, call the [Delete fileStorageContainerType](/graph/api/filestorage-delete-containertypes) endpoint. Non-administrator users can delete only container types they have a permission on. [SharePoint Embedded Administrators](/entra/identity/role-based-access-control/permissions-reference#sharepoint-embedded-administrator) and [Global Administrators](/entra/identity/role-based-access-control/permissions-reference#global-administrator) can delete any trial container type. diff --git a/docs/embedded/getting-started/microsoft-365-archive-support-for-containers.md b/docs/embedded/getting-started/microsoft-365-archive-support-for-containers.md deleted file mode 100644 index 88bf99a0a7..0000000000 --- a/docs/embedded/getting-started/microsoft-365-archive-support-for-containers.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Microsoft 365 Archive support for SharePoint Embedded containers -description: This article provides an overview of Microsoft 365 Archive support for archival of SharePoint Embedded containers. -ms.date: 03/20/2026 -ms.localizationpriority: high ---- - -# Microsoft 365 Archive for SharePoint Embedded Containers (Preview) - -Microsoft 365 Archive provides a cost-effective storage option for inactive or aging content stored in SharePoint Embedded containers. - -Your organization and consuming tenants might need to retain data for extended periods to meet legal, compliance, or regulatory requirements. You might prefer to store the data in SharePoint to simplify searchability, security, compliance, and data lifecycle management. - -Microsoft 365 Archive enables you to retain inactive SharePoint Embedded container data by moving it to a cold storage tier (archive) within SharePoint. Archived data continues to benefit from the same Microsoft 365 security, compliance, and search standards, while significantly reducing storage costs. - -Once a container is archived, it becomes inaccessible. To access it again, the container must be reactivated. Reactivation is instantaneous if performed within the first seven days after archival. If reactivated after seven days, the process can take up to 24 hours to complete. - -Archival and reactivation actions are supported for users with the Owner or Principal Owner roles on the container. Global Administrators and SharePoint Embedded Administrators can perform these actions on all containers. In addition, the application must have write permission on the container. - -Microsoft 365 Archive is available for SharePoint sites. For more information, see: [Microsoft 365 Archive Overview](/microsoft-365/archive/archive-overview) - -## SharePoint Embedded container archival guide - -- Developer tenant guide: [Support archival of containers](../development/support-archival-of-containers.md) -- Consuming tenant guide: [Manage Archival of containers using SharePoint Admin Center](../administration/consuming-tenant-admin/ctaUX.md) diff --git a/docs/embedded/getting-started/register-api-documentation.md b/docs/embedded/getting-started/register-api-documentation.md deleted file mode 100644 index 1888e20789..0000000000 --- a/docs/embedded/getting-started/register-api-documentation.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: Register file storage container type application permissions -description: Register the container type. -ms.date: 08/11/2025 -ms.localizationpriority: high ---- - -# Register file storage container type application permissions - -In order for a SharePoint Embedded application to interact with containers in a consuming tenant, the container type must first be registered in the consuming tenant. Container type registration happens when the owning application invokes the registration API to specify how applications can access its container type. The registration API also grants access to other Guest Apps to interact with the owning application's containers. For example, a SharePoint Embedded application can grant permissions to another application--a Guest App so that the Guest App can perform backup operations against its containers. - -Since the [container type registration API](/graph/api/filestorage-post-containertyperegistrations) controls the access to a container type in the consuming tenant, it's the first endpoint invoked by a SharePoint Embedded application on a consuming tenant. Failure to do so results in access denied errors when invoking other APIs against containers and/or content in the containers. - -There are no restrictions on how many times the registration API can be invoked. How often the registration API is invoked and when it's invoked is dependent on the SharePoint Embedded application. However, the last successful call to the registration API determines the settings used in the consuming tenant. - -## Authentication and authorization requirements - -For the container type's owning application to act on a consuming tenant, some prerequisites must be completed: - -- the owning app must have a [service principal](/entra/identity-platform/app-objects-and-service-principals) installed on the consuming tenant -- the owning app must be granted admin consent to perform container type registration in the consuming tenant. - -You can satisfy these requirements by having the consuming tenant's Global Administrator [grant admin consent](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal) to the container type's owning application. - -The [container type registration API](/graph/api/filestorage-post-containertyperegistrations) requires the `FileStorageContainerTypeReg.Selected` user-delegated or app-only permission. When the owning application calls the container type registration API on behalf of a user, the user must be assigned the [SharePoint Embedded Administrator](/entra/identity/role-based-access-control/permissions-reference#sharepoint-embedded-administrator) or the [Global Administrator](/entra/identity/role-based-access-control/permissions-reference#global-administrator) roles. When the owning application calls the container type registration API without a user context, it needs to request a token using the [client credentials grant flow](/entra/identity-platform/v2-oauth2-client-creds-grant-flow). - -> [!NOTE] -> The container type registration API is currently in preview and subject to change. - -To request admin consent from a tenant administrator in the consuming tenant, you may direct them to the [admin consent endpoint](/entra/identity-platform/v2-admin-consent). For the right endpoints on national clouds, see [Microsoft identity platform endpoints on national clouds](/entra/identity-platform/authentication-national-cloud#microsoft-entra-authentication-endpoints): - -```http -https://login.microsoftonline.com/{ConsumingTenantId}/v2.0/adminconsent?client_id={OwningAppId}&scope=https://graph.microsoft.com/.default -``` - -You may configure the admin consent endpoint to fit your needs, including handling errors and successful grants. For more information, see [Admin consent URI](/entra/identity-platform/v2-admin-consent). - -## Container type Permissions - -The registration API determines what permissions a SharePoint Embedded application can perform against containers and content in containers for the specified container type. - -| Permission | Description | -| -------------------- | ------------------------------------------------------------------------------------------------------------------ | -| None | Has no permissions to any containers or content of this container type. | -| ReadContent | Can read the content of containers of this container type. | -| WriteContent | Can write content to containers for this container type. This can't be granted without the ReadContent permission. | -| Create | Can create containers of this container type. | -| Delete | Can delete containers of this container type. | -| Read | Can read the metadata of containers of this container type. | -| Write | Can update the metadata of containers of this container type. | -| EnumeratePermissions | Can enumerate the members of a container and their roles for containers of this container type. | -| AddPermissions | Can add members to the container for containers of this container type. | -| UpdatePermissions | Can update (change roles of) existing memberships in the container for containers of this container type. | -| DeletePermissions | Can delete other members (but not self) from the container for containers of this container type. | -| DeleteOwnPermissions | Can remove own membership from the container for containers of this container type. | -| ManagePermissions | Can add, remove (including self), or update members in the container roles for containers of this container type. | -| ManageContent | Can manage the content of the container | -| Full | Has all permissions for containers of this container type. | - -## Examples - -### Register the container type in a consuming tenant with permissions only for the Owning App - -Register the container type `de988700-d700-020e-0a00-0831f3042f00` in the consuming tenant and grant `full` permissions to the owning application `71392b2f-1765-406e-86af-5907d9bdb2ab` for delegated and app-only calls. - -#### Request - -```http -PUT https://graph.microsoft.com/beta/storage/fileStorage/containerTypeRegistrations/de988700-d700-020e-0a00-0831f3042f00 -Content-Type: application/json - -{ - "applicationPermissionGrants": [ - { - "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab", - "delegatedPermissions": ["full"], - "applicationPermissions": ["full"] - } - ] -} -``` - -#### Response - -```json -HTTP/1.1 201 Created -Content-Type: application/json - -{ - "@odata.type": "#microsoft.graph.fileStorageContainerTypeRegistration", - "id": "de988700-d700-020e-0a00-0831f3042f00", - "name": "Test Container Type", - "owningAppId": "71392b2f-1765-406e-86af-5907d9bdb2ab", - "billingClassification": "trial", - "billingStatus": "valid", - "registeredDateTime": "08/11/2025", - "expirationDateTime": "08/11/2025", - "etag": "RVRhZw==", - "settings": { - "@odata.type": "microsoft.graph.fileStorageContainerTypeRegistrationSettings", - "sharingCapability": "disabled", - "urlTemplate": "https://app.contoso.com/redirect?tenant={tenant-id}&drive={drive-id}&folder={folder-id}&item={item-id}", - "isDiscoverabilityEnabled": true, - "isSearchEnabled": true, - "isItemVersioningEnabled": true, - "itemMajorVersionLimit": 50, - "maxStoragePerContainerInBytes": 104857600, - "isSharingRestricted": false - }, - "applicationPermissionGrants": [ - { - "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab", - "delegatedPermissions": ["full"], - "applicationPermissions": ["full"] - } - ] -} -``` - -### Register the container type in a consuming tenant with permissions for a Guest App - -Register the container type `de988700-d700-020e-0a00-0831f3042f00` in the consuming tenant and grant full permissions to the owning application `71392b2f-1765-406e-86af-5907d9bdb2ab` for delegated and app-only calls. In addition, grant a guest app `89ea5c94-7736-4e25-95ad-3fa95f62b6` both `read` and `write` permissions only for delegated calls. - -#### Request - -```http -PUT https://graph.microsoft.com/beta/storage/fileStorage/containerTypeRegistrations/de988700-d700-020e-0a00-0831f3042f00 -Content-Type: application/json - -{ - "applicationPermissionGrants": [ - { - "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab", - "delegatedPermissions": ["full"], - "applicationPermissions": ["full"] - }, - { - "appId": "89ea5c94-7736-4e25-95ad-3fa95f62b6", - "delegated": ["read", "write"], - "appOnly": ["none"] - } - ] -} -``` - -#### Response - -```json -HTTP/1.1 201 Created -Content-Type: application/json - -{ - "@odata.type": "#microsoft.graph.fileStorageContainerTypeRegistration", - "id": "de988700-d700-020e-0a00-0831f3042f00", - "name": "Test Container Type", - "owningAppId": "71392b2f-1765-406e-86af-5907d9bdb2ab", - "billingClassification": "trial", - "billingStatus": "valid", - "registeredDateTime": "08/11/2025", - "expirationDateTime": "08/11/2025", - "etag": "RVRhZw==", - "settings": { - "@odata.type": "microsoft.graph.fileStorageContainerTypeRegistrationSettings", - "sharingCapability": "disabled", - "urlTemplate": "https://app.contoso.com/redirect?tenant={tenant-id}&drive={drive-id}&folder={folder-id}&item={item-id}", - "isDiscoverabilityEnabled": true, - "isSearchEnabled": true, - "isItemVersioningEnabled": true, - "itemMajorVersionLimit": 50, - "maxStoragePerContainerInBytes": 104857600, - "isSharingRestricted": false - }, - "applicationPermissionGrants": [ - { - "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab", - "delegatedPermissions": ["full"], - "applicationPermissions": ["full"] - }, - { - "appId": "89ea5c94-7736-4e25-95ad-3fa95f62b6", - "delegated": ["read", "write"], - "appOnly": ["none"] - } - ] -} -``` diff --git a/docs/embedded/getting-started/spembedded-for-vscode.md b/docs/embedded/getting-started/spembedded-for-vscode.md deleted file mode 100644 index 2452191c5c..0000000000 --- a/docs/embedded/getting-started/spembedded-for-vscode.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -title: SharePoint Embedded for Visual Studio Code -description: Installation and getting started with SharePoint Embedded for Visual Studio Code -ms.date: 01/30/2024 -ms.localizationpriority: high ---- - -# SharePoint Embedded for Visual Studio Code - -The SharePoint Embedded Visual Studio Code extension helps developers get started for free with SharePoint Embedded application development. - -> [!IMPORTANT] -> To start building with SharePoint Embedded, you'll need administrative access to a Microsoft 365 tenant. -> If you don't already have a tenant, you can get your own tenant with the [Microsoft 365 Developer Program](https://developer.microsoft.com/microsoft-365/dev-program), [Microsoft Customer Digital Experience](https://cdx.transform.microsoft.com/), or create a free trial of a [Microsoft 365 E3 license](https://www.microsoft.com/microsoft-365/enterprise/microsoft365-plans-and-pricing). - -## Install SharePoint Embedded for Visual Studio Code - -1. Open a new window in [Visual Studio Code](https://code.visualstudio.com/) and navigate to "**Extensions**" on the activity bar. -1. Search "SharePoint Embedded" in the Extensions view. You can also view the extension in [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=SharepointEmbedded.ms-sharepoint-embedded-vscode-extension). -1. Select **"Install"** and the SharePoint Embedded icon will appear on the activity bar. -1. If already installed, update to the latest version if one is available. -1. Select the icon to open the SharePoint Embedded view and create a container type with trial configuration. - -![SharePoint Embedded VS Extensions](../images/vsx-images/n1downloadvsx.png) - -### Sign in with admin credentials - -To use the extension, you must sign in to a Microsoft 365 tenant with an administrator account. - -![Install](../images/vsx-images/n2vsx-signin.png) - -- Authentication opens a new tab in an external browser to grant permissions - - ![authorize and authenticate the extension to your M365 Entra tenant](../images/vsx-images/auth-allow-extension-uri.png) - -- Review the requested permissions carefully, then select **Accept** on the pop-up window prompting admin consent - - ![review before consenting to the permissions the extension is asking for](../images/vsx-images/n3vsx-grant-admin-consent.png) - -After successful authorization, select open on the dialog to be redirected to VS Code: - -![authorization completed in browser now redirecting to visual studio code](../images/vsx-images/auth-redirect.png) - -## Create a container type with a trial configuration - -Once signed in, you're prompted to create a [container type with trial configuration](./containertypes.md#trial-container-type). A container type lets you get started calling SharePoint Embedded APIs and building a proof-of-concept application using SharePoint Embedded. Learn more about [container types](containertypes.md). - -![home screen](../images/vsx-images/n4vsx-home-screen.png) - -- Select **Create Trial Container Type** -- Follow the prompts to name your container type. You can change your container type name later on. - -![create container type](../images/vsx-images/n5a-name-ct.png) - -> [!NOTE] -> SharePoint Embedded for Visual Studio Code only supports container types with trial configuration at this time. Other container types with standard or passthrough billing configurations must be created using the SharePoint Online PowerShell Module. - -## Create a Microsoft Entra ID App - -Every container type is owned by a Microsoft Entra ID application. The first step when creating a free trial container type is to create a new or select an existing Microsoft Entra ID application as the owning application. You can either specify the name of your new application or pick one of your existing applications. Learn more about SharePoint Embedded [app architecture](../development/app-architecture.md) - -- Follow the prompts to name your new Entra application or select an existing application ID: - - ![Create App](../images/vsx-images/n6aname-app.png) - -> [!NOTE] -> If you choose an existing application, the extension will update that app's configuration settings for it to work with both SharePoint Embedded and this extension. Doing this is NOT recommended on production applications. - -After your container type is created and your application is configured, you'll be able to view your local tenant registration as a tree in the left nav-bar. - -## Register your container type - -After creating your container type, you'll need to register that container type on your local tenant. Learn more about container type [registration](./register-api-documentation.md). - -- Follow the prompts and select **Register on local tenant** on the lower right corner of the VS Code window - - ![local tenant registration popup](../images/vsx-images/local-tenant-registration-popup.png) - -- If you don't see the prompt, you can right-click on your `` and select **Register** from the menu - - ![register](../images/vsx-images/n7aregister-ct.png) - -### Grant permissions - -Review permissions and follow the prompt to grant admin consent - -![grant admin consent popup](../images/vsx-images/auth-grant-admin-consent-popup.png) - -An external browser window will pop open for you to sign-in and grant admin consent - -![login permissions](../images/vsx-images/n9alogin-grant-permissions.png) - -## Create your first container - -With your container type registered, you can now create your first container. Only five containers of container type can be created to upload and manage content. - -- Right-click on the **Containers** drop-down from the tree in the left nav-bar and select **Create container** -- Enter a name for the container you would like to create - -![create container](../images/vsx-images/n10acreate-container.png) -![name container](../images/vsx-images/n11aname-first-cont.png) - -## Recycling Containers - -You can also recycle and recover containers within the extension. - -![recycle containers](../images/vsx-images/n12arecycle-cont.png) - -![final home page](../images/vsx-images/n13a-final-home-page.png) - -## Load Sample App - -With your free trial container type created, you can use the extension to load one of the SharePoint Embedded sample apps and automatically populate the runtime configuration file with the details of your Microsoft Entra ID app and container type. - -![Load Sample App](../images/vsx-images/n15vsxsa-c.png) - -When loading the sample application, you'll be notified that it will create plain text secrets to authenticate on your local machine. - -![sample app plain text secrets notice](../images/vsx-images/sample-app-app-secrets-notice.png) - -If no client secret is found on your application, it will ask if you would like to create one. Press OK to proceed. - -![sample app creating client secret](../images/vsx-images/sample-app-create-client-secret.png) - -> [!IMPORTANT] -> This isn't intended for production environments. [Find out more on how to setup Application Registration for production environments here.](/entra/identity-platform/quickstart-register-app) - -## Using Sample App - -In your terminal, run the following command, this will start the sample application, which consists of two parts: - -1. **React Client Application** - The frontend user interface running on port 8080 -1. **Azure Function Application Server** - The backend API server that handles SharePoint Embedded operations - -```console -# Navigate to your sample application directory -cd [your-path]\SharePoint-Embedded-Samples\Custom Apps\boilerplate-typescript-react - -# Install dependencies and start the application -npm run start -``` - -> [!NOTE] -> The initial startup may take a few minutes as dependencies are installed and both applications are built. Wait for both console outputs to appear before navigating to the application. - -This will install the dependencies and run the server and client application, once running, you'll see the following in the terminal, after which you can navigate to `http://localhost:8080` to access the application. - -![function api console logs](../images/vsx-images/fn-api-logs.png) - -![client app console logs](../images/vsx-images/client-app-logs.png) - -Once both applications are running successfully: - -1. Open your web browser and navigate to `http://localhost:8080` -1. Sign in using your Microsoft 365 administrator account (the same account used in the VS Code extension) -1. On the home page, select **Containers** to begin creating containers and uploading files -1. Follow the on-screen prompts to interact with your SharePoint Embedded containers - -![home-page-for-spe-sample-app](../images/vsx-images/spe-sample-app-home.png) - -> [!IMPORTANT] -> This sample application stores authentication secrets in plain text for development purposes only. Never use this configuration in a production environment. - -### Troubleshooting - -If you encounter issues: - -- **Port already in use**: If port 8080 is already in use, the application will automatically try the next available port -- **Dependencies not installing**: Try running `npm install` manually before `npm run start` -- **Authentication errors**: Ensure your Microsoft Entra ID app is properly configured with the correct redirect URIs - -## Export Postman Environment - -The [SharePoint Embedded Postman Collection](https://github.com/microsoft/SharePoint-Embedded-Samples/tree/main/Tools/api-clients) allows you to explore and call the SharePoint Embedded APIs. The Collection requires an environment file with variables used for authentication and various identifiers. This extension automates the generation of this populated environment file so you can import it into Postman and immediately call the SharePoint Embedded APIs. - -![Export Postman Environment](../images/vsx-images/n14postman-c.png) diff --git a/docs/embedded/images/create-app-panel-1.png b/docs/embedded/images/create-app-panel-1.png new file mode 100644 index 0000000000000000000000000000000000000000..835a8279da1d3edae3f9a232826aa26a180873d6 GIT binary patch literal 419431 zcmZU52RzmN8+N-Vl7E9jsE};Q$PS@%WbgeT>k!$SN>OH=?7fb4?7dY&#<54XviBzY zy?@X9e*XXGdEP#VgX8?Z-}`&r*L~gB{d=z#W7hXKkv^#Nv+823089cRS zeB#704)s_}#aVB0#Kl=<>hSoupA~hNnDakjdGF37T_L~C%6yOcGUkFmQQ4~!)o&$t zmgHZR_-$@Hzih!`#`Y)vbvCgAOHu)|_@e=pu$Qa`@6UW-D4_rJ!5G`xx_kKXSq%S~ zC$}zK5TfmO$a%KBFS4UK-O6d8w?QMbvphl)nyH=}m!*a$A|eWjiee6LQSE!H#Vjg1 zHvC5B)}1?FhtI&P{@cG7^?pG?eLVd-$?x9%vFk1pE8;OYX3DnDz|4$R!>h7~%TV!I z(N_f!wY0Q+YMi*wclvL?44;k@In4JkJs&JWX=-W~Xl48P`K|A0GB61V>F`F&y12Lu zRyeR2sHj93+!!n}|HSp+0YO(aH7`$rf`Ve&H54%kZs_PqS5N3ndK=dwhG^O6{>;d3pJ?!%Mq$*J|6! zk>>B;6+As_*4Ni3ZOcQVqgitM@e;n5nAq54VKI98^}Vu{)8v>K7$o(*4vTrMN3#z1 zcNTnUJr(5Sf<%R^Z}`~S*@ec(=WZ?ZFAQ1Ns=~$)qLGmL+rLNDFZMRgsYTp1MB?Qy z`AUR+`}UYlR8(KzV=L5!b^hhSfxDe@ATuj#&*ofrXn1(qLQbWeUatDvw{M9qTu=;W z*WH{;i{CrlW?*1YakxDc8WY1>I+P7dRsZc zMrFC!q*$vrLG1L_;(+qn+S=Z@H>v&NkNXrpiB#5AigZ!|3KI>1#>HC3r9%X~zU`Ta zf4!czY)OCeitRxQq(+ay5B_$=E6{LGqUY0}X#(N!=i|kHbm6ViZ;^2^n*unIqf6OVL zrsT06)qy>NFoXzgZffdO*Y{w6==t#BKlKd_nPp`f*lQFNOljR2pBUxmD_3eh5lp&^ z`}OdyTk~^08OqJ=?K|pjZB0!dhnCbVEwgT3@`Yth$LH2)-M@byGgOjY;kcBUDjVI5 zDUNa~m%9AtzoP14?Imh~?_Eif#1pff$O=AuK(|N zY>Kb(GluzvNmamP|4#Dj^@Eqb-&ts1qv|D%sEJ$EP453<#;Um zp6XWEE5?g>^rWCZCGcZTo%|P2z1;Bk^TXDg6jB(6+9>X*NWUDISeu2D-uwD2@uXwr z6u?GoESqm#VvWcC{Bq?=SofTe#f$Q%1_p_qJC$Q|@?LwNV&qH};tg&fM~91x%YLPL zr}^iLGg~rB0Dgdca2lo@D;;J#Za*I=kZfvdYHn^OqO{1@P|4L39!QT*(N1k| zrYZ{({PgsX11WiwAW-31=>6;O#J4k6j&z$!%)39`?x5~w?zOfN+(VsIvSd9NQG0|J$U;*KS!nRCxB}({0_RY-J zF2yYLWus+fd-IJNC)b=?mHU{_L@bnLUgDHdf?xnp+U%0yn9IcHbRF)DQfl+v8@SNte(~~2mSvof+VsCD`WcbN|hn_=}~iYb5WvR zHRNnsDFAX2>KP#-9(!i1<6kI6+{+A&j2KXnk&&*eU(Rps&cy4l-+FLzS|BI$R4YF} zKc%2!*05Enfa7Ai=)q4?A`+5Nda`TR%vMIL1zb1Nk%fzixp}x+M~VclRoTyTfLvdM zMksXH!(q|gMzPb7N0m%WQV~94-ksX?^TlkWX`G_7bD4^36&0^#M_a7m*0-zju%#`W z7lH1zENn4zbE^Q5rOCy1Atu2m`4av>XfG4^{$r*W9=W1_$OGoc#-UOk^QFt z9=*xIBFxc*)URK~srhXm16p*$LLA2b@eXKtN1{Y;qQrTCYS_wb%|a=!z3%uTs}X_N zhc@C?rTbW~*Z;y&9SWcfzzE*;GTgjdye*2I#t>!icybI1Z>8DtQc zho9UdCg>5JiO7B7V_1 zQ|1i;6t3{2#jaZzz?_Kff6<==3_@q1>TungOLG|id{TJz^Jz+Mvk!e)nnpBQ&*8sh zrnY35a@N8U)ZeWiN0z_2u-`%nV%mJy=Wl)?lSm zF7gt2pAVW1l{_CTG!2G=rxm{ogcu2aKqr6zJ|`9)9##MA9DT5rp|P>qPzSKEu*g96 zjYp^_T<;+)L7xu^6}Ro=6Ifh}{p}^!nOLWgn3ycM{Mo&Q+@1EBHD`p-dcdU=3|P*0 z;rx+YjgWFy@{G-hpqu=*qpLjs41mw|H@Kd?Q&Lt2`T%E~)nW06A`*Qr8i6jyhdYpl zqzO?xG7yu%+9}~jT{MdCe0D$E(%#+=SPiQuBKi0+f(c0N;1cowh{%hF2vuAfE?4#? zrB#D73kg>(M<)Xke2BKLCKe(B0le-s`M-)Z*XkpYI!^oFs|Ft11Ev_rB_&oPnMj@W z@#9BG&7DAtHh~t+BgK)SVG<;(ziK4{-&jv)vNX@1pHFPfcGl58Wgi-y>rU$}wbn;i z-POBKJ661o-C#N80V_l64Lh4YF(R>`nXTp`MB`FDTDUCwuLXH~jkdc$m&*O8$`WJeUS7g)}^w&W}poydQ zKnZ|+<9v=aq-D+QFZ>5k>Onq{V$&*uN(V}Bq%4G5h>VO32Na0~E)WRa#2Nx&q6e$q zqMu_RjYJdfMia=nSIVD8a@GG!3@BDQ_H=rJRm*zH>vS?*ymo(NWpllSqh-o=4mPVM zMK!$Lq&ro1FwemI94So}ketkfghv2b4@mL0Du339102kD%Zv8Ho-v^M_1vB-I1lK2 ze0cY+6r?jKtTA0F?;RI^+=k?p*3DGMS!6qfhKgW5fVsiPAU!?(2^3Du?CgDjmE6{& zLI4pmAV44}36G?7c{CFUq4e+zXyWVaNC~5)g!Q>dku*8^j1ViR{`2QgQR9(o7&#FzmdHb=8`W$ib?_^WidN>68@}KblMZ zGk{+DQ9uCcxvxngSJx)E(z8C*LXf}&BD|7OboV{v=gt1wqhcxM`{D6N-;4<}8whi~ zKy=g8)b#w8sj=}K;P??Q=omn|VBZ&huT3DOIK(b6d=Yc(zx8Ce-|(Ws!J3KH9uTlNY0^`g^+Q`Nt6#?jBD1l08?)a zrtPnASU@oM?VC6EfS_Zc>P-VEI75v`2NUM(kxB_LtE*RCKO2@j;r>4__XOGfXW##W zFidz^P9qNCKz+<;lol*ug(Q3~egtwGK=FVZerDqXvxCX0YvI+Pg_y$yG`F-UBQ+(E zaB3mvjxpVPUCRS*%`ehkIMSMdr$0FMdNPb;Gsey2e*c<2_O#R`Ia)5UarY z#%etF77N=C?9z(_)&V_>EeE(DFVd&CFG3-Ku$M4a%{!1U0lhQ5j*kEs#U`4?L6SKv zo^FrN4GFmhF_fWMXo5{aibkklqXeCDfP%1~;E2HUS0kajzf!ADDzy3%%5F*LfAEJB zCv-k+FAXhB1dE2zBiX~@PL+-cs1p@Hv>8zG?(6RXt*mL3j9Ia0^lFkEg76j-Tm>^)1hK5E2Y#Eg2+<=UMH|~o=sEZjv#Z&CD z@A!PALKV`7GSGDH7vqlrick>j+9j5q*Y({Kt!oea^luBWvOeV-vHx`C>eb#HT|r=~ zX9=2`moHzQzWa~uPY*rX3unTnjEO$z96mdK=i$vuQ`6HRHq5_gjO(a9+Tz&wAn;SY zb}#e@7&xN;aB(SFl@19_CMmw!CHe%R2DuagHo#|9sJ25RBGONuK6fUN7*HQVj?KS5 z3HFFW3e`3;vylOUh)6t#nR_HKFY_iW10oD<0x8p10j>f$*!YGIaB0voL5MrpS5i^= zYf}dbjQ7TlkC3STK4*{A*J>aQszO17@GV;R)mJ5!14+QBAT1PQdeNk!2YEiEv`E3A zWB>2%9tW-)-iztY(kz^}gui+Oz+etM0iq>}3paV1R5g&O)j`LYg_BmuSpflz?d1_X z93u0cbVVe!xkRW4?EF7QSZvlQ-mmKvi~N1~s|sUY$JH*s`5|HV=IZMM2%_cXcYHsv z(7}FC3)mxigad5(!a{Cs-xu%m4j@XwdS}|rv{lT+x%H&VQsL6lEa2!2R=E@c=K^i! z8VE3gD^DD}JkhY0Gx3!40VKHHT)*p2oN+yqu@;ifjQj)XFLc zATw=wq>@EQXjtf5E*w~>3Tz+VM55lLH6n3$V`c$P=yakfXn07;M?xc{0ST-ZgranW z(e1O5`$ut`-vQu<7yvig3y`uM^iPMSLDf26 z((t;U9iXdhZVy>6v~bjdOqNEE0?DeM!*h)o`1cbiDRa73x&FQYClUl0%z8q02i-RX zvm^dvv8=NAhHP(n)`Sqxg}yK?r}7HBQETOuy1wDDzKae&a5rAoZ*<`xh_h?tJ;EZ@ zSkLZi0os3DWTW)~HU%ny?}qsizOYg{ulUuJl^xA>)TI^hZVTKFPj2LHCaCp({#}t) zaDDe+ccb`O)0K=(Fkpn6+wg0F0~S{ zoqV^wGL{<) z#5?o1VASHC_Pt3xV$^PWq233|Si9<=bvF`6U60PnYCG_!oZ-m+p+Lx zJeVZx)1QVYTYFihU3vdr;iGkv8$NO|4-;YE%SWu1Mk*1dd)mMgurBVPsh7SW>aegUKQdp{noZ7;!i4#L_w7iY)a|9? z+cFw<8zGO_c;r@=ntPmB^t;k))@+-z17u}FW2VC>88O3*$p>`O9$a$o0~wsO3c{?K zKWNLHc+wbD&xSy%1t?+qugVK0B0|;P(AZHbr2K`W{S|dUGhCN~BR~plH&8)5 zXfpG_t5ksALaIxD{rVJ?ATgKS|FQ7%SaOamCGVr)maAP)a+D>TMO0H3TVFEZpYTUY zHa9VA20ee6s!U7!X~y@|TOTblif)NEn%pLGxpx!}5>Eq^vDz85vYistcY1#Lh|Tj^ zz3LKHYJF+CHToyYd#tDu=EgO0cHomF+PR^;`)WL?nj!Q&?|DXm6;XSm6@)U&1S$oGsxk{qYXx)@<{O9al+#R6)A3iy_|X20^kHwpo!a|WEqpCZ20Rqv ziXtgJmtGJ?b*~u8#pG#-_IUg+&n*^2#DMyI zCYw8O&{Qq+cHKQ~NAob36YTHbd_kc(`My4jQ8PKKQ>)2h(WL(I8?()eBtrt>e>nA0 zi_mwVHE`9ZIaZ(5$upm5q@LOSdPZJ?#@n;?%*?Es$OE?5@#)`_?}Tgj4IA=*m3a-& z$NScIi0q1ix-*`tHTnbwXT0CVz)$9;Y^bo`wXfgN74Xt00O$Ji2zQc1>6dK2EgC&m z%9>71c6ERLD%$Vkq+Dm~?PM}{$99tpDbmP{Yo#d>^ulZNp&ymZfhe6Lp-kD_w1=9e zW7uOrqwGauS9dpPXt&_~^RS0lTbxcdllcRl0y_yWhjE`+={UX&{p<-2BZM?VNeK%& zMS3<}*o2iF&@~C2Djpcu98}HIXStr!bM*R9iz{(3_s0MB z@DW-5m~*Y4zuy$oCB3RREW@f(ZmEWz{6`^kO(K$FX6~NMJWl-LrD*q`jxKk^pILXy zl(@1HqEBLCCv&@|u-B-L6EaLo&K2i1Q(jJd_Xj?U?VNdu`8V&ie5?-on0cVbd&9rC z@K6SQ(vm)aba*#7HU*BACJy>h>ZlLgi)DCulx=vov&2KTonSjv`ZU$!IdbHo_P9^M^v&*H`v;xSSGC-BgsT zw@3H9L)jG_|8SMfZm@QySX*~yXb2h26AWD)e;9Z_P;7~3t3COe{`P8z9Foa6W1U6FjsX~Ps{4AUC|%QaF3U-N%of=D-x1p;R43#K4>o2l;rmfvqv89 zz8fh}VG&DSE23$%EZg%=jxhBhMJ+${V0*#F?>PhN63+^^`1_rp&dL7k79%;y&8<64 zrN(6_ce93JUckv}u!&J}|P0 zpt^#XcppR%MD!O^jcDn!{*jjm{aU2An+Y9q%s>GS@?7d&*(f+bQhUJHd0f_?9gZCz z#v{FFAf^C_s4l1?wx+`M5mU;TNxlYB&_Er2_BnC5T9*FFdr5xVR;cSkF zaGJe03@`n%VQCpwt2f*a>e^Vz>d9Ftw6}Db()0NxB*bn<%r2#qBvs8R%~DFM+?O93 zdXRkKf1B9GzL@HE4b!3?!KQv`-~8=RA(@pE6BoVm-W{dEn_7BK$aq<@cwST!rOUt{<7Yl5gGy$^?CrB` zj?%5!e#enm*JPPbJG7Zc>3Q0D>)75q`nXf{>u@gWp+H8;AITC*{V7^@BfWA-vOA6c8N#?V#z58rB_wPAaH2tNWKy|BH<|tX%{9ucQcd(lOZ*+X z__$2md30%5bPkR~G^2c4Om!|JbPy{fbCp(3#hoSX=Jn&15whn8w5H5c&*lO@F-7e* zuBBcsdofXDJAo#+n!LFp7Z#NCWxoF0pIW+-2MvwDu&-sZ8&qCXc62%h%QG&OU<)4FAx zHb$GHrICX|Zb?#`f$9Of1eHpOpnGYCZkuYka$j`Ao299grotvgK4cl^M!4Zo$2P8Z zQ*zXVfeb!^hx!M_WBnvU23$K;isz1eS1Tztv_MdTy;O#&o3@KktB=u}stP+gG7;YF zI%iy_+x#OoX_EA>`heR^uOdZ*;m9kw75~|~NI)yQKuZu)R8A}g-8gm>w7X-=@#yMu z{A3+%Bul%Z+DZml^XBeki;iM;{Z4aG@!}7Tb0?=+-Zf4jiaTOTC?7GE51{lx$~8nF z2RQ*t&+~jx#rr&I-}BOuRFJrtK^uZHp&O*MoXX`28L-+wE2kUeN$>{D#^bZ*ZJ|GF zKM}~6sbA}fbkU(Qb66c0%i!*S>|N}#VS;Gt&=15ELp+()`;qN|Iu6c?znW)I9%@y) z7VCK(IzTym?5N=O)SX-L{wor5J07mYY}eyOeuBGG4tW+@y*a5oYJXWrc9-ykWU*U~ zpd|NQL3jOCR*ZB!?7s%L8uGcGeXeL0;# zE}UT{i$1+7TQS!pIsG?x(#yfSDK-y!gKa`o)GswLXXnLC)lyTeZZtB;4CuROy{_}0 zY7(7~w-8@JRp2y}bQ*0#99ZSkf~FQG^H0SJP4}%Ozh$<6%am01_MF~+imP7ewIbS3 zUgrv4uLrtx0{jf9oROxe{qTHBdv8@}+o)LxZdD%NmW`@WVe&0}ZATj3(WOXDW>CzW zw6uy=+pqp3_MDl?+{9UAdWc|T)2ti_?%p4|7K z>3!Votn%?fK878YV>I}Dxw7?JW1|cfT0oY|6_%mY76bYE7f-dSe*nIV1O=GKke&cx zM9KX7F8FfLC=>{@3>Wx7$c1KQrg2Ny^iL?x(P(rR3Eyx6{F+@Uh!#CyaDb!)oxXJF z&?AzVJv6cK9{bo+Yk*IP^9?*IWpz6?-2OwpbXfV$@n`lFy{kJNbki={xbvcgT~<#$@0a9Ii3oSa!Y3 zqt=JS=0_`H&-JPl8}*>`b1$jp-fKGSJryXd-*C?=hI~aojW3=e^NpGu|4r=8OZ?gl zX0s2hF(XIyl-Eu5n&_Wrk-JZYCApf<;-6V&)_wa@Jrx2K6wi*qOPLgCqF_^cdQ|NC zjq!^bEkTEdI(ui#hHnrC;uz{U!5C9e(%uH>U3i_|atIiT_k>6`o zPe8u#*d^MS+V}F=UGHVh`sm_E#S{yfv<(x{&;!FMCvI0V5=_K|*RtQKL>%z}LdMzuGfD7}f#pnbaK zrTdbeUofzvhcq?wpq&?4eC>$_hW0AxEl#u7uGH+yjd|{8LwS?ZMbrWogNFLt7t zM*BhCS(9voUP+J6*5ek!a`ayqhO5=wpAN|VxawxnA3Q-KQ8}vAR8v(bqj}bN!%}f| z<~jqD8r{)BVqcnRMuKIG!FOnus_nTFB0p$&w@Y52+z4hcUG_IfzqJtI$k5(ZRx|S> zI!%q4<vYUqCU5iZ^<^#W#m{_CJpm#KqNtVndj!c@nI^TfUHo;w9g(~@p%53-Q+|r^h$W4Ui5>u zqc6!cM%*j|_WB{&rS?8jvCnDSZAGp$v~@N2WF^eJdwsRCXmaYZsgPPDL%7F7Oy(7D z_P)omBoRYT*j(si645)=ciN@@hcNTl)l?F)kuFLV1AgY7sbh-YZm6v(Y`xw3`3;r% z-c7Byn*QkUuh{xuYGu9IFZ{JHS-kq1eb!ckcrvfTK~<&5#m~>>H$z}W#$$p@A!PI zMi(60D&VN3&w#cXsO=#%Zj1MY_hyq3(_FhoZW1E>LMs zSI_N35*PmGmFRM2$yXF6())^gFUEYY(>exFC6n%C_Xl*o_p`paT2>-BX&Iklvy#={ zd||5k_l-nNCe6WkA=Tu)yZ1`+C4xS)R*&44o^WOeic8!Yo(z08I?x;jbTggPl;B)00!5xi`r8oJs z7_Tqngd5TJ(=|_Q9~xa7a|%hlyV7;^cB1VMj9wmbO?&2-6b1pcztzVA6ZH2|8x>?@ zDkZg#Y_{F#9lu^#8WWM8IQNaE!D}X*S~;nqssz5*DfA-L?>$vosKvC|FX0PcHUx}9 zR#z`(kLm4+z5G&Ggty;+RX6#9+4J*5!a!cZ>;4yKFUDnVQ8jNfC5-%3c^Z5T+)j&TF5x4kYlEX9&#z*(=0Q%0ut?US}g9|HY-nFWwy6mK}?kPgPsAtQrL`@GsBmptyr_dTLe?L=Fa)?aE7 zxLbcVh1V685wT~bkH7m_O-6@`yT%q<)-$YYkbjkYVK&?v^K`&%!>V+++^SrdVddxD zptu|dU-J0#_< zW=cFROx^j-h>@H&k@b40Cs!V_x2)k{-J?hDA%0g1aQt9+GeB zpuxe0I(nV2{<^@3O>o=a#-K^52L&Vv83_UNA&Bc{%VG4oZcD{tpr4(t24rqySf~hTSfwI;oU>=o!l6J4d-#dec<5^*ZE(bPXAT`#7`5QiVX61+ZOk)QUl7QK z?%wj4+g+=VbD@+5?QN$a@<9auuNkvpwpZ`vK9$*Ml`pz56kmAvp9-Xo$=v+Jz@gCc zurjDKX43zHRFIOP`*=-RXpKY8vD)IBQ1nrwLVZ+sK-~D@y`Kt;;~9gtiu=mbt^11s zO9MtBzc()iuJe^mIfin4yPtSM0h79#N_0$lzuheUlyEDYcQrZwV=_K7q1k>s-`l{7&&A zZiKNrv_g=sjHrrE3gx9|JDN~T_ftZ)ny-X@bAjo2&u>mt?*Yy3TFG&6lkJh&#R@gq zL)Ds<88?wr|4kwajFMU-7)*=e1MQ%w!2+4^n645_9+oARxpqZmw;*x(GuMSarR*EI zG4&`ZISeRjxxl-}fB{oR)uKMy+LY`jx4iPne6$~j$AsGsd7$ir9rX@6|KjCbl%LI$ z<+`RQ-h$Yy%a{GqX%pXdEK>@5cykFcPy{y-kE$fOcx2EQavBs|S;~moA6hQ(3Cpss zE{RWNZTV2S>G6ARMP2O8?x`K8Y277s!_%i>GT4wz{wlBCN1FuoV zKv#KXv=vHbwQ>m&w3zsGnT{{b|FOMt4L5`Kd*9oU5Y#nbtIVD4MCWj@`}DGIj<~me zR|W2q%-5EjYlNG<^4;v4{0Tue0y11w5VD|osSV_ZQSaB6eLFeLq*YNIGv3~Zi!!td z!TfnJMKH`qthUgC4XdoO4@-dxWZs9$YIV#}Aa*Kj4|2*LG_Q(H+i6^c7?>)cazF+} zZr{FrWCJD@@H~LM0j#uI74{j^gy=NLD=-<9J&f*PVq!uZDnYcO?5O#X%2KJIn;Fp6 z#{-S_d;h)@jHasKV1UkbJWoKNjBy4Hm5?5BS8IQS#C>5YGt9cD@$-1)CcoBv^z8fx zE?%?2cO?aHd|M3XQW-_jq@MY|7PAdLouWEbrc^x65uBm@r0nZLDEm)x5_fZnIpQx@ z+C=Dhc*Y%F46WxGe23Bcypq9NMc-`+)Rf1H=sBVMsJ$;649B-*usVaQ%}l3j;>%u^L5%~e$fj-s%G{LP)C!lKD`V|^Z_uf;|=4U8qB z4D>obZgh?Ww#i1A_bp|HEn;bBcth3qtm}2GUkWsNf!+t ziO6`BkJ}*>8gq2Wl=TViOdP6l=#0euF`LC%+ST87WaHI5?N3@G`YgErb3WZE^^lMh z(&Nkjp;2q1rFlTRbl1OreWF|^`u0Gqt<>2ZH<9~()+-+@78bD!OyBOv$ajmN{JflX znjBQOAO4XK*Zf3wpLsT*dB83rjucaVqU{XBwOd};*-t_2Avgcqt#3r2>!Oua4RWBP#oD zpCvAP*eFhl&ae_W#2)-ArfPbZ3MW~fGWaKN?kMk$MW_?o!ts7e+p_!S+gv#XB3f65RjRP7`gg)DfJ<98^z` z{Z=_jhW6zyRGG0C>mFLn_L~&WRV?IuLbEXYLQjT^t4ruqpmW?U@JnLp_rqCT_9<}n=rY7X^Y_pnK@E49r~KZj!RmHU;|dy#@Ww`EERY*$b%*{_bjb)P5hWqzLOquZ@5UlYx&&aY}18!Khj;KRD) zYTC;0?INbrL^+mL+OV%bi!+<<5af2V7{BFf=oaOj))>OI!tY@5L#!??)}tXUE$k?# z)WnnQhF+km_}Q_W(UxrDP=?ylzX)Rg*s%lDTx<<%FJQ7McT z)9)@}hGz1|C)DS*_P%u`?BAQF>^9|Q6i!RwJy|M$ccHw-X|~DhypCeD$wHGzHBZeZ zX)KyQ?-AWq8kX`n7019<#mwEc3Ax_I__IQnx~4JixocXK&gf*r(A5{8mxw1v1!PBD zg?A@JLiZ#5RS&9Pm9m)pT6vu-yVDm*>8NTgysc#W`S3%|Bwu`YUK=&{YG^@;2I05t z9IY2K2{Gx7)W{=`kYj=93f^&>5gx^>EyrB1lqj_J9&3{j|M1+aTAM$t#O8)EO}tyc z5!Y(rEymi{-2XSJn$U(B`kHo^H$3Wx4vs9mC6m(>|9;7S4vTN-)8WaFRWs7g;bj*! zjFT#D)WIppB#N_Hy$vmV$a?mOA!~D{PkGv2Qt}4Y;5+9<&9JRG*;+q6doeyPc#fE)X=LbK3u(_kz&M=a7 zVM=6~U7uYYB?q11;eSX6I#+H|4U{K>GY;M;9ceNmXP9aAMkYAyz-RDjXi3E4tV!s( za8*k5C79EIDNoW)@ao$C`gY-X39K1-r}`^p4;Aj;e>G(+Bi<*MrVPzf0ndXn zu*R!cF_`LLKwmGsg!!?6B8*(q`KgY5=EQvTlVY&IAd`9h?ajHC)R2wdQ**Ais;mAc z(kdGXLtQ$7UWUySU#1=v?nKsz*VDLfT%?fUnKGTKUA(#TVukj!UpW=`4(r6`?iJiQ zdb-%P_gvDsr|U(Pw(kslFtF^zdOhvwko#i%dqfc8e80JbPwsu}sVhn4Oi_owiwZrR zjpo`-EF|XCVFW{9tL9yT$@>tO(>z1N_sq95b-$?QM(fzC>>b<{&0zEvnKE17b;X@u z4iOf*_gOe+C0Nytp;YPUP=mie8GY2@av*_=if*Sf?)?4W_yZJLToP%cmkU4fxLLMN@GvjWV_i9j$+p zRWaC-Lyevw{`7U~`KgR5V?4||JOW}N>{0G)J) zhLg=Ka+0!LFwY38$p!IYLXz5Yc*QxTb+;TpukStY1IAzb(B;a05cfAOydHWk>~tna zxS9_81&;7Ty#h;-d{8r+F+YBvN>1D<;c$`X<&(s>?e^B;i;f;OMVGg!jWoN^_GkAL zb3{{l6&Y5e)ts28PdTY(HXl|OFbM6&ImQg8%#qf&Foi3PQQ>Ji4>!d-((SAB?no*H zoD~#ra$he~$Cmjhac%=d5#+%(7+W@p^wS|8g{bXg~XbJ_9u1zfrr*lO{dsh@qms9tM6xsSLMaC>(5( z^h_`{1P9>(=|_5)nfsyd!4GmIB1FRQ;5?}yt*ECC3@WIbn52T1mJ7E3*-^KZ-aLc4 zO=K_{5>B5(zb<2V3l5pLvYT!NsoEboJR^4P!j$~BDX!a#8Q{G~d{ScZTrdjNyVb9s z3uY0-a*w#k!FgUwTilu&NjXqh{?$z+W5A+&idQwnVU%0W4%-+zQ?Kcx6wVM$C6i)$ z_N_rXL&=Ilpo>A+^no?5#BvOG$VjB3@TZxV0+~@-RO9(!R$msL^5H*oLefX`PbU6K z*Nd7ZrH&5gM-#P93*Lk?z|xi-pxVuywP7Uc^JsrZZ9L~5o90COl`z)(l1+lASQPox z4d3t=>M_-$1%G%%4j*A-eFNO`XebE6uhv+PD_w zFJ8}L7Pw@_M7oDnFi~BnWjKeZ1sb_$)MWQPw`cy=j(3QhaZZIe_bZuX9$cSjFW|I8 zJ9J~H(p_wsVHjcG2UK()io(Labv`2IYfK;b7?1DCUj{fG%L3u&_iKOuBqBB zu3_|Mww$O}_OSTdx!Ty2QpZYM*?FGhaU$8{`rwsp#sk9&wVN@y=O^fQmP@(kN~fkc zl{N?41)27y^P^xOmVaVv{D;lF1&xoNi&cS?z3r3cj)JkB?iMnFr;dq|vW#EPUmf}X zO2jaX^aw`fktq_OH03hTKh>=a3wgH*BStMP#6+qYn|N~2$Q{6phf;#E42Kbi{#`r= z3>{d&loT>^`Xk?n$MOfK!}72uV#l_(FUqNyXWm*K(FP~KqK;0CpT9q1IffPsVk(De zLu15E&Z%`gL6XLn8Sgw{q~7Iet}79wVmp z!g+MSsmes?O3yPa&dBtFGNyv*qIS@me7mBBH;IQ$w3vnm$=tt2A2ZndsaqQPp7Qfi z|B-*XyHyrd5WepKNhD9+JZXU6^~mQvm!YdoVwyMScLuRhwCuZgpYa1$7hAtnR~Qu z`L2_t9$@`iaV?GK)g#j~68b}I%O?4xqt6IqmUAwaYQHK@#Z*_6)D|~0%kC9%=eXO3 z>j|2k9W$o%=%;5B91lxY)fc|+_NnTvOEb$RrhAdGr!-Vz`E(2STu!H!i5^c!YJU-) zJ2`%Rj$U_`%nRo>7pG_Y#5OlJL+tqejvhZuTQS#hUZZkbUXKm`1Y!;v3m;6DGr6HD zmjHHRq`}V{&6YmGc@ggUfjDLRb?gE~HL5K7**#!fa?F*F;bg8ukPVE5fukIu5YX)jhvBSneb0=mjB<#{ z7G~FvG(wjS`g%(<3%ttu~Jz2M+}rm0D=-I=GDePf%2; zEgciVnQ2?iVblI!KDA`orT9_frX5rxcj0Jz{d%Q?`k~ZqK$&L_Au4~C2nZEC6es4fR)A%SZK}3deV(C#!C%xoO%`IfnoSjm`H0%mzzv0DBcKJwhLgybD8YeDfzSB`rnapj|fd&$IfbnoQ4TS$?^%d$HBK_B?Fl}Ts5bopwx(1Bi9^#LF zH;T>!Rm_Dk@Lceu#>0e6KTKB~4Bb-(!4R2GL8g>IVSl}+FvQmTo97G12}8rH-d5^? z?_E9ZzXr><=BN-3N2oDWS8|Z86{_(T*sPMMQ^L=?Nd$#faWa3ZlzbrQq~Pnv>H$UU zOI40RRO#z^Cg1qu1x-qy^L@SqtcCPvf&i<{@(q&bs*aXcK+Q55UA3NFAXRt%R5IUD z?(NFRu<%1OlPcLSvaOIV^GdLX`U~8g5&m4S8=FW!Mew-Uh8rD_u+R~hq>iGHscFhPZH~u(isy@*)_?( zC2RThN7>T7uzJN59??b8C_Go!@%l&JNiNcjWNW+}&?9>Yg}L2-X)|X}E%J@`$_j)! zp`{(Iy8L$176yKL@Qll!4*4^jtFH#fBIxRNzggtWi>GtSU_J?h&6mMK)7NS_(}vCv zyC^;`2MRof6;%>4L(XBh=>;+$aOFQnJ9<2{Q?& zn~><;4smhu1F!7{odkiNc#I%ho(2u^p;MaYR$3FJ{HQW&GG9^ zk2@JZ-}
>DG`en9R`^BkX({pdV%G{<2SRmQ2E1-ke13Rh`OGx2>X=RF+cEZgs+ ziOM|Wm>OUAFA2$AUyB@xQVrjs{%`1fX2^H+mp>iPsx)ID=~q$ygnEUjGdIpWgHC_s z_RzLifoEt+yzfZHif5nvD5G`w&P?h2odJzhz0fkznU+9i@gt{a^0gn%~Qn?-iAG@;N<| zEexU{h2Dh*Yunq3p7@gE!wI8x5Wz|NQ@O&B`z zF}P>3e>0G2hc;LV=0S+SlK}E6@NfpWeav}UcLf*)+S!?zo<65*sh8VNOCNSk#h4%5 zzR;*Bg4kHF7QBw{r7Ws3xBHk_rE_E{AM=}-HD;#lS|$U5pq#~ z8)WdtCQ5KbHqu zwAz}_FM}NlDLutFH_MGzv*qi$SH5gUr&o^k(sM7$q4WqV8#Fq-MKJP`XoedUh^1d%DiuYApFs z)bhpIm->cFljWJ$@8T?-mR)q3uDgLV?o%n7T)^DBIKmbCUz482HqP9tETVNeV&;Vb znGVn2H`w3SnV(N|-}R@>4Vzj?^|0?KYUJii^(dX9OzaceX}U9Iv!_zbY#72Z(|COY zeKf7^MvbEuil7Y2dZ3gLDzK+o6Mgdwrvk>b&IHQ;VrP`~S1yS|;>~yr!75IH16#|J z*I;c`c@dnzFE5rkOv-3~EhUgJ76z`usT1-|i@NIlBN-9^CWF$g4p6CA5(RcdnM&4U zpx$(Ter?0?HbE$q6Q!h+5I)N3oh_Ivn1;OBVOWikO*X>6yC8o}I};;2`AfkP1OwQC zfKv<=N(Db(5$om#QJi(+*J^eiYB8&d7)gbRDujCn1<2`-h zMQ5k=r?*0R6(MVV^jmMx*Rw&N(M@;?&bEi0VEPrpE0kU~JYXjJVJWw4!pu#$I8(?1 z-M5sa#?%ChC&*_t_Qp3$MjdiTP4QKyqzjHBV>iJKV@HGLD@n8Zle_1$lMmI|vyNd< zudsZYL9{=fQaUiZq2r6EyJ z+gW{d$rJ48*N~BNeW1&Cl8e5AzY(XM{7Hp&Q3bD?Dg_jEnX1ti+WND;^gi16(R&!q z`i{-?r#$EGhIDLK%VNiI2Kxyu8gn~}?r_i29a%|dmzOO?nvg_jSFEqPuxrV;)rF$` zVvyuI@1?Za=4}5&xTe5I$!TRd?1tUaVn9%MV$oMg`=uI9&rES5L#>WGHYFsV9$gMn zD$W%%Y26&iNSuz~a;FI5kRVO{>D4f;I8Ze|Z>X9b`-{|ae3pqO&9eU*T_nf3qWXA4 zBb!j8cRvie7cQRJ9Hl7ca0whUZn|DWKqAt9YD}?l5;LCcEk!PCPE%{jMuvV1(}~IV zJ`DJz`u=HKRj)dqkrxA}#t#8F!L0rW?U7v#D;T%nb8t8&Y7*ZV8h4UF{{HUGS|78H zk0~{U8vDrs=)fKdyPF`zkZ8QUM3)A4=R%1 ziKWu>lALw<-Zg7Y$I01AemPyl7T`Y!wE%KFJ3i~xZO=lO3@Ieq1t0x1?wNZMvqRbX66?J2<#97B>+&11s)!vbRy6~A^^SJT?u=j)p*-Er~B z@d&NyRtBXFevLmfR{RydB6dbZlxO&rfv~|dY^fmnEq`j-PL3g8v>?AdE*W3NZ#%L?kr~SN&7yBQU*~U$H$Kda*1+Gr=&Q@nPiDKv z1EpSmW0y#|HR@$X?^saN(llOKo70UCGi1EJGx^Zo zMDe$%x%H*!aRL*7RMB#2T(0QK2sC{oE4MXv+vOvbudQ6xu~e_RCO6FE&gO(Y==v5MPsRYS!TH*cIE3g;sECshTLSC zMBYw@&S!XO_Verw9GD(KJ2~$5ecZQ~Iue2u>a4hay*B@TC0D&rc`|KqRi>_&YT{d^ zEVtZd^0#0+F(`k?VDeQ<@2^{4{7zOdx;Cy}D932x(#rmG_uFz$&l^9BUr)dPe2Xph zevN%ZIijSv=Q|CJQ*J)Qq}47GQ`kXX^4XQqRImiFfNb_9x{o(nON z@yN-cO8PpO*GS0(FhX$9##AZRJr;^?GRALP1RUpAm6Q(CA6e-OrMdl3yIWj~LO8Gz zosHi`>KG?R$7ZqZBvXHMr2wPis}1#l;#=P4-(}@)7QOg(^V1Z))0gM3ioe_@8uQ#) z^&=>{-8ZSa`R#81f}HXCo9-KuTi3Z983H3J$}E)8vXH!ZcS*Lueu7m$&(uG}uI~ugTpm*s5Im(cQ$0F8RG$j;2an4DV{|1QE^H&rz|x&O1|PR$ugYZh!ba zm_>mhY(+~%&@Ww{?Wd(wI^oC7gj!IJHaGs3LzSSP65t11UuExuc&SL z&2QX&g10szygKDx*^(sKRm;uGOE){!;{Ys$;DWpen1J`9s4!Fd>rWCwd)WHBKD8hN z&wSaGXA8;*)D*Y?06g1k0nFeH{T7O1NJ-n>MQ|FRG@Az{$Y&JJ@c;p%WzYq(;wh=A z=^!NyL}+(+H;?1`C#YNu2nnGHsvA9bgPg}w9XX#vdwXI5ZQFFqcIWu!!Vi?VRanskC<-Ksp* zIfbRhYwV-3=KP`)W_97ya+?Xd4ZC2>_iogX1Uf*YHW$g9lzI@TY)CGBMjsY>JmCMvkf>=2k+Wnn)CNhPd z(S=ERCQxuF=ML5@);?@q`Bf`ZTPU5Pw#0iQEll8}Oaz{!s6pykj}dkUMT6f?u`OGV z?|mMVB8&Z|d2&v!N1ZRES*G8aO|6EPRgAy<(svDW4b$}}o@CSA>cOd0bNu=CEd$Rz?Q zl4tr`R|cY5Sj^5Dm`4Wtnev(VMC%rH8d3Av;MDOsqU4arr(6}+)_JH9@~>q%0?kC&7*N683NmeU!4|A5 zaP#bQ6u{cHs$<9n{>l`vNm_vP0GtU5QNV-PPei+00)?**!uhkggG!E$MJ4OQr(kWJ zA>~nkpdS*`M|ijh%?wmz1QZE{-RkLVbaDt!aiaM)MD}Vl4qusH*$)lu9CUx9A{AeCUbRbO zEmEp^9O!tFlq(|9rZaB3=~OPJZ$|4t+u8Y8&mi&CYN6D@!G;|yAoBzSpmzSi;Ib=Q z?M=t;@^zI^tWo=_5veKDw0A2zjgZu;+*DRe^NT=ykSiN2< z*_-VUkzncgT|tpJNfmY#$=j30;bZ(1 zgBo>U+o%w@eOCZcYydP$q~<)oP)ZF5Z^zG)Bt`Bn|A{*1Z@JxXIFt7|5c4JAPc?!0 zbq9Qk2%kZ$q5%q^k#HVJIm?POoQOod=v7r}0KzvL3zYZMaAFc&-PAhenobFKzxvw-&5D3VL2^T08-{?`0-O%%P z)(>o9lUx4b72AG|UNwAX-QkCy@=5^n;sVW;;$++BR)G%1cyBL%Iq+JvuQ1yYG_)@kj=Kpq{ygQ&p~=(16#MIj1|-asHU zU->ft2pSnmu^~-P7UmM~(j{6^1X&Ek9^eNf$f{&;Jo_QJb94Zz1yl#({Tp4erxex9 z;7sCKg#RIIO^9S6!HnE~>rg;}MFCkNMLLonsb(#8-f1g!aiOH3NCLXfW_Ocw0#KEE z1nxm_4G~WWhZ^$70kYcy;GUuRfBqGC_NSCIrxb+|iQ>e}b~?7U;&oY|3E)`lM+21+ zNYBpByw#q^1f(SuB2%ZVX(t5lve{@syoD5tNDCwm z2b4X8@C{A{K@hq~X1ZQhcU%j~0ut9<1^|eGuwP+#u+NxIhrE}NH9{l3*NI-sEI-lb-V&@-J-v@b*kSh=|0uPe_n*}M^0&ECEgG4AEP{)PDzhP<+&0Fg_ zfXX0tM9z`ZZM5qQZ-TCafQ$g#gs9fdtF?kHdI-rHS>%w7DIUbQEAs{XcJ{@8NZO$G zB!AKV0^tW$^8em+6cvzgk$|S(GSC{5fdDpkC0i4bH1J=58QaVO1l^cSjuMM`qzDQD zkQ6b5o{iKVwobOeHbUfts2s#OK>*N*0_db2AY>O6PI5!m0MM}!m<-GakiXLa(GA3H zV`K}tsN2DM8agK!3Gg|XA~}7UZ{t5I;cIz1xKqP#>87Fq( zf$+;0FJIQoS|gER8y2O;QRMf70iGu!y_O_ z`mERw-H$oB%n6x zW_9c4_9A6v>gx1RWJJyhUj=31$iCkL-UcAh5%SH>W@l*!pw8t*f!r2=NLd671cwTO zQAKD~P>%?KV4er5eof=Zyi$k)j8+MLmx2ba1ji(T>;riC@zaD+U0o_*NC&79UHb21 zL?s{?4>;S9YXEm(8T8aC06zkgk_9q!B6Ca!(}6}%1I~U#NdgVz5AyU4wjq=XK}HZQ zY!etj*vH7O13v+%v9xLL`v8-NWJ>I9j|%|8bv9$bajAim4hocL(^?#1sJ2p>GgPz1 z0L+dQnj%^;JW7vNceg=y3P^SkF#aG)0EkE-3YE%;u7(WU{yE=oUdJ%il^IKaQM|e2 zNWnSsWa_jaG?YN8S*fMVK=RZPej%bhs+r_h-Tcx6-5~D4Ra=VemXM>Tc(Ilasqe6! zA223UokheRAkje@A>7&edI?bkCl91R(CEKFa34x(MdHhUfsCO8c?Y~1KZJih?ZZ1K z0|y~gUAqi`(*hJsr1ldDvH?sd7Qy5X6xl(ocmzV}04)I~j*^m6f37e85AL~Ol4_3x z+91H%`#tFM=FLa^`1b!1HRzCRC>hLryT8Cn-rl~z&(H4*a9a_+B~*-aoXcQE3dbSQ z3i&Bqnud>01Aes?P?@kL8!8Mj&>n>WWD&7@5!~E(q>CmZQc9a1WdT&;kKzZU;C6#R z7<8n;06-SHTx_xFqi^f6)oh0yOYakYxb!mgKaxItkQg0Q31l{>~p249UJgGBh;fh3`|m+x}Pq(z-!X zu@T7XV`GQ{jd-0XlA*fOekSu9Lb@s5UaafMw@3u7AFwHjNEt1X@&kFEU!MH93M+0B zHgFq+D;ngt5L6Vf`H&oHpm`<%p&5ML2awMlrjjWLWpD2( z5N12nks{+Lc&EE<7xMI}e81^Ld{(*wkpK3(uJ`|}RX}qhN*p4)5JeE- zJtK+w@Od~4fY6fwk`y6sLa4SAHUnL1yFo;X9J15QMuZW-KVm#XlN?w)uyE6eP4aFd zxK8*ll8T9lX`n17CSCZiO$v`g`wC@2s*H>F2!sz{KM`>R9aa#4HF6ywDXM@$1>YkF z`9-kY6A{fH3=B}1Ii)RR5mGA9%F{H9RjH*T6hKu0R2>LNXj5U?Yn(e7RJt7xSqb&2 z9a#T6cqsfkuK7NxbEqsh{a|4uzBEu}>7bVh0#ro^ub{;tjx+>dfza{dL~+3kS;AAS zWHXS+#fXu0jz-CT2TAE6<_Fo8=ypKW5MEY$A7@_hp8?mF5U_oBOQ)` z$q$Ce^c0+*7C3g>@&&m@f= z+j+ls&!-gKP;73nT#>Mq5-3YxHhg>rKw*S;@bG`GTZReURZ2loblTk*M_O3* zWE&=eyr6;pBRBu2?FuUI!9~$m`4_D20W3T}xdnVK$ihcVAMofRAz#F7&xSS`N_0eP z5MKNLotL6W{`8o@VkW@DyAFpSFcn}CEAQJYqPF=s|0|GC3a61a4YcU>e`wz#enuR` z<)f!={r{CEk|GGR30fk=`>quI&#k)}2&v-#&!gY+{(p^SP*K$?2~yz(!NhRB8)Si~ z4GI18sWSZU%(h-5>hib|eAM@4Q{kL3ud{BR(x=HO= zV-dX@jZGVybuupxh|%oex;cERTcnmOib2OZ3!AwQzW3CT&E2N@!m!Tf%6NQ{6>ZM} z*HVGex+D7JrZMk!s9a7dWq zB7e-=G@5brKI#S6AcB8 z@#uoFgDpz?{OC31TCa?J7$DpKz>(z^^*+gmnI$moV1Rqi|C19zcxb&iicV*_G7i2l z?ceC5)U_2!Z=_Fc?7!uja%9?ua8jl|nJG3MEEfg#fA=}$$9#Ik^K7r?^uA@xy{m`?6HdUIGobHb& zm(46~xb-9->`~Z|n2!!ViIQPx#7`(D(U{UHZl2Yeu;2fA*~_CF`W>Sl*1ERaFhRk= zVtdN+Z&*<3FT{z^OPY=Ue)yK+5rH9dLgNY6hG6G`k(GjdWWG)*bbc+fGIrTts88)a zON8^R;Ot5(7VtY*MXv^j8rEA~TI`KX@y>@0-(~>%85`%HUv^a;7Q_CoS*yd>nbXwq z7`jR^{Z7n>WNJPbw%gN(!{+gC*ieC%Id7j@ojOgdtf1GKT(7eKphJS{!+(A$@ZQ0g z7-Y~j&i#;sW8{{x;J=e1>SEHFXTN$r9Xx;D_L1=L;xp$IK8a&NUfdyz+IMycVq(9A7XLuulXUlqqkKNJy2_u`gi;aT#sDv zOp3(id{&**+W4*m^lv)-ky*#jNDwRx?3U82R=WFF6ssSVK|%SRFM{Y;56-uwqe})q zEx~R7!x7SojR)t60_G6`mMtQA!pG3w;b8gx+ow;Z0D;U9?Ggr_1LDDeN^9)WC=6|grZE6$A@ z&iLyrm+h?4EVU&cbnzIfZO<5#rbrgMQ?K`Pl=T|9Jy%j``jIW4ew`hEC~d-;78J%X zQ?>EwQgy;t(W7+&tr~ZZPlrPR#I;Y3{F)ikC3L^k1HUn!Mgo@eMLRjjQ+A|752ZgN zTZSLM2c-AJZ<23Qu2&kJW!hVbPX?C><87TOo+EP_^vvrFxz^04)k_$_)Qnw?CdsfQ z=#OE+**F4Z>JCy5Cw5!t=`X>M4EfMjWTd3*czHO7?7m5%W*f{y5F>Y@f$lhl3~D_HhzgqcPxt!U8zH?xo1 zV!4KzJhTv;ZXb77Hm5)A{dBkg_2XVUko+MK4w^N@1q=p?^8Ngd8;sR=etEK>-EZFu zq(%BMebmt2%_RRa(HY=N&r0H3)-zM`a}NzRazwy5|YX*2fxA^>*t5D#nVyI zHO`!)DP=x=M?NB3vt#d+Ta>q+6RM0rYkMvJzUb5OMp8%CT^$N4DgzxdGP3pAHG!eg z(Rg{z((Rp{g@t<~mVR+T^ct^#%Y7?ZLA!3OVSPN3{k6CE%jeIJy{Fgk1RG^~Ir;)A zsW*(kaD50Hmh&QpSUk@A_wTREC!8K|%B8VioqB1|o-?7`*XFtNy2B2;YF~6p*zr>Y+Ptf$YaFy`#3ezb2et&KPzSbj}T## zlU0|hJL*JDobbLB#c?~Xzm-~KMOn`OsL-vcl9R(-%OXUol zO2u~p0WTt*H!p0^Fom5QMvYOt$9q-C9raOLi!nZr?(G`e@Cz8t-I`8mouFQIQ z;0jb_LZ^$4D=aJ*a!m)T!@9GYV;wl5<5`#PmVt-}R>|h#sV|1T#|I@tU+LWQg*7D@ zTJ)y=*BHdZM+)^@n+uht)r;+g63^*ixw(S-B-$n;VtqP8U}1a1V%FkG$2|CJ%ZF}1 zKTml6vPlG;#hUc~2qrv!LN&(8ZAT>W09vISzG66^CHq|-#Gstb21e!G=I1APSO^FR zz8JSEQ9nAXudlxjU1ZEQ7WK?zIUq0_yxe`)s3%XBI$0?aMutSdnI!Vf9wEflhqY0+ z)YVCLx0j^v3JZIBEkky|w+Oz%Ox*?TBn4VCvuDZe1~dIxCvf?Re20dphlhZGH6?#T#&(g>Cu1E+R=UrJ2oOsxn^b8EL$#RsIlP&nrZ%lY=m2?^GHD7W8VestAmN?oO z)5GSB*AS1jU%B+un(-y9sUB9;la^l^MUY{iq**Ln9V=`FVKA9-iy|mQe6TumpC`jt zg6d9UWB9`E3GyhXt+Us)(r-raJ9$DN^0I|iiOW3MB@P2Dn>E%R>kYH5RR-g$5Fxw= zNeL`KsI;6OI0j$dwAzPy8y5B^h)F93HtJik`1|&)rNwC<QbP9?nH`^+9R$$8Sh$)}<=J?Awx7r8(3nx(aYbg>dd=hTaAZ;xAeaeFx&s-*RLhMC`|JrHAecXxd~)=cI)UXMzrNk6k;hf%maX8gQeSXkJ3a`JO99gYj51W(!~ zj72DL)QinAL4d=U@w6GRJ8!KhZ*Pq6eVK(hSXh9z?~avN;gt{;^@g5#560dQ_2??* ztNZBH1;uI>Z}!-KmvALr`FSEqJsz8XXIWn1<3yVL*<(9sx0*DIfA`z8T1^>*aa$bs z=MPQ7Rr_p7grub4)=j~95OP|dhF$h0Q!J47;eucM@5RNI;&%A~oCqo`8Ar>8rEE z>GJcEQCspxhr1v7yB62%>nCpfU-{TAIb2ZGR{I{qz|=HjDK{U`w@6P(Aj?pPtgAPRmk2y=v}u~-TO3T4TY~SJ#Km%5RimR_xjk0)oBW*!o0i(WA*pD z{esZSe$<>C;ol^LGldv<`Lq$oPfWMfrG8*H&|Z3<203Dh1Hbfi`Pbl!AL{AFdqZIF z%8eU$6C9_vN|0E&bqc>9KEGSq4rwO^vk5oHhh>MFG-{j*XJ#miY7C5}6oSf?W z1rCmlATC&&nnkb6Kssld%nI-N^O&)ONE|OUXt&g6(!6_>hUPx?do5^W!eux7Lh7SN;cAj>R)Q3LDy<@Itm=C` zNYbr(9(97pYBA+utngDSD}48?WR*;Gb#=>WK9^nfanm~xGkvH1$+MV&VvFXr4@HR~uuLZ_dNQ0;QCit9NyW8(Qc!R=w7jdO1xGTJoh|sqDU`Lfx$S#~ zR9vi?xA$p4;nW6?}@`PQ>MPdZC>h{G%EF&^zd@}ECruFgpUY%8Fzug}uY3GFf^ zB_;$|cvviw)N;vmSwpx!#w#QY=^1^Lnt`^VPdb)0ZX{_n4e3n0Etk2zE3P6XCFLd< z&3lZE)&G4{IG@)!ep_%h8xTx*yT3Q1A8Uaw!5K_tyed+c(cs>huSAwfa(M@=6* zAfhx;3A$o)!HNTH;M1V`z9Hqc`Pnwfwr)9mH{71G0l2`QbZfN#Xw9(IlT@>5q0ffb zd_q$h^piXXK<Ed$QWn#JH7@IIjEjt_FU&^x1yeiHWHYsexVX5UOou!#E}kR!11?;PHz3$$j93!Eor9wa^_!0H+PF`Mt zAZ_5(7f$yf>T(_zUM{Y(_I5>TrSpH!Tl4pwzx2F089YKx)*o6p$lpQ%`Fn)1jm@`8kH}~^ z^~3EiWoQ-)iiv&ZGQ!hjZ+eQ)Ubt?=ORaFWJGDIS)8;ul}t8JU3Q5nmzO>C@9MIcAd<+bc>4VVl4GJ!@B_f{SFeHaM^;~ z&po${r~~#$yf|@$_d4W}+ionza~TB~DrbxqFkuSVxe<3}Ojo8TrD1b&+Jp!5{~dGe zgeYX?i~W!IOscG5sF}CAKEaCj#YwYxZrmXpQ8*y9{k1`o^PLjdbB$r$kf4DHx7tR- zMsec?9^}5>!+>>pQtx?|?obpK&=tz=iRwzDC|tvb9seWnr!L zWhN$bumMt}W`23#a#4Pu+_ds|^X9Ig+pcl=+qbTyy}6^j`S#EzFVAW^0R)>|@+U~T z0=s9ba?p5_@nc$=mG)-v;U=yXkf&raoDkRMxBvAzPc^gpKXQ{+wm$r|;oR;i+QiYi ziMiC+f#<$by>r0VLoz9y4|dedmmK4nap$CVAa;qj*?4`QcAr*K;RDPe%f2B z#)KS}SoSM3&)5>1ZZZEb+<;cy(U8l_lL=Xp58-pR3s(iHBNXN2a8~EKpKG~n2vM6D z8=nF0OL$jFu|pOm3q;)!yK<>?k4#_x74F+A5ZF>**-=J=ISmiKW@l%!7pzUBw+h4X z&V_YzS^mC^al1J=BU&kS0S>e6^@?*~1LF}8H}q@RjQxZ(Ym%-~f!-zB;Sm;)+v-Vcc1nE_?jpdA`2qknl7vTjinXmEC2~%#+#LbE9H1 zeC;3HnW09PF8A?1J#>P)5t)vxF@% z3nnYX80MM;vm55*c&nyWOAGA2h6I+$<V+mkyVh5OBL;=nkOn4Wld4GcgA zDwl`3ZIw(IvZ=}M(t=_FpCaPOiWB=mGFe>#i6D@CCRnmlp{Af1n$9Sx zj292GoEl4rI$3X!eF^HXzP?(St`h3b%gY<;HBEd7i8@#(H%zMybZ~=9w-@P*220L> zIoXk%>I>_DpM)Ko+?fkoE?Gg{Xm$5Msl^VxOLF;$VnmyMnsWYwC(918JT*0@u{3wq zr%z?P-o(Ji4=3c;#(+k(d15}l%(;7V3=J2_yL0thj|*g|z?hSpy}J#IJV~B<>!TEO zRjLllxA-|WM#b3j`OBBe=IDywRY6)`Yiq^Sjou=+v!RO)l9ZOQ_FZu?pR;Nn*0B?3 z+~By)Q^|M};+Hy_N0y%n-wpkP-@p?1wO%w@8}zM3uTFM4Ew@rgm`*L7P@5IW+=4RT}DS=PmxTdCNk2Bb%&7bwe zw~Gz%`9p7j_4jjf(xcsQw>*GGUN+l6(RdK?*s0~vt7aQu^78VUv4Ms66B@#P9dO!W zHXD8n#%qBTdOnQZ&6_uyp(fLDX*L%eapcGs7qi_Se;FQ53Z6<*I+qPhFgDux6XAD@ zik*-TcjcMk8gzW5G5PQq?nb3}jJ*B>-@WndcQv}dQO$V=T*$`tN+ZhDKm)CrR$CL`P*YNY9m%R@0oahWjz$UvNhlSdz`I$ z3Jx1Tq`%`F!6smQ_{=0JSzI-EEb*M@$Q$0jyJEEJ&o_!8k`%NDy!Gazfx#UYkk)hq?h4(p^ zXFJFm2GYIFKdanyy6Aob^;T8zL&U2W6A$`IozL9XH~GCpi<$g#{UqE-Ql4Lp?%#t^ zHu?hfX@Z1pdashWG2m7|O1^zK?z*ZtW>F#{&TjJ4E)@~PnKI=#jM=@~&7V4wf;5a z=4)W&3mtjdnehXY_-YKN{15R5KE=<{T;|KeRZy$WPuR3cUge~p9G%Uwr9iQkc03vN zcj^!dkv9CY=#TdGPFP{u-G+_|=0|tc*1M01U{(HP4>h}{)Q4n19lnxmS!`M|{~F#9 zE>JyLpSkww@wfXgQc=9~IfR?e_u4Gqqo2$*TkyegJ@Mg2s@u$D9qRI(z(FJFnhFoP)*jBQ$k_g85Wtp4l%# zH(WH{K_9}tG%9u0AV&V*WM9$Ba?uRByn6KXv~X7((JrH}p^va>;}EpXaA1%+&bn4U zAQ3P>mg$y6dbrl$Z&`jk3VkjC@Rx-zk)dWOHFG`OFvbi@x`s z$)a?VGzzif3L5UlCCL?@)kVdilV4$bN%Xd>JVS^4hS{;-!}P1_o^8g$LTY_yjMQ^Z z*994ud2^Xv`S+E@HNnlH<;~M?gYrrU4}biQ8_yeK>_sn^l_FZ%8A+a!v~Y0Vyv1`H zx{kszwGC>(;fym9vK2?&#k@vABd!h_2x(~98Q0+{(LT}da!Pn7X)9m#RafnVW^Vf8 ztCSdZyZ8?7xwlW-4E?U6{$AjDxbhIeXU$+Mk(jSs{fgGrZtN}081t2& z=>j?`&{1X}I6ly}ybuR<^WOJUvLSW7PZT@P-ojwibYi5X=LvYo`RQ@H*vDRHY-Muc zTkpcs)vi#U^qd&SD#F2Pq?G*kg{HI?RLhrIb6KoT(}<|C+;JlE{3`|UIgpUk#koY~ z)@qtCY>JRRfo-S!on% zL`5V$%a?|3^%c?y?OaG3Vwj7I^C*1gZP<7f+vEv{HuDs(7ad4T)ZPAKw0KjefFKX? zMbQls8@JJ!6n|wIwH|* zdjFrbxq^|;xVM*0yX?h17LA2tZ5ViE^>3OOsd!t+GCpB7BD_Szi>5n+|5451LZ(Rr zi}q6|E)P%txw*2)Z;^MDas{e$mhl2F`sERK<*m}kV3eiX+nhF>KPE33b$`a}_@k>a zeKZwjX5$ytozTkS&)Tn<2JVFfXRRtGT-aQ(Cy3aXt&`w7c5qz0(|`SVg24n%rs`#5 z2~wxU)<&7oqDuBGy2lIzO+_E=p27tWUaX0N5zn~Ee*P3g`TVvdpk_MeiX%peQu)fN zgRVUy68{MUrH3t7rH7j7;~T=dMMUNk!;%<>eU3?&f~g|^g8di0Mb--!M&H%rO4_g7 zi)BS=n~u9sjcLCvIt+a3nr!;HRJ}=-Z^Qeh_xCjQtNHA-waQji-Z@T*-ZWToDv)5n zKodWnp=$J9o(t7^mfwQ??-d^`R~CN8d!cdm?wc00z)REmj{{#c8=hNWEyhdXSQd_M z`WgJoSN+N zR!1bs*F~4rk;PH20DX1L#uVF|H(gLC&XSfVF9n%xOfg`*q^xMnB2hQ`oZT2FC>JNd zNY4G{+GDAoeH(R%v1!up;7OQFSJX#xIs1I>hA-w(jwtESsM>|EOAc6G&S-nzXs#h4SyG1n*SQzn(3#Hd?1=xe*L1UShmydP(Zh@r*hu!^8v z$Gv*q*8J3Nk8^LCQK#68Fio#PPTenxDX6aRms@X+r<}>V;NOZ9`XJonwV2;_W2O2V zzo0|U_SLX7|1A>lszr zwXeF#b@ z(R^_%aJpPPBL05g9rd$s&@SJeSqgn^ZQx_FQxL7;pZnu?c=Z#R?u)X%&o2ahc=5Oi zLm_4Q<;R9+6gLZ;0Zv;f|4NrwX7LhyF%zMm&zcb`@5=Gs#M12*r zUC6)a@o0F7uAURi(XE&TTe15%E3t0<`%qd&w%E3|H$-;EMlyIUkvO<`M0;j_UO3N} z#ITzlRWO_1vQRK<2u349U4B=-)X(^2>^KS=!+j$16wzxzybrN9xtrHb*Rd2VOG@JiXRtH+807YMhx+)#4FKVV`Fz;4CN8tMRWDP zHdCqhvZi*k6r;~^L2&jsZsL<~_JoA0JWsLJ$Q0gp%A4q>i{p1rx{8Lv#Pb-I zqh4=MMGuLvM#eM}D_&aYP^c*_!g!sr zcsnw_P6;SI@GZ@Y3FfQ~!vA(dT?WqGUtKE4#A%YE-q`uL-v(W5on>aQ2s?Fe^NeAm zUOm(WUG!tQmKAG?ubaR%tz64DZjPsm>?y80qV*F0#{HtiJ6$7B{zIwpTA~I*UoT&7 zCAa(EQ7NI8A#q}$wITCmEZH2Na|$2MF#RsFn4SFGSx2p0UcFq!4X1oOcjR~4_3N0j zAqvNd0%TH93iCeFy<6ML3H`^NCje_+l$F!!`OW)Gsu?5pQ$r4%=a+OPca*NIHa?u; z-a3zM7L$MXct|!*EgtI6(Y8|`x3ITKH~8p=eP``M#u?;L8>5dIdiChq@z@fJ_n)`Z z*)IGDr84~b*^9I2!kZx#6r)vhp$lCA)1#WYqyDSWJ7!Ww?46&9TQgX!mTRPW?--x1 zicXYRvgycEP3z#VbO9F~QbgEO@K>ivQ2NfseC)b1X5c9u8VbcB<;>sy5a6rHqSr;e zUBoDVH!P<^bHQfTfFO?U9{rfK+-Jw5zsv&KE0CtI7pm#p3W!%21XN8KMYD!0|C zn0chP;q7FIK1^e~AZr%L?h#T`cQ}ky7jeB0g?3UN9gcp)C^7ppYS%b5YBR;KI@Rh^ zqi915xG%6`Se;&sV>zEjX$FHBIy_7t zLxw4+b?#+O?ml$=0u>9fu;a4yCgg&9l8i+^PsMH!SR}N1_d%Z><>Plia=zUB> zhaNU%bvFy-)r&H|y$5?cwn>$NZx+O&If+y@ew|JyT-qE}!@*hMGn+XRR-7tur8mo* z{X6RN40husu^y%4!?o2Y3EZm{q2)Z0}X~@ zPmsAgF)FUFdZAVNZJb>+2EO)lpNG>WQ@cVUFmB$^X}R%(_?$$Jzi%|M}Lg^WcK{dFdv3+ z!WHhT=Q-0gtJ8RMpZ?qy>O1M_W*lzvM0eho`Uk3S`?u7n+#a9lzWN}uS-SgK_UiVa zn(cdx?{sZdYI?@3UoXZFJ=!76jikE5z({D5p;5g8ms;r)QeSd;)n;z|BgKHkErJ?t z(KBi5JvFNu`ln}!rbHAN7+1wY-Xulw=GhD7I)#Z_oPMHpsoW;w%1LvDq^*lL*-8IM z`6Lzpn$z1{hla0M(N~EfhWc?1&V>Rf+mjeKJye{o%G0ufyhF|GG{@Um*or-i8`1$c z&-uBkWYiYV6FIfxm(dBD_+H5Mokc}eR#*^RID1QJOQS94go4@HQ`>e`l5&7?s)isL!Uti8IGQY*)Gj7pV$FMU^0Qv8hbX~k7*dY7;xjjE5n zlHv2)ji`p#?Qhk;gG#@1+VurN&{YLIfBu~7P~vUKkl-peAe*b-3&!yLS zWbeK9TK7HgImaAh%ml4cs{Kc4IiZ!&B9qRsRoll*?&g!Al79Y{{GV%+|7=djehw1m z^?eq;r#HATNZ!7b>rPfW^E)Aw8WPaWmBg2LLeY?HS99kqDxLO2#xpC@r~{qOoOE1c zbh8bpBL5dt{79wnj0LB)u(ff^;&;uaphxP);a0!BMayb&LMVF6=3k`m6+ht!nrZ0t z(_wxWe4=yj-(9KqMZaVGbko91t!=3~BA*pDWF+4|%sWnOn-mKh{cIDSk9tOn^AUaa zev70*!GTK)ceQ(unA}k>C@)5Hn#ld<>&?@%TYP#G5PDH;eB`#{6>{%-pAV<_v9z51 z11%Gink1@^RlSq^F^!cJU0^LTa{NPeHNG|})i+tK-4d@=RT?=*lVgS5!+V8@pszcs zBy(T=2=y=XW1gD<;7Q~O#Qgtz`OAQFe?LFuZ}@2A$sHpGdAbWDd=xl8K z_c4b42i5)Oby8b{|MX#g|MI7Rajb8D|MM1|{{LdLiWq5XpSMMVNbOkco*d7r>AsoQ zQgh?@dyA&j*8c|#PT|Fhi2dhqW#{-0*Z3Qjd?bx!hWkHP7Di@N{5 zE%gg7mcJu$SDe>>znC>2-Ti<5aq0hD5Wbim{+E9dFGYiVjgqHSqNVT+QVbhvYQ)J> zv_JJc2HGfEU$!nGk%^Isl`n9$>RMXvYX5ap8dPLu4Y~WAr+clR%=k?gCL|yDO&T67 zruQsb+T4>T09qX$ns}Ne$ioHx7XklM5>=c5Cxi8^N4b2N>JJ}ZJ33wquKVkaedXeP zEEr3-&m{^vd@R{y@kDfkM>0Zl+3tDhhP4Qd^9 z_T9T=|GfE|`_kL7Uq7)D{rzkzH2*ARm0Dre^Wc)` zplB{Lh4<>=PxkB=uh7ub2L{WAkJH~@-~Z6jnW}u@*QvN>O0Od#)*I#` zI@2WuEr)Y;wdMD(5aYcNKX)+kKJPscU};(D&Kah>=P>MlfV^(5BZ+{B2*cC!%=}Op z{lU&^V0AUhCQs2_V_jI_xw${ZRaZ7v&azO_-uKG>_Is0?vaTMteQU4GCB!%OZ_ag) z3^!p%ZV2?a%5#`r<^Aj4*QBJR*vd;}>%K?N%*?7cK*A0*$l=e)za9asHt7h*cWYf0 z7G|yj20~%ig}qc#m4*u*G&D6#%!ZOaNLML&wqRJq_NLh}md#5LE@f1>Y-)6*Y?86` zE6~84cbBtw@4BK&94CZ8Qx5&)7huG*@J7+zOd+W@ji7Pra9_&#N!2 zg;(o&oOCc7!6o$}l!Ni{ao78;Mhg5DJVI%B3;1Yfz#_e&oIjrf-XOu~gLRVbp80Sz zFC9nzC-!aPmL(NV+CSSmQeRwL{En=`W&blM=*z7$>XCC=#FX4w+RvW@^8G*SK+fki zXZKU_-uIMNcY_KFZlMV~zL3WBsGWYie;k zJo2l4R$9gSU^qPWvpK>^Abj?t`!V`cdwaj)V%`k3Z2}?!MGk~&-9dk^-eJt$8|=d* zF6Rik)6vmT?llugadn**a{l+;JOJw&$F2ESe3`USEsEK${Qb??dJlkHL&?XdLG~B) z;Cv&R^XAm^?&9SGL+jYs!p8}^4kdN% z9tn4nu#4Ykb=JDZMs%dTjfFDrN};u19SwHcBwD|Fq%GvUb`KgVK_?n2D0ZWTW zbM1;&F}roUB`_;AwBMM)?C(zU-N~ld!lm(tUkgfPJ%!x2F2X*o&5Y^hzoA3LK2s@4 zA~z{=Jl$+0pR|KrTUR^2s*6q_8s}5E#H+t{;@zKT!K;>~87!OR;R!wk;)WZuslCS6 zdAW0%`fVs`YHH5FZPVD;IgFQ3(Jpr- z34S!DAT1__0!<0K;q;+Kp(%^~+JHZ@29lnWvRfTs-Fozkl?J~%^mDo#EzWhJ7Z_8b zjo|fO-(c*=(fhM6ean<<#9RyshthIDrqq>^3aEPsO>}R6e|jNdp$2IIauF=&EWN>- zS1tj2`I^V+HvQF;ts5Z73U;!aGu%j#*2p*I&epAnos#GMNPY3FmzNhp=wQ~X#6rk7 zo3rf=M{8A0Y)tCFj<2}rbW&cecaqWb*vH?0sx_t?UR~I3_b72~E-A{WEw+cxZuS;J zMF)2s8{R)*TIvmMQIY*8m2~{dy(`OhdY6bTC>UG7?%)bA>7gI4yJTiU8>y7;BbO=xOlMf%SBcJ{fW`6x zS1jQ5boCnppCrHw41FheynOkWPPP=sViUIn)%cTTJgfKqN4*61nsZH*-6w%Fp3x-fUh)ObM8Z0T5xay>{M?lYH`)75D#n&Z0xqaEM@q~ za~~0~qRy^tI(WWR&|Gq}xw*g4f=De}!!zHkomxoftlW%8;8!5>U34P%y5Wy&wD6i1 z?g0B6Ig__$x0o3i7>4YEDIn5`&02sVgAXB-d*j=-xCxIjikvGs1w`dul;bcwzQpd3 z2j<8l+{Ej!j-3>Yfx1=#d~C3<@v1sKz%=WKm;SbimoO(WyLl51O87Lm0K<{NLXCo_ z24VRYe@@uQTTT_TjFwJ1qvgHy-3YU!>|R_=b2A2zt;$nvF#6sZ+@R!Yrskj$*N(qu zY02E4BzQqfOY3JAs9ogGQ|7&?u9YC8rRL0e^Tt@nW#XQC7Xj;ZWV z=mMkX&Ee!e1E(4HdVKT+{Z(E{|}QPWJ=!}H>OpF>?1yq z_+=PCSOxr?+HKOlhK7N7k>~hSR2|?C$)b|ANY4sk)cL*2CymP>#dz~4F=WL1tu`|| zhRvgr30%?uNg7+wr7RCr4C%lAoRh=myt{A?h+5)!xiH>&xXeXe``+hrbtfz`zKfhO z^4i8=pv;JH^v1{aZC<^F69590A5g-e+c0ca)|FPE^$7W0pf^uaXT5tzX*p1?N!Hty zX00dW^b4){$>^=UuQO8Auin93bxgA{(wJtqY6T;~T$espAmauF|N3zH;>`N?_TLBO z7UL?{QLM$j-4buHt>mvk1wA)64#};awrkx-dSu-~FZYc!?`h+qfi_)LtC*(0#6b82 zbP(JYJ+<+roB9?O^x0m54o{2@3aqIj?%Q@AP(xM9^YLFY&4G-jRy?yin zzC1iF`_+C=aBBOIn);{@eCJl@`_s9Az>K7vBL&trYpXg~6dd?&2U`tc34*!LH|c0- zX(zmKZzt=Wo)K`nEmK*&V>JXIj1y2r#qiMj`}=`IxHvyrabfh)aQ*nwTZnrVF7|-S zdJnF!6c_u$`fCh3Bpw|douqqE-!xV2dCX@!%?<|-yj(+5vu3F2!bsV!7*JfF>-J?X zeF)cPZBkeMs6W%egh#S3p^atS%kj)LC~&tKxF3O^=Tis5R##1O9h;T<`v(n=zZUYj zFEc>A2Z7eQ+R7lYurqVHn`^;}t(GWiaOPXf4k6l^-L;WANEYz$@ZMc_0eXK|#ckYY zD}!z0Cvg!+TTJfv#y}96tz8)cN%9Sb`7>zZ(C@hMu+Sa%_z?Gn#ljDPm1Hv^HAdw; zn>uG$AZIW6o&~{6Wu+>I{&+Rnu4Z0l%g69!w=~M8P>vAc*@hgeCq|zrFY>t^T;Z`A zekYvsZDpnFLvtB1k1N{n$jI}zk~i3M_mw+BhbzpbWrGx4@gN#e`cy;f8AM_U_q@LOi@ zxVX5Y*3KfZjJmyfm8CP^jIF}Rdsc`gYRCxWNuVkbWSw)+?riGslaVi9UhsNRc$!&L zns4^<^=q#msUwJ*1W}2B3SWj^mB znlTX76n1=3wpmtSt!ArYbaIyp1-TA*7`dcq?UHL0tlx%PthDB$7K&6zUM;`k4`8OV=OnQHtddThoiYVkT0ltaUUl^wq!QTb&vS(azt}UCTVZ7USdntHtluNR*Lh+m zON+nq3IAoZGie?1GV2la5R>=z9HHDVss5)WVEho$KiKLxAX#4Qv8Zm+;(c@{OASf( zi3JZN$poFz0x>Xhi;FLygj^1;h_Xh9Q(SGm4HbuiAPUfoY9EZL4N&Eb4|InN^$ZOS z-4GGMA??kn3t8xX`SRs%hl~m%;ae6RFE-JnkfpwCDsFDVot+(c+!F={CHC8we*92s zXbZu=hVO*|Wt@k{Q5X>$wLUPmVWlE@Y=U6XRKy0w%-;L$=?^rmG28@)yDLaZgC;Ka z^(AZe$0%wM@(4QjAXsEIW2cq&6)*Q6vK?()$lP;s@)X5<-1UVJN&1NKUQUfPt&Wxj zgUMR5QtJ0ls`*#J=(=7tM=| ziWU|)y{m{5eoD%(Q)j~Sur8wc41|!U6)ATfxcv~DCmOex_6|O?jjws=4bybk4pzeR zoNZ6^Wvlwe*Pb6H44SZUy2*wop%w_jlchW$vo&hXNBL}5|!7V=SFHOpY+k;v=j~*87ztnF2BKn z0V=rPeK|UHA38)DKqy(?_AFl11Bc7Z)gN@OVzVMyYNxy2x9lu2jd!wSA3NCE_R2ykLprebiK!+4>wi%VxdWy35&3-EFz-oiU`#;NS$)y=B4@U3T4m3O$LB0ttb)ZBItc(3-^X6Czz)NSeD z;H@u(g}(12-q+|Q{6z^|XkfFtOad};tu!6T{*d47NEGn}A;N5Hf`7#!uHn*7LVtyW zD4pBMd2&%_AK2&%1ze4ARZq9R8T1bg88x;J47%@92!%ve9r=MgqPCWL$_}tofQ%;I zYkWO21BDd)k6Gu03&AVA{lgbqIj=(D8N>B)YM?u9eIwmR&*Si%pu<{2`-scN?jkp& z^mNpUaP)Ti6uP2>-bFcAdh0xm^QyX{9=Lr`9dBH3rV&R5XR zTJ@K@uoYR21zs=P(Qoayfy1x{PNj92YPsMVlL#SBPc0i!@`I8&5J>L^hwUT%`D-ZT zCHF-VKHV$o;&Yk3<=!f9>^zsyxaYEcZF#@}6<7SEY4rF4hsh!@RN#$J)b1@bogbVQ z*3uGW)-FJUt7#}$;Cj&-vthqH7z#JVa41a2@o=S4Bj5fya--FxeZ78jiu9*RE!8qytFcnjA^T;CCWQnP>UKC; zqv!Eq{k?5l7M;O)x3qVV4_>luox9~n2g~}f)b8nF?>!I+7>({?=DMu8Tf(d3iY+A} z`$aArj$G5jGvc~UedVj&`@-t8bU7_nnUMDy%;!$LyhG!-$9~aB#v_1Gl+Bx3L|41# z9aq|YqrUd*(R`0M?bk-ak!9YLEj&M%B?#ru>PST}Oe+bDqvE)E84ketu6&|i>*36i z)4oidaIlG|hH$F|b4%lnuuwTyE?JJ0lUNNFHO#UMJzZZ{goh&~c=(~T=sXHh=IrIY zN4-GDCVjjXd+qXNPk^Et;90^mP&-UCLspN&H~@AlxIaH>5|EQj(i%XXIQ!gO3Zb50Q%cD#@cnJ7f$bBDXh_s87(i;Reh)`qk4 zMH2*F=$ej&s-|q+cZom%g`k#ei6gln9?6}!k!#dPzGAPL_e&k*66hW$Yq%9-aa49y z`vxaM;51R&l!mXCc|?dj$llgG$Nu%peBhPOs(Z^-WU%NtCe(^DWmvG=x+?p~Pn*#| zylB|8V+Ejfib5GwR7YD=XN6peKkT|4Om|dCL9Vs$oD_!doZS{`-IGBqI-v~Z4<#oj ze$xFDtbDUJDM!b~%rgGw4(>aE=OA}5Q>*GS6e}-U1<#p>ZDdYOF4@91L;^Wfh27-1 zE<4w&bE=Ndz?OyDvL=T~eY`oMY4W2Chr{W|BBxEd;ZiqJyV>@-Y~jOPx49>l{RJeT zvOf!@yb1hcmBanCQ2v}`ZZJNFsu%>vWWH8I4v%*W37I^6{nNlnV-opA@3qtVIghsJ zRFa%<3c;Z6l+CJ}jjgYP2JjHTjaL5Y)2Croe9!Fcyd(1S6U;$%UPL=+<}|?gziE?(0)e3xzZh7O)hA(1WcN z|NHa`KSsZ502E;pK}WpX)dYJ6oCYo$8lB#y1f3Nz>_pStWxDK7N=iXUaEZI60UI78iT-NC5Xyd(YqzFC; z&;W?W?y5588H@-(URSPK#sl)GJ7y!W&0XExHoBUow&^s7k9YM#t_h>VH|iW!y>|l? z_4aFn7$~Id6p2|+w=cSDd~&B!eN80#*1jE7-zIn6FJWMdo10$*^_KJQ%I9viC)VMt zI$u*1621=hL!zcp<$fK^Jvu*H2_mpXVxmdm3|uRVR$=2-O#b-%e1MC?+T@R!yMw=K zIUz+}v0-!n-L<;@tvtaET)a6j5yxY%|`45`%(_+s&ES7THZ1FZp|l{n3zAU zJ5gL_9iI95T!5+u*_m|&#hs1eDpcFZ@>;8m%g)Db2JZy{8+=%C2=3)Erdtp5g9=za zd6Dy$-dyKMsv`yyYR#j=wd*BczfK_ z*W&FfhP}YmN=z;*ObB`N^9-4q6_>{3_pd=l-jktzdu`OMU)T1a9!|Un>&4% ze+qZF8nBdnvyKL>LJP^{2l`DrAtY}$C!dG5ls0$p)52OqAfxrmHw-K+FpXE4z!O9g z(h3mcKK(U~QSkU!cSoSkuWo4Q0)WH(biZcJv{}EMynfDnUC5XL9h*Ew2f6nu*-Ga( ziHY$ut!BjMa1yCbn<&Dqy(7Q7+rK6?!OkKu*f-84ke}1 zRf1S`$`C*ww*_ZISEN>!n4~!EZIbJmZHo4FDaa@!?2K z25w2$%7=2&v&DnFpf#rdbDl$>=^V=Oa8G~qX#dlLJZdD;!BbAKZv;vI$E()~eRI+j zdiW~=;;U(zYI<)uVC&peI2_jIr7daU=;UND@QVOL%Is1kZZKvYs=K{kxBJ5GLaNlfym7Bl`K?EJ5VgFW(qzf)ROLV1B-G{xua~?f^gzh&ToZ2e)wK z4MRl<6AC1tQ}D%#!otGh4VxZ07;o45+!vKz+8u4#F+qn!6MkkwD+knqZ@4Wbvzdk* z6)~+swaO05k7K25;i-cI5z$n8l>?$VEh#Nc1}k=F0*1vN>lZMX0x)s1aIOebrARqo zXkkE5RGwo6y`f(T3F_TrRnecH$Hd6mBk4+MZgSiln#0?NktCszk4QrJy`3{U@Hz!m zUDr*3eeKo@xzySorl^JnvDqcX!i*%4νBcNXcmR3z2FHmPZ2nX;p9Thhks`K;=% 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≫_oSR$Uhe$v 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%0A}*#k>74?Y#Em@1_bm)!!gRsfzo?7+?adcCn7^ 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 z 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

Q0Wa(x7ui2!w+y^6`2i;SfZ^~U1UV3aTC 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 b#}}CX7esFd2^R}7z@hj+O|DeNB;fx5O-X9b literal 0 HcmV?d00001 diff --git a/docs/embedded/images/create-app-panel-2.png b/docs/embedded/images/create-app-panel-2.png new file mode 100644 index 0000000000000000000000000000000000000000..a851389d87e8ee658d78624501afa6a0b87449c7 GIT binary patch literal 423338 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%0AtE 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�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

A~ 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 D0%dww literal 0 HcmV?d00001 diff --git a/docs/embedded/images/installed-app-details-panel.png b/docs/embedded/images/installed-app-details-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..337d393516135e53247c380dd2bcb1af22d7769f GIT binary patch literal 303870 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⁢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�oZz9(vzaJf5!!{)BVZtgauWXp&S;3$vr9&>En%WxJ6*PI1%-TAX z)*+*9crC2KocBD<0|zxsmgwnJR_!#6vnU9aXu8|QGt3J)+E=B+5USr zm-)$?p%puH+f(`ObmA|o?p3q!i#Eq=r)o?p;2O-g1Q?mr%3+r8epW#c%ar_wW7(zENyUBSVbGHq7)-DO=R+0t)RPBYFk9< zJ&q_%6o--X+yos}?a&{_tk~$ph=c_e?2m0@bCOTkWGy?gjrt(y-qL3cPF${V8L!Zc z7W9uyK;MiZq_NR#Xg189Hb&!;s-_a{h_>)mo)Y4xJu&r-a??-(U-9q<%0D}r?6{P& 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 F{};}E?@9mw literal 0 HcmV?d00001 diff --git a/docs/embedded/images/installed-apps-page.png b/docs/embedded/images/installed-apps-page.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1225009cf676c10b490107b715071f8e070dbf GIT binary patch literal 278777 zcmaI81z44P(>0Ewpi(MQf*>Lw-6^3UB_-Wm(kUI%(%q$~fOL0vqafX_(%tZ%eV+Hb z-tRo;e1EQsb8r*;-uG{2&6+i9cEB4c5sW(z?;s%|VTg&ol0`y7qenuzd43B89&u9S z+lK#Lvy~MQK+5kY`VIfMVf0e+B@$9m7}~kcP5Ae1D^V3&B&0|Fh|gY>3Uq8Ufs7Ad!PLxMz!<6 zu`|43v_;Tl{a~Nt&ZNvskw-6t-gu^a<#o#3q=52M5pNTU%T25)+5^EH6x2Hnc77#QS%uWTmG!PuaD{ z#KmFb;P|%bGC624rhoq2C;8-GKJZwB+63aOei)YABPNz|a^hMW$&-7l^005~sKl`E zAtni**(SF^c6RnNYHDVVpb!82=v3)l-0?w)qr*juh=}<4^Jk&;qOdEU)`dmH;;ti4 zu2w@TnMi1Sjll86W%!HQSr7RiTPVZuV>ZjLclY-CH2&qPp4h~q-KL*3V|V2vsj=Tk z&&|zskL$ecRHr#*!676hBrh-jMpF}BHhc%YV6>+{<$2e@fYHI9Vb_CUB_eLS4^va> z^{0Pm>Q7b(@7%dFR$)mZ5=wO2Z{@F{*jJU|?==!kk z-n;kG&W;ra2gmhfIc~+;1~V%wi;*KmMnOTLc7ISjIxfz3+#qiL!1-HtHvAngn*2&H zX}*)E_-3JjfeY<~mQN`uQ7a}T_4S|LzJ0s3y5P9XR%)&^PJtnQj|oggzFtIHW1$~A2#{ww6}smY^tN9 z!)iJboXYDGnVj6aK3+maOWV42WDEC^#cYgGwe;;vWo3Naptjo60jVZ~d;k21_)K7I zZ0z2`_#q_ZYjJTTyr6`RPOb$Bl(@aUz41aFi zeK{%7t*x(A%S?pa-T9W6mzxgHwi?pnaAS);5-LW{|89|0PSjRd|cmgX` zeEs^P%GT&UHn#CdE&*Q}R>5cx95dYT^>wqAfi!7&&f~4COUqhK1|-PDF*A0>Jk>Th zQ88(0qsI5w;DPR*o^Sd2nEkd(o%axtQGa#mLW_$wJUoo#n)VLhC zAH&fiVobBn*&4!XsN7sFk=@+6*QCScXwzVQtO%W$C;s_nCE1sOt)smz%CtiLuKVr> zIa(2skzP9Zq{ttnHPk4D#CM{}0;OT~P zRZ8^yVy`VME*g&)lXFblMOC380a}jcYlulnSumEW0|e>dLkL*Z?g(GbUY&U$UPxtS z(kDUx&Ym7J8k!(1{`2tZ8V7%$B%y!F=B3qpGZ~UeS0RCc%>cS?XZE%Y$%5@6 zghm#pV(0Gs5P*w84E2xU%C@(y05Pxqnkb_|MnQkf$4A^SEA8l5>2z>+etsSfVoZA+(8dbJI=ulY0O`-}5z|>+0%4Bz}anho7vr-w4#fKX&DVswchP)Fk68J0J%_^7A|7%kI2r6D?}cEClw9NXO$Ae zCcdx^@7XO%$VL4}?;-4q-u`&9S+z4NJx$n}FK7IYM zE+jq@eOyq=bBD;dxQ^;~YswWCkDQ#G9^m3G>^SzyU79^m=L<{zGspY_?%B!73D41# zt-9S0A@oPw(NZbg_W+J`@QHXF!v*~@Bf`V)-hahMTrt_VIb9?6`Zcoy+pn*2nhSUh z$2T8w+s#co%r3{OS&;Ja&G4YZPdUuGbu{~;jaR>;fdX?k>+rls>oT&kl9Sthy;BHJ z!)J2CaATqjQ0jYuR>SA(ef+*&J^uoYyK;z>BebaWL}2PQWR&29x^XpS3YqfmSp zo>5UTIi$(lp-&T$GO!v4#9!)+(Ehp{`slgMR^8EkLPE5==%>}w7P$24qELe?|77P# zl(0f24h9^zfjmyC36+(XZv~tXm6TkD^QC}T_c&i9>Bx;-KX6v5cjdCIKcRqfdwk)3 z%O~#IM1^J8=vv$A-p=IgWh}i$wRVxRM9Dep9r}Oa6`fto=-yD3c9){0{d{6H=<#S2 zbLWyQ>ve`QBmp1`9kw(BgMz;0=H6%o@`8salEiNQ3*bwm+K!ZtF2uB;j$Jt>;l+oO zZ<(pOzzmv#mlM9s?K&;Vqr{aI7ss=i;sQ`1o?*KMORq>dD?2+qJ>3hc4|>aA&(ju& z^CdIWb~#3gnB|SSmYCRW(~;aymb3LM`JW|HxMS2T>u`eFnju3@_R_8-&JH)cFWA`F zAWZI)kVr>SNM?Qe_6e$RVBj5~F^E(^eEMTPYF;}KcpQDviY;vg$aMp`FEjFAk8n`g zPX`W}->@%H2(sv!6?aPQ)#X`l8h@HWPi%q`7ge3hk>OmU=ahBFBSYaLQ13*9Hvc+p+Vj?OfWw`(AM^knyUs@Oh_wKk+T9NrAdvkO1U$g+wRjtB; zO?voo!z_u!G06a6VAbJ-sqx^K+j1EapWdyFlv+%4k7>!sG!1?gKY_az5Eyv9QMc%O z^*d8U;?URa%etRU&hAz;T!eTcqYeUs&QN&X zmMhKulnMcqfi(Gy1vV4UDrrgKp4+bWe}yB3`^RMR^Vt(JGVcq>`4)ey5}g(lOky5U zptx_Lm_iPdDuje(LM`n};z&v&y=#(>#?GKw8(&z+IOBGtaR&{JfX|gvF$d@U;Gitx z>S7tR`rVGEMW6^lnnIEF$DvUK=G#6;fV8u-gD3`!!c!!s%K8qIUNtaSZUBM<;Mt5(Dzj!K0Kk zG-&=UO#n~vJWe)@pPjg=DrsK=CG_&TZewG^i0=LKr##dy!FGJVm#(fnemaGKq~(^g zp_3ac+w(2C>Q#{t@8LU!@H-HqKwN%mzo`VC6d8FxmR3ao;u*oITl_HWetq}!@wowM z@%@uv?Oy+LTCMtIKoydtzV^$DvlBp*czzE)xOJ=DGzI920r}b4x)88Le6I0OvYMMs zu+DaOZ89Vhnpp;TT7cd)xbK$WmhO zmfH~p9`W*(8cuO0D=b%kh>(1R3x?lF@=uk$Lofb)zQsR*Ne=~%WNgF!^k~bHSU^bV zrk~E76(^_bF{4_!*(a!frIxd)2Wz7xPJ4#gIXQhfH=(hB=kgz2gK%k{lGM~BM#H7m zUThDEj*dn&3IH@!Yxy-mBz3MXFA%IDSG6nXuL41~ z1c$x>8e9SDyaKsaj2S5xCy?uDPWJ zIB^E#e!2Oi&9CpIfTF=rzae=fPm1F^6TFLU0$hKh=cl%75miZZY# za&mG+FhC~;>>9y#A^6m7y2zoS;5+?A2GCJ;dAe40aX6_`ZAS%&a|b2QvT`1!xmlp( z7HaR#oa#_LJuPrZLNUaI6^6FX%$?KtNS@ z_iM#mWgX(fsH}zJH&E0m(_950AduoTosC7`j;nieLT__?>~8@FdUFxgfeyL2Z&aT9sx1 zR0d7A0|ofKmOsNe(6xT4uAX51{Ergz;e+U6@I$sh1T%SngJZqd$58@ExEEg1o-Pzr zd9sp3MNPdxa&_E6RZu%+H7G}q4+XNI;gb95TXk94`-58Q>b(Fl-sVs{AVhSFl*bx8 z_~Dd+;@z#7#CYGctP8z_yn@2bQPR8Wd{%QWw#x@r^`PhhY=Y+bm{Xiv`F=tZ+0C6`*sem1eYb{r^F7c%|%Dhcg zJhQ8eO z&2of%?dtA+0w)PCa|n11WS(IAuy0-i2sJYvS8g`8wm^{6q4*)0&DN)!?5(ocu1G+o z#e4x01W*!H zEBI!gp!$MLIK+6aV%Y+L7?87V=B{XaJ zl^!Je`gOBzQM{p_+u0$L!=^fd7(k_shnl=qyN3znkO`{|(sl2ow@>6`e@I%T#-0vB zDL5D%5!U+p`knEhK_FzQ8K>1ph6Aa6K$3n<*Knk8zeDtC2cuehK-P-1o4mB|KBuM* zL`3}2v;&Ldw)WuAkTIN2XYId%WQakT>Nu1eBrLw;$3eJs%y8axs-+)LNnG!~2iVsw zQ|%L!O7!Z%D}+O?Kiho%`t|F#!`V0hWN=wlYk3uZ!BCA5B1RJ5lP8D zCc%!iQ3Tltf|J~v_a`Za#NG>!l2uRujO}1Vr>3E?u2OF@2Mjd?%HRrMQ+qVy0-OiE zX1brj<3t>SU06~QBM6Vd5K2z2MonyXHZ`!$x1;%wpmV}$umX+pNT?YgxH=teh-Wu{2=bLgGUtyew?TxU;$db+3mNuRJTCEUnMhVf zM#q9X|Iu^%?LRpM#UQi5T_j-Az0sG*#)9SDI0bn&2Wmp8@sM8+eN8X~1G7;-k^RPm z0kONfpUz!ELUCYDQkg9He0&5lGBS3*2YsWXAJA7V-A9}vXfsU^*w3JIh0vdJKidE- zC(az|>W-lSSg}Mf4$x_UCDBz(2^?)sLz^t_t?=0+_t&qtwo(7c-A%*pr+@-vCU59NJ`3Rt!jp;AOz(fRniN z3Wjw7p9ir31(T>#5R11J(N4rDX%eh+pnF572ht@Ix;Fq5s9ricA|x3Ag9v_r06CAV zv)QGkr9$H&3MjFnVq){5&o>)Q%9s(k;<_gZ9bY$yB1oXVEjcutJpv~85$;%XOO zrW`d{YHG_w^Yvm9+xX|!Jh755=T%pDc)jFpGn22EgqI z#q$EHSU^Y!=t|?40i^;sH4!E%dr}C*U!nVjGe~?r0DL>nbt~Vl z!P!6N;z}UqbuKg-Acj&8@_Kr0Ezxy_L||V1hMDg>J$a?WJba=CL zIy>Wc+1rK%(1ayO?;9QW;H~JnLsi`SotYLH6N6yez0<3uH_>pvH+XnhR4wD;(y8ii zT10;qAHOtfk1)Q2gRCsaOkiZ;!@_uZzH)TNWi^Kc`grBEMY-9yfPzAdlkyu-yFrLy zf?f!U?)=_~6m=>38(CSemidoBKJfiO)kKuAG0TccfHi7bB(g@HAj5^a9QS*C*BRcW9_n*5KI zt;r7r`xr7xbd>3P;`lNFD^x=LvU>3mN)j*op9=4bwTC99v!Qi$IS2-!xAzm?BjVDX zQD#RUW9v zvUGuVt)YRKCsfS3KL?KVIXAbLhxV1aI#E|wR|f_s^8aYX0Hy*H;^N}tpj?Y44XmPF zninY}LXVp}5qgmu-d&10F>tuw>s%ZzxBdCIM;k6?m{F zH>U8%{phl`>murF9q0NvB5xnb;_~D(OU>Olp2VsXi$9I`rabi>_F?QDK$VN1684lUvBf8yN`9|dHY3`s(m994pJw|#a& z`cjvrU{o9i1Kw0lEsVFYuqc7$Bqly|KdPCvhT($0k55i^_VH1}RY=F8=Zo)SYX^S4 z*0fN(?6zi7ati7b#Tn|Np$iBHU}^M3Cg89jf|d(IW!A6+dPgNjn8XmftTW|T|Dgt{ ze*jpuz^2?kqFnvH%T>cRrRGaxF`TdY)ZMSMsd#0D#v|Y>lPfxYSs^Fm>4xEGk9Y64 zt-PO^a>|TY<(69|ww95tEO@T`7U~y>>YB!!%di@EG+aSVT*WflN0ln%#6Q#|kJ-X# z(YdyY`k8=_pOM0YVlfV90c9+;XK5~Z(2=aunddWm>G_47pWVaepVg}$Nl)Ym290kG zH56bl81baGVX+krcp!#iNCow$*;Q+`G8LBZ&YX+;)8~q#iX1`>R#21*+sbq(^tOly zMVFFNHg{GzU}gq|s;H<48Uuv3^w%tEtOzRr=81@*i7m^GY;x#BHxL3WqK$zYxZOz> z2Gg6UIeh3wpz;Aie+CH%x-$f;xoB%^Tc2%6`}4=-+})$FF0@UzNw?@m#Scbw&_ZDN zGv#r0p>Es9hQw+-=mTIs^i7Tu8fFk&7vb=DfrC;oFl_n6d|h5=p&JOB)v7SlO>}yH zPAiLQ7-?ehAc{#JZ}ho)P{}}~cqnHle!OSP)PIpwqq6N*@uGeF;F@$42O$iF&4<}j z!}1CvZxmDn-zjX!F6V!m&=7oA=5G?0R9O5lw|t_pxDPk9&ye)Vgje45@Jh{HE*iS2 zKR4Dn2U!Frw-P&>)15Jd&=MR+o1HPjBQ_f`IV=3i#TPj>iG&QV&-EMpX^ddqlu_^O z^pxv*hkQFB*mfh)p1g}&k32JRfx zKcH6VL2dVmlvGr@o^RD6aJr|`dQsr@r>)6~Flbb^8iD0KYTx7BYJNrb6D>$<1swxa0)NABp z6=m1e#Seq<22a>RSST`&vpRZejy2d>F4@=j{bi!s!!>>xZPe0^j65hgY?Ii# z#g&AS+@8^Wy?E6??v2We5xvZd4}YI>M##0=9K12fHr@W|L$4{lA$w(6P=QjA`EX!F z_X%0chhTIlPv}8xL}`6ql-$?F&+M9$%GqW^I#no*VzBY%M2QXmBuHJoLT)i^F=S!9 zf5tM+s;gX#Y&EYQqxUBQ+mOH0WSQK@(*AMY? zoNkTa(;Oat)87~8a1bL?)?0sS*QY%e#q#W#de@gBNAftGfiQA1QmYnS%7aa&VCImB zlF=^>As`u%zkL^el4PB6@9%AZ4f`F_nb1x?vTM?HZD@{6=vX?!Y_Z!Wv^o|~=we>^ z#p#trV;6l5?#yCL&z<*CqjNOBS0--vG?gM^ta`?{J_k*+Jtrw^|7-`(Fd;wpyd@@% zqmFoxG&9(ns>=O5rtQH>-qW?=+riZ=-a6Cwi>{a2CNB-=cg(#-)g~{RWMtkXYV%Pl zF$rQ&Jl$E9s(O6AjDJR(=r$5PyPHL*Pukf20LT1wQ7gu=DJSA;IH+r&ht>ni$yJ2C zJ9A}zpkDtXCMG5#KECsj!_-R{RP;`Z>^SnQPm~3LYKjapu@uY;-hz+~d`I|zNU2f;m*xQx8bh~m-4Hy@G6X<&=iCXI% zin*)6wD|w};405DwV-6K^~&02&W)8di@k4#izoR66Wg3i!md>(ozDOI)yPb_;-hw5 zrVk$&Zw1|I!6pdh==SP(sBCuc)d7KEl;;4pVMC{DT&Db=I_&s}l7MF2p_pn@>Tk4k z8QSk~u}>35Po2=$Qq&0}C4UL6kgaHP<(*1CX1Q57A@(a-YUN@vepi#7WmB>}Fi4?5 z(y-VmWihdLX;g8(`SorcFaXOti<<+vboFm<$}$fmE^e+zOQb*gcz4xyrC!*vUySrU zZ-l<>tW&#g5u&? zM1T^HD|fitfiUiZehLn1v+hVU)oF!*LOQiK?dsgf`DjxTlom#G+!g$+( zdg11Vn&G3seFXOh@?Biq_F*NhKCR1LJWa>>o0lg89=lVv13RE@ELd@Z#t$Tc$$H_{ z3=~0aM-a(~K+FZXxCf?qUh@WAJyS_-`!2{NOMjxdR1OYb311m<3Nmwl*ZXee2VX8~ zC3ZD0OQ~<3dVeK#vizy|i~}9{vz(S64^KowPl^wZ-H5(0&-0MrQ}fKuUJ=S7E0?*M z?qph5cUG1@Z>g^$#VScGA=XFw;Zyyg2TPY}*il6u39mPs8biFRBrbZChi;whw1?Mm zCmDMX3k#1n;t~B{5pwTdgxu53YChHgT1*w)(9=mkmUSDs%L};&2D5&)_S7{qo5H=Q z6?=2#zP(|Ax~cctMEGdXYR*H~uTDdg`D3@61YI02>Mg5Q6C2_=<~zjxYJpYGPC5M! z#3-81^|IRn+1f)FyEVT!U~HUL^=icU6Ixjg=**+7%nW^*#m`taOE0v;9_n?&3%?hp zKZlfDayo?I*> zU~?UlnV3LFQ^-qru#J&1m_C@*LF@y}m5~sN>L&NsjOF3feVJt2WEr++O6=!2&GQe9vBmB^+AgX1pDH~}So zjTMmrlp`SqW9F0PEDulZIJ0l5N@K4#Q!%GRTO zO0Hr4L06iDhkqVB=X5FZMVf7*NawiO82BmbA$fBoMa3;?UPGA<&vQc9KSBg$WiUEzFPPg~=k(?4Cr|MC19PZjNXkARJ# zwEn(^+wX{E(PX+%Vyq;=o^Qd9&X}eSIC3hgVg|T*7HKigth@M`rywk;UlwuSaWor7`13Gc2^NQ2;BO5My zRF$rtfq{YP;Hg@lu89NEWy^7+xeqh~3J#9AlReWYa~KC8f&>aeqCYki5>OwMG~VHW zT(x2Wq!uv}haVy0vhjg=g+;@KJxHMliIntB1Q#^bh{gkS#;DX(sn@UX0G^ODF-0h8 zxy4l3uHFay=}lmghJ>VND!hZkbICpQ z6yxu8`-u&viS@<1GKFX|_pD;|h6$TrvTE-pN)83E0VoU{H@*gOJX9~@Xu)ZD5owr(zUecFHHIke1Y=M=je6kwVdz9O~uVi zOBm>wU%YA*>t9chaINI$rT_EdibY{sx&L)2o_{zo@+QM7rIbL|Y7D7tDR#V+5jxc>HwxAUvb3hw*OXz_+&9cj{bU`h;$KMEv2 zBxo)4H@Pi`H%zDNIY!1~4$;+d8@I5ci!UuuK8GHySXXzXb^M_w&&a{>X)vvwR3{2C06-s}nNvKbji!;|Tka2(gn- zl0|g@H0kk~k0~hpK$~Mm^nmWiI-qUw?;!Lkgo+OB3E#<5ly-nMOb=il>3u|Lqtm0a zL9Zk#u3pnbTJc|wqot{#a%qQjl)u^pWutSy_ab{l{l{ynl2tR z!7pc-^1`o5%RSMh1m7*CtbA^Hs%T|qPfEkF;^W80sdqEklcTnrmFwDr>tank*OA6* zF!kU|R#*C#-^3p7ra#gTA63BAX9}kjrVWe4NaGf)#? zY!x{$j$a&vtd}~F#k)t{IAbJ>JkZpYT_@k!T`LeMzGfbVP)OsOhi&7nezLPYHpY*_ zwMZ`)km>YlQG?5iYGrl>xnZ98`65$@q&vU62h(^M>-m|p zfnY<+=(jW8@=cDtDC@{c!t*|^_%Kn!S9J#uyA6`lY~uG9BzD!cH+X`nastQgf>%3s z7H$aJl?z--_^JPl`(b&0H*mmBkJXLgVRNr*p*?Yv4+;$xs=JyNo3Bnv-dwldN>EfM z6IK)ngE9K}fMFz3B}cFJx!lUN)if}jAtBtK{|hdlIuVN)zTWUqJW%;xnRO&rh2@q{ zh#Oy86(Q1J9yzR;(BR;w&2N&XYvB0strh~);)9; zL}i+K&?W>61>qKf#S$Dcl8LPIFdNAL84OV&$i-vdsH&Q1O1c}$@eh1;w;!Kyx?x-1 zfAX8OEVRdP}~g*CA?xr|Hpe*|rxL3Q61Lt_sruTEQ_m#BY-&Z20*v5Rlv;~Aw~ zm2Hvqr%Y|*sXA9MRS!Fpxpv(lNz=|8Iy(+(YMdT%QVW6W&kGREJWQ!H*?jN0Nel>0 zJ6DA2P816iKYSO=g@2%VjYf;;rLd7pr;AUS5OYFUul91f+`$Cr!K8ch5!v795Z9`@ zjU4ljh_c~Wy(fXj4`n3GUNQC2wy~B}7ODjrTUh_#nGy=J!lP?ZFTKN{b7qv(D>wi4 zzW7s%C)U^ol>yAuYjilul0iAU9XQxT_C^f%k$}ax>VB%K`9TzBAX91f@be${B!?R7 zxGHNG6OR^i`SuoOzjX!A*-^T(HSA+a_9cg7xw#Irf|}e)dx^U6kQ&-T&4i?d#zW0p z2!0$_NgV9{91G7rax0;EV!=$VexRw+{aaZ~Z5pvui^!;eAAeo=lgDMVoI{r9i=FhE zYG;$&^t&^}l3|tf=pJG?P0|Sv3w0*4=4}VwT)_=)OE>S`X#kVrH7{RXh8yqBR4cYZ z4i;s<*z^Yh7cw5o04oL%UV}}PIY4@hZ@E(-a7RWyywth`H#fL3sJ~3u01skM>f_n} zk_WSGkRE-&@(Nx$om^u@Ir7358HQiz?6T|1mHwb7TZh_=76=7JH?2%|mw!fz%4W zQ|Z?E$Dc0s-W-vWZVSz$+RKt8x0bpeOkPKkB3rXe5aEw~V~P3v8&>E?kwvs#Wb6Gz ze$QZ^M#;U!8_G4I+JkCQo$hWoy51elHgc-!v;M*7E8_HP;P%^Z{3`R%wK1;?{c19- z!OIh_Y~*s5Q2=w68)I6FH=)3Y>7q$~{eal$=q07oES|5TTLnedC6e{sZ89bH;IKPE5sWC$Yd$o_T}ZFv?j6ZSXddMWwm(_YD(ZL(5Keu13r z$VQu|-xUScUTB$L-BVQwz3cS2^gBW08xigZVe=RR(~pD2Y;VlRO@1n>V$yp~w#7W} z9b)zJzU=ZOsc+Eg`Q>WsK{lP#)@{ThR_Nv8fEnfguCZ{ukgZH7=vPx`oTALqw?0RS zW9^3oD+iz0OSX@1Fw;8qx>lkJzuGtz&a9U>ue{|j=WtB5mE!elH*9L=n>Y8*P^TxT zct}pYZyzcbd<((!&hVS+J7I|X*6>?E{Z!wk$3#uQ!<;0T?AkNi$TMM4kt_}y>)30z zF;V>OZWz+^7}z)yX}GiC2*pZ&f^$9D@tOEuOcVF*=)hn%%nggPV{D@=Ap`={cGM}y zLTl}?t_YOz-B-BzrjNHvEJ(5YLab2Q(`M0IK7#oG>@{;1&th&OXn#(AHMQfUMFofQ z;3ODpK`kf(R~t|2#J)Nh!IadkZvvV$S-Uroz&sx;tWud#zG!&NrX#e7l>v8mckh@q zTU%QvFlUT|s|Bgf`9Sx0dmf#LGaR-Dz`gte3~w;ohjDg2m*FincX~7eE-PBwy}pk4 z7#|vcCaTQ$3tNWC`Zo5H3_wJfg8kCXv?HmqzFh?e5`(@f}TH#yzh-T(c_r z<2!Fx*cK5#<%>yYJ~k-g&%<}f_sO%f-Ij4Z&su-vrslVc_b~@?jk6aS5eF63;(qDwTY(%d2M+ zmQy|Y68>$>8P$O9^s4BHsM#kxmZT~5waN9$`efA_$qvUp6*&}^Z=b@C0?>I*$LzK= z+x9!o2Ai^K8Zh_Ww4c~=Jn*aU-|Evnt?OzEY~DPt3f?rPwewj4=u|9# zS5DORBPRB9@SXH5ja<(LEX8$J>7iTRVz>0k)lqkQQ$nJff+?9zbJ#7@dcuQFneAgs zG(G5tNH&EE8Vc_Cg!!|4YD)fqQ&Sh7(7>edvu{Ah)sUgxgILsYihD+W_((q`djp5d zA0xSWqT+hn4radYuB9`hbG=h|rwWd`J@a9IQSa2YU~T(<21()<7271qFiC0vIc(wR zER5g~0}E@lxQE{R#Z8zR3xk@{+wzQ#&H(&uL_Eq#f539CW>Mt}<295HFu1{Jv=w~q z{S8+amLRd2BTPyNF9E`H7EHi$4E`qXYX-3Hu)Eyj1g81Ufq_hrVE>OrX@7m3MPDm0#nk=!*^3JG;b+k>bV?cA6)}z z@jhdA)3|u4NW|OcIV50X6p|^Tj_1e2bdgo^6_;-&=$qCERvx#g`K!01Cx>^r^+SzL z6DP3BqfoJoXdCO~@KbjMtA|ext(&|SM_kL&wUsPtzJf`Uy4bFBrW3^ske5Z`Zy-!R~eRU&rl%E#eDfB*fLVuU5 z4NthD*+)$FKp#F(zX$?o2-e|JmHds1|pGpV$8W{sQN+ZscQ=kdo6 zz8=3C!<~<|lG$Q4!$vg)GD6v?Qb;^XQ}fOF`~SNuDd8^Pxk*FkFRuv2s%Lw!QC2vp zkXh9)ZtzKM@Nm#!eC8+Vg|=6|3iohU+9w)i8y1S$wzp0NN%_&!N*BCW?1ae<2!)*Q zzfV#qz|#3t#ou@mw?jK6Wxn!Jy2S}?wD=pkB_q#o{oPsQ28@oUQ9I#PS5K3hH)7<4 z>!5E`&=bXY5QJ9u_)tAr$Wx+qClGliDUb~1nGG|?7cxdQ32MFT315GPyPwDaue~^Z zCcEKD+m}~|KRLIydA@8jyy626Aec-jR1~~Bn^88Bv8rNcWUo~t^3wrpvh}nd%Ymao zvoyjt1e>6s{B-12N<1!w5}3C$cPGm z(~xXtUO8b=Atxu-0*}B5QqnsnX?a!A;kN&eUUh8MA9zSXDN8OHh4#ZwAKK1iK+qCa z`n-?&k>>9{R@VO1Z^|zr_@brt^Yxws$yt+X`9Sjh6`4R><{b_Uk0~Ns=>ih30E3)( zr(kQ^{wD>RPX<$yJ-KW&w07&<&o8SD=u{X&^{hs}+njA;3=y~~O<#nNem1QOvoffX z@X+36lAcgLPWqjDN8JSZeSV$0z>5;a&D=`~4vy5 zOAFuGOV!fCQDq>m$K2%JBnBcQZOwgo_4HIQ_OOm{<^Rf z9pq$|b+7!bKK1=fATJ{m5o|tc*#XQ`pN3HVEmm1&r z)Umg=aHG^h*pxhH%%qEsxZ7Klq`*<;3`tTPk*eszD zY~ARJjr|%tKcb!DMQ1CC%Y^W6>&FIiFfD#cvq4h-#TObgs=^@;+fp26y242X|60>U7>*3$G++$002RWp zJ(vKomIHZV1@ku+*JCT^!*wxm=)iEUW$Ora>p46b!cUN+!~o_v#6T}2gJO)qD1l9m zV20(M+Q1J9t<6^R?8l}JhUhFd?a6b3D)*d7R^tgxxq<`*3Og2mvBb+rOY60}jOSih zVBbWg{+7EhcUQJ-OiI_LE(ya5b}aEbebJq{{`dyy4HDp?6DGwG=#LC6spZ9!jfSjd z{Mze6|INPZzirf@`E&Nct}VVxaJYV6z>-;(mJ@fxQks0(sMyR^!sPW-+xz!%D*R9i zr3>Vlw+K3-D-6TS%&?Po?@-a_eJM7)PjJBTS?IdAH;2SP4rN$!M_A}S%JQnr*qHZy zB+C91jJ{R#WsPDTWo4=xNO3f9? z6CFrlTIHp-94`_l9h_%~ce?m4_OGL8s(CI)d}qMxc;1^lE6K)jQzD;NuOzgs+d6}* zeyDV#!=3+cGsg(q1fwgRg_fQGEE+Pt+?j@XgI52zp(nXK-?eITl}iVBZdSbeC8``9 zSNIG|INJY~IGZA9NXphH{w6*A@*4IfHMQ*6b~aOYJAIVR`I#G)j?`>an35zk45KPg zBT-2kwnnYxRIZHnhnAzww|r^6i?FcB#xXayjF`E3L+Kk5CbT^TR$CSmF6#&*{g{lD z*yT1a<|__| zqGMyPe+LnozGl4`!W#B@z~U(YODzb!Q_v6n6SyuBy#x69>8pP|aX$Fd1}1#4H>YQ0 z_<{8a#?k$N+LZ?*YKT4c6A*}CZB`!?D95@PXSLgKQOodHyGa?WPzx$3{36h^!Bu66 ziKu(7El$!mb^iT(ZQX!!2GJHX<^ws$;Jf4u2?B)}qKK5oJf`YQXo=D9Nq`};kf?e35Ttr;aUH;pNj)rfZ$-!po z0f~ap3BE+r6*rf`r-E;bH#I!$y8=k(XZ0FVAAaw*sD9AuRQ{T`~8RYR?1I-&2ASmD;oT{F)#mJ8w!(8(j^Ms1ErB>&$=fRyTHvK+%_M62g zRU~1n_+K9^-=M&d>bO%GCvAL8J&N}M%gXjP4D8Yr$IBv!cUP56YViOa)5j7ti*iiHBe#>GKalU}uCSDb ztr8)j)2*xIB153T7&@DWry;lZE8UbY{NyMWPs)~RIYAX6RSzR{NI+;NooZ1nQw-8W zJB!xyQ{f_-pJNwM3-@MV()zt^gf$ei&Y#hJgy5D&>QFo5>fZ0*-;1{}p4CiOVsUp( zhIeF#;YB*^J8*LKR5>JRiFBy+7squ~)o%Q4PGxg?aW?CJeK^LHhIUjz-QpgxsuLGq zZgA~8kz;C(eUs&@UlGD)d$*d?d3;n%Y3Th`c<~jnbVeRFo3X(Ig|8H_31o!6v`Oka z;%u2;G3%#BF|l#HabqF%zUT4$vaBMk$AWU7yG(>|nBMB$+!IPltxc+gSI^%EHAm6l zPZSQ-*R67_w%95wpp2OMF_L#pnMU#_T!v}}pP#AQIMi6xnC_9}PgnI`oQXPfou*ap zS`I$&Q`hq?R_HY@WG+b_!CX7!q=xHwcZm{87c!#0<912}^a`+zXg+THD8kb})o@X~u7$xy=kTI6fg z6oU(b-ExL#kkY8eH&_Grl*Gep(N5h_hX{L9`eGhqJf@=;(V8~<Fh?l6^F&rb_@F#hY2sNsm(0p;^w6kptJ$mm<{8|7$WmE({4Idcr?5U_|a zRccJvS5ck1Qj@tn#AhcgkA3uOFb}Pc+4dQaFqT4g($@rv0N% z(ty0Gi%5I?2;vX9o}$uqfjwnc_Z7T#@*E~r;lGCC^*CZ29z9PN`>iFM7?R4Id><&`BAmiQ$LbmUOg_YTZ91kVEh9gLr-XR%cU$eQ zmnC^KYpIJ{8!-7gnRfl`d+@({bj9sr5Lk1A4-TEG4^O7jG>3{0F600OS^LX%-?#2zZFNP)2) zR-~}f22fwXAQZ842y2U&it6mBNy|iw)(L9v)g8>Dp(pc(n}izpm+F`+wqO0qIIXiP ztPLZT8XWg-^T($OTdpqTD!m+=VDq*Y=Bk!5iJ;SK`9|Q8J^FEW{Pu zh2OXTnVv3ERJ~4*{HK1hXV3TxveZ!*mR~j$Qd-!(HeLz%S$1z}6AAS7P?k7T*Bz?bjuNnY z>X-S*@_0*E?qaPk4;u{B!LDFNXxc;xQ1n-C=1Qzpc#9G-_{TY22|0O5b<`4u0 ztPne}X)(8Vk_B&N^6feue;kwkvbk=%AY~?>SSB| zP>!iu$6M^J%$8w7kivn*NSCWA<2PK}H7vuG;jkLY@SWpQJ)VMuUdJa z)Q!f*w|(5W*s->=xO2SYc)?otEW13?M*rQ%KQUap(JV08bqUVvTB$6-gHOak0j?=60i5|w4{*+n+LY#Qlu=`8oQ<%g88zK zr@OdrPM*oqOJTjZUbo3>pTAgJ;mCtFdd&h)XtqFi-V_@eW-Y&l2!F!ozp+C3UpDcT zSO(QTYuEpag>D4d27)Lc z3L*{Ct)L^K}w`kLb|0JM5I|DE#2MS@SC?j&w17D9%r2M*EwUnjKL6a zt##k`6?4vOUi168E=`HSg7t#dQ9i@?iTtt_vMxv1t#p`mx=m6U5OI96Upf>0zSgVa zpb5X~+wh0NK~ckoC#YBUg(hh#DjS|Q6gqcqj?%El&6Z**(PT-+ zoVDZdrSTGz`^!(ouQ{}uPPABvJxnAd_+F#cdh`M*{;O(Q!ZKVt)yHOLE)?Ycv=<~1 z%O#=XO_2@Tr+3?_Iegi}U-<4y3(Vc%LvSh>1nj2KMRUwyH3`LA9qBz@b6ThS$I*l> z-=d_14o}W*W*J9`*ZgN&|KP~h0Jimg%v`@f4U2{cs4jg4iAR>4j<{fHHnQ1gGUa;J z7!*2$&afZ!d}$C38~E2HWP1$qFsrJK3&O#IJ~1t1jM4eQ>>+X7CM9v&H~Yu~is4#f zJ1~~(NWOJv-{eKk%<&(qm0l9w5Gcb}980{eO9;E_HID0j9m$MNXJUuWsJtZqG-yfS z50`?v8O52}3R}Y1UG`arzf67Cf)Bm8iCSvw6-qDY*13c$V`Sr5X)DqU7S}?BuqgM z&MXL2j7Qo+3X4ZUs9YEGlx1dCDT&x)_PyWDx2#D;w*GHA)8F7+hC0y!qL9;`Lh{gYy-!lY;QsjUL`h7HUkL?I5U|Gze6 z<>jRn6rgEevYiK>mE7uItWr8lJc|wid zSbv4WK4$3w3ytJ-2A+fR847NHjtDu!ad9h_)Ik(<>~3a@vpyf#p~#s z&AJ74Ww&nCX_%8?BzT;1~0A)+()O{%nN*bF}Ge(eC%M z>cwz2ZbhG<&8dJAoKnfln*N{v@?3p#GKH>NR-W~EXHZodF|0=OJo8-LMdY)pWR<@z z2PiSUUvaT(jfuxme)U3Q|Kqo?-ZvKO(Mu*ZOgS%RqnleOm`bhOdS?qQ=N^1}BeK|7 z7i^BMx;k!e!_GtJ!IVA}m6h|>_wT|?k%hv-@>g9CBOebH_Hq<=)Fi)M_0MN>x)p0j zakxzI;M=rmFh`P|M#KC#h6=m<#H;)Ywzo~MY;izqWS4n}S4jF@1~YxBm(Dx|w6h+y`-knZgL|ULGRE=4R#=oC$bbNAbeTrsu26lw{4}5E z%f^d}h0PJ`$F_=J*WO-$)q#2;V0}Q6>~t`v&JC52$ag6ut||`!zLf9oWQ~iwOZ`2?=P~bZ)^l8$&-^*Y$pg@ zE8!1U_#C;BFccDJ@c=S}f-6Yx*29KJeF&qL9*8d>fOr+_gBK9Qq)&Bl(T-ttsa>&< zJ9E>Eqg~|VrdN?HjlDjNga6nxOkN6Xuft1cNfz(bRJGUd4B}nDct+BsHFCCU#&T`E z-TbIXe1jsZZ`rlw+Ik@r<(OvFYwV6W%zQO^R@N+SGBQ^7h`USCiPC^F&zvmDV{Pr0`@0p|vwWSCK5>nz{)&3GQI!iH z>g+#88uiirl5m-dBQNpXne#Yq&`=f-uuDm~CM~y^xYOB6a9&VeDdV7^c+^#GT4p>Z>m^EZL zTKr3&@FM#X@7!WfteaWskQP6N=*vP%ny*^!$rWT$G(r+%t+u9S6cA;_&ytIdnuI|& zfP0G}EtLqP8@7-t9N49O@b)vg96B}(W0VZmFJ|Md3fWjmZ@*O4vP z7xdWnn0;HpYhBsL4|iL4zphN>>OWoexqbzo!>6XTTZK%7pL?&V9fSKYk)lae*PXGc z?rO`&=DZ?4Zex$GiI4S>_a6EMe%QGwbd8zF`TQDIC@aG;E5~yj8FbolWG6Et7j_+Q zUG#GcPto&?P;%8UT^_y%M6YJZIkfQQi6_-mfUPvOShAD=bK8EiN4M!cS1>f@ansfZ_~-HPsu5w0 zrj{0PSVy4{MrUcT>}g-V_ar(TO1Qs3kvl+Q5aKEnQ=5Y*H%GG?3;3|%PfnrMUKkNz zg0Hy_)s#s|w-KHrR1za3DQJ1v<76}+e+0-%!tB9N5Ul-uc2AGv9)z=h~yf>c(5dC$k6J*ex^j zxDz0`p}$yucffuPZNEE{2_^km_&AM^^-oiXh2`@n#qv2!DMMjSgvQ1djz5znso?5L=7l5IYz zyVzdOV%0#&>PP4LBF3PR6p&kpm>&aKx3;#nPLfVV0OCNav%>5G7_*>EC8$m z9#9TY5T8{1<8f6U&3+CrTX(4Jr?_Fhi_~2r3lWI!)>@nn+xs1wcR;s*^q9@z&Xi(> zV_DH&9H9EVFW}?XLQeUyx%r)wRE#GOqB3x}06MJ)!w+s1^xvQjMmTebT}5b_pmaN4 zIRU#~!=)gsMBF%lZ9vngp^@jN4LTNRp6^6k0!+|5VqdxQ3gNpTh*|b725fj7V35Rt zvK0^pQm`$IE%HkS_&?7TAp`)ps;M<(@*_FTaKO$$CD76p4s$ZV`T*-Mv_u@BI&HUs z2T*EbfmjV!>?{1huhQ$wrv--q6kLnpPsgCWXF5~yVIE=FuTVBD<$IHWlEWN^VOzWKJlrjU`Bd;k9B{7rKIKm4?8X7tmfXeE&`w1^)7DP}ie!jtv9945E6)KUj$S0^vKzV;wld?OSQxoaphjj{&dGu3-*i8VMlqX=;PIwy8RBr)c3v96 z5JKeZUBB!m|F=CYz<<Gloo(F{4WD| zu5STB$$>+YP*fBGJqb9F?_#?%Z)vHiwP5U5LbYZ%@CabW!zhZ2BLgWYvc}(rEmZ{j z0T4cJ4eOo}(~}}^gM)+p!^05)H{g1XJpsB243u`IUxKOs{G!_hrfFx4xd&dRL4i@FahH+_(Z|%crG>{}vvKuFEfMbMmomSXYhT#QhB%lg*&#{Q(eSj1l#OP;U#dfDDx>Re9 z0GcuptOKYCPA0YsSz6}V$o{7#fBwgpX%_IKIC5%-z{%P8Lhh6pkHC^K_a1S@rRBq270bp?V(AtpxX z5)9aYUR~a?uQY?~4k;&R7@!dlAS<*Y!pnpW*KvddjKRprh+sBh+?aytLohnviov79 zUVc}JJbVBG*1}K$`vGfT3<(vL$HvBVVDb@GGXkP@tGWl>=@JJSu1g23oYysu3lJiJ{rx_gxpZJOlaNE7Lk%#nnGpmmYdB67 z1E8*8VRSc|(;VQ6h)qKp0G_wf0Nt%-M++El5(YRWb1YmTmdbKjTxY z5c#%4pGGf+P?nLeY^+ z-vTQx-vo5m!?nEw#18^bgF)l-N#K*EK2ZlcE!ZDGu6RHh6Kt=z0!kiC;kT#x!=7~v z*lBWxWr|Lw2pl9FpnG*8Xd4s^#>jv6X9U7zGM6@aknCxV#7R5(Yp%2<8EQj>Oqu z58qzn;0MN$!|wWDgX*@noEWf=31$J}k0$9q1_ps(yTQZ)KJv1P!$v2K!bc21@gfR- z=pRZtIuu0h`v9ubLBdyX7NE@qQj)g@0ibxnav=Mn;Ng%mVFU{dZ+8Z(fOI%~glp9Z z@c&LBpNq_GxWxMv&8&y8LCeR=dKqes;S%Tr^K;4H51}xJoiojm&#%Fyy@J7uVG5D| zN~-#S2lze)fF~mKQQ%SN16cxYSQ8uwNN2u+lnh9C2;3P$=UAKBSjgc)=urh#9l$zQ zWw>-AKh)772h*hi2tI^44(rl~Z?Dw@h+I2z(F+b|_%mFcSqTEoLI^Pn z;p$fyo;X9Khdd`(32#U)zJ!`2i!C@C0dU-pPX?E%(TB5{AauZ|-##9L2pxPoVqK7o zAK)v2zwi~(h6vmi2%1o*5)XM8?5nI^P{6bnKrz0y^9>G}0Lz8AS8!Ra0A~WgA>a`J zg%A!l2r;J+55rP%67h=S7Bvuc{=tbRdH|FRAogCxvQxGxlILm_0}`9x zeCP$a{IyHEul|S(zac1Xy2EXL>t!PZ88FisAu0ox1evx`h@K~_aQVK>JcF!-0E`B( zWH*3%|6`A!sePXeD1itS8d4a@Y8|W=a-(1;!J`@ju=a4S;t;08nYEOEz4)F!x#`49 zpyVTzV8HO70%MO5u3%Ckz(lBgoE|LWLi(ZNXs=>tV98NXNvW3-m-YmBH3W4|?65A0 zG#RusY|bIv5_{euMcFQuf0~&4_hrm>O3jO@==KgA;gg~GUUy{_vBa)G?lXg&%rOZG ziMx>ZLk_igUh@9qN2Xx6tsQ#=0ENVZP?rqT17e7?(5TT6C{B*(zM}dQi~h|u(aMRn zx*04wyD~K>XlZgfTq6Ng5};TS>Z6L?LLT@7$n1cek}>o7L*#TDfFXBfs{6oE1~+dC z{P_TloVrkIZ|W%;F#T{|0>HKt!LeWyFgOFJ5%4^~*xBh3XvBcH30a0A!3shGg7Zg0 z-Ttxkf4)W>1CsBZ{9;8mMcrIfMzPSuju>>DHfRNSQ3jh`Fe|Z0ox8DL0 zDHvmf?haT_SR29>*=}F@(`>mxAqv+^fbbC+@DNoY)j|h*TgX#PYW!h(-MB#!H=NC! z1e^HPp7_X06!0|=h6%vt!N0u0TN6-rI{=>r>rSIu+|f@z^$x&_7VSdRU}j;uKs*ey z`!np;K7e&T!p6|hXeeTP2&u6mp+5|o@t29;&j2_XOby^t&i6>a<@6LnnInV=?);4u z_x{{hv6S9aqyW8yv;r*1G7xwp7)PoI>OlS%~1l9bJIUhcQW@wU{Esw($#-DwdeeKj)hAq zmwyh*|NFCV`=1Z``QNwbBS3fh(&gjGH~j2gw0HZDr&qvi6oQ=yaX10y>|k?aBbSD? z;vWar`Sbd@`}_OvzM8*>)0$usq0#sLX23G57d{S_YTx7UzMq08IH*AY6N%{}7NE>u$M_#BeqaCb4O_IR zU{9GHn{h#3fB*H=PGRue{Jq~Ni?0PFeEwnD_*AuCHuA}a6y5uS#kqffT;|`NUX1Hh z@c&~Q@c-g1znP6grfI{-gKB?!V`E;e-Q@!D!~5bEIY_H?{;5@b+dqZo1d^W8(7siD zr&RY^y(rBjDX?AE0A-sXEr$1}M;L!~txVIDec!Sre9M*l;hN=SV;x zyl}C)`hQp^U#4o2X0Gs=l0lL-1EcO&5ko5XZQGaMJwMM;@Fxl`+%fs*`bTe54w$n3 zQaq7Pru?a_Btos_sm{7pN;%Dq+C&eex6H-&G##6x{N2aEP#>JKUq=VhdI5| zc&E1w>iSMAgfVV+zrS5di^b(=&P%7gy^FP`bi+InIh8I)w*@s=Y6D@VB*1Zj%m>Ra zDJi5_ABktd#smMpr4$a;`p2NVaidM4l|Af)b$y?D_hqrqEaxJu6tc#2C+$i?RK9ID zq)!!0c+L3=EBVOO(6Vg(RWgWD@R4b=?MFL359OM8nghrbghLJ`CPs^#2-z6$=T_eU zc=8C~f`7W)Bgtjtj4Tbe1#0i9D}?bm`v>pmtq z+^mn9);9*{^e@iMoRHSu@aDnVlW&=Hx;1zSV(N?+qlOx{1>Tv>k!!1yXc3xX&D(}+ z6!5g5EcO_`s2|<-KincN?nCqFem1Y!uzn-%tiJD5^tg1e-|59!-r)B(;hmg^&I|kbZBKHf!0!;}5)yaLE6z8YN(3Amn=I@8BF! zgRgsVo^!2Eu*g1V(@jUVS(nCk3Gde77X6HkoYa4x9?2o@EsHw#X6*il>bf<#tXn4n7&oekyy#w4y7-5*=dj+jZ(uGK zHes=wJfPp=-C%Spy}O@Y%D$zaVPrsT#hE<1YR0l#6u>m1fEUcSGky_L=uKz}atLSC z_eb$l{>b;(D*OG-AH-xLDG}6Vb z?eeE^w1Z^{z6Jx^(BIZ7wsC%uj3IDr zTR2|H+X~jZGn2g=CfMAp`ZL`YwIq=gx=}XcjMgGM&o?iU_CezgN#`F-LP*6Mu<To$@|Qy#6H#+czdTaNo*Kjdmsca*UKZ)k7vzgHEWNM5?djj5zvrn*~K% zi&H)GueS}4+~gz61Gi1rqAzmgu4iHsa0eaP7X?#^7%9(eX703vgcEEgTr3siwV!^z zxIJXG^IV-p^n{PV_x~h0y$q)vkglDQ<+53dd2D>Rp}x}+EOsuCKaM9dVMJoVJll40 zjoV)N))CJZ!JKr%tnO)xv4Om~V7X(W;cXq#9&3#SHcvkd>{C=M9^=B4XBEdOjI=vC zWE|?UGfq(zlWQSpj6T%biOV{s$3gus4K+-@)qY`e*I6vf>kZRZ_yY}}lgrZctXl`y zM)ms=HZ##XG53_WDqUpUxVEdK)HPaHRmv6f0?1R%6*pRs-krylacJaA&?YIlvyz~{ zKNhRtxZ_ilru4p%&Cnurr!Rj}GDbL(NZwG<9)r*HmfUqs4Mc^ z9Ko`w722IC@UgtX6noVtKJG*vHS$F|yiAn4TXWR)R&n(K-4IPwHAyCpSLmI<2(0!} zHHxDm6NV!NvojyA_2YdjkmZQV(zc{az1%YDQ}O2Xxh(t72VTlb24NTxCcK}PhRlwy zsB8^oew=PpDc{l5U)Z&vFbl4#KkFl|lVelOiPvZ|+ni-zh^u!b61g{>N)j1foyqXw ztm*A=GcAKuvBsjx|EZG*<*~~zI>O!!({)-QiwX~K3E|ye@aJo7|IRkn&4Vm)=}LFiVg{pk8gjzvh_swmdaCN)7;l4MsZHW*n6E5O@*KP_b&d|MkBT|XM5wpTb9-D3ypqv44eXY-fpZNt&sg95HR+Scju;_o((cwLv(S4U@$MtYyr!pz;mQ2U1c zH9-Awv!-U$UCOb)8?SVak@6mMTsfM!v$EU!byeDmN9JnX!s_j%3Y!)ox1g<38#b52 z9UhEe@5sicy=yTiO4ZkVypBf8?nZ8BAHm;-!fFB>>zsy`<%3RK5qGM#sCa|@oG5Hh zy`Ou;@XS)v%^cm8xlK|-%z*6C`aT=>xxZDI{X$8+N3)AF97tC8jydV%Z4qpV8nN5% zW}aSi3V(qa*@%|LWSHOJ$+Ku7s@9pTO=1o=J5jSLq%XZ_t3&A|gRxG5#8bC05YVSZ zyU!|stp6PHTyx6|sW%CDH+I6#z&@70QKI??mh5g16sL|zoO+&yU|rHQSnVV`NOv1p z{-jwPLWvS4zQc?g-&!d!NBV#o&CG)Cc$_V@_Vq<)_I*{{D+$TT?@r&r4HQltY0xYb z4sgMf_OIYWIgeDCqAqRh6lN4<%p8>SZ8bTxOqJ_y_Tqy!UPy|3XW+>u-RbbO$&}Ax z$5hXrp%syOa#4_=+wpNdC8|BySe<8{HFw^XN3rq9mq>{?L)IjiJ2ygJkf*;z^!B$l zVbUH-Ly&t_xXmewru}q6$&3u z<`foPK^s#zuVlZD-N)WLaFX*+Up5D6KEY0ziOs^rBba5~V<-!k1#%R&KoXKt47Z0mw?o=-?BnT3Fh`1JcCY8?EU$g~NU zJ?h;zaS1N#&7bdKHK~plJ|kq6i%mhb#z@B2yrrO3PR=SB&OCl;y6KXx(t8mmk+v2$ z%iHy>OXk5AB&U))<%q5d`N_JKo1OF~pZSX4JZzEp_H|VF{F6e;nRn&cB2tB)tFU;5 z4)cza33Xi@q8xbofj{MLB^*Zm^OuC#e%ipCRL92jgPCGJ{pNSO#RY|_6i4fx&y~q- zY-X0K(VTWtVg&LA9n1OLw0$eM8|x0~owsQC#l7r=bAr-3dl%dSZ8=p}DQ(FoIP><= ze#-7lnAE#Zg2pdq1mmBRmuM}a3yaUjdb`2dnHKY5P-8aKqUgxiQS9v*bFBfnVS~n= z64Xu?td;g&7bVuhm<$k)pxvoq>r&d;>;tk9^hVbAQv>K^n2T6ha z0xBQMDS~Hw51I04$wky~s_ zq4Ndu@@Dw@n*?^*L1kr~E2YvT19N`yqSl5Pe)E3f!5qD%=B}8}j8Y$3?oTX9k8{?L zPY&q2UiLPip;TRIKRq`iIx~3-Pe7JrN7%1idiJO(fl{`D-E>T8|f43|lX-+=qV~&)wW5jt9J=7x9TC17A;Vteg^J z8;tJMA~e`FBL9n4M3^(xeMn?AC1s>C5WPr_lKmV|sq~JlzD+^$CMOk}U&Pg7oQ1a5 z^8qaJ@w2&#)GnXu2+|2h&d{5Lf0b`p$PEiuaXj?KlacrH%cENi=|RsuF3rCsB<1|_ z(C_^jTnUMHV^43@E=g;w%*PR#3A1?mtxut_e9870$rD3FRqD^so%p4NO>wq2wuV#> z8#C0?@dNf%!zNAGGlHajk{b+XY*)r%>32Ryd-2aGNr1 z42@M1LHR&ArAw?(UEKKDech|xAu-1+(cahET8iAed;Rn52i>TK^s<7FlPITk7w?J) zcPF%N$$wfl*V-WZn@mX9!7e2zig~XmP1st?{hWwY-SrKlfWE(GO*3zvaWr+Gy!_0* zi=Eb?&*-UQO0VR|d$O63Ai92~=BQ(IiH$ZQzdQ;CMsOX@(LtuM-R4zU+wb2YDNXFj zeL-=CU#1i}ms80y`DQ9N4|k0Xq>bk7bBw9XK7Y-KRX$8~pYbzJOW-gnL*sBa8vC>G zs3r^M8|%;XDNoqX&xec;y=nX`+ofk& z%*!u`O*-=W#YLqHizy^b-Ex?A>_o{tA}>$>wKbfnB@T*vza5Gf9WBTTG z^9_ z5C-0h2cn$aoi(=tuN~P8Y=jN6Nmy`pOMW{Vh`!o{_C#mo^3-FgY@|BMkn?;?%%~aE zWMnI5rr}-9ycqY+BFdn)n1j&Nj@0m0H&N17!52N1?&~`;K><2}vbN!E5{(Q7R=Mg`%H!QGoo^SGq_#3RNV|tsGN8_TxqeftIBm0G zRsWkXk6>BG2A3vtTJ+jnyPSWQLtOX6*VIWtT37pgK78vRLQNl~2#jQI`y4K>1D%E(V4~ zOlO*6JIzlP*ZK3lZ%n~uhs=A4bi&<=>((vG>ksR^p^xkiuZyacJD;plBQdx*i zr%U5E(VpF`Jw>#=|0+!EAoFIfJ@^-r(!j5GocVwEL&HiIsw@M2Q%96zz6J(k(SKS`a`LwjVk{I=DIQ5dKN*Gy1Jw>N^RVL?dNt{yW`p))I zBAapMWHt}RxI860`}T*-%uGOXL$xZJ7aYxNIl$fIoc!tLg-3nP_8#A~rw zO0GYW?Xq}pI9vDS;jYeO0sck|;a7Oz|32Y)Bmex*mvgpO^>4ui28R5pmyQ4Pk{>^D zzx~}AVPN>&EX4lpb)Uw5cLEp~%k2OAalbk8|82YfFAbE`OV_U1w{~~SKQB>*1Bp-- zn%O#36Vt3lo+4kT1dn1#nssisFU~8LPRPd=&$9d_t7jeZIjlpPg zfpMF(gon#3Tpl(m6{!N@fLCgoLi@ucRvKG@qy2enV~L{MmrYpoNRmec?2_Cwd%!lx zbN)I@?)Ip946j-v>l?+5M0C=?i$o5fU-)E_5m}fAGB1O)L3Qb=87fj4q9v(n<&BxfhtoD!6J54+H2@49#-ec=zrLlFu}s?kI9)Y?k$= zo3%_NBkH7xisvv0vYqADiHR&~7jO8MD6g)TeyN1<+;2^Cw$%%j;JLBS z=QBm*>annH;62@@IHKxmxS^l(*RPjx_DC6pB9-*+ecX037MbzwLpViB#P7~Is+Ct{ zB5(K)XQk-t)CDeS`aaW)I;T_ELA%jmvVYUyI^{wYTkc4NNal^~z5sK*GR*|Qa%Ze!(S2+jV!du!9x{bDsOZUJxVtMzU$;gaFBx=_Im>y@yHas(+ZuooK}vNFQ{-GnxdFVI^3ze7prKdvW?1%^qJ2f9h;nUc@-M%=NvRp6c%`?H6F>q4l%SdmHT z=4FyVQNPkz%3LceOB1Wa+0LX}d?xfg&AQW{agSOn>GS9OeabrK7Dlju9+byXrgW27 zIqjlB(mj(F`Ap79Sf>hco-a@ewc3q22s?S1=@K^yeNLekrXcBwVDYgg zO@yiBmrF~~;87LYkIuRH#i3$(CHfP@y#&25S>DCjdZ=h_f=b-x{svic<=4ie& zR2l62_6b=fjf6r4eUdcONcE*Zb9q{Rrb`xc6200k+}R`w#?s5`;)7=Ey!jEGo4MRp zH8%}Ljf{VemM}1?rC+>kyuxXrAPTjWzoRVwe0wfL+I5d-(lehnf7-CUb&K{rg90wf zXRb{V7n>lxhlHr}R7sJ88on5N&1C5madS7fuJO!6{kK;zG9K#S&|g&gCF>#4OeJC3 zGpi!GV{0SNXh$p)A67c9;9EpyLnod^B-}wNB&GcNFr7?9B>XMat?Uxl$4Y4nwQT|V z{-q9OQ*V=@4^-_UBo+g{)2g@}# z>M!Dc2Zcdmj`BNhx-)J$tjWfwal$uVbQ$g6pOeezDi*!E-W-y@>aV?rDi2z0AR!S` zWDy(deh<#--MyUk!(DN6b*uWdS+%Wzpz`TOmYl$ikYmGCGHuIuVt$QmiKSo=@vd$L z#SI1Qc=oJCtJAT|4R35pKB&_3)V$3S?MMM;nwzVYloTQ#Ztw*gNnP)*5 zH>Z#b;UlTA3%Etota{A5(~41}aS#NIR7y=M3S zAnhlUn!k5_+39FZp|U{CXeYF+amLl4sIpH=KVz|M4)3E+Z^{%lMijeQ!&6S1)V;AX z88!;*h{n0M46l{QC`EN08A|dxNpHw>_Ivrq6~A~J=(Azup)yu=#l6q64w<+QHZrE# z%rue{9dWG~Qt29OVWi+uQqaLH@u z&#;B}P`^Sa42>&D7KQcr2bk?AwUODd>8JFf*39AD!f(n3`H$ld?4mB@XLPmMFtHrE zKjP_4EQuU4FxJD8%&7>=d%7XhedRcBpwy?5+`eZc0}>EjEUH(aX<`zcsJQ@xYfZF7&&*yA8$#)U2#s z^Xf`=x>WY7&vR^rUhx*(ySVhMLT)KOAm5Qf$_wryc(7ym4ZP2Tyb|wzuC>NP17R=&tJa|f-}qi>8Xre>4^aCgqBK%QbXA| zykPQE1IZGeilrxMj57Te36!UskhWJde%**c=lbQ;9bH(U)z z)5vX|stwZnw%td&GP{_p!n7I$8&YoL*xXdpXQl6)W53_>I6Tuz&OTapj!&|`rqi}e zUBKcIai<9lS*}V_qZN#o>J{S*jn0wo<}E2vLRgtN^A@k*qb{z}68_ZjQqRUzvm{Py5vefV z?I$I4AqS)E2kx5rs7D4#b!>cJn@D*s^`=Gc@0U(Y)ITY7h>|O{Q1L6^XKs4yLE^mMr4Q$vtfCyb#x`FYrs`j;-Avph zl5y>MZl<~Qyr{2AhYN*K=x4*${c)P0OaLN?pT0hkON_j1OlcLU+Up8>rozZ1f4iC` zdcIqQ6o;(mV&Hb3NZECD3aVDRhhD|24P`DM9X@M^uV2lE%H!6VK5a!Gk*y>$+J8DLe4pp>px-)r zPf1Ebfy<&q&R*gE?shiPgfXQ+2mj4D1mCSbODAHmyv!_Uy7i@mkjPF(QI@W)-YQx z`^RCEH+grQ5O3<3RjmyS@}1!}4yV)BzCAX6&qy6FeZ>bYuerHhd?b!TMrl!|rdlX| zrH7)ySh^uY&)a4sdYo{ajy`WTCGvsaIV#km?fY%=5)J8^m`>Zn(CXdF0_SHcIcl@P zL|u-g!kLSl^Kf2L7K9Jb4|NP08M-iFlx2(Dx9BgOG z=>|523#&N?8HB6sioJS%%hN&# zDN>D1CnDv2E{xsoO_;UN757%c3mno>5&1$awzspx3*usTr`k@cGQcwJPT)u8hl1ob zR(AIX3?JpUhck1Te^e7~dRH2z_jO)>R;Bxze5Ey;WF{qv-hiJz;iW;94Fj9T#=ND8 z^xnMLWW~KhLe{zSER9CDwLADWnk~vY(lWGOk2S4@u4eS9ltp^B&K>Dx%+i%mio+qu zhMm+^oiSNsWxdV1!sVhJ8edYC?!CZ1GgO@^nalo(~$rY}wti*S4aL_5}!@GLbaFf1bZ7=u9JekoWUotR&tST-26zSGC zl>U0oXBko~)6ze3CIwaU(JBE`d@uuBMA_Rhry|!l=(7DYVOF7(J^}jDJ1V5*Hm(>L z&eSq+Fd+KE&&}$50TJv8`Ca<&3S$=Q3>_>jq}@#(=Vzfu&1 zcLt)u_h|+VzVb>{xot{ZlvBjS7)}u|{l&iA=6cz9D(m-L$v9>x?ci#vr0Pc4D=KF0 z#~Pxu$zj2a#BfoTe_j+mF#61|dvng&C6_8E=9+H&+zQCg0c^kKNRYq%|1~jb>Rn{L z@&VNn7C#(B>tUaZb5L@QnET1%apa-?`*oY~`vZ4}c#$}M#ow!7Xf!?mk#BFdjwkfT zPhY}bNP6}Y%VcV1MOXc}c8*FkoKku4F4Fjy@X`4KDUz}^#R0u*Z|Tm(o`vT*veD8< zJ3ep8$wPk$m!t20?<*C7wzl%_7xcIx6Z{9juj-pmvmnonn#B zGw5uRd+T!g9HQ|@{W^#*|7c@pkd)1>y=p<5zn$$ou(bQS00rAj${fw_xe~v8aro^` zLBHDoFcMU`fZq)xFU*1xId5C@I8cwU<&X;%mq=5TZI5D?u{#ulYD72R;+3oG>;y+< zlKDgfs_`Z?SUX6?=&P4{lb&`q*N00*WEl@&*Zktwq|RtnlQTsrGnH^ zHOlF*h}C%iksB_Nl&x(svT#Jte({$P7_bZYE-$U z!fm0rqTn=kDueagIT3>EscRh>s$8n2){-kLCCp>h_#2?qZ|SFr+TA$8a@e!7+c(57 zlPpD^qZ*x-Mw70(M^CF*s&M7X6;z4DWzPq#na$FAdPzM$&#c?|FYgdeTv4GrFgJyf zTzDgb$4(A#22X-4I+7#>ysvV-tb^it8BlVeMa?7loYc6i78x2RsAj$~;t;Uk4IdrF z+P^msi-b8BTsggAXSaZeh^P4?3qaxMF15)tm=9sB#-bHztM{)b3a+t9dGZVqO za|c_4)MmH8!TqMki)0%l1* z@a&r8+@B8ayLY9lDo@)`dkq+OhnvuKl$Y6|<=%pFPR&9sG95T~l}~@Zx=P>=>r)MC zuXy?k7r#%+RO&(<(?}(#Lonz}d7n5r3nYYAkV7?@hdKb5UzqcG6HV|p;Ctj+&LyIX z?(+_0Kd3m^3|FM{g>gZvQh1l|VBNo`4MYQ|URsyd8Lh~aym5i0mYz_`J>jkr^ z*agNj&u~gCC&CT34}nw}r@Hc2Z~g(3(LTG_-i3;<8QUkz4w_452lkHbY;T8D{WNGW zsAzulRx&&&*b$weHNCYh))bgZkzv)ElAs}4?RcCB!Zsoi;X92JpEa}ehO2Pr+SB`T zpNxdt8js#bTk9wA94Hu~%Y`b?T=phll!|@m-HiV&T_)L&ki|I7W=*Z#s9+!{QFnKtU}(J> z-yH@6a`;0TqfX-_wu>`LpNl=A63rlkGaTp-Y74=pKWUVjd}) zdIpC%hNNGEi%S(O4s=G}JCPGuTV$bYxjOFDWFAAOQW!lxzSQ({S`PMgzdKCX=~@z} zj!mP!CUfFSr@ipfvNCiwSu*$;1G}mBa4%4q?{KiujVkIu092MstpZNF?NLo~yhgpb z(7aXb`kkc(8eWXLmPj;u_2lD2xvr zFlJMZm#T1dU@_|Lped0pE3PcA~6nX3)w-xG%Pfz98 zO^1XvC~85F(OUKy;Xun34BDm=vKTxKT4T2!c7{o-6C^UxwYxDfHl`IckRlcDVbHI# z?a}D8zap6YvK&T}qzmTjsH^gwsq*qjq+w260gV`Wlp&q?7CtB-QSR^5&J@{H&CUXG z63a3+l_M|rRydSf+xX`oPGaPHZ9-u~1h0bkLf|oF!z&6H8*L)E zti;^i_nOR;5xwYx43+s5cz#r}3c@)`QQ5)FQMsd8P=kBWk90gCI}DujANnYw+;dct8uH z@;%8xax2cqA_p>YmS3uF@XjH1lFq4h5dS(9IaMfbCP7GNIMqx9_v?6cUL(+1b{ya;fz42#88wpPig*3jHkK^K;J>_W$rk4>p~O)cN+8 zT@*J9%j`C9GcmQ(*fq8Asej!{6o;W|Z*MPCW^0+FvIvtX_j?GsR+u-Kj-vDdOKi9r zK-s%GgV-@87Q-%PHcAK^Q#M{0FGnTrEIwVp?R|&!X~~>`7FtVVMv?FC%@&Rk zBB?cMbM;}JU8y~d$Mwa2`)iD56yHz1@7(y}hY9%}bFYlmqF2dR0M?-gXU>E9^z#>= zbt7p*XDhqml5~YK>4PzWvqkD_Yinun5xX#4c>?Ao(%?gb4k!*>5)zV5YRzgL>3HEl znM5%noU6PlS9yDrgj&SqkU4^0-G;lj9Qk}I=jWV>gvJlAD?Hzums2-9>&-Tp66Z>w_JuD?-ij(xt+i*@DsR1jPjz$*2HW9lmPS0p4>uG}PR&^TJ(cS7mwuh--GU&9# z1B?fG6txe`|0JEpCpjul0idE(teyOQBnFOsalfdvK6wLKfdvXK4;?1Jk>Kz_3QvZO z9%K~%(j>nB*!~nEr=SQYhg3x6DNM|;c#-cWU?yyRXDZ6@afjZ2Et)IN#^h%<*)oDu zif~va+rk#%Dg=At<&L-uD82~l;&tTx22VF`3?%1YDxvh>2n#4 z2V5mEq^9Bd+rv6jJ+aSP{e|0omj1Ct3I7VLi||-%0~DKUHM4H-58APyniP;&iem%p z>Z~XI1u*2yNK|T569O|gfo+l=w5b1wz4wf2YHQnt-6|H`z*fP66ctc9f*=G0Y={9V z20||)J)wtQt)M8Np@d$f6Cm_n1e8dxN$5xogc2ZxP{X%yzx#RI`+46pzHfZv{5WHr z{DGlit-0o!bKdQ`u3Iy4dwDbo*pvz0)1Q=se}8RlSh;q;BNo&rOgwSYHodZ^2k=^Q z{^p7CL+*Ng_*WQ``!j+~uLh#$GP^M&8ykHjy?0$~4Q(;O6u9WDwxw1AYp zgI#$B_XZ))mh6M%ZAn=ibg>{14}0@)tqF^BtYd;p7{ z+7rk`a`jMFQrImpiB~Yz2;oGBnsKgw?M_h&jN%iJEXe~TMqp7?z-NHZ1aas1lsk|p zcN}Xe8^f~ByA^h~3=@|QVkF@H3z53BbGWN?xB9-hqB;< zANdE%`03N+LBU8LS&yE%tgJIZC?VbaTygVe*vgM9fHy_AC~E^wm7b@PZRib_2laIL=ZP%=S$%PylGnjvJm|*w=rqcxEhc?#YfF2altI!;+@<1IN zR$JO=9W}t?#ZU679-OSj#xTIG>OI1;{={`1{mmqM8*pd{YqT-lditK*sN0+U_Knrm zsIagwebIBk^8&>M9A1x%^7)5`cdty>ca765Xs ziC5XLp(HK^O8qh~ zKYxul^3yE;?VtY-%su`S>&6YFU+7JA>iM^fCvb_ZxA_2?F0tE%rQ<_l#`(|I z*>V%W#`xPOxv^5>Ra=ZQ+sy{4lG{cdHGDvo@djaK?X`zn#DCn-Y0%iKVWvG5fO!~j z`@&yG6;}qL>Wx#xb)R~I>~T&2)+Tpl0v%~}Yjh}c(D*0*reh4g@wZz7$4wi#l~MFO zn?a{L+v~qUm4PolN4G?tH4=5O0bTlUMq45AvW<^P#G2K49gv;1%W%t(h#y28jLWybC`D&16Fz!~>A(h5!`+(IrPIsNRhg%|muez$LU#z*-lPDotU5{M(h+n<|+Iu8yns)Tn~qId07 zhD-IPlAOE(YIkhg+ZNo`Ybr(lF(LW9Y&R2a&mAfojtyZIwFer;I?dC#HzZ)JE-iqR;LBTTI7kyHx-+!Dh*=~~@6b?18 zYQ3B1pOW-2SC(&3V?G@GO44H4n^WF8yqtn)dko6Li9Lk1=V*CtpqkuO(AbUMRIz+~ zN_Z%ZxFjNQ^S*LUyD}DU$V|~tu22hBU*HL`gu{kK^gTcDZEH1O36f+%= z(|UD1k04MzP4Iqel|PVN5rU@DTbY7~EAGC}q(aV$9V}!2Mp!y)!CH|70lsm{2j|*< zCJ*@k1$@BgiU5(GIk`Pv@b#!p+{-t`>#)zPvdx8Ri#ZysG|U$Jxyg~)gbRGT&lYuU z4fgt8){6UA%syn%Ia?fqRp{tE|HI9%UHdbLH|!catGsGcvsll_ z&h1N|>T>J!GMO%hYObuD&eQH#v_=oBzG~upG4VRAti|tkMV>b`%laIjDne?Vz;mvj*r;~m-xY?`9yDj65kgl$TvBP7R{xP+JMZnZX zr5#%WK+e^N;9eAm{N<(5*LFg|$L_Cp0!T64Y4cdwX!8Vh4iL$+w<_;mPV{I^?3>pz ziN1c?*p3WdoMToX!(!^)rohna0rvTUgF+(238M*vUIw_8!xk!4*83ikl#Mt}R2W%7 zFB3goCSMEAZ4dlo9Q+U7{4R=me7sh({SR{KTo58O+Hq+gEhJWK3&4T;?;scTt*{M~ z=?fjP*$>@7Jk1QP#gi`0ES;Cv1it-#OSi+_>+#s~fI^=jYT)KSuATpf?%lsvMS(Be zQBro=5+p7yiGWq)5Y2Wos5QrgkGziDpohkXp*bK^bjq=B75VYT-R3p-+5s=?Z=d8w zz&(kCuMlQKuUD4|Oq?%{BcyzNfDJ#_0U(&XgH7*CW%GftZj)&T!0}%{UvMvftU)^$ z$fLMXLjZhA86U_zHG6Cjq5}sTW$-GxkuM606_dr8aAoH9;NFdZe9hp|#b1JwgNyxu z-ErE2S=;7+&y@SF0cpmA*>78xGFuL~?6}84&YXw0uY8j=L+#3jKAAQ(^7!G!bTttD zDk<$O8TS2b&-V2AMHjCiq==U7{#aW2)L0}!&F0rJ0>2xXoe(uWk~1o9Qv9$KnWWS@ zP^>q#9%Gp=*&NErhDRL8{uu$MBh3+SXWB8rjoSf4c>Tc8D9<_ z^M{=oGEF67@H^o~HqV>h1~N@Y)ofQu5kG&2C)Klojy1uL}~}sqtLM|0Uico8_xB{j8)MW_})-pmUTb>ED-)} zfP5B!LL8F!-wvwKe>xR4j5P=D*PWh!P@wqbbpGbO9$eT7dinpda{jTR|2I*PDn9c* zhNS@I`}L=fb9%tIHG1e6LN4T-CT!I^pO3=m1ScM4D7OQ?aW>-VhNg-R-{X421`)%B z9+q}8h*g*-eTP1NoK1PdG5QC1)e7wiiJEVS5@8)Fs*eH)wJg=~7^c70O1|KqLF3_U z@jcGF(eyTL=PB7k&x6~eiZq1IE2Jw|mug+IeyUhud5R&Zq)&eI>iXB?*!C;BdGTbZ zM_Bc;4%tkr^!63#EyU9p&R#6Mm(Oy3rOKXdO-}y0ui@8MivRY+p3D8b7f}1k(2v|y zdA(fam}Mn0nA4P*=XIpg9o?&OU1&89k&lC;q>Nj9@PghJ(xcP?2|g6uyE0}uWCf+I zf0y<~;L9&zukN2DFn*7DWrhBig`Z&i5P^Mxb$Cx#%h0)-P>lz_&m=uP?gZvc^s7(w z6w|*2)p<$~_qLz;FM4;SZj$|$_5!Lt-}#lCU_lOOjlJ9E10JA#@6_M^;i51*x9Uy@ zNc;_z-ma}W`W?>cv#H(hl3@ENpLKObmakE5lwZo#|3yIjVG!y1 zD2NX{!7h2Zd-3xhFFrNlzFh@p2k&3~HC^EJ>L4o%eC~kt5988Orsn6hu{pSZUGEU1 z^3S9_tQ_(3r6IseZ9A#*k=HP%tX4w1mJFN73M$ben;}X?zFCE~TdG3uwI7vdAM32d zoMWt8aG-MCg2q9Lq=N~F&av=I3F#p`h;qk4(>6qzTR}Q^-;i!#PI=+D@^!zgCdJv& zjUoYj;U)juxsl;l-842p4ub|uJHJEMqqJkJK~fp@=5af-f?%ZU;~tu27(4}7)Xi^S zPABdY-D7KwPKGlMInr0>eWKDjPKu5$1NJ{T%vY;txIC^<)C4nqUfQWB7U}dfT{W8ZI#tRN){iI* zvMh}oCR)mGrerX^|4z}Ta><##v*t|~?t3L-SW#;|U0~=YbBpXYc%Yq7Qv}U^Q)}NB z!$QqM?DiQlaz~dG#7&hp+jj(*jCPEFbg#O;CLp30ko$#V)_J;|5yU;~xzJ$gyFu@79W!#-uteNt#OB%P}2X9f^A0g z(Z-$ahq7q}*#?Q4U#RmgN&YvQcaL`Ll&EDJ&XV4}{Y<_%Lo?Pg$Tk=or&fHRCHjqn zrX;?`=9Y@h)JmWCb8NMgUyjxtq#0p78YTExL1SBE+ZF!%Y?ShMapS*(5Q8IShw!|_ z9rs$rSYpNv%V@Ht|59T`wMNvs&sgkYMTSv;sggSXw6_E%20|}$rc|EWGW_GO#mD;g zXT_lOD?5f*<=)pvUeYS^oi=wqYJ{W-_w}9rWZ>V+ae01PLf%_fS{@{(9@M4B$4!)h zS0QP+xO@x5oz*l)j_hh#Dxrk7A+YrUnzP80)Ec_SH3l^42~>v7%rL)-m>kF(&LkzO ze~K+#E$Gcd64VsdAW^wkn(bDF1L>Bi`uy@sPqtv_$v!e(zG)WLr>ir6joYi`^aT}P z#~iNT#h&Iz;B_f(UB;(FDZWF3ao>~`6p%$l#M#=|$R7&Ghz@s`7%taDTCQLxEzZ)d zJ^lDK{*>om_10oPk=(~0Dak2{K{q~iCFQE@3#u1iB@+;GT`~7n`22|4Ztp!++Gz1Q z_#_Ugg%&>pg$)P!3*o|p;ic}=dnEap`~HFSaGfku{#;m(e3!?#w25t=574!9DBrS&=0&V^nta=~77?pInOBrIRU zR?GRmd+9Rai+X70u)-+xd!=k{DYr~0|KhS7C#9_=_J&q%$ksxDmSu|rbX(VuijSbf z_P;#lJ9p!Fo2pf#Hr3lMzbsv*%hZ{CQ_UwwLkrtye|DLWH86dz^ZpehA~LTi)yktb zY9!%#Q9EB|grzs{q(I*7$&vceXvG0|r@K3T{Y#@wm50dfNo9CDD+4`iAB_?;mG zrLe^e2Off8Wkr&f0$?Glbmf~xw4MbAdv#^;_eS0r-5RSe2jyoj?x>g3Lw7n`O4->? zr`Q$-MLGyA*9yd`wUCuai3*`!mU$$OBum^x2!d+ywKjIvT|uRY558r-#6e!FXrn#Z za12-9D@{(mOb0H3!_7#)5^N)8w1N<}Mzx>yB;OF>Re}q3Qn%y@~J98<7M2)<@JY{}DpBhF6buACY^XY&YXY6BaPL(5#p z*@I5jm3gnW9U0o6`K=a@(Wu*T3j}Rr6G=hJ3Aiae(P!$ z8(LKhBLx-VrdK@XR9rOAr-d~4DBybx#T3FL9Z-jPW^MKoj||n?XSxSe>c*XCg7CbL zsIz?eQ1-}2BlG>lN>Z_gA1)4N~+LGT9QfL8-BL#sRiC}&5N)7 z8XYH^%e_$9fUvA~4AuEo9Z%8S5$wJyAg`{W-ld4jmAh^;x9*wVw(6DVk`QEgP9P_t z#CB2JUZOcNntET2qgu7&T3*lcS9t(r@q7b|=}A+k1C7nSv?SphN7Yn6HfG3_ZP{Ue zTM9ExaZc&9AB)D=D_+{cd8H?Q+I8g4Lg~sXrrOJuDmrJ5dF2-J3dp->M4j`TR6%Hb zOfz*`ejKH(Xf$=sk0hbI0o#iRT|-&O$!KA!^c!SAR&NuH!bMw5?UhA(XXPsixMe9s zfAO-olH$~|RDypfq2zdC@6b&oiPqn?ura&U&gCd5;D=7UWY~@ioJlXpp9sw~oE(Wa z&-@z3W*s@*r|Z|~BIdi$d6FcxcAsyUZ{NL>5?!GcSH9Fk|5|H6-M+&BjdESPFTWaQ zX?Y_1+|0+QP7|T=MX%kN-1C^b)@Tn*C}2@t;5bG(>$zbx2$ z*jdpn-jFCi?Ely?BnEwyVqz9TK)lKnR2T&j@QXOQ7;UcD-lqg;F5->QHni<~q$V_d zitpgXZC=ww)P z24RTO0f&wHKUTHIK&#T8V|8qBUqczcgE~ysST5!(6>}0nwyP3+-ojt>+=I?)N&Q%2 zk<8Xgt`V+uOPW0*<+x?>Mvpf=Ad6vvk@-aATiu&VdAoY#4@+5hxKT&D)$X!yAa7cr z&S1XwiJBWFC}be=ObK#l<*IzuP1YQxO(+j#4%ckm%id@*xFMoGkKC<}HRluC*I{2F z)vvo;CrV^kI?F=G_Vqrad@AC*a$b-?=7HOrk9y7WKFDW0Ol`MkM|XWV4HE)ymoyi)9?4=7g+TV^b0p!KQOzUB861XfCE^$y=G zy=4p;z3Z*$Uerjcs&NEHTjms6wfRW4=t0|iAIgcP`CX1O7`zU#__2U~U!RX*ePKR& zzg00v=MwSBIWdO7&>lIV=B!Ujy`L%#3Oe@aZNj$bGy4+P$8U??N-B#jS>~zTy^~zS zI|wNg^qw0HJw$1k{0cjjs7kR~2i${o`(QClWrR7pEP*|d>{je$Q8$pQB44CayzSZ> zeyNWSsx$DRg|SV6>@~Z^nCFe(d|b1On|pE5U{9rDmoMEhKHHKZL+Vsi1h0~am+=u` zJz@58LU7i2R;;)HG_Fi$EC_4IkqrcvBZ}KZ7Oa)3+Gwx-r=-yX<4wvl4Gc+34|r=i#NU=40ggrc;?VT2;LJPPON5>YIs@4Nd5b?|hBX z)CCHZ#QH9827bFq_S(L#(*qju#AOy<4i)Nf zMp`|?UuC#Eg@1xNtTwZ{vR;I;*)W+bEkl*x1FM1>ubP?@=F11xN!aU2H(@?p#jHJ` zW`z?dc*pbgnPSE?Yq8h6i1mT9^z3p7$BWFKPMm|90_V2C2)6LvN*SizfuUDGrOC02 z`)~v=j+Bk%;V{ep`r3~n-&6l;-VW?e(_s^gLox?kfUB=(%Ic=!$73Nj3nywW9+n+l zFfx{e5{(d6rhd5U7ten+E&5tX=IR~4 zt8(Xdxq_R7?wEDu_k_A3BrktGeYhmu4!Ul>f6Fga(XL`A1Zqw8ip6eFZYbs>Ad5fW1B zV*DG%_(alMex@u(9X_Z%+D8rq2>i8ptm^#E$%Vh;L9VrYv zdVD-a<^KUIIBMJd@iG|cMifP{`D>MmTA_IbeiYvATq$ojla3-yQ11kef69> zFCzwSYO#_Wa(R=Oo20Uyi$zS1adYnnQCO-U{~4=H@>6KO&$+mJi@*3NX-+?7XenGP ztycW_QDy7DUx6jiN2hHu!CG6*0*g9hWlh@W={F zw2o+ej;%QlE_HYm#w}j{BS3T)A}~>Sozp$=x$GNaeoahR{bAB0B(!CmEux}ow^4RP z|IP*cm9$dCx3)C0wkB_xq#a(HkIxR55nUO3%Ph;=VXBVWtvHnwkyFv9xZ=f3q!|Qxp8*2R>xHvQ6=PTI zwn+t3^5>_utw2MBnfh#}9Cv3YV&?2W8j@Pv*5eTLGZAX^5g^sm4 zTTxE!s+!Zr#iN>GlecZJh{Q%42gL(~TjHtcFr@^a{f}~-J2DBm(~Ho!0EOK90EH@R zr*U+D^%L(F!Rht3+oIlbrF^BvI~_17D>TI+tX+V{qVo7#t>Wyi87ljCN^LvF_;5Ns z5py;_^i8d2o(^nS6A6j*ZQTnig#cc{#4ldL?LYH#S0YD`@tm5%Bq9I@n9>T-Dbi7& z$N1bEo^JrRMK~4NwJ`m!2wd~L{t zYY|V>w3blvS98@|88XI-2{h%z&|2=DGn(^ScN^_zBS*b(1EQf3i=Kf`MtI(aX4iYR zU_XIGv|Gq0krrAmi&~_f4dznvO>K>^xa@L#F0Ks2fxcN?@2llD6mt}jSQ!>yu;7Ib_KU<-8BTP}=z-ia;l5JFa9vp)Go}SU$HXrFomiF=!ZtYg zc@X-$bxgwAlk3Ufx3nN8R5{p4Yl4AddaC)jHJ;QW;2ip;{u0VTv~rEm!NBS1)q#3w zUNUxKW_hgap`-dD`i}rgxFVqCnb5>OX0^U{>N_2Mw0ck=5RyO+ZfJX!Sib9WxRJr7 zoW16i$CI9=nKZbe7j5GC5p>-7S>XImrI>mFS=5*Q)HEPPrvd(QRsTi z7-J60y+qn-WVwD@lMs_!RW$&1{ zqmj2dap9*u<`MyMQ!%w4Bp?^k8<0_!Zqb4^tN5Hzn@>~R){gTyaAR2j#kB@Y6CB3K zb8-N4O`%TkDwmEVye84-X<8I_p-QQN?U!Q2`fRI4saKr2=;GL|`)0GzF50ONW5Rw& z6bhQP?s>1(nisX2USSC#w7tjMP@)os5b{Os>J+4- z(~;r{=g@4G8k98T!cfqs`_)562(&92}ODd7#RT2L9L@!sJXGMPtABmXN5 zkSCH31+P6p>6Y2xN?wr84C(zwrwgvFxz%B&wLpbWX}QEmTRd+I;o`O8^?tZReztEI z+Yu-d-7b_H1~|$p+j_$Z6C-I-ZLWHdJN1c-;+^mfsU+{Jw^N_erc+grad$@88tYXx ztP576LuJMGC4}0H1esa7&eI$|mSd*$UBqXVau72fTiaP5o~TBA%_egYQq$F!gGZr$ z)0=bbLL?q(3eUKC;Jsp+wX=T;$G&>Yn?ODLBDx(uKAwh3TLeA%Lt})yZF@+mLUNqa zqN1?uc}^4UTK|}F-(IU`{N-P9PO|4ukaMy{&N0DtZVdce@m(M+8VC?*7|GDg22CKl zML9=(#(9bPcyI7lE5S>`UhzC@seH!$q zAv1I;ceiX>``!9*EawiapU>#U^5Jsp+c(d%OS}1-oP4Ju%xhz%I*?;;Re1F~bK|Wl zU1L(58dya)=lZqDc?;_sn7rks9~&f`ZTX9iLkzO#yVQnGV*nuIRa@ow9r#>V2kTYv zhPjF;78-!iGZ3gjhozYtZ1sqPu_bO=Icd$LK9T*_`Vd1IVt14bkd6N^7ZLpj*|S&n zLB3B_12)D*g!d1do!O65#dSjw-lA;bnZ);obXf0*v+iRPn)B%-!>TjxGUW7*OVuY; zK9?YwxkcAm)X#W0xZSoTw2CY9w$vBCBz-^K=|O)eP}ba8nc>OjZ+pvlw?@^_BUTB_ zcp#k0{wQ?Z;~hC{W@Si;A4T3uyT6@Nuw(bErfi5WJN2GHv|5nMj=k3R|F9^Ug7g5} znG@~<#qBzU=}CyQp9-(Tw`y1{r54!UR-4mc=kss8PfO!7DA;qU*=dGtNMnobh4yD| z`C5$9HS&ZdIC;~Xg>e~&nH#DoY$Edf;NM8S0s+y*CF)7eJE4&)&1bxxiQM1szQF)S zQtvB?i9L-3?}&@|HC=QK5_V+iniD_Hbd1jX zU(%l{SzkK**%>M)SQF06+1LBVP~Ii%L=^^em^a;FC@1X|yi`I7LP=!Az#Zm`?iKr? zt?F1!S9V%J*Xg9b`cxyr1*#**bOkD&t_eSD%s#l-VsLJ15ENbIpC837yfUhaM4Io< z|GrWV`EJ_opdaZg%GSmgEw(Hfd||GlJWUwaAANXPB%hE4Fxubq*ZTZV!LWPJTLQZzQ!#zVfcf_)qYEescy;*{2 zMv-5aBkpDSsS{k)bcaRO{DPd>W6U#q!_A}r`F0BWoMWl227C$Pc+p*uKHQu>qvwUu z!j7<=N+3zQ1}eDw=h`c>t1<8wq)h2gHVPQTL{vK(ZYzjz%j@-6?~Y==8mY{~0|gHX zcVQtyu58V>RlFCWa?S=;@hsHF#m(I$>VRJ&$QeX& zO*;2@OA`!204CzACA*Yoe&?w67u+QY%~!E1kg8iDA^jyHEk!f0H{+*xuFYwtHZ$b9 z&!-mze0ak1-ePn;!aF1$^E!N%Y72E~l#rL6Z-V6gp7U@|GPyD>!c)X}_5@E5wSIgr zyQHMIz;H>k<#R15>Vn-{>K9m<;LBAYzhVP_M2 z4Ny}pb=;ydx^=WBUx_npdwO!E+&AvFNiS=;RN+=Dfv8^5?=jpoxce1_gHRGsKS7$` zu!y*)KMN@|dbu^Jo>%AXA2C%IC5fpA?5Y&m~xubJRm5u7crz@^O!g8VO-CNC! z)pXL9rv}z<^1Bg}6q(`Yt2iNlVJh_@gI|hK=Z<-dX|>bLnml%yr6#zs~$aqJN(GPd5;<>tovT z7yN^GHhl=A2YS0NhacJuMY(3{Xw=>k4|v3ztZMp3k3(o(o)dr1zHwP+=Of)?&BmCa{_y!o+C_58?VG#UQc>JL# z9)6k*BroeN(!9&l+%9n8kCk_flEz9SK#U;@3*`)NjCX)hf-UhKG|d- zBs0xSO+1t7T0PAztN$LT)W)}Ib1FP_%hkD{Q-fpV6Zr9)^&h>7xsj=4ow$$gumIH5 zZN*x3(oORRbx(b_Rv>f5s;s!0qA5x&QO2~vqf~3><2l&b)d;*n6LqL@f>AO^=cwBb ztm39;!fwN((Y~rTLqVkoUv*$uEbZL|&wTNGR<>xfRL&$v@5aaS19%YDU@XNauoKtQ z94=KCaJQ%I5R=|!6;GP227bu-H0&(WW4Er#yu@a^b}fo`t9952R7}4k;+>wkD+2Lu zgveiA3Y>hLePv78NDWi!NukaBi9UzGb82=A zo{Dlr(mQpJX%os7k1X1EOWAn7EsvNKHm#wmlb5CO$=2Jg<5z*)b%v5mb9sH+jK7RP zkr6p)OWU0ziTWu1^K~XDS$(PhTH2eJhUEalU>k0b%QHe6w+z(zz$BrJGKramh%F z{*3k-)C7@v9MM6?J+w7Bxs~~wVnr9o3Tuvl+H#U{ zTF1gQA<2Ls5^5`46ivq4q|=;5qcBI%5kSX zQyaT{0Bj%?mt)b^3wN-EgLx|Z;;KME&0pZAp;TM}?qc5eVY`kjy8R2>^Qiip$aZp<7bkZ?cDU!f#pCM@?1aDemwW zQ18^%%pM6jm2DQvuNZZQNv}wWtZ^~xW8h#?F;rjS1*4ZuDBdxCV)kY}e+{ebs(D_L zl;#yGr(^GSDpX-GiFz~7wHTBZfAn_Ay`)UY-|LweO(lt0G>O#nSoAfVn95lv-i)gz@Ki2MoNbgW@WAvEI zSry@H821TAL|xGHf`Tt7`F5CoJ{L?eha=r1;3a>Wr7glKAI~-vkHZ&+O?7g+k`;Gt_2jou*;Co*9wDmLt9EP)+djSw?k4A#~4u@u7IX z`T_&XQaMa!(6xm<5x8Xj7ZzN$WWBx0reSye!c*l#H7*|mX^t~RJbx|hA36UsA>{kQ zx`h0IeLnIYF!NW5iZjg8lT@R&PeZ)fZRq3c&*X|tU%$>~e#xKX+Su|>Pky^9VO2Xn*Yel{l=qWT3pM>@(k^(T;gtC40~LM z>SY0|y0Sq&DekPgU!~uYjef#%zCf3pp4FsXepAjEP1zEyK*h z4054JR(yJDO*_-=4))A+@oZ#T0i8y{{v!LT+4<9^{t%4HX$s1Nq*k*Tv@NFWasV7x z6&OM1%DLj>7OJ?`!uxET)fz2|Lu;;fcndyZj%L{7A-6=DXP3%!D ztW6DTv!3q%3rMu$*w1wO7pU-^BT?MlbhaaGPs=nzhhUJ&-%{{< zHU0}nSaI}lKQW!aM%6r6_@5TMn-9*KtftFq2J~zN?^?`Zv599`6KK2!APYbDqQ#)p zD)64)hmc<`HS_s@UPixs?a-Z*2XshYa4^t$S~dL)8{4tK;}i;=7657`nS8Ndg$U zPuI>acd-8ThOIjaJme517Q^gq*5~;qdZulD*O||5ESV{38TT&YcgvyTOD1diP-8bk z7D8G;3DUIl5DGEy^zB&8xN0fF`_Q3jlx?XBvc}K19nY5fllArM92~qI&|Tc^UpPT7 zN|9%z!7Llx`SYsM^W9)VcM&h3QhH5IxnBKA6kJ~ocV$EaiHaRLt8$=in*}sPgaN(A zV`ZE_cP7fi|Hjiglxzh3!iEx~wqj8WZl|J7ORKYV%JGBO;CR(fue`IMd89Q86}jXa zD7w4C&AI!mT4Ady@u7x5Lr!abJfyK1H?#tdy_eAm`KjUi9R3Xu)SynT&#S1&UIWAW zvkDXAWS&Tm`xaN)zQG2!-TC&Z=E~i2`!cXJq1U5J8k$`BTkywxT@#sHpka{O^2y#$ z%kp5>3SSV((IfCxD9WV)UuaI{4 zVQpOmRpj){!u9&?4qS>ygjEzTK*GHE&Y;jWoH^YhmJ^V8`YKi8yO38-!W%k5A-&>& zs*tRZm}vu2nm4QW`%=z&<7vJ)wL>WE)=h(AvwB(e!4$#NGP(RG#3pj3F>K2rxVK$g z7flY!%5GaFdVLs5G0a%RCo}CoS#zBIQlzTzF@Llk+}hslqYTv6GzTi3{hR{+4S9BA zyIf(^6Awz^i9u>>$ZwZIq=0@8cP?63SlD#Nqaq_*9|OcfJU~%}4XvLC2$kl1fIAuw z5)~e4(Q0USE@7@MF(R=DSK7y!th7u4$-5O!8+JqoR4Zqn%MM96?3dqa9>2A~QU#tu9 z>Qbx2QqjOE>o;bnO5-zai39CCS%&WbvH9>I^_N>ec7bnW3ll*`fn~ z3KuJu>0RdqV@ub?vF;N9nQC{&Pt?b$$eJ{#d{fHm4kmtSdEuts)cNcD9aawU3yts8 z3}np;xaL09?k{^^b}7lgfO75y{&whgZt|b3s2}T77u805O@{p?qaKOoD?+5?mvzCt zY5}!s%2wT_6=dfokTMPpSp zUI8I34SQL*gTdXsWYDEf(iD0BDb?=ZuZ;iL%QiN(NKH3pS~zdIpN!G{^UHmJjPj?T z1dVR=r&`I`kR@4fQLVMLsB!>`6QB}=uSr(s$+X=8Av8125UE<^iJqUT#zQsJOACB0 z8SOWfBMYc+{ci*vIwX1$V7+M;TgBeCQ~?NX2b3>O=FZ(Tdwt||dS=yFPF%YJ<3>P; z6cH1e*@EqjwA=XiJ2<3!8yH(C>fXb4d~&@f7^$8Ymp0}X1aHXKDvFf&VpL7@1>{H{ zI6JaDIRb{y{*jwS5$3!a3rP8GLo3bq^8@8Cmwc z9iALY_RE|eZx2E2Z8u%4rH(mBxpC6^nM;jaA6Iwnn>mOI7-MRF4CK!Tx?&d`2GEAh zGB6QotFGexxhq6E*N_;vUTBNbM3NDpx#c__%F9&f>c)6&nBH!=bcSQcYvL`EZ_j&H z4#3WcLNCq~k>!EWZ9M5u*jTZy}3(|Hj4%^zdiM4!{3--L};%h@3ezx`U47- znPD6326eN$JpQi}S5pLt%6Ux_NkWyJjzB~!|B`xw+|Xn)eY z9JY(Ew_SEAumJiJhlhfqK%MUk!9zk|3HTSiOqx3>4t>Y*4H(%TyQYjRq_XP+#bAxm zW)m;_YqKsk6!K8JRkg!s=*U>6=6I=~lso!bv&jwjS_S_xT^+Q$hx&#w8e%SOJ21qX zUNtNQmSsc3F!@hXbjxAyQd&F}yDPO~Wo++n_}6}Fs<8(WKY=nG1!A$Q34L40(mG#@ zk&WGI)S!MBjQTk*NB)M7qF<0>_w$iih4+3Y2^iue&)Uiu{?t$%-YKB1N$Q6%&wO;V zT)hXr()$L%!`IcB54UYHAsA%M;dEB-7JQk*(75=Rd{xfp%)(c^^~Yf2jT*gPd0S2AfY?A$ zQE@mNVI2`Qdg;&#OXXO%%elt3{j0>ue#G20`HIc>vZQjAH}b4{dXOr8v^1C2n-uX_ z=k3;Y$mEdPn%{LDd1)&f45i||j{P`7g(Y+#?Oo=F)Oce&($ReVNAM|?lAzR^xw>^> z5h;A(pP^<}MLJ30hu;sNGOTQN+c~|vx#Fu#-Wiq)+AWHQgw^N%zC%;En0=95(Ju}r zrV^Fg5-Z^!p3?#D*`VlbO;h*867XMFdjzSrFPpJ(k)BVGm>}QVi->A@@X|wN^tT+2 zW;tH??s2*GY4>7@#lG<6+iECv`0l{CJtf>O^7d^zM1&hhpksHz?I240;&3|Th)4El zFk;BR)3z3sJ9H^2_d50=nz%92WO)%wn{OzmWf1}Wq)H2JF#&2nh-uRysPP&%f_tRe z7C~cKWx@$b*(q9aZprJg`9J!8<&dYF&v|>zRWS|QW&yPJKwY=LeH8m8bgctEZl5q~ zxnx{&w=Olz*0)AK8^z0Q%F+UZPG%!Wl$mR|M8DdU_TTdqo+@Hq79IXk#86RA)?{b` zU7Qr!*)i#k1{Dg@JDKwol4{G~klK$TiL&S0;059+Hf)cYX*9Z0>poU8T_~<+=IL5NQXfz)p>oaThWo*3O3vIm=SX zawSPIMS*MwSpseB#4QqI`=kow3HvG*xG`v)Hq15tm_@CJ84H8=P!~=^I(ryzq>zw$ zsRqlXn0)TO$3W*GrEH01JyN36+NOEZk1@{maivLcrEL0d_fw%u)w~@tZlE1m*H}V< z^D@ zqUqYyiGSJ75vvoT=UsoBfbGvp2gh!`@WvN2bhaxKNlVt-whk`~DNModaVGD1rL>BV z7sIbzViU7PC-~Cm#4VKu8ZSxfI)j6^^u$6p)x}R%9@jr~Xp8vpew+RYvHeqN*RzOo z=CLj&kf+aQnc->eC)FY(Qet|Q$5K-okiA{#;j|;V+RSQ-9{Ou5kRW&3Tz|#2!KpyN zu`vasB>JsQj5<@YH$AC?ODX58MlkCdu>zE0t6+O>i^cRM)$*KCGwzTD>hoSj+s_fs z9TA}XSOqc1om=iZ!Fo(`Fpfy&^WnIq9g26sE5A$EB(-KMcBCp{_$rpHF4|5%C96Lr zHBX~zbuS>K?}KZTcU}woeghX31dC+!u_jLi0SV3v`f5qKl#doT5`#~FhjBrhsGE8G zv3Mca@P3yaMNZvL>;^)lH**vAlN6ays=jhD>WOZSo*ahL^s?W{7#1jhtX9p zBullLkfU?TD2*^&gxB%K$akX!iO?hs4O_>Ur+Mu2lK%J9I`Ss?z$zmbGq3A{bYIn0 zB0TaMhom)Ut$|15)tf-_I)+?&7Ds9CiWMl<1x3tO)JMZgN9jmn>n>0hHZEwh3HEp&H)&-VIk@0l_?ps>3*WIYf zZJ*14RygYO4fEGO9EmLSt8UCl()tW#L_bk?K5Iun9NZyC_an^fQTEQ6e)sGvGWKft z&3(@9ui86%9sVq?@o?i{q20$w0CY|9imGy}<}z}+n_X1vkxQZ8SmO#o^LK12G&~XC zQIU2ElMi@2svw_&1G-ORIw`j%e#?XDYbz8wlPJMzm?X#I)Nt2OTl{oy?Rz45EYc99=De5AG# z$gVO3MlHhJ~j@|FVvPBTc`)}?v8z5wOb!_*j!mDyM23dDsQHBS## zwyoLf7$f3j?C*cNT-#lZG!eK8z8G79%QX-Q@q0;C!AJlwU_2$Z?i)2O;j7efNdV;+ zRNh?sWIxz%UEp-Ct~UWUNh&+E{DC3J<@ZBkgVuPPDf)0a-TymXK}l+FsfuKpXX9@E z^XgR(Q6&tb${4AmuQAQ&=w_;8vSJlfv%+-4E9E(aeeb3GK%BRZs!Qzl^zV71hC0e7 zn2cGz_~!GX`ONZ{=E7vlPU_dLzrAHqKGt8kqwIAwd;h87p&MWC_bL@Gkh=QO^zoNLt*&_>RLq#k8I^r%!=*Wj-YkB z$NU2ktxbj#r)dje(l4QHP44yVWvjCOhd|c&Pr+;@dDaYXVx=jozb2IqE@<3aB6;(gXyggkDsnODCa&N)Zxz zC!yE?1px`Y_m+fC=m8Z0=`EoJg7gvs(j~OFIp^L}?j7Iv&-?FavZMx+k>)Wdd1(>xvBo2JOGBR_MXU}n+evw@o z9*TDIbIY4|65jc-K<_MVBs%Yx?TrxES5j#Aa|@Z*@=-FE*%_?#Kl|gD@61QX`F<5P zf~jIK$;D1eqaDcwvR>4oWs)_Dl&2Py-Kge+y=qmmjN|mQ(gOez zA7}a-MWdEK=!3ruG*&%9gA@_wAvPC(9Vmsj-dTi!6LX(}0Ga(pOELTPDa@RN@9L5L&Z%#Oy5MbJPsF|N0ItS% z^}||yedX*p_)3^J4b1ONJ#6+8w%f$Ad@mHbxaaH0Y8;)z1yOs+1uBlJmuJ1;Y@*lA zwd51ZSWhd<)Lh$y{;_DZU1?}{snAHd497ph*Qh?Q^GNe?{OnZzyWZGN3nve6aCpV! z*Lfv2T-ByIayGj^b-Y9YqxIo1r3s_&w7ZlZ$F?hC$TDVt1!KK9a*PW&Zpk@U>;LfG zcMVs=vefreD9+D*Gb*XHxO01H+PJ%d#)K=H(Ydo3_iYsrt%;gGr%8Jvjk}wivmbtH z9l3LXtSsRcDVMt><2dXc0>Ft)y{)*;4xyi1l(&p8hv)jY^UL==yPD&&@8PTv&@-~= zV%~-~exeo*o2H-ln%7lsP9jzbT3MD?$uKn-G`yu4FYl2L$NqfU@WRymQs7UIUV1t6 zW6O`(MdYW(jycmg6ax3ukk4VbdWYIL3ySc%TF~|3DQ48yh}YYDDN0G}qhu&}2*N_m zKgzB=5VCrH>VCi-gMtrC;toFg4?B%l>&Sv2r}0NY7Z^mury!oQ7+hU$dL6+XRb}_v z6}yWiww!sj=TDo&x~^72oZksyu9jN=h)lJa)!-(3N&y<%HF&?I;%#bl@S%iEbdD$Fh z&J_j8%1OJ+s|GoA{o)Vqng_f8k|#xKGZn&j?)g7FT`|A-*|S@>b&uY0k~RNEm{;LK zJhOr0;u_zPa*FMB8K$%2nLM4$*Q9xM^{RfIvvE|gr)!y*t>wRWT74X?L`Dxeqzsl;?-M&^9Hy+aX) z?W56kaAbHo6wyld&nzSToa;j518d+J| zilHCs>L%oY7(b&IoW|JQ7&#!Fr--oL(Tw}3IF&o$JWM)cUj>~tlySbv_T^qp6k=t) z!o*+KFkK@5#kyyGOeP1-RWWBr%sD^iY(|a%!@`#^yi;UZc0agEAjE37TI^fV?YHX*Ut;$^(>|qEo|J)7?%Vj`mMQr`O5zVZL67wTR>J=H#7O zl$VnNL?vWZH*Bd5|C}PFDfJ=qi#w$7E1{|7*NYy^Z8*ItbP2i6_pAS%5##%iUqqh^ zGNkKQ@O^`$O_o+#R&7FtL@=wbP1#=_wJM26>M^><0pT$N zGG8H62YSKh9*<>Hq#PUbT_2EUC$aW=kO0>;l(}IVEJ6iRI)S2JNDh9T?6UfXJJetF zVTr+R({z$-?6Zr5!9QD$dYx5KvbR!Xot+EN(V4R$mTX(hf7W2s#cEu8;i*242oKPjc(CzL@-{m+o7Y_jZ%n%o>BJ{_(z?uGE1j zL``ojPs${XQ!N0+7=Tq!uskz)4mzZYytI_RmK|&B(8QWXptoo~I)I-Bf{io2NwK17 z6y$S#7dT^o?W>81t#lkYBfV|GVG}U)c&TK;BIxqjabOQDPW{lzW6Y(%w(V@Gg(msk z&ukU8N^9(4XN94%Gr9rAXZ#g?I)Y_<%jk5fk&8M+iHLCrk4L-B5!)T#;ngM z(ta;tb$RRHmgbR7#U-BHJKcBNpFvF28=f_?6c>?`jg3u*`8Q_8<9ZItyT_gpXPL|R+lGq@Xk?w z*>={0U|$_FOnYZfC)Q>{0!E@vQ=gddbL{M54BZ zzQBsv>@IeR@(bG#)O@g8%4^OF{>GJMxY$RR7>Rk;?)$@Nt{tOZoyO*y?0vNH9w1nDqDLLcyC;J0qRI^KacA+%FLRW<5OoGQXk zo&#%UH&pG;Ul(d0R;fIe|5q#|uJ%_?L z?sq%n{$|tMVpSK!*M(KL9 z(@!iiE$p7$xn2xv)%?N3uoGX+x!KN=w7=)Fy>wJ5EkCC2IEFQB6BJse+(?dn7S*su z$vWR`YDr|9l_M7%a#URoX$sVh#3J;}WvUI6BgLQZ^6uxz`_yAY5$e3cqT4%R6hfXS zzbAZNO>U?zc1(6X$AakyJ9HBlBd3g%3JB+>3+%5dDk7o>MYU0yX27(;Z7BqYGRMjdIaFFvMk zDJA7@;;yZMj9)ga4DsIN`+kW)_kpvbilrBH!@GMYt&(f$Gwdw?_=NVw=L01He%i^E z?11soo@T9Ct*)mFDuG&h>Cg9Qw1kbM7bNJV=|nVy30ue-Ol z`st&yGYkIdER-S zin?gRlH576HIsz+T62%C{4|v-3{9R`bsBi?`NffmIJ(WE{~QsScc;0g?-Pn3Lm9Tp zm08)0dj0tbMc{nsD#TcQc4$T$R(ELeXXWe{#OV4ax2bf4eFmlOl!B*nrfB88-}a;! zK5W*DKANJfE0}z)zzaPHq+eZ-z32SdG6~~dKV(pl&e`dko8!wbHUhe%k69%r32z3% zYc(~4#`wvp$K-}CQosdXOZ_5v#K7=OT8#VQthyyhx#!fW<1MvE4-5n>_0VIPe5*Wa zwkKydoN*w^tR&Ya^|9j%B~G3C(Y6M?3q;{(f;^hOzYtMuE~ zyL&!p22!GfZt~y^r3FM zhC3~qlMYm3S0aMAIya0pMr*m6&TY%JfwE|4( z)i?V1yE};dJJa(u7-5Y|bN6<&hOM5sdb(3fQN3rl2%i)OmIi^{rAbeN-m=cb4my+; zO=tg3?idPjz7#DOtPbB5^Yq%Tjg^ydEc}tCUs~ ztbhOcZg*mw%0k!bnyV?D{fO&~UN%`KPw-O8z+$u1%8MCzjP#>7^AtG7?)ZKz=Ul1D zzbF2wan=huF0~Qo1Wk)`k4LOZZ-*yu(X9(wsL@I{7VkDC#{)BsYy6lCSgpmtQRe}r&;2V2OyxRG*4sF|(@!tbA~z&pe50-KtEJ;WX%fg6#r%Ls za8SGJ7(y7aAlj4CSGwzMe;?_vPs)7NS?f0AzEE`O@{aZ{i$ZQyh4vj`GFy;Q_t<_L zgplU@Kt6cQ#{B1N`T}&Ld|*1Cr~ zC@`>x@%paM)afuy^l%3&bb+K@TiE7a z_5#M0;E6b?kT5xXLo9_HJ2UZ z0;DC%>3OIvsu_8&iYU1=TH|jR74I4$PvE~(5s!OQ@(HPSvOyW&l?r@#hWlpUk3p?Y zKe<`={v?*~d@I?RIGDYMja7`8^S;n1%0ymrDn?u~L?wJJ`;@@Z-G`2;b+deO59B7L za(I_^hFMuJ+;spiE2*(sz~@@@)DvUAdF`hxcsYGBmaFYz)#RUMPuI{Q&Q9eTTD-?E z5W@EZvfX*q+LI)`;;AWaCbMMrT;jP9LcL0MFPlzvN<=DV?0fSX+@<2MTUM4{?+fZn z=qk0Y%su3Srk1cEPOlJ2odNiaYa5mZ8$RI<6R3xisr4Hp^ZQs{)46$I&b-(>VBFDp z8v=fJt>W5^UfR@9Ft%)!BqM|wtLIbh4s873U(z8hXuMFE^8spu#Tjx1U3c${*lpY} z`PzB-4LWQ+jiTkl-jWHvvAB?FFo~?i^nNV!H(WS4@*Uk_u8WsSeI9+xLEA|+newwx ztIAlPAz)EK^_$#^8r;r$^{HBx`r|icycbgIOSE4$>Y@D2isE)*bvuP7TJGOg%{&{g z?E$_tqBoRkD#b=5H?^5yz1O+Hopm%FE<&*(bw~Ndb&jLo0#@B^hLG*dX7l*AVZ|H9 zyEW3gc8fu0mY1Ax5`K?UR~ZC4mV!pCBKAB<=h`7fzJ!b<=&D;}XJZ_v#BRiAd8S=u z^X(?0&*i_iA8XIbjNXTFs<8zgl)3hM`T`)Bi+U|5Wq%JQPIKJ$fEs}PEjm@Eb}oe9 zSSYHxr~4t&!p`_X*=tl?@F#UJq3U;M65CnEIFELefo}n1TaRjGlwT&& za>}U@KR}URwl>tO=H>Vf`0x{ z;22##CSI;gQtU*|nnI%6@c41K{008oz$3zCF1nzgbM~trsMH4d)0tlYY&04jL(0Wt zV?tsWfM_ttCfo+=XmDmX(`Mp*?ZpB9*W~3$ub%|nr>`z%ADKh>s!S8n2Jd%t4xOS* z#yJtkSB2nr?%s(!R?1P<%#Fn4)e4-!%YNquzK&NtX)IwE4H1g(#ocoTPgj$Pn31Cjkc zc4fB@zX>^e&esyRND;^}c=RUXSKj=iOpA@Oku$|gvIb~)DI*>18~3-Q78OT?xSsl& z9-JLd^s=yJk+BpC3OQ#t9=JMO_jyU2IQN_ z(X%q;)HXBO!5&P_+VJ3+jtOaX&#>XW?tV{Q6y&$UR5D&zkvX?dTVQXZU~umM=`17*47; zZ`{gfH@vErxi7z1geAMUa_k*!0v?W~2YUp6h>>y?%i> zIs*I|!*^jU1}Bv>t1AN$Clla>YzPBuhN+>h$_G};{{Cf07M$oHOuJl-(9dy z6G{Iakvfhxt1Wl!2X&gz{LzT;f1dL(yt8n+oKs0jY3axMOlym;+wO!n8X)~4AN@Z0 z{%pm`3n|!mO_{80v7FZm(1_M>=I2db_GkZb3h)OH03bc#XB6``oSde@>iY4DFOff&$z?C>P-Io4dC}IfE4}PpTED{U^ywQ_0MB3 z;=jUxU-GK;k@{Pc|8a-F2R^L*9<=@UkDmJK{r_+8|M%YiAbZ85pI*~! zKdvr@W3|~%K&K;qo$4AIgG3-%CWI%gFHe&>y!#*G1Wb*eevWs(3>z*61N>5au_JSl zdHvAHLG@UfRXs8~+H&!E80q0#1Kih`S)=g6i80Mk-T z{7;MEkE?wPxpcTkhXW&P9B#MNF$zTrmcbV(|qpMDx)ysVQ z_HEaT7pIKxG6EX?22jkSqpJ&VXcE5hvsJ1^|wU*{&c^Ckqe*k~6wJXR0~a z{`klrz87nVZ#>Kvq^z&6Cs8T%l<``PrKM}L6iN|*#aSF(s6zwzF2e~!?+6}FV5g$a zEPlWq-OfozM;Ck7SdW%T3@_R%&kvwr)J`C?06!@cpn%$a`5J{Xtxn_Q<%3o=ri!$b z4mr@t9h6dc*}j!`If%nX%X3X?p1izr^{Nfl#PfMO5=z3r@@zA*uvJ(HCj5!!in zWE5{e8OQ1?g)xF3eK`{`2Sl4A0kn;{Gbtx0hcjMSndZ_>opeKsp&zbnOW!jU>-_f0 zPoF*=lbBdoQzLmo#u7>HZhbn8QIF+A>11X-=8hJ39J6!q8fgk_nx4MI&&l~HD$4U_ zXAuNF|43PeZ`smU2SbNOiQ0M=4l;5($dnF z*AF(6nx16Zc1H|+PQO;@JQ=XDv7v`w89m`xcS^fgI8VxJ9 zt|g;TzxQCHApkF(n{wUO$k5O4F{yK?l|Ni@-`n5s1lT|60Xwx;PAO=CbO4#S)+nRr z>grmzkcJRjB0GyYANh4BD_H6`CFkwK@O=Q%4zz?WF?%@J-`@{_*xmudxwTr*Pxb8= zN&?BKhsEC|#9R93zNNWcj2`%;r<>lp}<2hv1yaIfHMC%Jgxa++|m!jBB~m^+!xA$0t_yzL_`MHqiA?WPQkc)=UV&ULf1 z)&TrDSyond>&I0V;0~Nuvc7$Lq9ptM1wabR5iosrvy+7gXE%=*vh-s5kLADx0R+(B zcZ?Xt;PD10EZPPESZO#vE}kxuR|pg1Wb zjpp3Z?fvs+59;hIY$Gy?0SXvkCUBi#)VhVAm;<81z^nI&J6a83b;bjkyNI=-VxS@| zi=@l_wFWt}vcMx=Gy%HeHOR@uwG6C(01K-gAm@UtDinbtBAmSI23Z_B=G9u}z6b=Y zIaoo=Yvp=NTN^(BqP%zIpF{I)NXe!4)QL&bO3TctCM+xrU+Le04%WqX&XlPT`MFym zWxJ7!c7Rszv0-V`z8TLM6mvm$>T{6!*v24kmxTWC;Wxk>8Ol@)x!GC4ryBC+&7Fb5 zSCyjoI@g@!B7hq6tF1p(=Z0eYAdP*qlbPQb9{OVC_00Pc8)Ld-upoYdJ} zNF$^G`wN}zZnvWYUmI)dJHo=cy>k0q4ErCpe|UA!tLZ5#2WQv0b(>(fmSO%U%2E7a zJp_*1$~yUh6dPp%^txu5{}{D#II!;D2PToOnOTafYeWQ_Lh%`zOV_VyAc3_pJZu9D z+y$%8Ej>Ut4FDZ+6a3nn0yq%x282R=LtxL;`gAW(IXsDKyFrgzR}PF7Fom3qP2S@~ z%xbS({t24?qX9?|h}~d?FS2XyA0cqxA8JqdE~Kifs`kA(KePR;_gbaE=G++cMgRxpzeotN=pPZa|KRFv9&}O%4GNE-cA4VJjx?p1+sAY!3qlX#x z7gu$GX_D{VAPub9a^vN>-2R8*CqK(WMfqD>7pW_Q+Lc!OURJy0d5Spzjkz{7;XPTD zC>mJztUf$)SK-I~#>V1LZorn#a|N$9*m(S4rcJv~Zg)Hzm{(R5n4@=0J}G1qVaF z_GN~?e-Bu?Lt~z>@QGs6LOu4nnTY$T0KPr{nA$nwrwL4d0}6nnbepX|u~`Ab8tX`e zSOHId{(ihLJqO(QJixRwc=jx7wV@*CGdhSlxkRVl>&?T54`UJ%7Oyzq){gc8Truj) zmq*=cAdM5XaU(t**g5Crbtf$i1+CmSiAf-n z+Gjxn0|PfZ0U*8Sk3M##l4EmLR#y18m#Xo?wY(M$H2@LNMkKM)M&muu42}By{QNYZ zgY&?;1Z@eOW0Hf$OwY`iqf~+S0i{MuT}BI;@3^j}NR5>~eGTZ9StDDl2{4G_6cSeB z#PHi*-jy2rXJ?&q0tMZ^eOu(r>C@I_M)V8}HV$o*izEHnOtL;7fX3y&e0>hB7R}u% z=;SzFqnk});RV*Sa8^;s)Xpt;z`P~6`??E{9>Xj#{AbwNXeEYL|eJC)zxECjYzQWgu` ze;CRo!7#I{%bt0J#Fl@>P97rD4x#e2Z-QTDAc@f|W zM_7G7xG1#vjz@Y{GVs)QXRl#%!{ZFPzxVTtaT}YPo6*k!*;k?VxTmwdOc+c)LsJ-VNcAN-pZZbl+L-!xp@%?m3}D2zib&o|I9; z#>6x&YA<-!XYtkLn#w>!u(w9kj^Hy!uT{l z_1F1reBHkH{`TqW%fI_We;~{xvl3bq?C_l|_$}OaE96^M4C7&1-EKN6l@}?iap$1S z0)8B3oK*27H%`zPBc*VdasH51->0Y2JAC!8*o;%B#^e5|Q{n7-8~XN0 z#_tuQgY50WvsU~r%+k_|uUj!yK_4^}^1SnV2j0ZXpp;v#@XhnL51O`whTLh;WYhc+ z5XbF-;#5;N71ev4*Ty{jHz(CcfqzwL821PfqfiQ^9ilu`+-dhQk+;K`_a!&=eR_dn zABpLlOW$`nw)J0?{awpci~r#Qc8N|j)Ff!DA!qY<6eso0n6mEi9pE#Z14qj{*ONrO zL(2Z{ov9Z4{Zq#e`S49}PQu% zScqahtJg-21nTMfBl~%*y_N#6=B^IDTF2qbeC68qhnz_dj#--2dEETpJP7ekBEN)$)W&e&}1c`yLtg<4dP?ua!c*WvF~Eqt!dOmonGh>Y3Uhf`uW6S4EDfUFXlp_`2qIPR5A z$kA?2Q7@5yob6p|x?HAs5i6vvxBPVfI<+v~@o~x0Ix;6F)m@BA;Mp?bCvLP!?+z{c z%EU~s9=JS{uQjpU3VgsqBvw}d((mt?GruZpwX)pdrW_IBB% zXoR|*l=-uobf9Wy(;}KR!qF~2q9g*Z-T$uEOjNJqCt{V%d?i@Ma|I}da9qhT?E2Tt z(fRPZm;c9beF4W{J$i0)4K})Jt@479Qm4^LA{XBZLH=}e-Ko*zS>C;JzhVCDWm3^ z&BdTpTNX9kqLGu9Tvo!;nJv5MRqA>{=WooNmj!&VMXW4h#%S;4n=e0OTm|ZnGY*~3 zAbqjMY+}Bu<|>be%EMJ+RvKpVtSKh44@x}k(7NPe5so-(0cJcT@)Grduu8>#64Ifq z)_#}GV-`wGtkbacaK^B%2@nL^ZUT4QXL~5Qcv((lyxXkH0y zO!FWDtsl8tX{X&V(1qM(At75ZF=xmi-*5WMqEbVLBbzc?O1=5`g}{qgiK&LJ@^Dak z_%JDmgD^w55!y5+m6$DRax`>xdCd70Bjuf;dflvlNO}WTqQ1laR(gQD!>8$+sfJr2 z+J$YUg`x5;7UhwK@T?udlnnXa?IAPo-JhSUEEH(RlcH!u9I3wHP<(FteK?YrDuw9g!QbnnAF+D12vyF+Ccy&JUVtW<|M%aBi||vi_*`n)jG67GIiq869(-q`0PCO&Lx(%a8Tw zr(+uVEMCHkR)+p~IE=#2gV*f0P@>4^TylG)y8>oT3ap*iU_IB?7MI3az#}$)^JI@p z|GwfL5V?3d^9MPLj3m{pf^peX&8_yWLg|HA4jzYr@>nefGl`zz6--L;u|CyfUJ^H6 z7?h+i{;-=ZKwT&@y>JrJn7hxVM!JB04ugG5(Gk#ZBQ*hMn1M&5tkpg_iup}(AMRw6 z;g;!QmR3nNp6Wvb4D~50=1mvL+ehDXJH~RqRs(%s@SH%MVuX@bjl&bA^h*pYB)EGA z+BVA-JI0Q~~}IeLe#Y>}eL{@#AFnAHLQatg>fmDFcg z(T4JcsLJ}ji(3`{)uTM{*dD~Tj~1_Sm{j*4>yi5HD4cQDsAK!h4jW(gwY;K1XN8Et z?-+NR?S_@TsLEq98~x14kFU{^oFYO;1$vfBu!^%`aq*(8vn;9Qc$ zjCzva5Revo2|S8fFm^X?$V>vq=ZJ<*keNJUFWGk|i4LTC8ssCO=`|=XTI0RR z#;=2-LRi;^@on;2#O?&v1+vrds4=@Yjn4hTjSj}~fFpNW)Kd9(CJ?^Uip}swwZ5JT zE%Z6=-jb?WkLdKI)0yi!_NPMVZNGZtCjb6WhPm6ebA|)0f!CMhUJ_nnjGzR0c6DW}q*QMa*Li&LUhJxoXZ<@i;^rw%uV& zeYT~F8$G-%Hb%A}@esX8U6Jp=rho!p5mAZi2;f;>@Ky_6uyWyRc zTTYuiV|8rkTT0?xPX$YYMsqlX(UsEBEah<44Aw~5tT;{9fr5k;!G*_Cy{chDv=cNC zAintA}% zOVn(bHs5Uabr&JA=50r(>$BE4%rIVv&2f}TL78ZrXCCI)4Sa&bS~?#{W8V#?%nLtz7&oK zQkrqJCkwDJA6i@kIrbT`AZYuN*EEM-`JyYyv*&C1pR8DbgXWOOcP)AA>vrDdG?|T+ z2k~MmU5(>JF1UB3r>ROi2F@3qJJYt5s2&lmq{67(2TNr}2Sf`pF<~{h^G~fhW;+yc zd}R(4>F-OR;VD1;In%A35?7S{Rffx0ocOv4>7kr#HOjTdo}nh4MFbeJoS6uAFf`BeWuX0K4__v453^2e!UQc%-NIT$nvj-dDJAx5$b8&kiKrVQ=J3Fs zR=%_Fw)cR2J_x^<-MddjDdjsPXZFhxm&z8X%VD`?>g>(Hw)E58kr(;iU~4<&?pYI1 zkYTl)%uO7raKn{!lT^{X!&#Gus{J{fztFhi3bF_0|6a~Dz1*T7!3A>4IhTes(5GeE zQyasi$~c-|c_z-Uq-Qr1%tvmh3p6_)Taz{@KzAi?7o4t^9Ba1&v72FCme{zed1xOu zf7hh;`Gs^#1(iA`@xxnN}(|Ewn$%N11Vry@G9)nB^6#D_N&;c0>PA5&4}XdK8< z8*=*QzkBu6DJQw#)su^VXmFwLu^QF)kh|!|I*X^50U;K-fJ1p3TEOi4{Hae5^tgzY zAht5Crb9`sW`siSJe`C=?7#!QESUKMAx3wpbj2|0OkjU#Y?H;@dfaU;wV$+}&iRj# z4QfY$ikxp;bxAA77HoH`dfz_3NNZWECED7Q9WR5`**pgZa~Hgg0iTjK1eE7G~*(+ zAMHeqI(#0h(|nHLpuH=IA3xK&W0q4gJf8cUQ;ofwNs3S6dExa@)fUd&FAk7bIWeB- zN<%$sYZjGsrkw?uotwankg00X;LH5_HTn8bY{;`2G>ns=ThY1-V^5dz-`-yRN*Vk`I(yO16tO-AVtD2d zmy;dHCw`K4Rkc0lFxkTddLQ1?0G4eCKc{u1T6Dl^{0!@-nN{|;>YC$M{&0$oB|H|X zrF}{z_k4S?5a=oL{=Z$i)utR!F4uK=sZpYK9YU$PB$7mjp0UJ`c zv^lUbKD~{Cuu6{E@SMZn+77_oZT6sbFxM8`I82e?joPkx%bcH$wmDzht$uA z?dl+da9J3ih#vA8L&f}ar8d=2hXUJ1Eq^~UUwNI}_yO^fW0h)4lDI+f=m=S-%ot|+ z#Jk%-QwHkLt*HsJvnJN!6g2fbE^Q*Ko}mKNMFeq-@1&!jnc2#)PGY`JX{P3MC8Oq~ zJT$`6auN|-ypM{KYR@NVAjQe~OHyyr1=gwd8+y5FdN{`7HX$A$wUyNg0dG%f4*9FX z(W!sSJ*?tT4&?X)a7|ig*_N2)68H`6w>xsFu0Ax|NpWDd5z8XxVb>cFk&!|qV3`tf zhkpxalG9T}XjTTje2rQ@DmP|%oOEbHLz`NKuUhTLZK=k;lQ!P!;OmmWtW+=^czifi zDu>Yds&2E9b2BY_$|=NYwk_9VLFm}G%Qz{a9veHIkRxE1W6*9g)Kr!vFM2;)ITByc ze+G~BwZhdJg}(pQ{YJdugI$tP8z#|q2`i|$HS>%p9==R~uqY_7AIoaD%lr4&mPzlV zXRuupB1F#66u>qwQ6j(qd-?+Wnpc zlNL8#DQjC6;dpvG9ips-`32@ac=ha?IeQ?~osXYskPTP1-YLu3qHR~StaB)1(v^ON z&$xnAhCGwp)%Y@#0E@b1IX;mX%U!5NNfMNE3Jp!gS0twA_#AF+R8U>)F?wbjmA1L5 z?+F`1ROp8C!kk_>Pkmt)u$w`HsD#~0?oaj^d+)up*a}u>tiWZ@dNw~~4`fz(@*SC0z{OyA(3>3{GSRp%J)iGl7>pE^H}0$jn(83;@(mL!hl`smsv>|L!m}@cD`%?UTuXAcd)&+g-*n&Ik0r{RJIY%N+iwGkq}z9uG^!Q_aDRh8 z6|)nw6$(`1&yRWb`#!DW^Ix!kA6#HHw7(!W>6Az>cW@q8H8SDF(0_Q?Rxl-WW~(KD zh~)DR?0>&%jHt3ugf*dTb_|PD{J8z+=|#LQ=L9!5_Vcj(`V;vL8-Ba&e0fnL%7S$g zf$lT%qyZn;lhc zk(6Ri8QH(2u(aZv$i;wOM_H6K>SX8Fo36qAN1!=Fs?eb|7W*;PBDH=7BKJOAK448Z z7Ssj%ymf7bI1X-R9mCM^u$7-p_dlF4IkYg{?q^WCq8ADc!*>c*VWFYh^;4TZVo93?BK1xq&lfNivS5CX?4V0}~cecn(QILZ={6kI4=Xwvq*TAB0*A6wONH_UQ_PEhhl?)E5`;x^y2}O z$jOsF4%9Pf`Cu2@pW!@gue^It5i|~)Dmj-u4_h{M^aykr>InOK+$hepMN!wJK)}ZO zzTlU%AZ}>VIe?#tI12m0k0Di1?WU0Yik(jMg+A(#jI9i&>?YL?bXG%(Zuu+2|dM=1QR}Sz1NtFXfI8rc_Q{Iibo;2r0})l z{yc@Z-Ql7D;+jxqXp}i&EwBRL`Y zCuC{}`o7O5_Pq>xVI4$#*qKJ+ z3(!{d4BV&b{_(w|uN-~*0&s=K&ans&Q@hdq2%R8>onZO&qh^Lo8#UBWd58&^t~)K7 zzM^5Rw0rJj`{sFpzg#jkxwxSxtljim z+^m7?sAlY9!`I>(2h99m`<+u~nSalr`Af=xSL2L-JWc%joBvmd3dK5)9zC+XfByv# zTacBN^_~J;`Rv&L8if1z?>>2blAmE#A^N;$agX&_H+iV2(tc1Gc*X#P{ps|2kWq&F zTm4Ie`QhDX^$hS1So;ZeAbj>Ds<><~ua;rqZ_f=+u69f47s1KfL&fH3FGpg5IZ@oC z-m9o=FRt9G&5MhNhuoL>8VJvJa5yrwaymKxuj3;n^xKBO$3FvRfM65IVV$0B#pnnn zPPf8V0I-UIsDO@>u-~#h%W!}-@QiaXnyh;rL&o+@~y`0O2oG zO7*12`m~bO->lG+tK5I7>{9ze1Bl;qh7AD`11jN65|HfHaBz*wQ^$9sx1-ywSN=vF z`2CCNRe@OGnrxNGJA#5*a~-ijEU*+9Wu%+i8KY}9{**G=G&#cZ&s#io=K~Ny_XG$d zFsb%R6%i5Hx<7knV|Ul^$@(6F@0tD0{&UYaqce!Cn>()iit{{< z^NNp*jWr~CD*_Or$-kex$3UqCLBakgfMLyXS&!weL?F1r^}%F)qBL|o1_Md?Uz$!O z*(8ROil(YnBRZj#lZ3?=qX;Kro)|opi9)sf`*SCey_rfGphBFsp753%3=bku?UFhy zk`FlpiQLE<+9_i&e1R&ZxT{Yov%BBkd!KYAMKQ~))Fvxckgg}zFwzfL=C)?+1c|IKd zxNbVC1&?rVWO9Bkfy-KG@ZvIbrrazOs#Nsr4T6tB{DZwvZH-fZk_As?qZxhhLK>Vi z(T=` zof<%J0T8oc?xty`+A^I%vrihl`V7#NpJ zdhiw!_x46Vl>=NLVDfSrN=g`X<^llGW;#GB9VAq z_<@&qeC29`&AsI_0$lguXOvxRgs-lxW#&wmRRC8b+BPdQb898^odIw&&`_x}OLP{k zcW(dLgfJ!GW^wEN$;FN*8#^0Wp|NWz=$e6`s)uzs|MZ$Oar3{d856!p_9@#NI0aMbfL> z!g^g0!pBUFjvo>-@)>{xYIgmiqod>4%!|Sf8fgIm*cDUH?R;KvelYt^WE%`EpFfwj zEdn@J(fcvxc(vv8Y;2Bwr;TOsiUHpDXH!!X!c_tG0ndaAAa*N^#zn{T7dMpu#~Ajn zd)W0Hr`&mx0dS6alHZAS$^eP`4&b$WvsF^y-m$RP-mOr)d4h%)}fXqNH9DlfWcFWWZxg$gLlyo5TLT))>^IoskK=00{Y5#lL;{X z;J3J~|y z@YY8w|A{Jrw&OvF7_?@H%2W{k1GqYX`J0+3)>y5{gY$?Le+yvQ;i=uUW8RBud6R)~ z(67*|RelXOnkdL^UhW9iDB8XwxZt57C5)t&6Dm~_9q8_6Vu!W>f|j1dNf}V3GoYv} zU;)$nYmjUa#O;kviLwpoW<(I?$^3ryu7WoVml}+Y8BKTBVx>y)e0IAz00ox^j@imH zzt28sTl=N!<-x<8Ty=|o;Y5sI~4*_?f+~vv& zz<`8){|&o?K-4)v6>@3NFR+_Uy%q@!2p9%~oD!J&sFQ^9&S(PKK0JdzE!}osec*+w zx0e?}y9ZF8sH9}n8-N26#GkCH(y~JP|L>f=^uIWJq>5=1J9(Bn1ZCeR_dhB7?@t-B zGc$7yhSSiVRJWB3#Akxn%&ExPzQSZ$6pvAF(~q=KDLOlO1fe7DCcA@Cg1~R?Ct)l) z;IbReRiOxDMSn19{GKlFF3S=-!RS^`_4 zx%x8h^7@hh4^H9b<#pPO9ENB};9mTF(zid;AclDQa@j@TUIw?B`2#2!Jb@sXIT}FI z&z#}5u2O8A0iZwJKQ94&U0_hTkBd^_wF1C# zt83LkSH*=?hZwu`P40wo!8;Kg&l&}qHDb6f%gqH-9HrB11B63p8PN$0%Ae^?Cw%n? z#@>4MAI2V(we|BudqI^+ z&hHJVP7MV{RVM@1!ootHQd8p_L*N#2yIz-*sYXlNr>CmR*OxdgrmXxqT) zF;sWaaB+1VuazLgBw|%Ybc~=m(U6g~OzqXqb*on+WH5yEn8esfC4vx`^yTD&=l}a7 zf*k(=#sIm&RLz`;~Gucs`Snk%@|nk5!tgfp3hbd_o3&tMOu^D-g7L zF#R;leYHCRbAe2QXkTv7D#>_u(=l)sW92F=2>ohG!**vv0n95ZfM>^T@vW(ZOBg8r zwFiv=k!Ye*{iQR$B@xeVwAh&7-9NdqU)Q@C!h-~6vk1?|q|t1W2d@SI$zGs+0&M&{ zJ!Ip5?KJSuMO3q4t22B=tc}tq0rs7D?K-Ydx~kF1phTronvv%_i!?yUVe%89-u5T} zUU{tML@qqzpfNsA1nQbQ_6t||21t1oOQHO%@GjCsp|z%)gF2|Er{_$KwI9&?a)4zc zC^W%r7x4xm9ZAHoM)rIkIn-(^H`$T}JrBvxiifh?^I{2%JyWail)o-w(=R9{k^YZ^IbicHOSW9$cQy| z1ZI_a$|c$ipSE{mVX|aopzOstjap^F2VT<$`mi;GYn~Aebrb|<^lSVlkSc$rmq{ad zgdjB3N#ABOoX5zXG)#+bN_zgEBX||#zl)TR7FfJs(q>H6oeRH(Ic(1PTdZjRN9T3O zk^28ss{{cFc+7T}RUie!Jk*dj82;lURs8>O$W>thp^+m1D(-H2vber9@fX@Iz&J^p z3cmZE{XfQ7k6H2mX_SNiMJun{ukEe=kE{rQ_Ss66=@6`c=H-9KSeYCPfZWV z|Gz7u2!()UP7Vmf7#^m40z(G}`{KyIBSm@E*&*BxhbbVMDDwYOfdfJJqNn8KOe5k| zvt1N>Gut)#$-`ixe|l4ETcwe5X=e@MDtohaN}yOmxf|R`hvmP&Y|Tx;8&nGdg9un$ zoq-P#@Yn^_+V16X$;coI3lvd7M57rB^Oly5&*<}fF$oFc|Kn{(9P5q^5pY9jW%XC+ z2-luoqf#9P!V^Hn9GSXUP^z=rTiw_|IGb_rbxVapNiu;?v_gZHaq>1|eIPa+2(?2? z0)9dLRgqwFw1t>RF5F%r$})hUCL54_=IH)$AnfRE6YW}utUmMGl~iDA=o|d8-(f31 z=RaGhLXSuj=Fjj4?!(Hvl@d70o73*jlcXykJ-1s)ZW;4H`Z+3U(igHIi$77DkbzhH)YjJgb#&ci=Cs{FX=jFJ6@k___ zMCwj*Xx$DVf)kdFY%$Ljx4id*6&CMUoZ%PjgmrUo?r#SbYZ6HxT{!2tpI=Z{<{oBD3tewSNHC-hTPAei*0u(x25Xs3B zPb%n*W+e1`!3oTBu;r(esDEfQ8_Vd_ZE>qQ;9{Z(@7Eq2O3mg{o`h3sj1~FhbA{d; z=H8V5BafU27!erWuc+;*2Igo;Nsu~z;pI~={=O138%fc=zm5$o5uS^Y9K#)3a?(50 zfq)9J@}0Dd3>DSVjww~hDm%x((?<3Oj|Pe&(SMnQ_3^wkknk#b0r7D8COL5z`7hI_ zG+^ffb{5Z{CS3P)sO#jMnzXU7bJ72R8SQ5QlQZ8VL#~NO9=(IBp_?#xCzj)H_cW6J zHGTV#lL`a`B}_t?GF>MTQmns@UUi^UiDc<^$kS(115aW|cK1_xJ>a9xdFN&qDcpiS zgAB27Mg*&ARm*d(&-bzw3suF!6~U^h&VKK`9b(#N_JD1yQs8F>dF_44I*pD==i+*I zz0&yc5`)u8#G^p2Uvv>2HD_t!?|^e~PVvV=^VVFKnfhu-kN$F1fp;dO&h3MZwfhM) zOGIrR`bG9o&gjMiTyN1L{3(CYYpI^P^%WzJZkI7Ps z(Tr}fz+aYWfPm8EgbZdduQ}oU=~c@CQ}HLhd#saWKJcnE7Y2Zo!2no*fv`)$pGZbf zlcnGVtx~tPaPY;T+4%Va;@a95p$G=S#&(xZxXYomxTqTEpD30b1 z(JcNB!^OQS@V&o;DHbeb6wX!}w{1f!w9nrJZ{1Xrdk0h8W9Dt2`JD4}o6Z(t8oQ4N zLiM)O@d#$G)_32+RAxSr1a<~c8YJ=ZXC8e=)=E!nD3_*KaWIZPiur{-NVU+%nFj%pRYj9Z82sgE>e7CzJ7EGrSpS*|oT>{}YOa6s%-~BYNOCXBOHg**U%$Ke*pDb4{ zuJehFZxe6V4j5zC`zN;1J1f=S^iQsKyzNv<+U=T31*(U zvY8m%l&`0Hqv&$m4@?P$BOJ;wiUk=^NJ$#RR8FVT_t*~mAIvm3SAi&O@chYYag*du zgw$O&NE9H_08SYiY7NI$=7nliii-K;ndbk_GZi zh^(KT45FWb6Cy43PlmwlrjS9s`zreY6wCk_lR;f~M4mt>#6h?#l$67+Ne_he zPLF<|hQQ4xD}(Pw;asjKXaC66r(*vrJ%R{ymE0c0q1&Gveyyu?+UiJ(W{k(DCCxst{Y^vA0c$ASAF&9k&{?>J+e2hd~S%Uy}K|J z9{M`3%KfL8sFK3TLb9RY7;PT8NLJ?cV(3kf26|4z^<6`cYQyZC3;s_?9z1hA9`}Y>^od5UFqQiP?Cub8$<ujK6vw~?u`Pqh7bpH)8&Efeu60p zt%5=%5ueKd@6f(bQ_&F*NUR?)JpeUR1TC)EEe{&T5jm^>GW0Y1jVg=~38H;C6k%e6 zXcg7#*B^nAJF!1s$L28fQ6l*+9b_bS-!pK4unt18Z#Z2RQ?0Z?xadeoCTq_?Eb4S& zsw9rdEkVrxLKS2ZWQ#9$z{2&%*^CE=K(u% zff7lU0yhZ}U?Bp=4ddnZLE@8d>`?iCB~Nj1aB!bLrzpExzazv4{pDP%NpN}&$RWvaW5bK z9T;PiEGSWfklMjY6NEHCZs~ucR8a5sK@4nj(*RNL=D~vpPWEF4@cKlGC=P4z0)RtEM)vE`QW9{yeIh^5LULpjy{pwK8aq zV_sJ$lp?M-XL1_@Qa!V?=Uh@C9a3R5uR34LO96%(N|<|(+#^j8ZBgOxN0hdZlj1Fm zhPnv~!e;I^fcEX)JREgDwV zv0)M%oHUMw&EmR)Ml~>#90PfQEdy9+=%m-9O1SI!^u}1Owf@!hwP-jZV)^?w6QTyf z_wfHUoB+y_N;ctH(GkdI--sx#wwj|YlLNl+mQ@mp!t;s5d95g(Qn&#PMUL^r0pN zA&gQ(+dtGBpE4y&pO%wt4`-FQYEO};N;}UQ!}ee=o8so1?C{_Q zm-?vdtFEd{jnUi$6SF#(bbF$f-qd-)@~&Vqw5={bbF{uJfVQt?9E@8#x7G*6CUhAZJVhhpdwKNWYCb({9cT{5P%YEucx z9^Xg){cha^!r?ZJs&{JVHEcGCrJ*{0yC+$Oe(LLgL?$d<#tf6l5yCJ09SwKS)NDh+ zUJ!oc!ql&R2bVcZYYjHjQ4N7~yR|E*P26+E=@69(#|T@^{q7xtgopEn_mcs_<%iLP za3#>pBGM7V$2a-T2>y zlhiH6`P)jxcVjEpE?(w8XB%--HBeP7pgZxPKTF4E*1)uN7qKl%imfeCF?h2OFoU8X zl1yFNG+)xtZ~X=S9eegenW*!J5v%V}saVuAC@dLFOslT-Q&2d7`QL`X{T6ROZqSS6IIG@_P4L^4dVZ>`Il2gVe1CIXCK$y5(ed zioqS*&tI7RdjP@ES^FWQ;>v7)qR887let)<}jovmpau1jB2zFIUXsTHP1^v(?qlADYjf~=> zrRc6y8mhPfS;6a9!N|jJ>2MDEg4ya^a}#Gg>6IQd;|VNc(a!K!2C|aI=wIFS{b8jy z)lg08j5Qc7Ejrl9jBltH+_5~%?T=v}x||8H^~p$LQ}5!4@@L7(`nE;r1Lo0O@uKRl zNmdAHVac9n3w$p4ME)tAiARDZgsLqjr0J(Cf|OPt6OAiF3?|U#g$Fu)e=P6dHAmII zmd*}zC0()0JNf8ReH66HlBt{W%T_D@iqrBv>bv!FI(0oc4RgV4OuHc#J%WSf9=_^ zW72Mse5$IIthwvnA0Wc~Cz(BHX-ZDAU%f1CWf~`Q|0!OQ+|W%)YuXrPtE)Ge6jv%% zdGoe2ZP*(7n16Y(iJ6AwRhxgqUR;X+X&dX}BFnDQo8%OOM6+C|w)C}|T`rdu#;CUD z?{o=^@A0}6hJ?$f%;L6j(i^Wr1+WrStz7k`2zB%dc4P?J%J0iyOa4bbT^1M-{@r2t z)weN22FDinZjCm~I5^8;k&%x;!uQ7y*2p4X7z`ccokKu2h`{|G&hef_EM(&HWRTwy z6vP5GzFrV(y3g+xGz1eoTAtQV?l?QO$p9s_G&JZUMSYM_?oeXIef`bCq^SaJVwYA{ zyi=4kTR@4*qnm>O-!)J?4Mm>j1sIL7CvqdEbwJh~sn!-&Zlw1;7j*Lwh?Uj;(jEL} zWE@LhN)a()8?530Xv4FPf^4K#gP{Qfzl&fwDdvaMHHwqe&1KvEAIjGpq7zD{S;XNPDKtj zd3~J{gKr$-JPvZTV$=yOc!>f-u6;PWeDPSeBq@iAkZ$kmR!ftZu~&(B?eU}!hvm9- zBsV4x2TGL_dLH90tod|Ahv>8w@NF`=@Q(Chd2Jg0th9X1eVP!ADLk5Tj$3S*M4)fS z(Bd4H$h46XTP}n6yy7O0n7ACAtxt{uzRS1Eok%&~_F(L5%&r_Vb%JOt!c+BN3(mQ-O>y6nUU&pWSzF)KQI0WENPHz_pwYhe0#l+fE~Il zC*@ski#&WCjM~aJx)G1W48=0^X`~G#{KnB%Modl~3Gq0sa2~7XtmS!Bt!WG`Eq+jd8{qR?8nbZ)@j49bDR%|9~TMd)xd+M=J%(D*QcTUFZ@h3 zW!Omuby9zA?2lq1&!D?^!tHWmT&#p#cG;d?&*W2n$WjUL=WErez{Z0)7=A1bW8pV@ z*@%mYDIm6VapSe?K(|fSGs*W^qhR2JceO&%b==Frkx2%ieu&-R^r5R+n`&n+b_@5R3g{D z<{Yzr^plei-5#&O!f@y1HyGN-2ALTBUX$ufzN|FSKa5DT*Z1ca^rk5yZBfjLL#a*D z#i(!;O5CDn*AJM*4i^X$nb*mOOs>`Dip`x#St{yU8ure8m^oG8aLr*GQJ@p@}xicjJ7 zMN7|r*G&~Gvwl^ZL^1WHYu_&;_=R`F9A{Ee6r+2m*`wGJ*6_nQBEMuxsSjRcbn&wN z1tdpCu}BGZx5%39D~!Z@Ae{Si?z3w$Lt*=GTQLKhAN2gz+%hE`KL!7&DNdCjEjfsI zN5t_HCWb;<~HLrsI)&c@~Jz3f!~evFj8p@rgXL^)$RU7Pd+ADKF8+=t{CO zYICSezixXfOnp#DV*At9>#5<+56e0+cJ6j1L@bSm4#8SD*j%4L z-mS=Vwz3w4t+v4O?TQAu_yuj$4gm`L2qp>ZS9_4{B;V<80HC04p;|+p@j^i^1A|#I z11QgD55KmZpDH=nLj166qlrqG>uIs|#=ur9kI&ZUxQ9Cc4>VQ2139fY-VjiI?4O^L zz~|Sr2dhT%gJ{68)Pdx*8Hh{Qc6tWeEV`6Ud{4YnR;zMSz#}DveqXGvcCB6SkK5+< zu^odSb&(2A>_D$=oGudWZ6=E}M(3+71vs>B9W+*&g=)bscrm?jsW8H<>_p7(rapOB zVfW8rU2je&_CjH!pmrkewB-GJNxx*b>yqy4@Q}8N@@`OqcrPS)oDI`3&6zT%#B3}l ztQOEfut^wWj9b{>nW_fcU}VBAf{Qyzdx_fPW?U_eZ{`}wZoxKyb$u{dm9N+8CL%#WsJv&{~^|@+RMA z(q`u-;NWV;VE#H|)+c{obIdfEs{9}r8lMT{;1f=iw7+S_)wubnwaBq?s~7&*kt1|# zBGfe7_%`rzL65)gjh~GixRRNs7n!pclY6Zv{Y`~D4eIqpo=dfnS$LhBwT+pCM|Kn% zD`sUjHzPr^wD*FjwFwHaBkrcdiSWdgN;BXKP_cv^KQvVVdd7Dvgz&3D~eqGImCbt1K`>7wN?F z>o#oSg<+FJ>Z)62JImQSlduiyp5Cq|;zG4o=H}&Zz%Lqo!-VDOqDd=1Dnatk2 ztDOaxaptJ*G=Ka<$M9Y>z12l`-MYwhXd~FJ_M(xuur86YsC#f!91*gul_8+`HH-wDl{1fH-<7*pR44uMTkJ(-f7B1S?!bVmY-jWh* z!w(l~`HDq$vOmoCBct1xZ=Xnq*^I`jmyJxSk<*TJCba52owRk#Of+i^6`Jg;mc()q ztFmx2*I4qcL( zEg8AZw|DU@vi*j*6X-TwnP+)iSKyX*eBdRkG%(E_-Lk2@)v5IX8@3amH0G%}%o)^J z#%@tjpKvEKFz)>{3ux4E&8#wWjT;u#K%MMv&MAyI4+|R6X>Ct~16^`f^Tm4CQ7x(l z3~X{lIbohImbWOXZBDGy3m@^$;V~_q#DphLzTA`~gjNyG+EQp@4>(q^LRA$8_Bh|> zAB!1YN9h&i_Ph2j?~90jn?o^}Df~*xeX!0ozfSD~U&=)Z8WGQC;o3lb-i61j-+*&N zQ1*i_C9_fJ51Izv5x)4f5;)I;POka$t9+Zz@dVRjo01ii{)5hf9$3eGvPx{$#6+h3 z(=9%Bh8?A#?SS|$8``tU%;a)7T|rmf=}w_BV}pKAT`mkdCh_6%=nX2e@eF#|Ue&NZ zBfoyBV`_YDzqgO+W78UH4HYN7(Da{cJGzu8V>NhZXVTyN_xrEHxv37a7<7Aamw1uD z+a|@I5fP=RcJg_FWa%cqv-lK*QhQ*IwX^QTBZcaXV&Qt{lRi-@N{xZKN2;^Q8xq%V z)0;+#o3zR$+>-X!j}B}O=s6lIqq-jM?Q`(F9-RI_A`?#DrQxtR;&jKnHIX*!%dHAs zhe=StCRMUWGhOwoIn3rvqYUrGqO7?5Kd(X!F(?Zx+z4FSWfpI{xo}Y9SY~5^57isjx>}=+>bF;>xw6I2#^4;# z{yE3bf+uU>ICtTZL^F$%JB6=pZ1BJpuBr8N#cS=(XvU1#XcXl?=Hj|(sORZjt8Zvh}+16Inx&NNxnChP7F{~b{+%<_kO^*bs9wR~K z8l07mu{!Di9b;u}ZMo8kSOh^4CbU<5-?J1@I1NFYWBmK}3 zsZ#DhGcdCUqCTso*=KcX{^o9u81e!BjM@E#&;)YIjORE{Fv*^R#ban+fDf9-dl#<8 z*oA>Nn5%!@Zr)GZxy&qV!bK%Qe06jVduuJ9xPD5YegRQ`@dUpCpL7h_!>0Y-%rME9 zu-OpOyU+ELQ<}^DD9LTB)_XJTe2op5cfW2_mr9Ns2Aet z^VjrC5`{eKI-0I!5ppK(YHVnQ5-*bIhG)N4YA)`e3c}z>Dr;eumGgY6NH2W{_=c(UMXpg z0&Uy3qVg7A%9r|K$8xrF_LY?;KaUhIa4*<>*y=Ahp_`tmT0`7z6`DmX1A7y*6CxS@ zNPp9$U#49r4!^hN)V}ziwejtiNuNJ=o55g%EG}R_iK;|dude*^B|}v1 zd`=psDL=Ph6Z9*oEN8W`Q`{uDa&Gb~KLKMOMA`iH0>?h|!OxpZ3hh5k_zKqSe_H!@ zTA_`6k(solfy*Q1(nq$2+cQ3&@6$S&Tu6DJr?LfYqv}2ny0t3#`7T09%iAX?G70R( zL)F6zQxACgJQ`+;`>bj<%+!aml^i5;x9Top2d$OtwYsQNKRkVc*QiF*3lIN?td2kql}I54awZQ+hI#wp}18+E?ma)_U>V= zw=7VCvKj`LZj(PJBaJ=B51yPe@5NJjqkNm*jOuje3Z8cypkBd_>c-}_z;}6&qf;3} zit-hX1>Lp(604-uPB9b-)}UN2bqt+-7E4XlI$go%ObY5v?PTy>@;{yU zSrVpR>6r|llvs44Ta9UOGG=$UoH0&XE#Exuql-JYg8q;UZQ*F}x#qTa4p0nvZzEpk7@ zso&U&g__==pH2s+PqpL8+lc~|U{CV~pGCJDOzuR<+FpUB3{{_#Bf5Y@HR-8wVR=AgX$rj1l+8J%$sKcKP3*b|6p3J7UK1e95 zdzO#$Sn{ouA@xIA+|-Yob!}iuDDwQ2XjAF?PuaidO?W?=Waa4iMd@r#4Iak0BU3Hn z(_keL3x7`Y@hl-|V=BnMD)Tmm_%_hH4CnGWbZ^2W865)Z=6dXIpH|b!d~x%*Tlb>< zpq3VKd3kv%z9L@GvVRtzij=a+OnRcK!a0btj-lQ0sd6ZwY^b$$iE1XKl?gqThIgIk zh`F(isn5js@$JGU5PaIBoKPBC*FLMv>{-H{3_I2zPZ{%+X?tV`lG8D zPt6^Y!v-PUL|(7lFI^J*1Hm9Py@R{X+T-kG+04JiUDWDVSej|z|AKKBC0)K3%=8Fy#?YQP&Zw|7RNUH7 zbMP~Ez4rlRjKEiB8BayEwqVDq1Sg${YLxmfpm_eHyowM~!i<07|B{>o_Sqzg0V zle-XXP;a^nev89Z-f%29=qY5H%51z-<+<*yR-glBscrD^(H%+WZCkDRp;wj>7EhY(&Mampda~4lY%a z)qbeNyy{P8!eq+@iY*>N*t9Ryo?sZW60P(tL|mtt>X*#dx;>9_uFA~Da7Rxqf)vFM zTIV*I2+=?Uzf1jic|ze;+H%Lu;d-IB)<(%KuBJis1RItl! z56xSE(x~C}gsFQLD*sECF72jv8TjsdZeK%zcxgLMXN*x0cMtg;Q;hUD@Z#CFLpve- z=fpXC=gdtY;)gEu)!G*RD@u$CqQv;s7E6o?mvH;;@9)boF$IAj0{|N{GYflr6i7X< z_Csy^d(~yyHyNwc&uQgzAP|QJoi6g5c;~atVY%y<9pSyb>0oCHhx2Lu62sA_f(ugD zs?`SA0BriZyo?l^|1+~#qv5Tq+H(R4lKsUdMhz1-us=ol!O#P!YXchMFBzFcScLV{ zUVf;roQTLszp0+FD!v>Q?&d-|%7kkbiHwYxbd{M#jy#RabTJ#BI%MnX+hCdoUf79p{4(;hqo)gUYqmM0J8Ko(QU&wt8@mpyzf|7P7Xt@Q z1S1$_6%SvFC&W^^Npb|i-!B*>o|GHVV93YH<@-9gGU8)m;1RW^!hxNu9JA(18Y9*f zmLt?N*>7;z`|Gj(;FB_{%ZAjaqHF>xuUf~s{N&ZVnd^~@01 zpYmKKsXp4^_~ymklm^Dz_P~pfj_k!>(gSp3p}xkGd<8L#R*{E=SP-KO4P3u|bV)L1 z?AB=ILi#EWraN-6)_uFK5ca{l>s;Ka^;c7NA3{;o1{*Y2Axr3W?R!(vD%C^~Ruml{ z#yzjP)Wpo%;RGjb50sFVF3z6G;)`=KJ4Og=3t_5I*+^zm=QPr<1jYxit0{jJI1=fL zX$-5SqpGqpEaB5x7&vDd1Vp`L$QwUXYw&eYsVyisDbg{ihFaOp8%i}4O@71WBVI-rO$$VQxsuL-{_&)jhCKKgfsxeARhD|O9NNOF{c(o@J7 zCp`Nq9Sh6w`yIMf{tbcEnDIBahEl;8CPMhx8UC<7ncbWG1nzu|?MK;mp9}SvB_wd= zq6xNdnSS`FPCfP*5x(5=xjumDc{|>!vSS}`1s)fYo$t#IrpC+`j+~hIC554p`Lio> z-{_#7?};<=T=Y_w)D6(rbI|3IB2f*0rqkbM$wuG7=Q;lT(ND7VOe!XrV-XtgLu?|N z&v~cSuOsRMDdT{6;gf^!^P?;YJ)VvOODotfsj-K%i6MXcd`W-23On21Ym36KIHYJI zS)WBU&Lp0Hw^}uFUMDyKl2_`IVq8gkLwCO$ii(66$;+BwHq!A9=Vg?a+L)hBIpFKW zJR-!(K6iK#3{#ZodSa(mBWM_s=T zyV%nMJyV%ej6>)*PpRkSE)O6hVRnMh)al_)Wml*Sdl%E*-R{V5N0-zejcpX1z9L^% zF)-BK+TkE8rHu39QH5%7b91M`NXBn(jUsifF&yVl(IX68CU5^b+4`&>33XzwuC9Jn znk@tyjQ|@vDpGKC6=xy|u)*uAE(#8>&hR7AivOa(*?lp(N^?$l) zJmR!cd^;{-`H=z>`sF3@AzS?dp5BP}b*0vN{ElI3bO9PE^u#+LL^?(2vpi|J;V_!U zO=ycBOVl?3aXK8v3<_RhEJ4RDELkh6K*9v(+WjcKMQY2Jbd$%+SMdWg1Wax$>$dVp zk7(M93B32|)ti*S1fTO8B>-}{({er%T)0D zu#1U9aElqlgP_VhzEQvsHB|8i^InZdJVt`%03#|y!|-}7x@1I?BCNsovn{C@7-K|P zSXyd?v9x#aSbT&9L@OI(smDGvx<%>fF=@w~F-p~DefK@SdQ!SRl|1~kNKG%-tgOOq z49c^c^zCi(CN!}`KFFcA@Z|wL=2>(&>Jm|DTF z`#kK29DLAtDxY{Vq|SFVzs{!~W)P3bT^HXqf7_y$m&pGb3o>)@<=qNLLoCCus%^Kd z&}8=Br)M4J@mBN|$#ybnqFa(v&8d3|wourXnLS(&vu+2Ua6dXh1F@na%)QumIh9As z+oYVbc=69-N;OU){|y#**77kdU_|qISc7Y?EOSNxzfp8dkx+~2Rk#9qTl9%6)~0du zJEY_yVqcHr&jkHj_XKej``(5-L{~nQ!(4aPqb868?|=6M+dD4p%WdCSt~6X;c}1G# zYwgdX)Z~vEHETa=nm|Q^Y|mS^(q%aX@cdq@WjZnZLXp0v8#!-lw$z~2fM+D8^l~Xb z^!G4i<}VA`{~ ztTjSKv=*1D2)dl(X7`G?jm|Y*+84a{a!WpeBf4)_g;q4KRpR#ybcigVS{J;H#8>nC zgO$GXE9jw%_;0bpSePuXu%n`)d_(!-JZY7RnrCMT%^S`X!=~*7K7anZwG}`ijJ0y> z*wsfN)AR`$k*V(KaVKY%xkh)rQOG^U&~&<@%o#VjJw6%i9;{;WGVY`;eu$WzaJpWz zhLCc&n@ko%yON+_r`SrEI)m`uhR^Vn7m}DgeSIhY5?a)ia95mq_A`=G$8GhLOs09hJpb0> zO1|>&Nm;4bumNr(bX*MIqoI~yk@9QR?=}j>cS9>(ch|!)IGRx;66TZ}6+DU-s_=I9 zLB8-6$F#45^9C<#Vl;eM#C7j{r{o~G4MSxyub$D%_%``SD?zgDUQaNMCZgSF4}$&T z^)EohuFt!u%k|fLEfdUwoQ3-~&y=8JEP?Q&;HuJHDcQ=%G%Zr9b6_3OvUp_l@^k5X!!hzRx0KKV@`A9bi?+f$KJqYb{di6pJ~ zurc!x?)Rijsnc|Z;npMLFQ?t@&;3KU!szVug`SoK<|O!Q`2!!_rdzLMx_UmUtCk+h zp9^ZdNeNuOv6W`8YZ<5fPV0{k(MkOrdpVY}8=98fg(ED;k6yC}>V|f!)Z?~3pCoQ; zyg}nUBWe0RaI=fT(|CA^Nb;$KdiI9?Oh_R5uB*E=)Z!iU-VsMAlpvrtnjzI_+$e^} zo@9H1mb+X&TavikZ2mD&o>{V_y7s4(BUHjGROvzB_4oEpaoDe4-%E=rf$aR`=|PZ} z7t$Ac&7fdH_K&8g%IJxbD1f#A@lyZbdEHV*h}jN-EC{$^y=MbqU-@Zm$&A42IZ8@+r2>T`So z7DbBrf+IZT906lzSe=%aeeOKkqf4)EMU1xtl5Vd8)ee1e}gtPqg)7yxpNF^_c zbLtS5QSI4@LQbpICtxCPuADV)WC;wF1YYaMz|nKqqO2or6#4Q+3WMtxCi!6tUen*N zE*N~I3pk>Xym`6dccL!8l&RkosCbPbeH^xAJ~xRCy<4J}DXzs4^?Cldj`zhgvm5wP z3*$(ad#v*-UL5h;aho_FVYXLuaRpf~y1E{*fuu)Ru2Ww=6=VmGz-g!cHZ+k0B!#k~y18x(63BSm(_%w61VP z+4~k*xMDbpY*)4I;?#FaX_}LkmrbOh%b+8|FeU5ju5dPDq~oTXuRi@n z|Cy{$r|BuQfPT-rz4x_i;sJr@AZ*o=rC0)4`tf=o+j6KT+=sT**}VSu<^rEdfDCfc z9@9sc1e;iW`$RPd^B6tBy6B<fff%b~{;I@UBP0kdB8M(A)=!e4n$RcJDMk@b3WJ#AN} zGr94cL55$B`9d+2UO!0dWxLK*L25>I`j?$$UQDX4p@5F1cH|8$-aC4#pqd`;z&e z0_)ccpj4_=X5N%y(aTqOr-Pa-YwPR2scpVw)gsTqP(-J8{))U#@O7yg$La1c@ls+d z)Az&I?d>MsLOSylyz1)e&xQ*LTe)pNgA@w8iE?NXZ|zEOk;YKAJ);fUj{hC}TDw1P zyxMvr#KxW~Qk2yY2W)0+HqUJXb3k@=y7(+VrrpMFyEERl$*l8tX(>RbD@40}wr!ZJ z{`vLkR`9@5;xmxPAstNe5i^VqT6lGMc-ZW$)0JkoHzS=tet8-pHI!-1>2$X1S){?O zvpq(gqu4+oRDXg6x)S};VzyEi$q3#RE6tIsc^U9cH^q8V-&GX*Nx&$ke+J zpXe>VO3ybm;Y-B)&WF&FP?Ls7%KP{E) z7>qycaH}FiH0ju>YeB}P+P7vx1#Ju&!5EYLnEajG>*&@3(mKq@&|H1Gho?6jxT8!Y z0q-(tgXegDxT0jDKlm7M&4@n9%qB=Q?X=2OC+Waxs28Ja29gndZk{Ss%%3nw3;hLnGZKR**L%ZS$Zc{ zEGI$ctuZ)_f)S}dIopSoG2MjM9^zsA{D%)MB;#8zBlYK+nMAB+QeK`}&4|Z-wq8gd zjry=MkiG`P1i3w&!mtJP(+UXb9)Im3pV-8n)1&M}|G(IKtA@CmCTetm;10nZf&_O6 z9taZL-Q696yCryny9Fn>yOZGV?(Q)7+2ob)dCzxqe!$rmGn-*%w^dhlbyuzRWHL(y z_sgng=}a^ozn;MhC(P5#e&H+5#m8E;+Q%M#l)gpP_V^w$mk8v4EqxDlG^0@kr67RA zu#1gyW~VSFd3!=9fvWRCNpZp-N*|i-EJ7woAUO1w`Nd87Zhk`gF+u9GUmiO;6hCCQ z(FO6GnmeeCI_h;3x|b#3HhQs9aX^Bw>K@4xTs*DGXdJqd6 z&5AN)IxP-&j4I`HDob(V2$vL8--|TE?^bxiZk#}*1gQgYM0>dYW8x+^GR=qDlm}cG z_hA--C$!m_dBR-~*?bS27ffDP%_5fpXv!Zb?&;QHHK6+|x48}nPd1Cro?Ex9jES1> zhoc6ZP!0GXnV%JOdFmcJ$$?lP5(XP zN!Q%Ro%v~YvWJAF=2JnPsb_M7t;|_DC2CRT6L*}yxbA^P8Uy1o=4NF%2(&=PE#E#C z#kqq{(p~dVEw%BgI_zEpF!6w`wJ-&mx8`G65FzbPoNYSwC_f6MKLWT6d8x^TKv1OV za7v`bq*<2F(|yd~_Q3DPP{8u$06;qClljOwISHiP>eg#zYk)dY$Q3hM&yjoeQBhIl z%-Qjc&CI%+6)E4q!Wsc-C3`aricNHYDq(gTK)X5>1Ob2?W9IA)Urvc>>F83eXLCfQ zyjl;e0ETO<_!4D*!1mviX~h8hb^w?I?(@xJ5~nv0AD?vQ-4lQSvNqYPfXm~I3*_9R z0CAqYUrsvu`(aO`2)}Ano8|(bHB=AkB@UaU0I(j+N<1xIRR828Ccs{r)UFR97DWin z#l^L6i~WI(VWG|<9EjGZd5iG&?OW1^83s50>$d>GZs0bZYK~UDL_Tfq!g ziV2ve>w$pO(vjmLV9yf34W6bPagC4Surg%GOT>q#Q(Z>_O~HvY!%SS~JkeDyOpyNh zd9995(c)1o|mqw|mx4z#n8VbyZvEV_^H|Y68@-Ra|R2U1cA{u2D<{zSB)U4li!L0GP;C8x{nO z&&e*BWr}Jx4KFKIZHQ|M#V{8djJUx-(w-ghe!Mz5-Xx;bSnG+#4vT6?I=%@(?})3t z-W>w&n8wS&W#^FQo%)#Rl)eHEj-LYS!V zN&o4kC^qMI;sIfI6~N?owfqp{VF_EOjb%EGP(rp`^%h?=%M2N$W>m>^9RcP(27Pj7 zpWML<_~_RlXR1Me*>{{&)vuM`X%ND6Fj2YPzbQtC@bl>`-A1oQV;|5NZRMhK8todt zfARFe$d>aS7tWIHwC{Hvb$2S|XXQc`{>yKcNQ<;!*-8ggjEXIxQAQn*i^ECkQr7VEmwUTnes~VI5y% z@Rv_D#l?~cZuA&p)Z6>PgLK3*4RVku)0MTIz+6?$RvG!&c#1$C@)2V}FEdxhQ`UXA ztjT6;ypB;C>Ld`ctxPtk-QPn~W^-wOKOZfM=eC7)8Hcg?ka%N2WrR>y&l3GNM#F}( zxetf98;H>$rv^d*@TPLb<$6w@r;n_pu2erUXnY$O;8JLG#M=Lb4UjI@SkGffCHRDp z_}=4HHv9ID=v1n=8&FWmWCXx4wZSD1vGW2^+@eP(dX@I$Ipm$4Xo0qR0A;8bpBbZJ zogEk9X1N!@$)x8G)CAENo^~DZwNLmx^oJMhDxB2lT~EICrqr%xSTsH_joWZi6KOXb%<;V08{tYY)h@~ z*l1xLqQm_6__N?la79=TlbL~(<+`Vpa)0Ie)4F;}5xXE;Lgc}9CcT$IN)yJi=TKji zar}MpH z0-@KY6c6|72hYhY79@4^EJ^LJo!&u0u@w~GX*zJ&cLc!#m}A6Y3v#e#ck4gF*y z6X5Eo-3C5-J&g9lBKI&2J$y18UtuqdM7`I=$7mxAWGYSLSwfo%V^e4M`T4oYit)HR z%^x#{rrvoyE({l+OnYXF68GF^{1BUq3&VT%z5M6|bjd9?RWKby-dZ?uY|^FDx6f^F z*yZ))I-?5FRWmU`S!?93(gzVUb`c#Ddv1BUYViBYS^k=odE=>@M!}s;YYwWNbBUoy;&vPoyS6X`~0`B$1a<}nEsJ@S2V>($H?1{Rjcf>St`>Rl(^@`4G0 z@tiZ!8OO|yHG&`x*XYxbO1(Y`8P>zERJ_RWhxvvJsQG$p(6=N}9=|}!m2P%x);&6` zw(QCh+FUSpvi!jw$n;(oJASVHJDj8F*Gdj^JIN-C=OFVj6e24jxSS*&2;PW`l(v({ zjr??%0*$B=UTc9btsbr8?dX0b=jyGxU`LJ`x%%(b3YAx#q5EMk_q^+a%{O*rUE)pY zq;561aRuLcJ^B0fMRF|MC$+!zPpo@au;cl$BC)MvK@uQh`6v`bWqd>RWtBv%9Kk&| z!H$b+j|nDL_T2WnFH=V;GO}LZYMT7zK_sEYr83}q-DePz^lXpZF;HY650cPko|cZ0 z{Jp)DVdU5bJ66vwg7=|hfM48T8OB`s{alV+i8kQazGYdB``+pud6kY>c~$VXFwZ+x zinrokJX;TQ;g5L$rVHOr5HvZ!wqyud#UNkP)1tB&w87WZg23WXS2fXa9iFnsEsZy+~f95 z%Lh|RjEG6%F6(#;_(K+(zMTpF+HU;mr#0%4x>l<%nw9>V3BS=7bdpRMY;P5hJme}vaBnzJK8=CZ2?R%5Hu}RQH~e^J3vdMR=?Fy*ss#4h^fN8=^m2tQuavu6 z?OMlwP(FbcFNHT2isoWS@uK};ihESRC!|4mw<#%1%~5KOIxk~WxPI;vR>o=O(D-?j zr9E?4sv{_NYVGq7?k5Hj;(ODFkz}2qDa%3#@J$q2Chi6(gMme3A(S0Ya7HM;1uERS z2=kbs;3v_jkNlHC^P$k7b!&Z97RHmK3t`*FzRpFvijq zr(UZ1VfIxui9TM144!Q@p=fr;F_8A){ma6;K!KDL~mr9fCv3R@Zk}*UAUfZ z@kV8#99%$3t#GQTzxj;Mn}qzS{)nPh1)YlwSM+vfWE#}936!DNy=9IW5;f9*lse(r z=juu_1)exY@$mO0XCHGfK+0iyoRCB*Fyw_Ubinz`r|JRtxoni~UA?G)Ok=r{sl8x@ z4Up6Vs?k`s1?fUiov^$;T$9`a#8pys?2hk)aUSJLCME=-PQaH1oP3kN^=ClxsYz=? zVAGT+SIjs=KoGOy`1`o+&@e0G$NsUzOZW}6O&qwt_D-597bZT=`^#J()M z-Ps^#1mNE{!uUl9AopAYuxX`@KXw9lyR5xpO1#jxr9fK>uyqCOuUDLDeu1;0jk{zy zbf7|&cTJ0ysn*m4=S*pMq0fj66dWvLj!`wdUkIudmM7WNN4NS3WUu)P^BSyk3?CUe zr4QfSkK3)yg83BRPd%0NWqA&EbXm=EqYVpFoUc@==Y2MNSIPp?6BQNOr>)^45ep$L zbWo~+x1pVi9^6oHKcXF~<{pfPS|CbY(x&+OR(vO0zKn$Rwl;GDnBq&SDk6% z9gN^X9hdSBJ7_N(JTx8xM}E~res6n@<#0@65No}T%YGuAM#_VV9&X8q5U!4NYs#&% z%)h#qnCAS9K1&+?NfC50LnS>xH%#8I-(AGlL5+0DIV6tACfdHz@q2F{3Pjs8%qkh4 zU%sAhvMcY~N8hpyMzq-ItWg89T0WqQU8h3oZv0p-+lb-m(g2psI)d>sv06C5!&~=4gA!!cRJKs+B^v;&kPk-LjsMt6^`D!VY9+g}avc zT|nSA-B?|5Jq#Go#m&u11f9C&wuK}@p7cGe@kW&gA;^m{_KS<@ zd6l^S!U$Nr9MRvVx@7CdDVYIzy$l*&d1do~gyI{B!^J-3h!k@7p%Dgf9_xwBJ{wh- zPYdL&a4zetJVQxazB@{7QZ3|439b`n^PWFxeY2USTo+!bl5|rXH0{Qu$PMd_4^wL$ zd}5TKe;ceAsuw?0OX+cq7Rc5X@rliwh`;+!hfM1l+*K)x{)<2l6c9DDXb7Oper{OF zJ`T5lwUM82Q}|4%uzQdEi2pJ>it4yU#^4b!Hp_LedaZ+osPfVM4U%4HIZVpF%VH7^ zyG5lsj~HRJIsHtT;VN})79V6EQ@?~1PS1L2;UNimyT9J%i^l`Rz17r0;V(p#kGCu( z=z3eBTnTftc6EZI{AuTK{ut=pJ^fu2pr^95_&LoGfpPl?qOT<^8d24-p`rb#j$7~2cayQzu zB_OKU=uE6A`0z0vVv)OISW+k8muVjZqMi~F4w^3h^lF#*CR7YD#mtxchpiimiXCO* zwS&+MJ+H`TQ6FYIaRQ|cZ&3~6Zs!g&oPILk5NH6`bceAtN&#Y^I~gn0;AH(R5boB~ zVL}dERnqeqcF1<2eg_B!Af>VZ9zBR{L>V-eZMvg7hx~aE68O{Fr3~Bnxru?GOdWzd zf}Zk>U|(?`$gBMe5mhj(kOHw#2EHW?8kzv!>L(`gAn?z8k!gHCJCw%&xzKtMzi9ih z6l<(0c_9scP%JkvXC5A%qzVs#J0@2H#2-jxsoNxU`kV#d#>w1ay?`hVo)#!#QNsh zU37B=eO1spo|^BKUMxg+y*$gi zGirZ~kAqvc3^Tw6gpd&=PO*4eqJ(4s+7`auf5PYbb zC2EeWy;zDyCzIocn#QnLs&~jltng+{Vuj$ zae1sTpKk}foNJh^*!Z*zC!*WeCVdQfA%xP){5Q6lr8S$02Ag>Hg(dl7Zi@5nhqqR` zaN2%;W44zjGNRj^PS2T`IfOQ=Fh8=)gOb0=h>jH{<}VTIzwKRH>6uT$Ho|YRR{6km z%)&2$nqy}Xl>;v@XSlFBWn7ZQNYk?f9~`DibFd>&KBkE2PpGx8C+_F_)BHJG@1jrGhGH&`j`WujIA*pO{CG6atOT}Z zX~(6BJ1YYO$Y=9xzZC8_&S~3TksTeT5uq6qXHwEH#7>W(^!;-L9qwWh9OU z5H6?Yzjn^TeYRKmAb3Y-@NO`nWo^}kkUZrcD`8QZ1L(Qd zy#f~4bD4J7$(=(Dm03Y{gg0^#ow2yNRzZA))t3n6f%s<3iXbh<0+>nJ&9nMtcrY&%1JPF-*qZC37S8cBRSz(dYnxFo~-@_uk z>XUlbUi%~RS2q3`ictUi!;0f-xNKjW^3bVKA5xPJF_Y$D$DoVCSvfsyteBE%d7Q9o zo%Up~j~x<~25paP4NLE;THHB{w76HDXcV5F+q*tyZ=SE!YKh_l)dta#n};^EP3$_NV!E0p%!NjA$156eJ;Eg;`}QU@7;AGaQJptvZ3%uRvxN_HUb z;0DJ_aICHz9r%7)lnt>)PE>Dbwi3G9T6lJmu++{qJSuv1p0pwexIRLwt#1zob6Z`i>(QJR0x4;S)9etdF+GSZ1 z*q1eD2elGn)F6@G@p@H~$hxO-#!JV$!C8Rh`9ars@5PN%12!ezW;zfNc6dZY6dF}} z=OcEVI7(ts zcKKyfzs0sfAqswg0-Yh-!HW0hVDf9Qb60N|St~%<+k{rAVv8v4!yAJ;814|mPJ5|W{fpZCHJVKkEuB~Na+ac1a4_&tivY)Ytg zb}T?}jqKkwq&8S%{ad@&mw1Q$xiM083uDZMDa1#WryPnmPy`&84R3 zP-$XAhi8`%Z2G$ll99@FoZ^0C;}O-F5=aY@tVzQN9Hsc6b%J@irY!Qj$74mJ3_6I^ z3C3gi_FxgkbZ;lo^;PDkw*22C_o?@Ps_gEFdLDg&@a8J%YZ=SsxG>p#Va=bzzYc%gg%#z&raMKnLfr9w(b+#4`Rz8vgs9qex3b6T|4pJ<{+Wf&9;t{`D@~ z{}1u}@6Ui6N1lI3)PDyKxQU%)u}=o3@Be+JMfnf@@6-SN*OoJqHq}2L{@?ooqkl-n zKTG*Q1eN&p|1KgdY+xVv|8L4ad+J~J{~tzW3(Z21y2E71r@<>Nf_-1IDgZ%&B;=8TC(Z8wF?9EaQ|`WV4TuiJcZ6@>~wCjxLp?N3aO@F5f$wtjS)UZL9DZ%?+KDK#v*haPxkf@TuNOC@W*Q}It?toZ7G0`DI!E^F%p*Bda<;>mP?!_oh9 zQT}UMjT?15uQ8B2HY_HG-QB%e80G;*R~q`|fQ#9W(eQmevAFUc_vclNsqE?j_WVjkKu6oEzv^AFTzO>dI{#ClQ7h)CJo% zp8e4{LtxG4>ZqH^5GLJu(w0__4NBsjcse>O6+~gOKwJ(G+uI`3v0&o(e)H&mb_dIR z6y&U9k(@6RJ1dU7M!g)IA+hrDiI$s7c_5@RC3uzAEs(MOtzwp?jNa8TMo{-@qJLI* z=um48q>8r}+C2XoJd*n?0npZRXV9|7gv?-}ZzXt_{^-w`%5j3#y@_eJk zY9i|U9m&Q8NGJ+^eY8`nDTCf~h9q1M<5^ltflTJ_n&KZCfY|*%N+gF>DCB;6yDM|P zv4KoS=Ko06>s>ToVpbMudSW6D0J4upM8u#Y2YjlW&wn|@HX$mPSCfe;?->nKxDgmm z!r_|P|$>Hg`@ zAewqVEZxJDC>zth-Ij9LJs63~7~-1u4e5s^C~?;e(XD4s0P`H~Xbz6Ln+~D@m@|wU zo*-}7+TOk_uRJ2zzKS`m5b^P5&t@a#B*7id@;6_87sP!^QJrRGGQ9t?ukOx3(x`df z+D)MEFj>&U@91zMgm8cSJQ^b~9kPC?AIFqNkVGG3Z{c3w+kJx3x(% z4=XwM#pB%JmqzEpZ2ES!-En_aO3gVw_v`XVo6ipJDwH zEk(FCK6HTR7+4nS)IZ>$37pfqLY#TlLNMN3#o8($ea72YgrEPt%VH@`)i%n^kV^0{ zC8mOyIOA?oEpNLcD*eI;WyQ)q(1t2RC8Cn~Es0oxBp2T;#TpSbAR!ibm&^_O0b9<- z|9m=+01j#P<9^_l2D1FB+s{V6_dl|Wqj^K>3WMRx?>n?SESaCJnU1uHgJi`@zHQAf z;;A?8W8@d?AndBhhIDwCP8|2ZH+Xq2?xnwzRKn3p=2V<8`r@Wz$}P^aT=PO^y9+JN z?M(3bLl@P_$_ehZrj2xc+>M7})5sIutb9gm{0Z(tXP4Qb#VOhT7_{`9opL)~ynk9c zWxaP}a$==pzYG10Z=FE-jT?IIfw887*_=ZEN_((QGccCxT{qLMIlSarvt56prtRmX zb&Ro|YFV6CCcF$>GB_3A4TBog;&R>7E!Fw+I3KNx*lO|9q?-I1+lwm>P2240DYpX+ z|JXWM=<6H3z>JYUOo$Fej?kBGULCJyC88x~8Y(4oFsmhgX!VY-i`HD?P7gTetwvZ( zys(8sE)D6`v7{J_YWet&=@DHA1mOWWbZjp&Z(e64Kc1~#PlZMQnAffiSz$pM(#key z%N*^?6|1G3RL`x3p-^}%0c=#Kktu5k(J&Sy#r4CsMeLP0Ov)%vNIc#|Ys9wE?7}DZ zRf;!akV3!e_I5#ybJr@6mUfC{C!A|Ky4oq};e|2&Y_Bp4jXSCcl5-j;=Q(- z5C$EqozQE~-{HTMLe|ihe&q>)(Xu1kkHS8g@p%UF>LVnDYDde-55D2L9g+n$OG_{2 zNe7L}2sL|S-*Cy3S&qMNNq+Z+0ZJ&!fpvLQc?GkoC@ztrPUbvH*vYV3+WC$e|W(5rCttLW>?-eZ2JkbSj2Vc-UUOmhD zqSBd`H{Se2`r1H^rv#s+p|Z$2C*83;t7UmR0?SI<)X0<9oA|aNw17WX5Uz&vrJRCz zyF)GImxHDPum2);Vxl5242;&!l<|ym-?L;idGhFLY%~R=>^pD4=s+21M&p-AcUlr0W|$&jF0c zys481tgXC>EY=I3YZfWqFnD^xg*(0WCGd0X{G{P%KkRvNxvZ3=U-uVCpn2N$>XNb+ zKZ2c`)*n&hY|+{0s+B&0NwX1ugcK`{sQzUScXWH+Jeei_=v-78D#;`fX~#6As_)6* zxmj?pNp+PRs5Trct%r^Aq{dl2mG)m%OH{B{aQ2(nwO|-I=7U7dWp~0US34m>-uQ02 zp5}~GVyxd)^M)PFiMeV9_i^z4c6t}8y;jYDjMBykkmUi-B_ySYgYkMClO;e9bmKpU2;I#H z5xX30C8Dw{=V-^th+{PJpVY_ zZK$DRXlG=|(pmvl3IZGS?T+*rw0VuT?u&{;A++KJWK0H?+)!o<=ZJ;uED+r&B}kpS zGYu|0(8Ioy*!i8`>&6(|p?Ooo*Z@vF!z+kdXRd<8;hOaRF?~5k5S}nEcyp$zZs0DD z!+B7Xw9!-44N8K?nHWIp(itmG+}ojDr`<6_o`rw$D9%n%gxmr` zCa=U-(`}IPs&Mn@5Ug_|%_;W1cgEMF#7vQkjhQj;3H+w*a&jYiO7L&c){+>QC)XJf z0pn84<_Zhvn#ed#kA4_*h%{0>h{PUte?dOe;BK(^E<0`MK99k9P}sg9kh%qelmcp) zD_`o%CtF2~N6wW#WQMibvk%(ZGcrh)HcSP~rjF?A$nM)eX2uxoBGaPr^Q}Bm7S72^gCCKiaA$x1 z93c3IrTFxpMLOo^@VrbW0~r*M9i{9D3adMN!i!7xiB)F*Dam)WLpxT^{dRxb2pkFw@B$PQ9#72%XC;ao+lEgQ%*PX!Xy**xXCyoCj*`9>%R| z979C3FhwRWp*jiQb>qVu@Ht{`K0*Zv*wpwoN`?{6K!&Em!DHa0hEN1s5v91I#!G)a z{}G%uQp^f+$1k0Ch9SnpWIj4$82s2RW^25YJE`@ZRZ-So77DUrLt}llL69}PEsReJhcpCZnYR;J%dtRD_wq1Vp1N#6Vky0^Sn80;*?UY;R6zFXk_ zP|A5gFfoj*5{PfGYPC_BXG|uBpLHOQFP+p*!e}(qexDv=%jBr2qe_G0P#@3zsDMVE zi8To+ygXSd1verJSF3b$PN#0fH(bJr>0}gSwR>v`rA??x;B%kcy&h7`1Wo!&PP73^ zV!;>7L2NkUvkqw)l!@b%-3r|AO)vRX#h9jdt4X?Q*^vYj>MwK1YkkN4$bet|0wM4sNSV5js5b62aKMd?PSh1fR6V{!%d} z+dVWfhJ^zZ%ds5!>nC-}^;Q1{Et;w4%VolE-MY$L-^)|zh-VoZSbrkjt~SQDLd$__ z)&@Z>f|3GQecSO>4UJQ>+VZ|A?ce?2@d-{@PuyfMvxas$T+DT?TlKbl2eQ;4*p}<=X}(fTdU(}2_`3Ah{6-H zH!J2&4kOO>!Yh)}cC^U741f45u=@n9cAWS!L&^%k)R3!$O2Q81XN{$*nc_0po)Ua3 zZ!rAq2?DjNS>@V^?t75Axtb%AMMkF$*RX~uPmPgmTH!%|!YfgQ@CSjAWp#i2nsVx{ zVPtv>Q=1Z#tnWe^TI$cNpEv^cm-yVpUMbwBcnWFF8eVST(fNyi&iZ{-#B? zm$+CiJHmnE?QA za=o&%eOD9&@;IfPGv9fS=4ZcL5F9QDS=lRMp-1`X%~Br~Y~*$iEscrEz}R@!&oVOj zPrZ8ej`cwW_V3zzXW|*ttiCkNM<&uVAg=I$;Z5DvN`n;@ntb@uqDC062RdDSMn}cA zxV+5*gd08m9s0qE3!MfWHXGKyo=np~R$H{&Qu3GZH+Gt$MM7Dj&Sangw8BiHOAToJ z)MFMkVQ-eTBh@H0QfN4~w|yoMegyY0323o5&R8uP(4ZRbG*h31-}1hQ{<B z@d+1}vGGm|HB&d0?m~2i7`9it$7GsMkJV*HBr?S@IIeensPa)|UpQ7zg+;B{~X zYdTnxft1Y@j-E3+#ry@sOgL9kcvDV>_i_f z-8Bn$n0&tLL!+TJkR$Ru7VO#1-g0I`m~%lOxNx2p`pLX_VuO`3${)<(TNFNWU>p6= zDDiMeYl!mBsB7UZhM;?6Wwjt6SD_$)^H8 zv*B9?P&VT=ju}q7!|0ePH~;^r8qD4!wZy-wCTXyZ3Fcs_Gu0^4OpwESdLZq2%O~A? zQt3fyQ?HSkQ9nBIz=PoMVLBwu!RZuK{j!6y7)A_S0r9~7@Nc?Y-G^EZH-B0n<7iuM zZ&aj{JVC@tvf1YggM0Pj!5qIExxes|%-gDJ|G2Ozw=Z1<6=Q9Yz1=dKqs(WXV+~wKm=^2;Cxibe$_#L>;jP1eh z@;PTGR;!EPsY#bg8)qy7*W*$x+?%`8v!ob5A3?poMm{Zs1PM>nW=^UOqb~HR=SRqu zrIfFQdAwmtfLdrnTERBGtou6rl&U3xd1(ms6Sv_I2{qR{{_LiPa10suy47|y)Ih+} zY#RXl{qN;Lu5n%l_d4riV*$6WjU9@m9zyxNYvY7zZR<)crgBXM*bNjNfu$T$mM~dN zAKc@*h0I~C6%zdtae6^`;|)e&-Kj+jkQOWoZkzBvk}t~x759HbT0w@icl<<2c1Eui z+>1?-Xwy;k88x}NfH}O(s3H4%qO-<6_`M`i(;+w3HYH3_g6N8iZr8eK`I_+;O5s+} zmc`jqMz}fiIob-}Ri?8O-In2O@uwh?X;K_kb}LQfMX{Ekh!11~8dQ(=21fk*0;p=! z2v~XHgqsRhdV|e5-^bgdM*l~<<$2IUCISh7&OGVPEU)d=*jT3>>Y=&plHE*}V`vqy z1POxtu$x^?$v-1DaJiw>3m|lXXE@OIa)qY9MIotsesXWf#s`s-SkUfEzQ-CdLGX>| zX&5;B0C**~J04i>(Aht(_~|7UeUVppLBJ;7miur;gNRMgjB-}7+WY8A^;>&cX_EGW zUX7n5$_w$($i)V6xG~Ajt;$XYINkFmO14QZTopzXZ0@CdRz@*b{F3G03+x9yL|oLG ziVF|#lWk=Jj|b)fFP2-$=BWVDtaw_Fm)$E{Vukru@`PNroc_mGHfSsRlcx3Kp+6&) zXkexhbsxsuApJjS4+9B|f$1)#K5?QhIJ@+O8A5^94il@a1!<7}Wl$A%x>j4##gP`Z z#(t{dNel(dJdJZdXlXaesUEYTN&A;j^?KKRp2NI~5Q;rK@l9b|X;L4!Si5VbniPav zy_nja_ z@nIrZ>{;F*7aPQfe!#@&B(cz#t?0g9e&m@z4$0;K{^mTt*#V4!f8QuP#MtLqTPZaj znYBwpQtNM$aNuf*@P_IyL4r>$Xf!%9t_`8xzEX*JcU+i@tPmZ@>5qsaeNa|ktBLf~ z5*b(TXvSLjK;{*f(HoG_)fLCqZGipDs>}q>`>u*10$Ov~iQbptl;7)%&M=ew@sfKFrHx|Sf_cf2#PzYj zG?z4gPP6ygRjjrbX<8U)%zOE!WA|IcN{@2m8JhsH`nmg;V9;i%X8m{EDVr#$3z%1- z|M$gTIpnRPxPu2v&y*xc0#FhU3=DJt3>7TaduTAsuW^;}J-Jl(cTj#XlV7yi1vic1 zZH-HQhJ(rw6nJevrj?w+D?{gM!9h4#gpN@BG3?M{bQLw*fCEikb?#|STvMKZY!@O6 zyLw1}PdRj8ky>Nzq&B|S5blCH>05_}Ymz4ZSVF3p);r5$p$0viiTS+X0?wK5s5;73 zL)#u|Sj-b-KC(YIA${oKC~ZLou?7h+jj$dHjnJn0%k+@e3H~z3=snz2KanXhQg#O| z@Zw%Cn+&>4*S?jOn1GBiP+rvBh-lryy-TV;3<$2_qK#gOA3MG4;y5W+{+Nd(q>7zS z!XPtJ5;Bk&l>Lpu0jEMLLOk)0fHV5#5XswO7*%05&_HuAJTHUv`mf=hC3QqQTREb` z<3I^-(p?m(2g}$iCmzG0Uv%La!cKw?J2#L7sP}b!Ug=&NkokH)7;6KGo`7glIe3@; zTImQu1G3STMnCw_A=n|U!_NBheA{>0UANd(KI_-^-D6Y&6Vs;Lr2lJVcViK>IdLkq zbH$LQGg+V}%>dwUd=A`>*OO9XtPl5X>w$pppX!C@qu{GQ%kdkj*8SH0dOS{22(T4THPf;A>vrs~+RQN-D{=k|-CQ$Kom;AUKF{xrN;to%g zp-@l9&Di_o6o=(LXxwwB2(6k2eciYF(Ymeg&tQxL4PLF9UQc67*N;)43X?b)ok7xY zyTlrc@5<*gT^&EcsJwk{N${7|nsC@`YmhAIZ0x2UbDQLE(1P0mQZ1E*vXHulM&UJn zqFzn!7!2ntoh7-x!MxEHRm{hqzYQK89U1BRRn{;6(!40ltTSwxv?BC3hTf!l22uU| zyEGi!BRjAyWQ?891gP!#IJ^+C z8By=eWj;$FJlPSX>D7LYyI|95tw;jW+*$#umnoOEYP-2+h$pOvvq1g26O@A)#$ua! zQi6Va$pW_dEt(aL%l!V@*+$xqW-Bm{A6PPtin&14479qUcbiff>AE-Wvk+9aMtLKM z@WQ!cCnuY?)tEQ+mdXlkzQKd+ZBbIqBjOH*hh=pT@ksxr)3LM~>=fqJm@>{ocQAB7 zER4UqEZlyb7(VlRbs6GY$q%XFnP+6+phW){Y7pOpPEH>3pZ-X}@8c(%CEVJgwpz_k zXp3q_C)JmBH#dd-QFBY zAm%`Gf@Lz$YE&ash03Zp=4Jr%{VFx?M<;I2DQsN3Fe3%B zgH5)i80e`}G`}sz1k;q(f1ZJn?tA#Jr~T|#gS5I~v%XZc*%J#>0!tpJDLb6`hm#dre0+{D=?4$`ygHi(KEwo9eUAW!}i15|Yu?#Or-eCKY4VPhw6OPYVD5|1bZ?Y-LbC>U4qset_W8hxI+(-M7 zIT=Z1(8^)c-Dxq!;r^|*>gsn!hGI=DLZ4GgcFfIEXw`&ROzO3Z~(xfo5}!ihKc@BI%X6FK?z@--cLusKt>j=1Q`hQX6o$eaG`{(t4l&T zxlcDRUYvD}MAI5=z8##Mx#3X_cjArC_HRQ8%3};h@`er0T0IpXD)9b%HQP7juJwb7 ze%r!APk4c(aG`>81ldy-Lt9HRy{Plow7B$zUvnr@<2_H~XC3M0FT~wLKSfwf>KoYo zf*&dPNva=K8Y2uY84V-PBYMPa;JmzI_~6`}Vv(=sMQrpUf4Sc-oXzRDMfGhXfLg5X zHqKyO6jlovYZ?AWXXh4XWeGJ6tmo`aNhGi-dF} z7O$UO=_4_S9!(pSljEp! zZ+x=GOgngg6;}2`oQU)?#L*YA3?v^(gZv>34(p(_dE|<+Kpf$CTVXu(Mm1*<{bgG9 zrxm(^WLjiRS3g(`%Xy7cAGP}Vkw)RYDfeC|yXyEUtuCjIp zWafCFrE!b7lGo-SmA%ISauXJSb-a%Z6Fu=;zaQ(Ox3|D}EKDt^KYr&ePQXbp+5IhF zn}Va-LJ;snCl1>z4!Wm>=ffN7W;*oZw`^h=*p1uUa5ndZj3bD`1>gT<4ZD;gU3ZJv zTX`WzaPgd4mmytS(N@}cAX+2Q-t3Wlv-B58Qk^AIiF|p5PHTOUZ>xa#%pLhwdDEL7Sx0mP3 zO?JqGnI$TSP_QVh$?o%D?~FXWBqv8lX3rV=Gy%ZEgrJB<6Z8K}jX{3CKV%xp;J}Qh z<$smlPw})SNA7JVQE()sC%k5CtCnkozgH^A z(X6#>@Y??ig#b{8hv)sEmN8Xkw1wFLehRA9w7Hl!8E$`h4hN83aQQvnuIw#91AyG( z0O0m3X2S~p7>U(vDL|*wH(KiL^>jU}w>O{LOokkxXXktz0N^f=QJE3|?1a?I)3yb& zlplX8u6G5u+n;Z&PE4cfI9M1xrtn!{I66jTyhwg}vlgWp$!pTW|Ig5tzs<_&7fDWa zn0JE#fJ_)riCL$PBL3Xn-En(ycN&}S>{?EDh1H8^8RUwE95W2JXsep}PwzX=-3>CS zH@h-8I?}^#NSb~1PBYVfJ}hr%wmFEy2po==q|BGe^apSuq}1k1OGg{5Z5AXh!>b+o zOm;UT293*0OX-JFd2v9@HuqPoYV8__pEDiifq1L^zg6-;0(^YvZ^;ggc|KV_zEW(A zi8bvE2!cQUVdjZN<+dUQJscYefz`F%uy9yvA}GU$0y< z@+&5FHjqsJIu`i=P6z4=$?I6e#-K%i5o?KzHXH2%jQ+Y#5yqBd<8QNg4uGJp3t+nQ zZ)wqf1Kk=Rhr`sj!!SPANQa$T|7r8(`IHU`pB+~v!<`*!=qOvB=IrhQ>ouVkfXDo{ zSGHJTd5wQ{Jc~+9oFQMNtd3EO3lK(5=-8;fCd2Grhh! z?S6liE(@3)5m;2i;{^@??l=E;ljU@=!Pr`7p~sJzs;4^c^#vne(1 zxZImnm%wmV#XF2$IF0fHyX{_gtOwJVzVFO*eJ0HQ1~KOJr~brCEHm@z`X9y}PDOI?g7c{sWCOC8br$Ybdy%|UpHsMc}R<#B>2@CT9Y+2_c zVfE+dM;Z+t*OswIH!0wZeWKGVO!+g0bs1 ztxB=}!qxt3;byX#eO1)k!h5pR7?>*_B~&o^nX58IwxD~y+KdHYj&(*k z4XTJLH|p?v2JfWS4*dQd3*fe1nqmWF$@qaVZNX=<2CuL+9yfbYCW8Xq!>Jk*!?8bp z1pfX(MOM0b7#6hx2?(T(R(+26Ef@OCxr_BGF~u^p+ArNSAC)HS_2LpWRL!*AH~0MJ%pl~-E!PSs;$hAE(eA}3+<(OP=^E#?OtL`O z^;O>&4hkFhzxDYC0PG)_%2i!qJ#Q9r`R!^OLJAKcFT zeh=*?0638P07?}u`x!%!i`R0+3qW~b%5r>twZBj;{ss7mD7~B4U~1rt)T1@f_*YEq zT(LH-Vpjd5h3OLYCgZQ`)z|LVqk=Cnww4L1CB2=2u+mZ44Hw2oE3KY$_(V3}cSJ&w z`hYJ4JwAHv?|ka5dRtT4zxF@U{#Uph>%{4b)r<){9@l%mo?Tr96%!k3dJ zh#o&R{xa3S7U%ASm)qlt=HkL}eS13?sDB#2CpKWBdH@nyYlJ^Tqod-MlC+?;_jYyz zgNd*`HLu?eLBWgQ_pJ5&&hxkokMd4*W-aj-m;~5_Afc&N> zoiqaKo9`E-v}wN9j)L(+wu)<+wrtVQM+^u_LzD+h!iO1hqwV6npV73Eu!+#?($doB zVFD*fuW0ubs2^!!Wo1SDIC4)MCIhd7gM*(RBv(hNFZAEjUWtQ65%cOe%*H}wC}3`? zs;c6-dXX}#!;Y?Cjk^ucn#;+NTyx&M982Qj34eH))czTRIeCyO$$&$Txy(BeGeggoZt)FnUtjO9n#`4l5wAe*q=hz65a0V3iF$uiX-RF;r{fmGu`f> z|5{rsVp9d1{~Z?>7x%WEq%y>jy!tTTcP`h7t73Ec;QL%|^TPzG=d+!<(8BWA<`^E$ z!4{n_6_5KFIRJlLuDHaq=BvFswFniH{7Y@zx}kS=m_AC_8$B(4(` znU51xY-wj)#yxx(dc}Gpt9x_r8WJSp-7;7=L}VxsL5(j0UZ9k9d5dTg%sWA6y2`7< zLFc}A@&%7f1ax(|bn_Jr`wC#=^_#VDgSV{bcDk2F#k)yzsluGQz2)J=iWwwaHv2DO zQ|@V{BO^~RV4_^Z!YF=>+X^!mVVC3gcb7ra=P|c4B}Hcz^Z8xJx$fIHRd?xO-L)2r zkQ#dR7(edwn`}VV()!|{Uw604wH+J`f=DnE;{9P4UH7dO(hrUcU*GzhE-hAO^CV6g z4%z?l#~)A2^@*2PR(>4j?STIEGlPz$r$s~We1_HO$+PHol5_-yTL_zqMWi>7r~k+V zr~P^Wk|klMusEILnJy_;ExNU4B63ZkTr z2NMdp)qzV(r!`r~PG917HR#GDTbEA5cJEeQ168Qi87#$BA>WtaW&TVwGBv$5Ky~kY zW@cu0uFjbppTi6X8olv{n#?_|V!0wBOz~ehOMHB$U`dGV zaSp4Wy3#5HJx*s;fr*2W{u=9c@|NDnBd^@D88*Z2voPD=Gr5DV&9l)OJlBJq+?YBH ztHNNqorO%6Do!&bQYz&UOr!4*dt8RtaatemK5PelmT1+}@;2U|moHyZP*C{3u_5&M zvGlY)$WTQqtW4N$PbV$G!U^LM(la%-O}cf8jQa$a%hoaQ$ws|-pOYoy2tVi3)6*AO zPM?S6=^0sWPy9z>XPR^&6B4R|f88@PD{?ugu=H2Ab8r~-;TX8Jv+qN39Pu)CcEu8D zi;v~`ECU(jAEb3=cpm-CJ3j9-X#i?QFG`Gh3m9{J;HrH>*$&}x$WE-h2Af~_?J@US zhjg1PFoKO?ae|GZn{a_EQmE<)3P_tQ7uu?6 zq7|6w=#D!$ijMc&fy{psQ9QDh+$hUB0SBq$j zer?2ynM|8CsO`9zr#qH?8IF;}cV2;+5{DHo~OOltC@r>ri6g4OuX6#L;qTV192* z>wAEh+ot0d!4KgkjPl33cre)r#qEd*Z&;g|Jz%T^^?!0U{ZK+~Ya1I6sg$G0zFFcW z^+g6R|x{{It6U_PTmSBoZEM!A%)tifzhVe;Baqx?7 z8_lDV-uqG32fO}nL7EotlMe;QyTCwM^&cy+o;AqNC(>{opKt=dVgT6F`2*u4colo=6jk1J(3t!qtbYNskw5Ns1R*)eOACzxliFH~iP+~= zf&#wcv`vSV%S)J*Ra8VfQ9OHj=fO}OJ9eyP#j!W#m##Pwp4W3Xlk% zt5V@U^2cZi83^FF@LXcil-#ywUBY<`okuHeSXy@`V&&|*V}X{N1_{n z^zaZ*5ZE8PKqvN6nW=VbWpW98urNn%&sK*_!>%qqVn9o*X4Q8$|9F~jPZ(QhTm`aU zAGk~^szcCkDL=p85@8Ci!r@d(iezrs^ioH@Pqd#DtP%i@<`gE?e*BB}-pUzE+J@L& zSS28MT2xwE<#QM_rm*h3j^yz-m{V8$7Ug<+QRG;un@pAB1V)!&RKHoX+l>1praSEbv53f z{>2YLofuM!&s1h4dKS>o^e$N5QqKI!8$L_Do}2{!mqBZhb`xX>Cd5SB&?5Fbl=4Uu z6+)=IzgT%-IwNyFPcg$XurW`OQ7l6E3&h5BDr;Xcu)CeM_BFg{JFf}tBQ^&+i+p1f z6T+lQ2_P$;JU$5!NPu-p_cIBhR6tw6F{Awt?u17nsT`en_)$D=`LrN@oqeY^T#405 zGP14&FG3cR{`|M zd3WK2FJMa&(g<^Ma=v$Mt-x&g`%6nM$R8Xw7CvKU=>r(##Y(36ZPpveAmiUxZ{Ap)ZhtIN`UW17oEj4J6c`S8@9xItjvoG` zHrb3+WFXN_OU0|_H7Yr3FqNG5r*(4mqN1Yws9ko?_4M>4tCX_qV?pWVP_*+a{A9)a z8!+&X)JM$x_dMeOom+;jk6hK9_sPIh`dMDU`vj2jd$c<5$E|97<}VEBx$6rSc-(i0K5Sq6J7s5bH3RLncO=xs|;xx34nsZ#2WcyK;GY6w>lYkTvp=S#u3 z2Q3U)L)D~e0Tphd{Wu)#zkUSo&A@pd*kqCa;{@3Jv&8uqN%yxgna>tEt!ARFX4ygL z_rq-`PV3s5(1!Rltp5A=?_bEOx%kA#)A&0XjROX{y+Msvtn91ig7bll`@>O(iOI>) zmKgrc&C#B3O-+KO)>*^jc$cTv9w7R`tj#B;Bj3Hl^AWs?8+#9E(LG8&XUdhyW>%B~ zVB`qYlvTNa1ZaMdW2Lv59#OkepF3r2lV>6f#n@_4I8qc zQi#J~D>5WF1ru<~WPuXm6S8FsF|pIg>^Rt27TLsR8g(~!=d$TX3t)o4c0H}!=Xzw) zqy8-omYbfQ-UnWz8?agovM)`y3|n=iD_lTuxDI;%_q&r(*Vej_P3mi@b(VT`MBY2i z20br^OHBISgrsVmcIPD}y}aW4NY&CIw|$C4k{`qWZqSp{87y94!1UC$q${u@1VA6r zCuQYN%Lh(tY@uuh_#x>}A~}^+a0vd9CZDA~UQc|H*YJ9Y^|UurMAcHK>ppVTV`KgN z5WU(imS@A++X_Fv1tIAY>v;kb6O;a;_b(8*n&awK1cJjqL;fbuOYb7L<_UP-38jjS zkm&Gx5b{If?;ec>J?b}eorF9NmO_6;tuRlcTgOl~g$iCIjJF&&`>v}EP%SMjUF6pN z6QLUr+34V=;SYQ!Ovbnpx6@RrwciT|-NC@GGKSYwRUOGH&_4#!uK-koZuL<_Mw;HA zF65|{690d49It=nI2I+~ku_R|9^4JIB!I;4k!GQ>yTN|nKsh9PRUe0|&YeH6o)ZN( zccsLN|7nugx8~+rcf#3Lz~ZX%XNfw`?d_~phq9%af${QpigFn~=6#73AE1}JF8kbq zusvOgiQ5T# zV;jeSd=oZ#S^8YGl>9V1*3t$KW-a%tKd8lCOQn1T2aMpSfG6@t4U~Tu>|&bgO zzjX-ai@O|4oWk!5G8GgzcV8|+aY0{NZ)e=)B0ek?Yz=zcpWipk?AhUQN({a8b zg6j-;ZuEk2@T8jUA&h+b{o0SW;A2NuY z>k1A@AOSSHL&CIu6l8$GKHO2}S`-chwPJ6DT%9;j`kl_yZH=YnJ=nECVhc#15l0;s z<^^;M*-28TmmH-w96KTQ#5ZIOQU4`T3^5DdeaLBAOKqqfm#34ER8Djq8H7UP_iq$)j*5n{vxVC{ctHYhs+Wlw zT645S{GI;3w%^oq{@xp{mI&z+C71Q7L4b*1IUmL=W03t)UJA*5B=HSI)ff*k<)FMQ z@%r`afURc;3Y>#O5+jwryV?Xz?vRhU+)^(v_7jIctX=#F?7*t#&ng;!kpb`bAYVE> zil>ct>M4Y9_J{vLQsSHQDdhsRT$&p!E=XeH)8K}tZvT^9#SYIK*fUaHUp?eWP4wSk zYPjN9mbvT`|13cfo8$BEcJ$wF=zmlz{zri0Kc?@mcjkXvLchohK9Oew(j{-E-bzbI{HZc#8gBOY3>8_f;l4je`qr!Sz#RYWBj3*59sQ4l&d=xIA^Eqy z#cxyi(f=pqUH14KY^c>N_72Q;i%+tW>Qw4wR;*WF3!U+LN>QPad4<2Bf=P--Sa?kq zCG05qzP`H9lCduMd^>sTSZG0(*SQIiFfXHow|5nMjVPPecSgghxT1_M`X*l5=$r57 z93YKaxfhko8`ZoOK50jVhu7~r#De$RtMF>kso(zT)BFk8TH)81DVJYMOUq$CKE579 z_Uf7%@|}YY{YGwMLvypaY4VzDczC7}@NC<=kN*6fOWhzECwMxPIiipm0#Ekh+&Q7#R8 z_xB;aUWk0unbYy9gOn6RoIJIy$p`Url_fe*3Vixz~{SylpPG zp>&$UTO*#^)N8WTRVuRK%xbAPZ5G1Og+|g39=tFMrJ-kL7H{?=i%ZV5VPLn;rkRF2 z4ZZvPrTto&kfh3@+>^zD(0dy0FdW@?RnU3B<_lPrEAe}9C#$*a$wF!8wtC%pp1Yfe zkblON3QV^S`{{z;&r!^%nHJ-t;!O`>)lOC$tccb)tCdEq%dhQh+aGS1EwiuuMFz$M+?NtH>7onTaajPA@*qf5goYHFM9tj}XV zKKDyDsdR?FqI1ht%k4u~+c5eq(JvabbI+d_-jCUU`EKW6H=7WwCTVK=5g2b86zrKb z)0I_uiEKZan};V~uU!zpJn<&GgPp-k;}a7zok}LsrR($K^Ye_TP&-{A1u6#@{G20k4_ym^ihA=u{+bQ)XiI>?MxBx8IHNk@omjj(SG>yRS-eRg!R;2UZnmiS^>8Bpm ziv>*>47S)}(zD^$Q^Tf|grCRF^_7;{VIil%J|Ej65u7!~*eo?QIAc(?dMiveZyZzT z9is`U?4Ij1@!7yV+{o=o4-apzF~(U+yFPqqe4CwXFRHQpWTO3HMVsu-8s55$d) zX`!Fn9v<)vEZ67A6mC|(!VurE#ndLnX7|)pRq;ovuJh66 zZoSSe2O5riuit{;#0d#~{Zv68d%;)K7vpKOvuWk5f1Bl>s7YZIuCuc8Pft(ROh_S* zvbWNuGP}3|b|?E&O-)V1BIF_i7l(nhhqlWdp=NGYVW*^}sJ*zF0z$L551HAbVJ2Q4t0m5s?8y25g2xVydhU zF4%ISfh?qPy;~e+nKurZ$DB6PvB=^>{tseQ0?Q|#J76zeYQ1ph^l?1Aq8mXfD{MJJ zB5P#4vKF05*BN%wpSvn3952)xpUVoI>HWpea$G4=Zu-!uZ8R8p6Qz$!%?EKiZ~kyc zN5_s-D+83&%*NpC=F(`*Wpq50R0fdiGhM$9MqYD#a+0Cw!I6;NU2lF%*r;u9cjcT$ zZhLl|P~iJWCKy$mIfk*um=3mMhEh0j4K+u}=g*&mHSI0Zi!-~3hxdsXvuXLUN42Y1WQ~(qUa0t*O=2y35~m-LQ<#1JceRfh0S=f@gd?48pvf zeja2Fd{|-)P(Nb@HcK{3mA`PnIxV~O0}10p*-~pGDjs{8L8rp1ZbnpZwo_@vfpb*0 z0^0J~fion?lCZg)=NnyVb%||wJlpy`@|-UFW!WOYM|8C%hy=pZz$YZXe*Jp)-S~@O zl-Y`kV`u`&lVOrwPfKq;K3g$OpCe2##rXikUNh}e3w1HiT@OFuMbl6p;2pbjO1|s! zh1LDGN#f_qkBisJ_g7|w6box(rGN1gt`tXMihkA31qM(OvFJ+vl_`Qgp*5GQJCY^& zeN6I?hZh5_5y4OFT` z%u8@EiS*LfW~W-?nykI5V>t$Q3!#7^0eQBCYA&)VQq?_`&-d&zRP%+wQ8Xd?L{yx% z5~#O>_3iD_HUnf6b1+wm)IBB*ET8KZ@7#2{O{@4~J^h!!s{Ric{cnF6IK*0|%Fdoo zqox4wn4(g;zP!5HfjpY2mdm4O1*~QhLHZ(G+i%DL8H?P|p- zyS&NTv6IxdX9gIBkKp&GIoMlvT@dHa1kU<;suG95qyD>Arw`%Xx6{Iw6zW`Wyq2<1 z70QXLy;;O=WZ72#ctF)GiXwg0_(I+n=1?IKSQ2e zvzj(99I%^I!C8ol!`F%$^jfdT%=Z-ryX5PGC6!;V^G{VS&H>wSXB;cfrv7zwd41hF z1fGS2_C!{`ZT_BdEuB04Sli&<4av^3Lj*>x$}vYK7(~!oU5-8r*!ltXmVt>YTmoLT zXXJvd8|O6?^Q3m1tJo~8f;dz=k&jA#Tw69lU}O{Q?yVLdU|2OIszId@ z*&!^{UY|rjz4)c1BjQw*-yhAz;P)i zCgzy4vokn!Pahw)^@9{_s9k^e*hqIf>6xAV$mQkbJ3!9Q50s1WQ`%8g=oGXHyo}E({C8Do00EY zS`^hF-j;bdJT-D^me#7kWd;Jvk zfoi7c)V=xnOC^h==_8j1SW3<+FU0#68w8$X7d7E-M}2nxGmlLVZGZP+P_yfZy4o_-dcW%2? zUel^4V@}&365o@-G$DL0LQ7hX z`p9kk^%~l~jO5tglVp{mD(p)MGN(wQcW8vLni_-S1DO@QIbQYG_yb26h?AXPaiu(- z+jtp&pxgA^;qGQijE_$_nnv2gfmjQzxurO}UbKG9nmXQhKhsF;bK#9g>!y}9&ow3! zH1(#-^3n01V$P%)pcod3)2AxdT}|pkO=N={7iF_-a2{)>&1gAcw7fLW?wfMq9If_3 zVb*mnOUIEv*ciu;ot|2Iw;e*G2dQjEjq$%P9DYiOokdcWPt;YPPui}1UOD-affo^6JynefCr%ioJwtJ#W4x6$vS_TN zlHN#3VbEj5nIBK=;PPHg*Qox(l@T%~$6QTzph+R;5{GKIGwW!$itJ-xk!U7|h=e)xwuINnR zE{<*!74rl>qc*um>ot3xX-2=RbS9z3R@PDm)719%yxJq`5Me^kKH1fr1CH75KQu^x zx~}VVu*$z?CmATO%0cr)wAoD+9mwcZXWa1fbA4cXY%ahTQlgI56d-xoN}A z`Ay?VT9YWk)0R!5p{)FR>~$Shp>m9ou`h6a*W<+?W?EOQl26D%trr<<@RXNr+7nfZ zO1?HDOE8_ahuw2j^w49nLTtheHcpZX_1``Yrd_ZVIQi50@wyKEbpc=$Om#JO_SV|j zto(OkF+O4LeT#FA5<%H3u{i-|EzZob26PT?x^Zy|oa%<9%7=WgdA>9WGY++*$`oDN z+`T_eC z4Ieul9-Cz1Pm?Rhi&csX)>6s)vKYAh)>}%58KsxIwy@2RHfPBDoShw2aEcLn@-hwI zqC1{Ol=LwWW;rfi)#~=%lV42jblBqpg+zRjtqbO!ib=l!U{@wY9>Am^`iO0kV+Z!|vv8a4_b~as!e{KUUml>Gw`kDE+Pm}Y_ zeDhRm(_E;forcU|qcj19oe?&RO)f3l0r}Da>uc@wjbxN@!SXuaW|VEx8tN8xzqyhL z=b}pH$#}5EW8FELXuX}Md!uz*!tA7Wa>Znx)O|_^%Fly{qNgU^>#{?By65}%#?FzG zD-KOg(uFl9c6UG3;6rA-+&@PLF3dqhj292QwT*AYaGKthw4W`d_cYyQFc`pFb7Ykz zuoJ|PoJN;Bo1tzB+b0z6lgW?WE_*_7OF^rNch-=AtXMgUkSQmiYQ+k~@8cOz#G)*9 zS1<~wLq>O;4Otm4t@*ZfJQZhFNq%9){3MXZqTkfYPD^Q6Gem#u+X!ESl?v;m0dlX! zAIX=O&PWJ&6+iCoS+i4XBhIo3A~`knBR06u-odye(5T_eTZo5uu!?&0K&D?y?Y4g< zDroM?n*Xcq**&{vhK3KW19#+N#AzRUwr#q|ca+ABXcdrkK0p&ivyW=eHhy^4we{0D z4MEsNDHCfwa1H}VZjNYeO1tXxYIOkP1ON|1gb{bS}CgNEaN4C%Uq zTCDWy{p3cQn|1<)1VJgWG+_c0bGdNoGNx&|JUk3yQK#-aikdy$rjs_Q_hch+{hkhE z&bRnPTvS(ow}Pkf(^jjp2lpFpGKO4CNZco;jR+k7Ae(599aplHX!)}dSEOumYBoMG ze~$i{L4g8E2$4im3g_vt=w>AHTS)8~r)^%ir15OQ~ep|5Ve zXO$l6_CyPg9cA>Qj2r(1Y_9Yj=UXKdxPn&*FlH=bN5AuB+MWf?Qcmg+I65$ zA`X`HB}yqWOy_kf_LNa(k`C1U&u1a^ap!-A z^8ecy`2X(@7uRr_@^18tjlm?kDBFj%e$*V+ag9At2M=mu zdd7Ag;%-P}AVJcc--%-pX+HCtIWRSpYjz1|!?9+Bh^bN=&*ep(A0 zt^qvs|H4EXt#;;JkbJ&Ebhq>FTqqQ7=8-V%KGD-lsb~JiVLi&JkUv9V)cx^+PIDxi z^>5eS|Lz1+um#{Fy&s*+9i5yIq67F2BpQfZi*&pm}I>N+tKZ140B+> zhvd;(KL$QNwQK&Ub4I;HO3pFU?MZr#Gg$KN7XF#O!l>NxsZsIpJE-T+hlQW)%0)SC zr<|tdy@^UyD$HCcJ#YrZUoJ9|)@AWB9OdoXLH*Xrs96tc=XZ_TrDL4LIPHVbTMv$( zp6ha0EKj0lVa1jSoZOpLyD&C8%YfRR{{9@uN_}8l>eaKq0g%R~-y!kn5d|S^jEgJ| zrc0lwm4R9E5&e1U;?;lC&Ls=WEJpi#TqkwLG<7Zn;1Cq(A^)OfL7`EfTt!7iZ-G%7 zkU$eGwYmrUd-fws=R$es2@%W=@XBB)U<8ypATlx&S}4B3a!m?Uc>MScEK>y%F9D@O zOZsI3A=Vj?0$*}}|BZK_qs!vILP0Dpg|jpReMWoy)enRJ0^sPmNkm*<6dof!;+ zMya%vW--&^O} z*54vvRHRJH3d(BfGpURVqZk12y(cH|yqt5KIG<8-xJOYaZdVI07fx(jqGd6qr$ikn+k zobnyrYAWuEfx#CR5y1jNF6@|zwj6sLlqepS$Zpi9Z#H)xxe+Zj#;#45J&|kvb*d`% z3$;xq*ZVEoMYnAi=#Z;lnCS<^U4F8usp}bhBUm3(xwjsM5Te6=ys5NmU+EVx%)}ex z!S);F8*5#a`?A`(3L-&YRa-g!RM#Lifa>~CmT_4pvPzk3k&2ct&7>(nq5@Rf^~EiU zo{bHwC8nwx37z<7@~ztWhflzM%6sb(xy}&`w9nV4m%g zx>fOxF{7`_$Z}zDXlSZ9>CJc0_bKS>D2%Y10$v*Vj@4b;ngcGD8#on_jKhS#K7MDH z_}zMXNH5~!AHh6Klb!8Mg{F^Oq{3Q%Al8jWZ*SX*R_;lGVg?N5Lxh5}^CAgdo{_=z ze~e-6hPjy%M#0_z1f}wwcgiG2eR+YEm6gzWyEf{_M_#JM9+vOqkOLlvxQ9s!s_D@2 z2$sE%VWvf0jj|U8>mCerDotHqpOTHueCp03_4PDtYL@&>=B2HmG2wy-;PFVD*HhBv z(iSR8(`vX6Uc$1US57P}EJO^6%bvkYpd0fYx-zAzIv~!FfBN);`xzG*u$$)G6N3kr zVk-8wQRw}`Nf%D%-TG9f1Gev3+Z$mf^qeJym_Z?+OE1~megMqh>iefd3StrFAvX7% z?^!?5sNv26D)w$+Fx=23GG67i8LYIiab|%rZiYn%45R*J)1nLrCW%I}2sDP`h8=xG zulWmd?-zx#8zjQ2%-6zb2N%1su&@xBi@d?GGptq~%uB)%jLX;9^9=@72L=YvGzhhn zDl4+LST4W6zt3dx>+`w4^#Cdk5NkY-LcNCz`BL@82Zt=OC)fO;_WcK6U1~M-$$7rF zSQ-vMzW>cM_*q)%Zh{yUnC#@Q5@|H^xKeo`ze}<}h(r0}oT0d|a0i$+Y>}BpzF|+j zmM`V!j!u_@QUq0@;01L0Uv+fIXlZMwTF>{+bX8WeQW|tj1t}4c^@st# zqgZJi0Ugddlvi9_TwrX{zG~&^p1T1CCxXX8kOZTrv7x26w^5k}!CH+rO6vZ7SA^XL z-c__#Jp7imnv|v{7hB0ViAFAvBr!@RrJ`s}cD1L*un6Rwa)sd(Gv*sO+Dv)yHyxQO zT&OnRc`o68ZK!>g>q<^OU#KuV3v*p*METb-lc)gpBk3>p1B%PzD+A6R&QPnYAm=c? z2@De8?iWkfDtQjtLs)f)&bK{NX}e{tkE4QhCpQG}3GK1E7^m_aT8$mh41QzNQ%&}kql3tosEXYK`q{(R0FVbr}O z9I&(L=}`d|CAOPIK-;G(L{R|u<&U-Rymz3UsYyX3 zcP>+!P6GUIjWH<)jtHv8X}}!qzC5f^2o!pP)R)SxFK`EI-Qe7Z_BQko#$>Ktd~NXH z8r-h)d#FL-=E>T1Sw!Esq~=|1t_b08D}+jH%TeMa4toS97wDe6qlvg@AqW8g2a}+) z^MU+~fo!F-laKSly<`gY8lUUcC_B#$29C;kuXJ= z$Qnd-dJwt5q(*0%&}#TA!BM7~xT+8i9H|mG=6m0yK9UHGB?EU^0z4wE@Cmst2MXmg zJMC?E;8CpcYbPRJ)Q5a69bxMcci@?IVYPmYK0z+4;yn`H{%=_PmBrtzcmN;ND1`i{ z#z?a7+he2x1st*Th|zRT77>Z|nLo1rMb8(9e`%RnQgbfOd@csYN1(tf0LIWdX|B_x zr>7o+k(N?N|Jz;*q@Hzfa6pQq(5v6R4_8NOpb8;!BDVY5rc%d#9TTqR!iItPu&b-E zf!H%k5K4gL(x1jaH44HGCN_UaDdn{3R6E#~m(5Vb-rX(vzP2U{ErXy;kyJQnSJ-W! zUFO8SaRCQzwx(J+2)s^;MKII$P*o4|KVs(~_GX*S;K(3g@Yp-5r8d#08>NMT$nqNHU!hHMA9z;P%eMF6R;nK#2JW#4u+pBuPmHak{HGo>N zJL}b?#3UrwU}gA(v6KI8CBB4}m}|4Bio{*mw62znLY)2_Q=)*E1hU4!gkx<6=S>SZ z^m-qG!EJ}$`+VEhD-nDy16q+>h((#_vP5#?)%irx-V!S>DDTHs@Ozv;QUS^VGUN4u z`49!>ySRjA?|8!V)9uVlnNh6?KLRB%?TJ3iOG}c$O)5;}w`}NgdkhVw#Ke4&f-X3q zw~Da_ONgaTcLWly1gq6Rwp)Ams}VxN4^6nE$E2(%e|(u0YzCcZ8VL681)Pja00rvcCRc)mA37!35L z*(ikIpS2X<}+CLpa#z!!DPWaAzbhR$ZGPtrtdJ}(45T~YzH}m)6RV1ze^F4 z#B5Sf?TJnM1_@xk(Q#;NIk_N_C|EE0*qlniY%h(#(9ju2G33!egO?>l5Qt&aiY!Iu zKlsF?09+~Cy4&Pm#+PfSIf5(cV9&&Fe{V6Qp4YBTYhk<_QgV}+vRa=&pwsg4{zOO zdOjkuWq>OwiLtdsIGRpoVJ#3wk-e?4eF9Xam+7ST|f;kMIY)Q5FbNsYT|-xk1I`l;w(TX z9w`&dWMj~M)$dzhU!T@~{@F_dQV_92qe9f`cYc1hp@DsJ+XE*~(;-*z3mv&S;#)gA zP!$rjwkmyf&F{m->eYpe%V$o@3EI26pQ5?}#XFKVM2nQ6#b8N+gI52E{5Opm~vcf z?CO~R0fY$onz=oi_pF3r5VQ!U?4b}vHmwt_!2`8|j0j$GD+wwFbw|FU?9KXZarUzr z$od5g!`$3lrrh2t-(*m=J*oM6zP^PX_*v+bNv`GDn5ycb=A3+*AqUP0qsfv2HZkZXp0ZF?3*t{k}v3qK{A4sC1c}miQEBaC6%~XnG`84z}$q< zC4vIeK6)m}(5387t4a+PugxQuugz&=Fbf*%5ZC~|j*jzOE#ElZGHX(Xpfh!M*U*Z2 zCuE`GXIw2K6v5`4mgA8$>f^^-qIPStJ{Om4L-qxK4O2d?jsFjljLf|M0j9bB2ZjHo zb`6;o|Ltak|Mu84R80u|2OReA1MUm1by;`+MDmp&KE)wKnR!r0+6?gr#X+1 zlmHY1$xE{cvVeE}`Q;*ZG}r`>-a#q=3M(fX!)Dj}4iX{ebqd?eFuQ2lxa+u@Ov1RW z?BTL2xpnN=FJ&Qc99NdBP^}8Umu}Ve+A;*h5UuC?c*{UsoX2BViWE%$Ov@u@mSBRE zb`nq(1Q*?2dj*XUPHbgc+Sor%$=GjS20WC^ z0)TI7Z)2bx>J6<9KD|I9ADZdCjluS|P207(9uYs@^$*}(y`>?^OhR3t(+AAz2i}Zj zP*h`7N^Is+OKwjRpM5`Eg)O!5#)S9xD?62|yCGHjLcWym8@2rb%`t}h%(co5RR9-+ z(W{_-InyKAJOy$NonKM@L?k4cU%#5H^&~~jd>^ht$0O-tiH(VXfR#T47MM}WyQcS< zeVraa7K_cBW`)dvLl3DA)oXjSwY{ys93YQPmb@B#&kY8u#*ZQ?FHgqDcGnCkLk!-B z)^|w@zQ{OSsdPYaFay-Oy1jm_+j8X9T4Cj0##bX+)W1lEwqSrs{{@CiuaUDMYNV0gs$ABF^8KW0Q=eYE zf&>koO)ymUXYFqcqyf|kRjzA0=V;6K-3X{FO}Qq=!aG6wA=QV1{RY6)fSt&duFqQn z;gSY%HWP+%2H_Z>d>lB2>t5C7byh6JPD-kyW6r+(yW+rhmlLERN6WXlnw|8%iDVf z3XGJH2iI4Sfgt11iqUPz?zB04e0wUchZ9(=u@m7Wu*G-_d=4=;2qdqw*$sRgJSxy9 zDnEbWLd2*SG|H3>M6!uwiG{=hga~pZB9I<%nvcC1aGInl-)Z7v@{v|+bN+M?%4tCu zg%A}K?1n98_;!a_CiALeQ?kTblO>yVft&ym3LzR`m55RDWdevawNxuK1sHk?2=r(f zO9ET=qlbrY;$A{RVk#uW=y>R_nJ%{(#O?q_IKo~`35Rd?B~Jh<>^d!Nb#dd#fAJ+< ziDKB}iu$!#%7NYyKFc__bA z4v&D!(9C`cIXN9lSX{g-O*&DxW>pVn8mpL9J*Kfepw2%Z$U1l&Fj)1?g?t`r&RYWF zd~9u7g(IWVlE@r`z;k`RFR7zr(Z}mIOLQ7(AHvboBcvXr&q&i$`22$hpOFR@-%C8H ziyQM6A<}3khYkJNpbVrV0$~F|9X6OmLzYuVf|=TLvVshTC%rmgUZL8+$}kyF0YJNOD%T^| z#(5(G;$&}rNc5w}jQSAd#?7M;iMqp`mX_4?7yA8>QM=6VF@xDmP|Uk4hrsF3;DZJm zrB2G+2{)?}6auIjV2D5v$>tjz2uLTE%{VR~ADoP&h+F0NSk+Pv$CP2LAge5g)*8k0 z6b5RAm-+L@yzW*zZ6%CU>`IALylIEXe|%KB^&TBUA*)8jg64)C(khdL90p-mfGW@f z6z2{|G+9k`OCn|cLb*B&^z?P(x4nAv^!zJ!S;XQZo#d88f|2f{YA3R+si^^^YMo;+ z-7;jb(1Z^ePm@M_CBVhuKja-!S_ds0%BhS|TsC4!Vta{*FPkqMG&3$_9u1zU*jWsw z$xz5u1dR=wreb9wUroL3JU#vPf((*crdAk##dWN?&p}rubOFr;=1)2+-y|xxnuWA{ z-MuN2C+^Zle;o5jg=Le|^tk-k;$jwPJu+M#HVC#8fCPSKGRjZ4K0rQyWcDa>agf2I z0cHixhXI&b(J;35e({NWYPAR}Q?xXyvVZN@sKS*2O7;W(7r~E(Mh~3?WfYREgcj;v zMk!W0N2JRcybq}cBtWF<5?LaUj=(eYB`|YwDV^lok%0*??E^a4M-h(Dm4)eKsZ!`PCDUou?1j)2M5&v zMA`=B3?Cfy0Q6SyC;-vvX-GP)T>DRa$Jo<@(o$>e-o}{#pd7mxf=UgufbP`Y$W#IA z&~=izY-pJqy3epN8bYG>)3jheIVS_EBLj$#9vko#uu3kj%??&}8}wuW24^zR-y>%k zp=v*^1rwxo+$v4A+&$7xI{@KKz)n?o@5FwME~KH_UlQVBA2AE=ssPt!|LprSHn9A# zs-X|g8c{7?z{V$j$U_wAc?6Z_90 z7&I&*u=QH|a8<8A8et&ZJlrTsu{l}{(3+3{J$c~VZ&{b>b|k-l$Ul$u_OXT~-`3tP z%Xj_p8Sd}*v!AUbJQ6IBj#Gl(Fbp(fvKjY3MO*F$t0DX=rBs93Ob0ZZ`2>W8r2%0; zUYh?GE(f@w1fYYtJkaHW&`qN?KFC>v@1e(rhhu)DQT!>1U-?6KCr|?=8&fe#40m1V^Dvg}O zp!3P_aP@&RWd89%8H&Pau|4Y<^za6Hb7vZ%SD4)EZ>Oa-C30mu9WE+w%?<3%Re5r0-H%J7k@Y(t8XP&xi{utTwNeNJiot#|09kE zNLVvJGLZ7~_+MRqz^Y6tPvlD#Ir`Vd!=$As717KN?*tWYnf%n0j;;)e*3=q=fUy=q zbC>sTR2G5V>-Xc6i*os@JNC_GW{_29YBozALfj*q4io7x!41RBdk_W)bHbifi@op2 z^lWE_Y+-U{^*(-V$p8X5_Le&Yk8K{L(f)^-Q8;M16ZAdPvT9SDt-GRqm7hTAGff1`Dd9Ye?e zRgVR;PAY9$l^zldu+8LQS!Ckk%(BU*Mn?uJ3qj^-7Rjr#y{CShs$?pi!Qy}?+=s}?YhaLyJ21%b9 zi)pC8zky*14Xi6bxgY2>jZJsZdu5kC(hBj1d~vjrGMENJ;Og#qIoPTUDN2G!BTLLl z){l4l1N7(KIMByt+7T~cWQzzF7JBo$4OH7QOa`4H#Ug>{hjduNt*14UGIoA@FJ7m~ zqBm(XIGs^A08Wxk?B7PGNMWMRBD83N)apY-%23w^X4I{mz}cztrP^TD>0DMevqt9L zcdEV}%xA>NIGBL^2)d zWduH_Rg?pVWW8#g;cC8A?PvHjQ;}ThwDGe!>$HCnYS4oh20fro8inAzp^S>1y;SxG zhZV<1EsGeTK1O8jWJ*ff8#k;VZIbKrxHOQ?{SUj_ugP!k%NotCH*aS2xLFd$3=La; z*e!>%$4~0E^^P`4tk7{~F0L8;Yl11?hdP6vQkyI!BA>w;Om+4dvssh2#|k7PrUBTI znbJk;|BJl0j;eb5`u(?Z(4&Yb(s@)6Y3Wi>k?wAg?(W6_q@_Egd(+LPgiSYWy1TnK z+_m*Q&$pg?$M5&w9pf_2aj;?U59{+;Yt1$1TJ!yy1htIR;8+24Yfes%=-I_4GrH$A zO6q7b`{N5p2FSAHFdqb>PSmP-LdqSXtWpIirl_ppgqUSimYF&H*r1 z*6sGz8^e~|j=dhYs2($uFC*Fxnaom20Bw9fu0O|T6bnPP&9*XoZe%iYe~P}-X$P->954MY zKN45I;4^sR(057|)No^&`<>(Kwdo5S5uMWUh=_=65MCk+I%Yvuh{WP|9k3MsXset+ z>s4d7i~>XWVRg0-CNY2@UWcVi@y6z1&3H8an^La&>vxct2GDm5hlqHP=Z)djl@^V+#-nMuBY>Yhfl}lTnWx*uh^OAh%sR=Ta(ImvE+Q zD_!6}QK@TyNIv3q>oiyB)M8^63f);B&;aUY5up%LHc9)u2GCZXI1U8xn4E8_8qG8yt=4#wnk7RSdU=@)?frG zirlz9=PLC7tTo|A>yD-BGaj7KDtr0{&WZEe(pkK>swNr#?X02_a^8175;P~lP6hO5 zY7P!1u-C@npoI$a$z0a7>yf>+Ccv5i(*$-=QEBHJY$n+N^0~2_-RV~E^!KUU^Y0TN z`~)g!0$(oFvjU{k&`%-$`Ll^Nu(rv9V^5ys zOVnDPF7iaeecK+HCY2n(dy;`t%@1WtA;$3G)%o!wE{dp>g(4v`8L$r*(Br&)jL=Au z0&^EM%(fRCyUCUsI97GnDuThus<$SMNx~@%YygNYfZ$u<*lQzf@tBZl!MgsHLq6C( zWE4TINT`X#)W-+?!A~CMi0u!+jV3*o!|3UW1TfOZ>o)Cb}?)NvsQlDxgWjTh2I zHl}&nz$qT+i(Jk6RD0VNpI*c(@a#~;3Dnu&>C6oZ`Nk~y-_!H?2~EdI|G}3Z*Q$JU zUcb^(EwSGKB(F=SuRcC_XXob~VB4RaeRK@KNTdr#@|~S= z?SJ>6mG0&%9y#Jc+hN$dNZN<=_zDE7GvAZaQcQ3ofX)6dExaeqe{D+sL*KGILB&&2 z{`8Gd7z1q?YBl5?4>dP)cnl21%E>)>un2U%cJ8fq`~8Qiuzu-Ve!qw?J%p9|eqTMg z$LfH4*b!`o-T<3bkvP{ujkd3nCt62DB@|s_sMMS}$LMUt?oR%E^0mH9sn z6FOdaBS$_y`Dc??z{!qxmOb;Z&Cctt$R1B~6z}f}A9YX8O~Dcv@DI z+%TJ>nX1fkcZ)m=V+z4fUwJMf|9j=y3`{2Tl0vsZTXiYI1D9<=wq4TW1 zSl9%*7WY>=p-159+;lzU?vk-r31c^~^16NP#OVQPESIU`t0!v$Qr0~o!C#uCs?eoE zh31WCH#2Nn0fYWmfHQTK6Jvr-Qxv?Y*hSG*j8outC~~~Tt0;oEXaqT1v>LxTS1Q}R z(In0He2wdgJ6}SqZs9Z9L!5W%bF-g2XqZ&yi)6@hvH1Z!1Kg_%5Dese&OH|vAj4=R ze*zE5(^gd70we*`4Ys_8CNq`7EJ8>9rt&#=tf)QbY^M*tAz2`e)4zM0|$ez@)<=7n#{mzM-(r%MT6nJl%4KY4Lm;1)mvVqp#6s^c!wJ$In3d1+_1M?`A4y+ z!fEVVSK7!=efC|?Px>Gb$KPDDsaM^q@!xeCCX0e5hKpx=RErgHG=QKvEWNYIKZ%(i zZBtlOGyUuHwp)-r_>vrlY9AjSgGgt4${pg)!dEyFV}xh6^Jl+oG=lusG@26(J*mdq zDw)OH+N-)F7_)W5St7jO!SMVRfc(TN$$3|XrOUf}_JdpZRL|@TJ{6v6Bb!<)6v{pm z&E-Zr)1CYKa`?Y5cPF%h;oV6MqXgTl%;IL9`<|JDsbAS9AEc4~J(2-X;K{#xhkOEM-F19S4XEKeVO+rjXe&Iu zrv6q5_;%E-06KY|sOj!fUYer9SP zij-A0-c`EK)pkl-qvfuM;h@4$7hRiR&*0`!Z!qQ=L}l*dg6Ga>XBO&H20mX@EJ{<+ zU@Pnj=QUh=7Mr1SX}WlQIC$yVQc;!9m4T7F@>~R1SjtkyKCozu$O0!VPy=$^fBh4V zm9@}Ss(GTuZ79O2hGAh>1S1>Mpk)E9*z2+{fSo58}%27>rhY-p8QX_>`^ z)iHIQ!|vJEd~0NI-koS}1igB2Pi|oPxr?F9r1T5#P1UN9+Q4NVKG&D( zSq@Atb{DF#Vmyou=?j-zCrkiDQjesA=^>nM)Z6#CeJg^OY_TDY`hQQKN3u9K)r;6u zq|?JWQR&}Z+4df~hErM;k7{f**U~Fs+z~Qqk2j5!aiZVI7a-g;G!h>ENZ-yH$hdHp zS-df@sX{-aYwgi)#ub&?s_T*sr}d-MvZ{;N`cOaSSfr^I3beVd;cSzz?z?M z5nt+)hP$iGJ2@4X26|N^iuGZFrvz4^$9#pyi>{{adG|y+9A1B?_dnvZ! z_J-gvAJ44A$|s60c9M0qW5$K6!>MT?bqS$6?6D?aFr^E7WK$9oS)#K+S@|3SLHH^d zyRuLK`&v`HE1IYYU_*H z$uu0&Ck4S0xuS%VWe%s-i$<3h-NY#jeXX1FR#XCTJK1mR`E;&$#&+Fv*v$xm;Q7mp zHqumFQo!-309M={FqYKhUkh(rQS68uJKGnO^ooWps^5NFt<%%nU!!zqv-KEv#BLY| zGvAcN`b~nuL|xMcS4F!=PRSxt^r%!-$&AWaX7J2ngUbLG#**HsDB~aOC#!2d)cvFW zcws~5iKr5na-vQu?sRoA;0c)I2Qv+TcPQGyKc0_n6ue8M9LGL7_O^=+XlCqmAn8}T z#qdU{=%!Nt<+TXhmPJWP8DS*gh#5WG7t95H5ye$Eg<5irXB>CL-kEh5-Ho0^f1-Zp zn(q1tj@4oB48J|{q7Byf@PxY{0(Z94BQ~$58T@h5Cp#}wAFZ8L*7ux8=?;CcC*%~t z2$O2>vzDAKSFlf<4o^Y&)My&!%}nv~br<)bso^p(s%n=fv=j=r)!hm{^w474G2`2{ z++fr-jxGDSA#&$ixqT6b4#h$634jtPjNLv8n>^<)NVDM`^_h|e<9 zY%T)Sa0tg%GJS{K2;7=fsM4;)ayNeYDnW05#KICFGsym4FTP)uW0N2f7~H;-q)5JL z-VUlL7kxS3tSlq6A~D#lYkt(9&sm^aFPMkdH^~1uI3&F<(`Y4cKe$s>(C^~(?2q$S z@qWWDgwe>x@`agB+2{JL`jsj_7sqJp-i!jba}i1o4`oaG3dTdEwuC_xurl z_{GU~>H|`D>_LY2gAyqGz?*1jd_3>$#%;SqqJ-D|Lx_h(!$%?#76~zIM-#ZCTKUEo zU)+V|v0%ms>37&5$(;I-@1oB|#6E3!on3bom;0bPlVNXYD1gJbrOp`W7C*meAkM<< z%F5RD($i#8+W_LR%OG|Ndc>i&H#t9^^&V-E z=A(QLMax0MAu6M*D&q^Y=@<0_BNXGZ#{@6qIpj!}b?1%)ikdOyThrK8h`OT6mCwgA`v>t`iLLk5&mf?ypO=T`1E& zrV}7n&STyw-iCWs$p+slO^qxrjG)xqL>?A91(6jC6Pn~d7MP)`EB+YHE*>J=IF3_) zB5It>aSQTM=(oRpi-KNF4*>gdGuDFfd4(UYO-PZF-deC1Q|GS`jGD5N0L+EQkDE|L z!?!K$MEkqrL^4jr)Xt&UqE~oz0v_)8CLL8q-oy8#-@Z+G?;_bhg-F}NeW*9Oz$jY% zmje?fIpXe(hx%j8?XCx|TjoK2R!1t>kqL@=W^XxqRB^L9zD&Lxo87;1zm3CwMtE$w zMo?;7iOgCEG<#w1ZeEcT{AUH!b=Ej;3ISUQQ!y}&m~q-AymT2h&i9bZ%+}I&JYeVI zBkR=2^Sqhdhdz{JbyTMs5AZmD`PY_pk4vvLC8K$0)DA5uO44W_VX8P$lC!}wN18$X zRzv8G)zc4F<#dYP^{+ILL`1jE%Trm;t0lweRO`~yUrjA@7CsT8SXX2-HdBU4rNqsw zs9wsIkk4L9#HI#c3ry6BZ*Ueh+@@4<*kL#jNX2nKT4C?V3xCmYTJ$-9_iMBWX)-}( zW>{FmdBs`va1)M#n^{Gh<3l@-ru%QtKjz|QH*yE7(T7LWO4$0$W-v(6%eF;s2Nnj? zOJmimxHaG)`&;fuM3hrjpLu}6YjCk>qI!1S(lo5?Z-7~jD63O+<31^E=u?SK`LGB* z=7ha8^HBLvp$hObxxaVXiisP^|Ab?Gd7{z@7SJj2PXedoVd9Rg_VUUw z@y8*XJxvlCr^qn3I6FB6x6h{8jt;N(tY%Pr&X`(2jRdZ2vl<2jp}h2m`zzM5&(akSJ2$1=s_su>w)6=zmmON28U6OchqS_zILNsbmfYYL z&3Wg;YiP$8F_i_j89sd8%3wy%Y~KgFPsB+D*XMaCD5=&ab?{XHLeT3M1X_A#xlrLs z^io4kyzH63rh4v_2vUbcDLbrTctTg;;(<65a(KjwNldfJe`hm$B46Hp_w1NWNrJ7& zQdc)koODM)e*WO0LBx5gmh$XOZ*Gsn3-4)_GftIGZkhBv8^91!RC#DIR5RvybU@o@ zA{;`tF~}geOJ*0y6_$}Immoep%r|(vprV||j$czdn-?rl8Gs-)aai^COrp;ZD`Jt^ zBsr};dHKLx>(Qf8#S@}ODxy;=qXi(!inJ;qz@J!QnC7q!W$wM3y%`}8M`HY1RRbL= zxnaPWgm1QhIHrl->u~b^ zo5gIUXo>I!k;av}aF_|3oN^BNu)VCE(jeyB^C4v{&noqd#x zY#hG-j0{Ldgy#fJM9440tQzb%H=CoMGgnfNKg(&U_h&e;?Go^2wRdAWP~E?;bX5O| z@>*5uAP%Z8lXB6D1LL4e4ZQR;wMh-5^#1u_(lfGc?Zn`IZS!3FS4nW_9X@)kvqdui zc0W}4x;1H!Wba3-oDo2-vpGF*o?sWgV(h@?kzs`PelIsF@2Ay?bk<6pznF&faOse& zzOawWQSnM&syrU7Gp|Xg#Df5R`L{hCL@y<|_tZ|6i^tacxN_@5t4sWO&A4>?Sj3#C za=ZdzhiSRZ%!B&Z4pkRNYd=mB+e{Lz)nk<-6UroHb&od{u57VIOjex8Y8~;D<_%st z*9yo|9q(#(vUyL&apjI_W#;kTQO`r#=3;ZGYza7U<9lXgK-f$lzXVjVQ=-d%jJ#eI z4oXh6(x|a{{AQ8h$+Ti`@|^US+H&h!+EBTyCCkaX@(ot=bkEb$LxRz8l^48=0AS2| zO5##8)@MeH`l2dYZ#**=`D_F>YZc^i{Ja%jpwJmg7pqUBNSPAD{R!WLp-?)M%ie_0 z)m_g<-v!qGer4#LzA{?EL|nr7+-c-BgguYPCd1KVBsm z4z(Yv&_;vzeTZ(%OGP$hxcjX!v$~u4kkzE6c8jna8LdW{@LA>KQRqi%HdUuD*81mn zHQ90Tx!THy4*63BkT-zME~9_|H)%vs@%z9Lp<5AByq`8WE&R!HX^oMdWo19L!mZQ9 zwxj8?7{1PXh%5P|H-1Ej+U?*CrZv2$C{R;Le{Zv+N*`P*?D#k=-4c~l2JS@R&bf6bgPPeb<0)>42@pHcRaS&q$^tO2Vo<5douD&hE_FPD_GWx z8HewMV8P^3f7;Muq=R$owuXM2sh+%;J>gk8@?v^JgIVdJyz;8#eQN5-m4})VY&vZ% zCaMGZKRJB!#6G0&5c6q?_=>q3-kKw#-L7c}(QR-5Ftu^Kep7$sg@8ewAiPX|Qxn9I zD!Ft@dzAOZ4jvpE56Qaw@a5spCP1N;dL2alfT86ZU0hNuGY|bh2z#x$GztiiEeUiP z>MXP##rvsB z>#}%mg{-=|gnx|IG;he--&U9&bLi1CZqjWjpPN&0^nG>}4 zHPA9Axv9BdTs*7XTUce$#O=EN^q1GHjIR9#iBqUnIJH)8TxSAy6}NpY^~FPx&Bf#L zMIPuV#U;Leyx_Egjn$4#M9~eFnf?@<$b$6CvT1@H;op0-6JWE~&y)draM1cdB`gDT zoePwMeP?^Au91%37_`;re)Z=Xw?JN4)Mi1b%>Dfi*@LWbJ1uxED|6uk;^!PPj9BsM zKc9eYtSafeiml<`Ak#9l{kw6mcZ}_6={&4RW8z*HR{O;tjsJXiKTlU-!k_TM5E`{{ zcu}#bB}3fU>WmIdC)-4wT~yM}j52PB+0bV{v|-q0xIbgp>F~oo#NOk>NSX2=vN+tV zo(`UJ=V==tu9aAXW74SUFUq3RbUR6!R@s{vakdn=Z9}QgO7sP~FXU-4c}H#W(!!Yr#kqlq8vhf$bzY_8n-biBo< zPbGpvTJpeXktgFHdH3!>u9}o3*UO3v`sW{9LLYurPp4VcXZHTExei=kTb%^plzeB# zUmqym$M+z+6g@ldpy(LnR9%EiRJGHqQsNS$Tj_GeyLOJrUvqwj85`q!jARg0*7e z>&Mf};n3Uz8!$&N^nB~njkNzFYD`8XU!ToC$^OQ=~B&=_+3t)#!fGt((#lv}`%B|cP6^PZ7 z{a1Fo+(1mGh1si8#lJy7Zu~#v!sa`AR&@ zhM2bItGVFHo7z~Z~2g4Xw_36sB z>TI=D@@{@|dsKAgfpt^a<*#@5@&XXgJI=27dXvvE&t1oG-PhbyNccWwhUMPVD;$~l zQYc|ztH#1+Kc!L4`sqGBVCRXaZ2XaTL}LTT7DFC{Q>+Vr9_5A!>qS)9g$`1n3x3sD z?t|jVa48SSX-X@Jh)!e%d|+YNj(X+oETWp2t+!bH$cqn8Ef+hSE{te%^x&$CE-0Q_ zJWP?wNTaY=4tT=Vubal4B+l#t6_psNozID4Lkb24^*V5dq)5f`Mzz|Io{ifQxG$;A z%@-8zd=SM)ov0_(wyHRDogE|fb78MR?#6+WHneo`;6nQy%H^~s@Zx(COfGPS^3Wwb z=#;}$I%c^Fi8bGkzPluJO;n{+e>!zq5LUSKUbX(t{iyUWgfzzVVd2<85|jt`{6~p( z(p(m->slDhGrk^=+`tH_9!0s2i4nI+L_9ziAi~1JL zNKf;@<)nEZS~}SbkBVm^Q6u+Mjm_#}R^~TeUNU{u_Y0sqC$QQ+?F+&k6%8{lz=m41 z+=g5){oeOqR?HnOq6YruJDKD4*$rQ=*Hf`wnG1bw$H{>xS~pd4=aC!G zxe4vxr7xMtXWmsyA845wXk}JJ$QR7GRMn=H9A6Y)z~y#duBWI(sf#EEbPLIrTg)g= zpI$7x8-capcyz1RN@TF}lvh@8fLy1@z^FGnCpud%B74`c6?Ia2uDwUr2*S%u6Y*LLGI~a9eddz&k;?T1YVRi)=w&vU#awt#ia*&GZX}|6nRez! z98b!d;p>&I$rn;U-;PknmDjgdTS)6(!YGWFRii&YAN@jZe3o7=pjs#{+}(2jFicj{ z^Zo7)4Q#iVOfwGw4h0STz(R2!&2`Z}dIVkVis{m%(kWL*$1!x{e2hG(r%-Ztu$Iw1WmgR8M*slgzYow} zLLFMQ&R%hp6x7RpG_IS-R#SqzcRg#3epGjFokw`y7vI>fp>{aqP-BD3Dr|wYA$JpS zn&Vy%aGe@D<fe+7yxMButf?=8dO+6cZEF^ zX~Jz%kpz=qh9;#aJ@$bcKgoG&Sp#K$32_u25ehky?j!TA6b66+enu#}*gNF$^#@ns zl&b@opSE&18e+^;5(>!TY$@kz`X)LvTgK3Fsx$eUsgFN)ZG(DD8FxSUK`B(HsD&M3%CUy4@1Wv483Q~+7 zYhqR^kc?A7By4!&)*JWu#d<+F!5i*T>%!@C70OB%K{T-(J<_q%Ok+5Z(V%crZJx+n%{g#SG7 zb9)!Adz->GRdW+R=OlR5NDCSwzwcL4s6-9-Qc4>69vqrMjy6^730rh_e^pY9JdD$% zAK^8q(sXOJe!Vd!y6xL5ojM;7qHn8uSz$4>6GArhB*Qye3QQ)c;87(t2jkOwx>S%k z!QT+gmsw#?U=E6R*T$;D{XN8`!@l+6Gl&+b7b~{HRyDI4W&)Fc0X=Qpgw1kCOpX zX_Ewt8Iuv%gjFR{tLy4;81G;V+&49<*^6`f2WV8V+&U2rO!fH@dEJE-6vLF6TC9V1 z5jWXR-JUEagHba?(O65nB=5&V0PLQkYR;&?=N}>_eb84UxQbRuPCIrJKVfumA8wncSI$>ifAy%9iN7n?i^j;XG$z@z#sEae9?e0eT#|QXyoYK zeGKM~63YT4=hBGaBECoAV~GHU_NNr8QjV6nMBF-_4Nsy|hU-4sldwy4DT>Sd4B8_? z^CV)!VRHK3{MlV^x>9l9df)%X(kGWAWHcs(W4*Mg$!8y*3&B=Cu!Mfn$4jHSby=#{ zRj|R~9>h!RW)3U*=%0|fEJhjBAs}geYE4Od2>}l@O(yQH|38F zh&Zi(u-93!C5Ou^{5(8lEBq4jFcL?T;Q>9lX|}6jeU2+>s{sVUf%osYOppxFSq=)o z62(Js%8m2iCyRck@D5Zj?7O4&I?V3f-<04moQz6X{IinRsI(iaL>yRjKx_u-V&Mw^ zO&I6QF6mY}2fHMTdEiC^)bj0Xgs!46_LBU9(k-dePu;H za=pevy2Ga46UGP5Iq%N8<%ID;ylAyc#{(r0B)I=z+IEJPMc|0Yj+q0oN1>)_9bT3Q z*x3>_B7|6_*=+8kfis$1qvhqk2#R%h24L{cg?#=;QMk9x+LM`QV{{@xBQNM0$6QCk z7V)UXUL0?VP)b71_^l6reZKFp=8j!BGFkKAKMr=AkI$9sE4cX;7a1*AGEMg7bj!z{ z#n$lVYuaNXm1u2Y25lG@6VzG`kETi@L9n+)i zTPCxPJ}Aa>!y|eV>)VZ(Yc*s*`23PFmu8_FagQDi?C$>BN%(brug#Z5yEyes`QiVt z5%!n)2lpN#8vQWJwPzMhTrlMfN9CwhD|r>}`wgCXAF{q`=e!NEdR{eyYCP!NyZ?s~ z^6Rhs{Z9lco1I<5_CM*x{|74ZKVJZ1@%sSdpMUoM6LS2|AN{}VauFt*qx2}1eiAv0 zAOPjG?GR4@TG=qvlKgmcQt0kOl2;CC4^X<^%Gsn0kO$fi{H# z35a`9xR_asiF8!ip6knPuU&Arp*n9}P@dgEfgk>_%`t?dv&qQW_1;?my8BhQJU6H#+R=gS|m^! zc$DfFXkLOe{_Uo~@H@Yw2w0y%BYuzs1o@*(*9&O z!Vql|R~?cy!t8#9BmdUMX6_XJfYY|>Tjgz6K5{HF9(Tso<|}hC(3e$&TIfBZ)^63-g+0NRt)ODN!-IU z@9WnNk&%^cPWKf5JN^}Op=~1-JZCS!0XLy|Gm64AZ^=gBkm%&JQ^~ag(ZfC z$$^S+`J*hT7lzmD!IrRb!vqJ-lik_A_N*km88O?A&h90^YjbjOkyTV|bDVXD!^u4Z zTXk{>w7_d1@g}@jdo<&uO9&oxRZY#p^0IfUj`l3fz3yzmtc~yR0Wh|bo6Hv{la_>R zHWX@4uz~q`T3A>Z5s{!{`u=wK^*)xz#X8kugz97keW;L*j&g$qDF9{UoF(Gp;gx_} zW=azZkBrn$P^4|RvhfkXz-Qj{#y2K*`r4A#^nJR#1tMqL=HPs>#WchJPuoP8PO{?7e{?l)3qF% zqn00!NiUb2_+C=-AvUU6}Wl!>Se#Nq=^Ylsb-9bwKdapjs5eJf@QObI&a5C#ZvI* zb9j1(y8VcP+vPS#-POUBN#*w5JbBFNpqO3lvEt}YXu(;cl=F!S$j3KRDA%3Mui9*a z!+kk)XP;@CKJ#23K--Ee=<-}OT|j_4<+WZwRbkgZdm>fjFn!@ad%mEgl?F2EL232C za??e|wL<^1Gd4ZFtrc&4gJSK)7Ym5O#p$Y%DS-Y0m1hrjYV*!k;w=+afDq}G>xmiY z3BTmok#3KD0d|WC@v8~@d_OI*4?jss_&gFQ#WeHS_uLPb?v3WF@b|R~gXU6#R+VbG zJ?7xxfSs=pE5Z&Rf}tEp_QppdzOu+g;x&*d-m;|EdZ(ucHOYG$fGRiruV3xwGS7DJ zTaPFxfsqr`L&ED81280zS1#QIcOE!F!aM$W+v0=iw>1**?h9G7PVrvTgn9gM9i*maPZu;ZUp;zHB_uba%>H1V;i09RFe&08O zKv2{E+RCdroGNi;q)kdFc<;19YOXDql-5HF=#gIYx^V(39B{|{NqHPNd(N*8`_2x! zG|nzAm=C@2|HRxz-690&o?o92%avhaE?<7RI}StIW>qg=pElfByH9Q=dKfOBY@IV^ zNhUtyC>7KsGym!@~_?d>s7nA_4;s*Tx?brm117x8E_;U zuI?->BKB5@Egun0e9Gy2qx9ITK*VAv{tAtzYhRx>5i#G(u5it+)TC6kY@g*s4` zfr`rao+mk0;}-tv-0m(`BdAE|Y_TycI$7*~>5!Dn8-z!%`pWbqK=SF74WI++HP6Cr zLHWf@3C|>A%evy!U7!>ezkq*$7{Fe2hQ*%Qw(kRhh@LLx~VAORZZ-H#3qavkbbR8+2X7yjt%?983Yaz4~t zm?igU*K#?s%C*o?W2?7Z?((o(lfF2uM9;nj#8KyyRmE3liy>3CQshYlOsUVDwv3uS zM~h6=j2KS>07J~llr5Ov2L1e4``~}#tWPbjn$x@a#zUFiG3U3Nnwr{jaBU|m%)1U* z3>MbcjY*z8JANC0M;|EBKnoTXCU(Dn?XPxc08q^+7FlwH1CD+?1DAq2>^<h&44xwd=+84I9zknsc|c9w%%Y<2K<`OZOAD$SSOT~SCB>4D3Dzi3^fV8Z z5;j~NVDMc#jg4ufJr}a+=I|6n0OrbL*--y^HA~8{{W;T>`IIu?e+IRf z7PuQ-((rddJd17^4m~>4($oL&dO{U^2#Py@WRC}!`2g)UmF1gQ(qmh79ycOf$8pJUtUZnfP8EQ~$zKsbgqd@%b}*IpNXTC8qP!>~KskbHi)x{qx7 zBDsz7*38)DQPK9#M<%WO>pA0DMV&m{S@fK=4?IduK@EBmYa#+qJ z00=Tzfq0&g`6&U^9R5Sa6X-`676ES zMlFI}XgV6Sl5n@-h8NI2vJCr#S9&~S8;;iAfy*<+_q5G7_`i^d>jy|O;JT_DL0cnd z92fiIi!Bx8)p)fmEG&-J#=}v5OUEE$eK3QTk}^yAtWRkSxf~6;;6J}?ZsDjGuA;og zmA-f(FyuLA#zKL#TImSzz`mK@oC!f5UhmFv@t2m{13P}J9my0O7KW{RDo}f2!WYMO zxBxuyCDJ!0TZM{1DEQ}}e?sOqp{E~iE2gnM#3FyJ168AX|L)d%;PuXLPJT{J zeFh}Cfz#36V6_43(UtBX1yBqYDFgc&ena5#ZNE0&Ypo6(%z_vpS~LHRTIOubfkQj)uUtWMxH=3`h zk!Ox!K1+6^+Ratu$(QVQKra5`$s5-r;9QJwE-6`WjWOvyX>D!I*J{}LoGY*O5(ud+ z?$`Q(sFK}GS<2eF*t%UGV34aAUi}FHRgAar{v#}U9Ey=LXY)o@Ru&b_C3_qIh}=~o zC5|3I(e1qC>GVW6j91|i7OafaAA zCBr^HcVSX)qmE>W{E#XPte)GxonODPacs?6!$BC*Vd~#bL~CZwLAM-UY7u z)>Nz{C<-Lk078S)lX`scge%O&^x6*l!V?p><(X>I)4%rd-6SA1T}O;PEvn}4OjKf_ zT(3SQyzdc5G6K?7AcA9b+}0W7yZ%&L8w-ZFe0LrI9lAR^Sv`0W?)UR&0SHO(e6h$2 z$11?nIq^WUK^tIYI<<9m_0DTQd=poeR#p`04nb_?2Cy39U^NHTY;57Ap7VX%lS)Tg zG|MB|4day|AOl~o`g5%FXOZ%LbC44wS z%D6w}78oHbtU~`on8Oe#20WlnFm*w={1Xl*zFg*bMBd=TG3(SarViqM+Uc6<&ONH6 zMgWc))A&(U6@#ypAW_4Qt^)#4R_yz-+67l}UtEkAbd=m;v7&XGo4N7Cd%mtJRT63jemhF@bNY4#g zuL(T0z?w40=(*nX|CSA>+YRLmn-qot-EG3bI04DlsyE;cQG6m49Iqf&(TX%0Z@}Mgj&WHQ^`#A)1L(D?91P1nk3}w!fca)+YwF*s zGY?A0J2|^P0Wk^Khp`4+9>T1Jg@tAi3@`uiC2Q;I!U$+>&XLP9@=&nNvYwxxR=&89 zbvcFkuE1a*M6;<&frRHUfr9Px#c*=N!KIGK+d1^AWgmCM4hgvJ2mo{-6%^mb!NnZ_ zfKI{J=M;T!I4~U@9kaMrTUuMaXX5@#C2ZqEIbW6BHk7#M+Y;QH#ge|q3>+cR$y?>QdHZC=*jmORKH%-4~jfz5^?JFark$u$T>Z)U*0+ z%U#hARlW89_(#+M9YcO)ecf-wgp!wcW(>gKpUGx{ z9qZ;XihuYVvLY5D46#(qTs9kj3K;soq@`tf7|Pw;+KO(=&q5zxL6NQU$iu>;?dh+N z*bst6NOy=b%fIU%mq2}IBOulxp>2Ai$SkENdnWedeV4sDuq@sUIAPAu!VAXLL^>px z9{%d3P#00$Xn_wO(lzCN4TZnEE~jHOpH#?6{Zeu=yrdG0Dc{j zE1|FOo4Jv(00#OR$aipCQ`l<9X1|)Bllz})UtB3i0K`p;0cY4(Sw{h02HVZ>I5FIsEb*+bKT+%(Fyv!hiJf7%d%^GIL5>Kl5A3cMlmo&zLK_YrOf< zL21Zir5&4#>lX5xeU4Wqry{!0Uw7Ir@O!lVGCUq3_eVnv=ECYf2J4)}6@RTE65>_nCZu-jtB#6gy)BaYqR^3%4R(lynp=R@Z-`Qt(tKv z#Fie_OAMO5oj+c~o)Onb>J62B+qk(lXk}jNP*|!UX-~!F|C9A3;M=emb+=!FAoF8! z$pqo5;>maC`^+Eri0KG%J_08)bk^^%pvo}OS!ddhO&zM|$*Hl}e|3n}aOWFK?+!INfzvxz*R zY`z^+_hpTYB^aLi*^1-gN;9IRb*J>(H(|{GvhWX>$Lp-2+xjxM{U(EuBd=ojEq3Jg zbxZI<>kXgS`e5o?`@H$49{HS_j=+JD{{_QShBx82yT+HR)DAml!W$3Pi_?i$!FXub zpZA>ot6BZic5z+2{uaIAQ|DG1n@>eC@9xw8G6BPbV{E!X66IlX-&?#8cL?Gc#YJut zcY<92-{?I>d*cQSo4C6CKcZkydgyP|MT37JZrb2}R(FXmu&3u=@I$|~tDqC+#k_L* zql?);P@~u5Yz9x&fyXtdc^$64Z9WbPB?@-SOnKHWI$@~L3iW%o(^YJBwc42*K64d( z?5y@k33oZnGgtzxeWJwAJ;rZK7lU4n8IMV?pM~y{B3x(pQ8RcSo>8ik=l!lWzV7z3 zT&zy6{pU`4SJ<+pbZ6cIj|uTUq%DYJ;|Km_;Bdbcq<&g~15GyO(=f2|4nc$zb z&a4ceZpmMR45N!3x_r%4*(2A2c}J97alj%f)@8?N2>cTlwZW8IS1`l9Quad>Bc?yYXow*Tu+I&!Ms% z=i_5{&jd={OdfJEZs}Oul>$@n&!_|nybx!vPm8)8FJGM~HffeIrQE1zZQ?BRm0q3^ z8p>CgvZw`n%}$?kzVR;kIK&dD9x9U7|Fm24oHq}zSFgLOI576;zSx51yoV>;TfV6# zo_=@veV6On^uVZ{USIT*i-WHC)}@)hyLZQ88?*cT9mSqap_DxD{4r-UE)!+RUK#_s zuAhT+pF3!0{}+328C7N1{r`d>AxMKF9fE`)(hbsrph%Z=H`3kR(j|hRbax}&Qk!m2 zIyVhxZSMHpzvsEfIcJRjt24&gFSgfqZ+5I}U31Pg*Y`80QBN3ny90W&g|yeFhHq2( zB0azIc!t^uZ`I;mG6Fw|{HzB20}dkf&8K9T40%pH{YutbprFNJ@@~c+I|SkaVEUcKE`U($mHT~3OVvR zH0?92!&I)ki(8_nUC!GR!ryG{EGI;FA-gt}G#*Egx3xoGZsdn=+dQGAJS37z6U)#k zhmFz5>!r9#6 z%8Gv(BT478*yK*%Bw~Wcgjp$2F?!biYEEIco&{Yy6e25uu;cO-23d>g;jUkfeDe` zq&@G9uGH@wL$v-X-?177ai-4j@)9n7(FmZlq-U@}@K#4;Ih`6rn0I%qw)@~*xn_2G zq+N5s+;C^06`pz+@p0c*6o@T&&51nUzk$o3Y&1yMUHdI>K)<;oroAfRhGJ;nNn3Bm z6OW0)vUpSym`zE&*%=2tNWu6IW+EvgGCfZNZtkj|bcUyBSLt7q)_RmcttT&dBjcu^H#R{3!*p4>L7X&b3BFg(lg#0MxOo zs(sakLfPMvPLds$Y9X+9q7mZ`qR{U|e>(f`w2Wl5QResezG?a0^Y#p;go9Mu;Hq}E zR+ipU$w&HJT2$j~LbPIj)cH}qkT_WVtfnB11unM_n%c)g>f>vEPB@{x>Lhv3F?R!x zVuhct<`n66enb9cXN38M(iO{oLld2tJ-lX21O3F+3vXQ%N=|P}@V%4iTa%y>emj*b z7CZ0#g7a)fcnV2Vc%#A=;ttykr= zL%ep$AmO!LpQa}ZPUERZeitng+y^f`p_Wc!&O3jclwe4#7JkI9H0h8=U>p00#R1ZI zOea``ktC`iE|5J~R%ql9((VLKSH{u9=f#9gIn!Q;8w-kaT13cAvtAa`JSUUglr2vP(^97&Y2JR%Q%w{m?zM%LbW$Sskv z5q|(JwR$==?GRaZed^>%iDRyA=hC%;Z$ZMTpn2&$6c7Pr5teaypqfEr)CJzKE>oBA z<~>zVgdF)s*a{c+_eX7AWe!UUyL-Rhe<$xb2G-`uW~HkEBPR4BlxK_tOh zZooTyf>Bpb$ZNK4$&qm#Sx`J>ai7P*x@kh5!mmZ!OUBmpb^|HwF9Ra+mjPj3jXe{7 zvM8bNc$qbP+o{PAN2lx{xt*i)<_``Tn75*E*z0 zv9AuM2opp*moxe5>4-wdp(>CM1)bP&_r|s3sgNaVya6zdOMRUp*jNnBi`@DzPb^+n*b5G*wD3#+=NM(lQH(|Vc%)?0snld9iokB)^_cA|JUx|{Ux?$mYLz*zP zR~OjoV~|5>#b`a>P<|!l`aw#0Bf*xasT7DK#7C~)QWUx^PF}An;PK2(pper0Iprbm zu}CXsCk-6ZEL+R(=01_W1Kt(Fdc%VE3mum}YrH$28ftTWY4buYROnU)W<1y9wj4_K zu@8l8aEACi5#FW5$EZbh{g!ui{cUn+%Xt`W*E)DK!NnNx*!5tefge>Nf@zOJM=pKG zpnU0vA0$N@6RY|gRds>-Ytz=A@^)#AsN@^2>VCI?Y}4DC;O;oe(?D}_FE6yb*qEO6 za94{3-`U-LO^Ke#ZGK}+v`0JkO;aU%?O~d!qPyI(?d4VGx@3lwm!e}Y{nF&rTsRgb zjClj)M{8^G;NWk@cRr&w#~YGoxLszJ8IBih;B3Q8tY+q4Cf1rQc$HtM52fyYJm&@0 z2tQ)C(H3$**AJqna{1p>9*tUSCFl8t|Uh4s-Nrd4;PHz6e?kp$*Bc@V4V z5S0g(8Is%am=;}GsB<8bT?^5(x8GufumuzLh+#n@&&_%hc;n7X_sUJ>jef>7voXCE zU3L5oN^HL1SlZhe8s$$nyzx4>Ce2*id^NmL;fP?9Yr&jl8PWL&?!#^a%j|?oatrc@ zDP%7Cx%S!nEI+0YTGBltSsl-ewv#JDH9e)ZO`H&)KY{aOwfo8B@J3Bi;ap>{xy^ zMj_@)V9|-NptSAaQES2WGP5G@w&r82+!XqJI(5q=NaG)#BptT2_}hKPniL&y1fs9M zuG(^3Y6QOUbVKy$)U&i_x=_)a<8eIN4QUiYY0tr=g;)XATiGy&j5!I$cO%9Xv-dG)F_YRg>uy zedli5cwZ2%4=mP0twJ3{PgDm#LE*v=%)vueIr{kB=`ex;Hw(SFp`vp7rL-?QN4An@ z)90lKu1#)}O`2&n)v?cQ-#`VE8oHDWrf%2Ae~9_7%wQQ0Cvq%Ft4_C8RgAhO#J(Lp zO{SFJOX73iw={G0ky^E&KxE@Q=o^udSC-N17KxSQ(@lLh`06kRF$8sKcRt`1gY$V+ z3d(4#q@_TV*w!{Dot%q5#6CZ1b`G63#>x5J14TDqueB8rmyp+3k>#2(jnmCn21S>@ ze`ZP0x@vN|xIePgfcI!TmA=S^|4}V$VPYTb^G7boUW7vFJTkv$Q8QL>js zZOekoU6U~?_FVb`0}4O?E}&O5;@%$lq1vM4lX^@dUgoz)TA~3@h|FT7E})d3K?v75 zY|D*1=PC{tbt8r^m-5Xr?e_YRxEXY=b3#9GfwT`%Yx^Gab$m_(_ zC&H^F0Ts+}0w0Yx5Vj2#wDidQ#GpLI}NFn577I!{V3fY*gA%Q>)GqI3GF zD&gUm#B(9P!kB|KYj^balqoIJGpl<>S$(dO5WUFv)y{s#mt@(gRx#Up)BD;94)|Gp z{?*TmFH=P~;YD(TG~TtPYYfm|;>vW&xcEP1;4Cp&$wxL8pMf1r`^w8n6 zS%&G5kBn^^t^CKl+d+6-ilHgvr6xhOV=K+J%zi%A#|@h7T0vnzAk5{gHCYE-Dv%@DN&N{`Nd;Y*0YnV$flxka6b1; zAFLxS-b#46JuqdudhbfXIhLn8qFTF3c0U;zYt?Yu4$Jx>JREJLViBpr08by;l-kjr zkf_Ha4PLCHZJ~Q_#PkcC0=(V#bkF(~vq?Ef-)(nMo8hqTvUwntUjt3)MGrfckhZ#B z&uX&fRcT$a{Y{iK$D+FhQQj|nY;0t(pa^TOZZ0M4ZSRvt8l$fWb64HiI^KOq{VBdV zqSLdXc~tIrcN7}^p=1fIE4dH(Y)=lFAiz2DJ;&~M=tMx%&USNFmJK!J#!cAa9?=5} z=F5PS!f)$ti~H$^%KfT~4T3iyDE&}AGLI=ZbE+xoAu;Py<2j)~Ina`h7?W4ST}-aS z@EfEAaNk{@n|E1$ET&)Fnh4*IfU8}7!oWi|C!@<#bGj{enjDc5FEbJDnOMru^kdA1 zD^yA5Y1vmBti%CD3olmb;2rAuZLN;M!Pp%@L4@~m6nLJ!F2#4rrU!-9%Iyjac zf~FUjXrhp!Q~6G_W7y7yRne2>XLO3hn$3oaQQRYBvFvn~soQ2t`25mh)0>+?9qm&G z5tRxX_R!8_iW+WxPn^Cm3P%?GCCiXB@q6p!Am1@XYN9zHXN`Y<^hw5wlR{c3x6)*V zEM_%54Tw^n%AGn*Lq5*0VNZLG>ol>|2)bYV28PYdAb-)gHw`_59G3&F+h zD)L31X!Hw!SZa*@&!p&>!BeS%86|z!W94mArNV*>BNsW=l7!PL{U-@;%QHMPEy?Vs5gVRaQ$Zxvg@lY))}UvHT|;coUSB8PdSdo zT~$Ss%slp&Q%oBM2IKo|!D>k4Vyo2zqSh~3w4mco319siFU#P`uJTX_RyIYn$0XN_ zoig6^b>d8*+b*~UY~c3hKbwh^dI~QZL1gBdZO<;)m`{J=k3OZbvmZztO2pIZ zSc^KIs)=u)YegE{?zE>>WsO(5dlIWQUg56hYgkuSAr!L|?u&afoi}+8-*>J@vF2W6 z__OOHi>*E|TH8Larn-!McD=hR_AL_)?v~>W;p%kD^g+pLYz8ux=x03@$Y0S)P=Rf$ z5J;tn571T~i>GTeB=_*=U%XvfydXkBg527Rc|SI)?}6M;w4#QT*4&;KZM-^#Su2b` z6Xe+#43H|Ya>H^!USj7fV>}+zazd!Rz4?~RT#%=f+T`mF=Pg{t+yIBN+)7Jjof|YZ zHH76jY!d(rTxjQ)s&UZqsLg4z>Z~ngAM_x5FRK4mdRNBn6@LSlw5nh~ZlV0dq_ZmY zr}w`4fY6g*{8nKqwC@=?@P>8%lLAwVlTf5t@9oXO*n%YLoBDva89`$d0)7=o2!~To zGURJt+1C0psAga!T0Jc&EFDei5e)fFRSzE(T{=1cnS4Ug z$wIbqoc?&xHP1UB&nOS;$EWMrkC6Mj7G_u!m3TpV_>qbQA%TMjvIs{NQ`P7Xc`!-+5ExERra$n^6yKp z__W{J%}e)M4sG~?#js|pF~{e86HCoWduXp}JUfY9KA3G6`Z#j7`Ff{P&jw%Xod0;5O;iuAx@=2h z4@}H?oq#Wh=@~Wgj4KOAK5PVnL?FjiC$Z2z#i#*C@@hbc!%Ug_-QweH21%X4ZNE(f z-$&1mZ-f!++L{cqR2$|VYgI*6dc0(&eI&d{zFWM>QaX;>80ay1PeO@BPbc}PN##f? z?Gk+}f~O)_GK~P@Nv>1$_Ns?Xd{ByV(psZ@m3n{sOi>@9)fbsZ*{JU|1$UPdx!@Srk0>g ziLZTG&BFr^`@GS3XD*ptu7JCEzpS}hFyqZt*u;EcxMrnwl`hM}3tKB!y=GrQF)V}T zI?s!(huPEl41p2@-@bippyl>apVxT(Gn4O7b~XBRlyrId^6*O8=n=wzvEdMp9a}^- zbUn&Z7gPH7J!wFZ>I%l`bTw66O}2u%{fH9FtQjNTlb5Ln0~XA70+E!5defAvDpKX*INI$7@$Z`A>*^Y=jfrnF#@9l{gy-|aD z$VldL8d+k|=ks*i&MnFy`kEJS5=)oVwg&amXTpx+E_KUU`*CyZd;jPtZvOadH@AjT zkVz5EmNgss;tzC?z0vr6QMAg@W`FGbOp_g{r=`Y;IJ=2)d`#=kF@b)z+hqKbL+jlW zR-G$yT+5Z=g9FE!Dc97tEuhHHSrFvTkjrY&k$~Sy9b1jL3*C9f)ZL|fKS<&)!3+KS6SP&_v^`%pq`niT$`bUSY*qXplYtGxTZwr2-BOgg!Ana(PUZ zk7JbJ69+pQWrZ}6o5xLh*m2`(Jls6Cj21_ zQPE~uV*L(`tnR%@oAV{?f&ani>icVYW6qpuU&VdUp5W^XBM4gz8eD8r%dk4CZ8@28 zp)mT^URPNh-P=(X1<`C$*R7dqxSGAX%P>uL9tGT#gux4D>{gqIry-u?qAGy3U91@ZyDz%bXf57&eRshNEc? zIm5Qxy6=~$<-1ZtzGnToJ#VitK`XU-Z?{@Jm9+wWk&Mv572WzmB90kJCFB`bvM035 zl;*Q0S!Y*K5lscUHjUFTu~MO%Kg&oOs<~x=&!GX{NH=d#$*58SeuV80@|uAklO z@=?RU7Z!IEO9M(zxd*{BIFdswOJp2T2c<;x_m^6f;6Hk7E4Wl2wd?oLxU1jmxqRan z?h^M@#PZv@3D%=-em6?1=P9rIEre^-UrH^+3oX+o;c;M6*q&)96|(uon{7>dFsiX6 z=v3cdvK%m2phczLrK2P_r7UHj!I|&p5*FQjc^W|#tjV3A!!LqjjMTA~VaHfC#H~kA zL^JVN4XH+;*TJpTgBTM3N=XV%X9PFcJ@@dS!*e*lAel9Fze>PbpZPoZ)-nUx!>mE` zdRhkKTpP5L8lTYkl`=wWiB^;w2F?U1&T0vw;duc zlsw0UPK_+?dL0@=QG{+Bbl$Z(OBFT+YMT=Q`%qS=>~ImHVUw0FMvDcEp#W$=KzhYd zp?h>x&>)LZb)_(#V^y(XpSl<>=NfB#fW+|NoQ{l$oLggi@NQG;8ow!-8bS2MGr#WE zIh12RpKFsUyIEg?S%iA*qwSf3KD_^aY!{}RE0d74e_(~nn~B*v@Vx41SF^STS)4_{ zq0-KHYQ(vCz8bgat1H6IX8Qc^0H9OfQB&XWiY(x79i zSS}mW%&TFv^`BwS@W91IdEAtIetQ1cl{wX(6Ag(^^W`6^fva9dYOB|u6S3N?>isee{tQsu)csz;5*7Ad zf95N|G3DW<{YTc|-(F@$uVx5&#YBs=C+5thx{>ewnmzc5Bm%0*n*cev3)WIm06dsU8iN-mjFN+$x^8VoQZ!pMvQ(ugvsOf}tUN`UgSzqC zW{1&Rr23@v62?T<_Vms#=_!>H*RK;Z&L~hvDPIs?GKFBCGM`2HVH*CN8-UP)U(|d* z0kkNIb9QmjtyBw+jN}B`0}$Yv0FBv;Kj8o_sXLqOm4fNLQ-`&xDG6L+cSZ;HK9v*y^olS&#Ey_P%x&$GQ!y+M7-DR9U2(UgD&0tn7QLmbrPELE&IUr4 z>GNL)Pfq62ulRvXC*!lB@W-Pq!#@PF(b6rZ?DO!RziX>Z$2V(%&hb5vBznOkgk8hV zf_-v*eLcvpz-~W+7c!>xm@d4t1lMd|Y^j%(m2qE`qYkwU^6ihw&|o%28@h0$1!;IE zSJp-gMoI5tIui>d_S_W6V31WWPi?xm@bRQ=h@bpu4z`I8>W*t)HKjZfrRnkz=p27j zoFgSda=e+pk{emhYDEi|rtZ)=E9p4*$Em^q_*iF-bdi>_29S>G-QHMD)#xD9v%cig zdJE^3P|Zp5O60feUSoxYD?by^TYd*$-PZr@{}M6DI*%Kiitm0j8MzNcKb;ivT_l3; zsU(6spU)C>71i%FY_d70^>ohuclqmT2@s@;|OEN?WG2xP-4B@?Zbh=>E`E zjIB}RSRLg7ct#mlOM1}f_;{NTs2LMR>QDJ$;7CnP%_0y}Dk^J=HQ!u2vqGQ4C|~fp z{?r3LSRZH`n-drU0tm*#$>y85u`xWo>bsNo_uXSK>%@z_v=G_R+OndNVdsfLJ`ncC zBi+7WQXW6}^>z4e7rPrjTUJ>^;8Scnn2(U?_|B0AJ{V^JWaM0+r_sB2j)$x74#JG~bB5YD50mcy34|dxcCB+rw2L`#mqj28gU^WmC!dpNE5H&eq4qq{^E1 z_^cliI{>$=r}3jWC(i;Tq0ZU=McvrlaXF`?0h*;Y9CW^f!I?11K;q~S4lp-spp%@2 z9JG2v&O_5gHZwkR(zI0yHG`wJdN;Wm0D`ojo^$~go`fff~Tm4X22Yehy?KL<%F*x@f0xs|mw1E7Hg zitkz=DrF=?ZpNdZm(z~`ER%Yaq|PH41sx71NIZ(BjN9deqU_e`c0YV0P#6!WLIvw z_Bud-$8Tq*8kh@1Vl68G;66#YGZX)Lx0%X=uQAx)znT?!6As2>h>w*Nv?yDNLLEd-ueb^Ngmb|b4G8@EU36$b|GLg4`)L3wwShK^a3~gJrrSuL0r><&mv101 zcAK_jzqp9mE;OFL1R~{)f}a||YJpx_?G+n2FF$(W&HiBAD*KE+ z80EadP>cnhK+Ymt1aL{gFBrxRUi{K(URu_Ucn4CN_Dw6Ak7pGdAYlyC(t!H{bRRDG z3qW_m5p!94ZRE&)9pZ0ffS#7J8VNNQ;~$;=}<5arVl`JGYl`GFmOSa zBZVbN24L7!bacTP9v3}ag)uM+d)llxCb0$|NU#C3*cHw>Z%phk0x&t1W)Bj%$kLtI z9{sjIwAU6hIOm{A=WA2b5SxEhC0_Mz%2?N~j?vwKsS0>*(419wTOb$MC{mI`$*-FY z<2E)n6!e?2md%a408F8N>aI^Lzd_9WOnZ%YZ@<^)KA^h~0oK2?wPi*uF4aQ^i168k zVzRv^qAq|g2YslIs0L64G&2(hZ4YdY<2`!BJHWuivuP>$fGIYbX;F#uBu8at=0y90T@{`NfV`T>y2DzoP~8elK-ew`jd zY1X4900;IldE*SC@y zDn6PcIAlMm*#%sTq~uwPN%}v2;@^i?b>RG-SKFS97w$u$G^br;-1eKFO6z4`%So?% zrQa5Us?hV;c@-`;o%o$1w6Qg?aKgg0j&US&VS#| zC8+Lm1Z3(RCQb_NOJeZLn7y$%BRO6AzuJmW6-Cy zQK|f44X`hr-{DgEoMSXUxU~XK$8gBSy9)>&A;Xz43bga?{%XIS0<=;5HM}IQ=UAAX zll{VTo)1nug17^;hEp>5d?tTkclma9ZZ3QPzo_{}4*YO{{fOJxM3<`nrx}Dj_IPSf zTQgfh=h?8!6A}_4DLtdJ-DD2XjTgX?o@u(X1DQU%!z3Nx(lqRLDq(OpD({)m2w{Jm) z1IZ%=s;qja+y;iEiyv;)M8O4y^w1>;0CF}{Kzq5n%ie4R{4f}DYe1di5zzl3t%F5= z|F|8he`jqq@Z#M)Lj!1H!|lB5_AOLh@ARo70BEY7TCRW!6*Sb;egH*!95|+$#^bOm z=Xrq(Ls4C!+ux0ELGNBChhF_A(0>X5Q+zDTQd+JSsQHsWj)dEkwA?LFK?rQE7EcxX z{owxn2zB6eTG%Jy_NR<8#%uGYU=v+=?+>l;-!t>>pgS%{_I`q|k5A1?M6>nPna%oO znux4y1ZY_e+>$tm2;8o0UV>ilqN1}p#PZd(AcoO(y#(io2jU2lJ{7QfD|bBJuHE7OzW(;89x4jTB7iEEK=A~5SR-<1KCj0W z7jRlIA|A7R3iA9P!}j-Ka}4l+4mLJRnSo?91$IUlBs@QUff#8rfoTm8e!xT#27ZVF zs1^q471@xWU>cyB@x8hN1%*LvnJ|&93ShMr5W|Y=@|?w79UM5|IOjg%?(Xj5@2owL zOV7^E{sHM9SH2u6NO~lAeT)l=@PJA5IyC-y(#0$rV06#useD0C=(idg=EO*EOD#YX zM?fS!sfUMD?-A*}e+o(veFK%;R0(-UN9jOt6FI3F7?_)D^S=lC&qr6ULEu2>`q}<) zmF{?Jfh=^5ZELc4B|5QnmT)}uf1GD4smvQGsqbZFRxsAi^Tt_hky}tOLn4r`P18}F zWjUDk?5cdo+R@QyS&#;sl+-d+D;Jaw07d?WxUIDX!SH|4tas?700kEMAwPiYhE$k< z9&cov4lue=mec+V2t^bb7M1{S^%CQIoKhjEfIYha499YxW_=>Jop{{R+SZH~W{YR@ zMTm%^!h`_0biUJNJV{|V2iz)jC!fdIUHjHU;CxjOcx5k8SOpfu{5Nq6et36r_Tc>l zct9kAiWV!ClkwJ*nvNs0lapMCUI0I5-SSWBPv;N4x+)i*ySmbAIR2?&$S0Tvp5h&V z5pIAT(p~&4+;CvX2!0fpFC8W_nkOIt*$1%j)lo+AelG(WEUt`KZ~Hx*DbkS$LP@w7 zfs3Fa0qL(56?k622*xuyhlA2Gz^CJ{^wk2}X}w4e&TjYMpy6S*=YGc{UT(W}nT|wI zqbJDy=nYt&rLI4zY`k&F;p45OY`9tuEobmg@D+Il>O8FgSc=iZo~5?7RvXjc7Sw)O z@lRp}nAfM#)I6A7cAsX8i4n+yOn_+#YE|@rfR_tQ^*?b}qTGKAVL^KJ>-$_;gY@)t zz@jX#tb||Ns|gFkmm3W&=ZB#Kh@7FV6wF)Dc6$UA2SLT90ac$YQq^)hx{8+uIOkt* zDBI3h+;)ACi0p(_TzJmR90{sa9f2{@#`I2+p#e4%RBO=g&WgloHhd^}b4E4vCPh4f zNs}ZVMKvj@Kas_Ec9x7`8W7q9q4z^Od;oI^f_*W-zqRP7i-_>PIH}#RwzJDm1W<0< zEH^VK6_GbP@rH==@M23EFotjdw7UN}dle7h{IdrMq>O53az#xSrdr9IpqDtAt0(Gc zx@$yO*c`gkB0Q{ELv(sPtRBRRlmWnnDI!*ZX038E$$W$hrfqvbqI~o5YnGa7j3y# zPBtrIk6Y?kJ_Endj5 z;vLDH&Alehih!n;N$2y&mJx7`MP#hohqZ=?6efjsiq zR!H9(F#|J#vbnLUIWYs1;2#B(UI64MdI4MUzu~c3r@R^s>4>-le6@cC%f7o71uedW z?t?|u`^1;dA$Pf>|M*<+(7qoZ^z?e+>ZA?bf5CA_A^fL7>$d9u&k0LuFDoVW*IE9v zw$mS9H5!z>c%0&)3>F6AZ~o)sY|}xQ5cY<$nO7-)9P+V8^W7as_1`f-w&h=$IFG%5 zc?r|~e;E&0;1kW@^UwABKR(`e3YHW4w_8Hm|NkfdHZK349I^idpW)$)gAiUGIG|n*?jfbUPh6aXU*(z{jLI9k+dEM$?G|(Ua z3+{`ILGI9eVE*-bu*?HbItAm}2nGg*to?*n0J$q;cVz%i|A`&S%l(l$88ZV3jXdW*lBb5x$+o z{^x~b+d+r*VZ->Z-+_Sv;j?!rQ|JfO-i5BiQ^mUw`#ar>g!y80JIOs z_20?#T*KHMdJHOV>QCVKY_F+0neM(*Eg~qESo%BWf3c-^&$#-p!2|6V*dXer>s|u* z;d;Dkwe`2fsM7kIUQO8r&$AW58zk`^0h8^!F~_bo{$sYCB-1nX;SbcMbYKd!$KzsM zt(vZ%9Uc76DvdX1?P$`V+WXk&I)-!fu7(%bXf02V4@QmDa1s_Ud1_-C{QcECD z=G;(FwqKoIBH4bZ`Eb%D1yYNeTniz6fe$cjjtW50t<nc21_97@n@LEZw@7YPhl` z9LA%4JEX)4VW&a*(EhFODJ_MMddv<3=G_ixCq*+I@Co1b7{P}975dDp4>~=c;q;2% z4ARfAqv_Rawk&eyWo&)czBWc;nv#Z`ohEq%9wjxcS>yDr7gC#ea&!>D;qKndIhpQ? z*17UNEZqL3)`_9kCeXE~_Q0Xs@&ISztC9TMdteV7W4r&lUEIdg*nZOVGr8XLTeYf~ z<7+V$xL8N5IlayU6$Px_&Q^^xmm0_&Y~%eW`+1dK>!1yRpv-!^ORq<(=o4$dZ?GT@ zJ%yXZSlv6l?*-Cv_4g*&lztdI2~;j|!;_xH{=9`nijF8l>cn~a{XCZsagNa^7nuPT zLL8bMHCtin6tzHA<_BIv0}{CQ|_kK*lK;Y$um?=BV}1b?da4A%qP)%AxjtxRz<))h_LnUsthk zpZkrL(mm;g;PrS6XSR||Z?6lEUs`4|vxaQ(hna#c5; zDhx5h7;xX`m|S;gm*KFQMO%Ni+dOB};9n3&^-EBnKpncKTUW&z&7T$2@H{9##I{GU zD+gZRV(N!LzbLfSKmIvk=;N2aU^IqQsUyk~e-;WF+q(uqe}fe=Lw&b#uGS&^fq z!!faKW!wOKTex>8Y`}JR19RP-CnE#~f-rN{Xjp=+*W>2z&86oJtJn3+B-QRqW9ww; zKaAX`xhgelsKvu0b*O}n=-fDNY_7sZHeY~Qe!in>8>7Nug$f2zxnf*}oqHTw(eI3>|b;yC{Y25O!$6ND|8M_^33?XyTL zRPFw&V9_d`OQ|fUA)FflkLRj>`>P?!zvgCjxYrcFrii_8?h$S4tIm4n&mAdCb?%q6 zJ5*%ob~d%9IqbsJ0h1S|`u;V;cawsNSwpmypLtl3_Ca}14H;9!4pFU}U1z5N=e$Uc zl3V@eeJeuD0GQUf|(h=WbI zUw3qNT6O3LaZJiT3ra#ah#+KGOtVv zuRcCug^sCpg6a=4D2}HBL~1$Dyb}_({mqaM4-3%H_YJ9|f&u)wj@Ht(;8>Helv!RMt6XBo;94n$qyY@Ll3oB;!B zZ?4LsKSEic%JH$W551-uJ8{o8|*0eXC9o!};{B zj1gtl;BL@|Ny~AMiT#7haNd{%*Q$|ZaTgx#Cf{9>Ar9qVkA?jRA?3amG35h5eJ5RZ zC*Ak`GXy#Dx^>45ZX$q`MATa>|Afpv6*frQ?ANWhCo32qq5UA%EfWxp33=6<;vE=lUJjXyi0o?ms)G*#Gzh z&V6@VSV152%WgxccUBH|LbAHp)1Ut*SR-TCPti5gdRa38!mV7EmvwHnjw4oMZZVkZ z-KyN5zIBtLe=w;}q^GohFT5$SUG8)0E)rBQuz@p)aojZHkkwTsI&<4xu1iKkUxuv5 zsp#?Y;r$dsqAA~Rmye=#wy9zbd|j~YZ?8g#MEW90?BuQ_-FBc|| zDIQq%lX;NmbYWCDX|k~Ay>>ZrsU9fhF2? zo&`xni~8~H;N~ncQb+GRHEYPO&*>6U9b;}$FEMrF+8~IHT2;v1xN;Cu6+x6&blqSi zB5|2WPQ&Y8AQxM{0^V@$Z7KTgcWluv+9&dTaVq<%8AOzOUpuxWAQ9 zwmbscdCH|0($(EnYB>H7M{JRNEZ%$~{cv^wgG{ol$*>y#7sUH*moWY-6m+C+>RhO& zWlPPUY`eYRU-Qu0431^R9RJg3LZg^z8&13dyiVlNvBkJ%DJSk!Gv=<)1@D1=>wQoZ zHaMl@kkNWiAR_k@YytnB2!Q!y21sU4Yz~sDsy6eUtCvr`ynzppiG0eQkCL$n=)y2c zK1kql0babEXQISBx}?3`@f{5lmL2QLV#95tM4O*rQW( z-NBMT)sndy1BZz@MpA*`=g2$P1Zd5VyA6j0O8o zZUgha&=Ttrt=trptP6pDNQcy_lAW3+lUW}PREMTaPPDKnPDsGy_mme|<__`eHyi8n zaENEh)xI=WYRTSihdY72$%^Ia(j|9x(f_acC^kdE=Nw2VYp&bb#x}DOO)I)&Nxbpw zBRR{C7gdUCf+_c{X&_2Uh&WyrarzW|q?wsN;SbNX1!X8v;{M$&=h zFv?kxz;ff2%O8U&y)eR&Z_k3GFjZ<#>FxdqTaJRF`|+!_&ho2KjvxK1Z(c12Qd2hx zAJ-1@gDa|c_08(C#GXn1RK>btP9#xZq7AERg&{&{z(P>{(^!L*M~Vu(_VVpKtOSu& zb3x<(gUJq;EyS!1up?N?U0#52&qi@n5!4;KQ_kpBI!l6oJ-x2 zO{VrFMwxd>L|WQ3e9WUk%FA8l;1356Vt2YG&z#-&5o}jBwV)yiy)cfjUF9KLz-55H5}OhvMsuEwEh ze^x?POGZ7zhTduW;+KqLVFtH2=~@jlT==GHx%Ql)T{G$Zps2!5d6)U6ZI%?}315B> zh&|$O7O#=@aKSo|Z*Ii|pd*+Y*lI;gi0-nkoLG+2(3hL*#%}QYYlB4X7U5q}-S*?$ zy|RAt_iJK_r1HaU|32li3-s&+qyyxn8WAR>`vNb-#Y(%QJDKe-8aH%u!$3s4Qx?8s z^+8VYi61V$xg66YOY&By3%3{Ej%XIly!Ot19B`>LztfudV%>4}sT*90>$SQmj2vjB z+`sH2K8sj6IHS&kFksjEsJwT{|)Wqa@HV#wgiVz7(h{UR3WmPr6ES+rX1r>B<~)jGWe-hLAk-ubTtj$2u1CeO*B^AC9#AX4>nN|YkKYS)9aG3TJ+|9ryN}Ik#HhoL$O(qX7X*4p z4IG~-OEgl3Uyl2IHlw1msD0it^O<=>2O9NaafUnj*`?yO9|_S5f~|h(F3z?)5x2RBkRBx0G0G>j`D44-UV4dM&30U*bkAr;Ckvy5pvVZqe*v~2ZS4gKsa0JXTWi7GP_;YP z*^q@E7fgJAUU;>#C7R8FjKe|e^Lk?tIy=V%b?otum=Fkw!!p-wY3feH;K;8->FIry zst0d9oFf*zlcE-n=oaWHn+r7#hiF2EcC48?zeHt{@FIw1XB(wk%-+!TD3P_bUt)XY z6GFGi3;9G1-cad18ZJUhn;Vp+dqh0(H6(X55yixew`!G?t~gJL)C+_BgXh-mK~V?o@vAiV8b)kNhhN%9hyPrT{{n7?yJif6We736t_1&*| z5wHcR`NS2V#)|EcJtt903q=Duz!YU3_T|0n5npa9Z8V=1NJi<(KeKcXHnGCQCkt6Y z$ZhuJHiumM?-=+#GZetm$=7$|)*x%&H>^rPzDa4Bx^u3Ol`#uais>6~>WviY%R~-7 z$XCsdU$#pYeOm&w(Jn2+psvHG5?bZ*ysI9vSS_8N-iPMX#;zC0v_Dl|7?rob@x^#8 zK~68uFh1}|Hbt3+Y=h3nsxV37j@WJbb-qtF$2 zi7YY2oE^BoC^D|0;_%TLpSh^t&k*~{{bMyfQyVNNkv7~w#_|rzpxWvi#KJd!EUCo= zCk)Si-wt8_mP$zAKKrAa?~PGJri!J%3N#KQ?+qZJhSYVLqQ-3ktS^ z@wMGz5Vw(FIpd0zBO+o^b!M^z~XrsW$H zcdxr!q&&%}!CkcC6(C3}_^4lKm^KB$C=@{D9ja#S_D2z(D46>T8QaY6mS5h#+4%XW@S*$6l&6Hm zie!oVnAbKU2i~+6^x>BJyMgnTrNb^{V(r0u8=z>)UgT|ZIMm~8s%Z~Y*H|X_ab2D> zolaj%>zz$+nav~#dCdc>SfSu4FjGo2m;c}lbUbLF5@M?D3>lQ*j7`MY<-Z(l%vs5K z8fy=-N!uaJEcV2MU+~`to0||L8rmrmE%wXnUdm`Y6zj^F)}}vr^v6Q8A0JzTiH=UE z$E)|b+o?>PQh z&xi*>W5$1QT#@FP5s18H8C8{7=ei=O3UZitK^k?H(+CYBETpnQk6;g%L!+qiIRA%C z)--y4IDMYoL`cf_i_qwZSw8wm-Y%Z}2Ciq6CqX@0B>Wj;3W2YCHlkwF#o@7tiEXP! zDp@m0ynT5gns6m4V{)O^d(#~b2%=pWe()ys=HqkaKLx)g!tn$u;=UEI^6-O(mGRTp zCugYNW1z*B+29&f>}pr2U-_Wu$zZCLOIR+z9MX-y`kPdaC}nWw3Lb3eRYpn7Mo{bN zRW?Bm2$~hWmpQ5*=HkL3pS5TioVO$pnRDJ_kD#b)JOZ_Hp42*!Goq8n7Tgl@vVsC? z%%Iv*{Su7@+|8m}h= zf>3`@1-?Z0+!jdo!rJflO*S(rag2s&=N`cOc21E669^sGz!EF*{Zt3?iV}#n%Z88!LVg}{!j!|i`?&+QgGHkZ@yQz;pm+lpe@>GRL^4r-h4m?tLUOPMB z%{h9Ta|3E+Gn{!nguc!SpJ6tb%+^%AVYIL+HgMBLAYzcU_`hXjhnV-9=>n_+kG-3% zh%WOvWC&A422(dZ2_~XQ@S+(~)A}x2SFAR zICq8)X3BZq6@MB~?;BNjdpsBv39vvJs!=>jcQ?iV+-`6z3(g2Oc4QEr>7|BJe} z4y&sB+J#X{8UzHSyFo;{L+S2DS{g}7kq$vXx{;FZ4(Sf*E(z(*O`N%Xe)YWXd(QX$ zb*}I80$uLC_S$pJHRqUPjCtSVu5+k^ZqGnk8?Ul@B_aFRO7_I*|{8^+)0l9Y3oxFD+6Kz+k z6*#Y|o7F7vU3;& zR^+LFQg0!*hpNYy7p*@m2kcj3s6F5M5KpooFPpWf-HSVicR$k`e%oih!9M38lOZtb z>CVIcl+~5l%pj{#d`6#Su2;gq#-s!3BPah@4u8J&_-177OzkC%omWfGcLi~{y{)W9 zm}$&U^Smyal1pEO*~k|b`FhKLF-;HqyTV80erZ~sLBiQ5^CBIsU?<+=(uL6!jG!%l z@(FVB{o+>8c$Pm};mYA5oad}%YDNeC(AFOjmPd+8y_&f(T9V=MrA{MHK-q|g0AAgn z5Lc-ggC#yL_HDH`z+7D2)clyPg*U4t0F=q^f2E@(y)?eI50qvrh9@rl3dFW>lePQ( z#lb(>W_8oYru2KDI@%Q=$SQ&b91;-INX7-D9Q=!e5+#%uQtg3O}W*jA2lbpx--$2XZiF)WWiw4*r*WO z9pkP9KB5R3fp2-0Z^rOm5=^P#{l*5xF2!f+G=h=fDvUmO&M-wgh9h#8ty7g7UUdvg zf(ww#k}AKR$>i7l(vrB*ctQ@!YN4ms-r6<#!BosPz6@{z`I$l^0z9%ZSD#OMZu?EV17G2z*#)m6Ul^Vhqq-2WysWF1J;5_k8_Tn5!Ozn?;{{o7j};=_{Z1;K_{ z?^Y=E9Ap6$;`QqFw4M{t3!#9Jt99C$bc)Oh@qnDpc8&nf?%a$TiaF!6@eJ0>8m}To*@bO1-0Y%= zUE-IUl^yyA+KaL?p^dk{lQ<6SOTGA%Lu90@?}jXKJDR&iGs!y$>{=b@wod6NmO_k2 z6h5Tz!)nS$yVAvO9RK9MKa@GqP!QiKdbPGm9c9ID!^-2qvO_YNeh@KD`B&=BDqWh3 zEX_0v;^k#e8}A%r9<}3EV%2A|IFXaBLw@Dm^YOi)PEEG2mASiw+NnRb72p7d{t)^k znfJn3&hz)8Pa0&hYD>!2{za3TS=C)`kh__AJFeNV}E7#j{0(?4L{_%qy1dtaa>} z#r(ZOSM&ssurfmm`bIg?TN{(24m(UF$?s64lat`F=5o*kg?tp=+~~iTfjN9a!SHu)wuy=I9*M}HO(N6sSG~JKMe&`utY)V4D^v%_ z{x)I^ft|v99`!(P!ZIw5i`nd=)G!fpTF~d;e>T@C1twA&h^HPh`!hgRT z!4ao&I=uKytI*SXqkj0V+gJuP%_x^vDZHaR!q_DDkf!j*W8aPty@kjV1)VKzg(1-C z>|Y5;H(+T%&BcuQY7Hf)E19v&4Wsf;m&7U`yga!Uh|MO=Qb9#i{CXyA6hli~QO!oH zvYCgPx@9(hTdi_y9(>`!3a;Ri9kG0{4Y*QlxBPgeW%q#HW%4(uGCZ}X+cB4F)kmMt ztGRo)uh5!&!&cLyX{@pD#g~}D73cVz%$_{412R{Lqrtq*>|=B>r+-PD&>`x9aIn7A zccxvQLgbM!+v~ve1J8kL)OA{_ha9saB}Ib5@RIIU!v-!x?s7yjw7?V7bpicjK7?Is zE+>>(h)Cir+FX*E%_T)`k+-1oKL7>SXsWKm9&vYb{)I?~KhT{3x%e*@9BCNtf|$hd zNs-5qEBAB_Gkbck79qZ41YtaJsnr#{E6oJ+^o7>4a@U8FJBXjLlA{)1ZW1j|tWS^q z@GjN#(aHkPSxLV2p8b-|OKg01Mv<8ov2x8JC!Y(OZa(ishqhgw5vXfc52J1+7s=E3 zYRBs@npqU1+A-~^+jR_u{r;e_f;zD_!qEYHM1mExL>8vbkg@wn4wwMbgnVydat*FzSTxNf%WA;5G!oGhCOF-I~`QCy+r+V|cTxEN4 z7$b%{`OF51>W~YIb4M)>wLWvsF(z!4L@=s0PL6uBhHQa3G22dt>^MdiIXMWE$CIT{ z{kiBswX==Tv*Lt-viVQ;wVM@(F>p^Waj-BsqGoWhk?hP;K%kYxfs99~u)I1Nr zvahXr%(H>VMf$h{;icKCrTS2TAfPEPS0^(Q?ad{YN&5zqwKvRRa0glr;tc@aaG??H zSfd`yXX(A32Ajq{XEZX;BUK~36f|Z7e)iR0%QP3WlBr!wl#p|s>h1Aha1oQ};R zvq^Xa!dpmdzm8)d_RnV8b z2oj4UACnP|oFel+H1v!Y5wrvX!mo=%rYYHZ7`KiEL9hj>8W0p9%Mx1-ohBUTQXf1= zO>8rdd741@OrEf(Ajj6`iJg$2#2k0kqf`XX!Lf_|BWnvgi{Daw%X4^0A-{){kXPwi0DZdW}w3fbI0N(ZYNYP-Th0nqYbTf8*cydA( zZ31P4Y$Gj01w6xI6XiDJZ@WZMgiZ>{|%|PfE_oURrN!T*$<$2bnR34 z31FXkW99yVD_l2<)d)r=y5J1EF=(jE2<|=9;B@E+s<<`8>@YIe@D4(D0OmCprMQmC zIUYC`x~ncjdCQ$}j{{51?!Dq)92zeUeR?$V<+o6Z8p_S8%^n`uM??nDOcXR-T|h$0 z0Stqtru5zcNC;4@(ACp>2f+12EL$%Cl}h|PluFS1vx*0h<{JTeh>(Nkcw)X9zH_}` zpeu1Sn&BJ%oF^L4Xa3C*>@DqVU-Fv$nE0gzS~FVrDYZf6C7EH1FBJCyBFSv^|08u+ z7&uK_rzdN<$?bGZOeTZBe})qXBmva4Z3BI{nZADa>ba=r?Q=l&Qom*g1hKT#mx+M( z281>~tFR^mO55pBix=P+QBYHN&3G-j9NtF*#g3@N4<8R(241@S3qE?w8(~YsMr^+? zYr$un2jmZeKlvAD!}>duP0Y|!oG`vG$7^6X4Dm{M2M!)AT^#M8;fN+8AoTi8sp{H$E)}7q|rxhvY-Gf1RC+zuKZUY zVp$bHY8m5LxBM`c5Lbrz4vp+(QEhECE)vDTBU$qNg(mthX!bXN>W`sScn>5+r%FDX z_gw4)X^ycW=B@=@~B(Ab-?5 zIGAlUUE+Muo$((~$&~EjgSK#!A45SuT=brtuuyp{+g7{}ErU7G>#6t+N*F>Jv)^;T z{r($ibb4c^eq(lUKaEORJ**_@Z|kOdY>25PQ=LF_~*%#n{&K>u6I zd`xQ)KsI7eFa_IsH}C++2I!ObW!lAnzdT&6R;WJ0VY`q31cDGy^Z7(3!2z@bIBgd` z0?k^>>XRX^Wx&OG2UUpJ5><&G1L{hr8}SBfKxheQpvVIXEL0~8i1Gl^6BI2k0bZGD zhR6UGkp!<(-ElPhI8>sk1#-Y=yEhX>Xj|6?9SY|^Hiwe6fV34(YrvE=uzR&Mxoq!#o5fZgM%J?lw^5Me+ z-pn=DdJ@#N@Vt`>g2%85{yFrQwiY zJ)b*#Gyrclxb7FacC}>}aA1MbrWX{Sdcx;2Z&Um8V8my0-mdlSW;g+$9uNdg{0Avv z?(TYI0i5**&U*5&x9H)9yV3k`#|3B17AE#Z%qe-o0EzA^^Am)s5dKeuVybYsSR${# zhH5WT;NXa0p}a27u%!=$$6^jffD`}h_C#F@cZ@<4E?{)5(+E@c2h|%&@)1&=FQ`a} z@Mu@wdeaTM^@ko)gVH8bMTsMxc2dg4cuQ5V@sVy{2~G{jO=k&nB6GqLE@!xJdL)Q9 z=`EZx zoq@Ta_WrFIEu)YDlCbqR&8!`rp9axXQoKo%b1Nrl(N9Ce!jJ+)fnHn+Ac$cj2LR1g zvk{Chzf1Okzily9!~+8;zbGy;(cbM8l$7 zFQmX#p+A4fBFGrQ2%Z z#Zxg~i>iv+=Y!8?f0IpxRz-jk7J<}HbWDujolrtb3XwOT5qG-Rg;wlEj683MkZdBd zqRqpqa!VRunZY%B+xPXc9!(T!RoN~3I$SPF+})h}i9s#@t=DC_%l`9{M%xz}7l#Hp zK0OipOxjh!Rk(~ZEna+pke2Cvhix%^5P!DgjFdXe8`j`_IaI8Wc!CI>h$XG72qkq{ z2CqFf&KJ47`Slu7^i1pDr<<8ZrKAiNoT=>%4#5L4HUv<~C`4phPeOG<3dVY_Dum57 zk_HEP^2&pifnlwBT3NHgjcs;zc5k*aC>QYXnsr=D_LkGJ<+;i0o~X_RUM@ix0U>sx zSSKDl1uW9^ACuF%D*Mp7fUjfydh$|Tc#XRwafkXe|tdu_iMk<0H^+64g@Mfp!2OhpNRzWgE}B7B_jm3V`0kpAp52kEDcj z7QQV7hVOHt>5sq|!Ug3&12Y>PEy4;qsNK8IUR5!H(}~3_<+?U9PLKzMV*$}bNJAs@ zQqv(LbfD4o(CmivK~lQEQ2h04wryX;kiRIP0VvOa0Iv#Q*#w2Lwj}s!7>EG|PezgD zNwQr_+g_fTislurloa0k0XuK8X7_UjeMlqFZ)_4+U0p>ba^t|$^JD{FI}8pE4q$Du zju)s|4fCJMatn8D07ACoh=B3+WgIh9U>&QKSV~qF6$T6g{@Wu}LEXkU`P5;f!I^T< z$3QFVh0EaL-coZi_}+kr?Vo<`=Q~j0bHJt?o*#&hnW>}&ncfo3c&a-bBI%8dZ){c8 zU8eu&qCXwA4S`5$=$7c@p}&3mc71EB(hIU>y?oCDG{O7>0+cRk-7j|mDSn{A`N44A zPU1`S2?ID0^|=$Vl9CdPiJ4i2+c50G z1l*~D-w!4C$E!h2=Tpi4K|$>ACsNNEPx?av@=;tI?(RlU3rl+`9mpIi12tA3yV-WY z_Z;>QX)OgPMrhxAUOkcL*}xIJwPz;v0upx1pgk*vr7c-<$u+k=Td5jYy(Qq$f(*h+ z|NR{rs4gqTJJUZfUu$O$W;3x`=HG5wN+MF5P}g>%j?Fw3R|0URI&520--4wP9713D zmM(eav_Hq8>++5?+MOnPf;~#cU2m{=`93aE=sp3AZL0QZdPBR)LL{$pcnz#I8+JZ2r53ChGI-CtyTBvRd50u5=G*?~p4R-4 zJWu+1{><6G3@G$(VytS;I^8^Z;u7Ll!Gc~a)cpJ@M@PUFsQ+q(h*rS%1)?%qrNs_? zI@^&#!(GkpYPT%Flrt94K3o#)7pn53BV%A}wT^JZ_7}YJxjUb3BS&NgI=+D2_I|;k z$Kir!%k!{xsK#b?eSLkj>4W1OumgJ~_JE1`_{*J^%WKK&_*Uzl5Zbg}P<4aA^-!Sb z;Wy>Q-YmAJa}R>jnkQq*aZOcUGr1PUp~koa zJsTbU0aBm77qnLy=A#goPdvnLCX=#I8i;#YT@bt1YPk1-^|O z7fiCNo*>f4nDY#ApfxPq>lsjg87xOJ>FFaN=mF1tFFPj7Vj`cd(PiHVkh$9q#FW9j zF)}i$^BBYjl7HZNtg#;6Qgh2jdsifJSakz_Wx|WMpZ=>I(Je+|*;-$>zgyXr+(~rP zB!xxP?J`gIdZtSZJP!i!KQ*?4o3`nwm>6s#7gZjvRo&-Ywu3+dRJOmcR9RWSFfT2|K5tX43?a%2pQcD~X>*Ab}IprOefWAx<0(|5x%ciHO&(zNxLOCFMPUSW2v zcQsi;fKvOxaqFZFkyKTygcqy^x^r8~(7W0#Wi@U;^p-F)GmFJ^0hN4!Pe7u;f6NUQ zY21A~R)b-}(pG&iD8RT+W`8NEbIjtrJGD_%xyEqwpH=}JpLKj62WxdSSm~9)lLs|R z${zB88gqx81S;YRhDz>Z)$4i?!KiglBm7TpoMjc5ylGyW1kYG>6_xbrfa8&`!CFMo zNd&YVe*g{2P{tdjQvGIzf&cEcfrkG&Y>ce7nzmoQI(FKA?-ILFW4AoqiG+Q%9uvtp zw=*sD2(YP3VG5XP-;L9BF9;+l(y8t*lQY}EtK7fHF`5PO^jMh^p{xxgwi_QT6tn1OxZg!Vh*_& zfr`5W)+iwJezQ&GZCjN9Ud0X@n0bl!SJ)}8OCO;0bI>H$N1Rqu;lTZE2MnCCTsgw_jt+XJ+t92myQ?l%@3vCArl^PeL-tQ$lXQZDzO)Z# zRL$;sqT^;mGnM8Te2$JtU|Iui{P8ZKoe3}~YNCrkm42=1boiTtiAmQLa7caY>bSjy z-aV~dI7#lfN&DOIlZtjaintCPpr)qg=P^bI!(%NNTgn^BS>Se}bB<^`s-Th*qE^@a z+q%#q#K=O5;Jh=jIw#`ydwfe7G#Lp415_Q5sdpJA6C3!OIir#q!&nDh2AsJFoB!cT zGXLdlUK;$re;pWbPMrk*7hap(20o({P@RVQ13WxDGpth4s)ZbOOZ+ouF(7ckw*Jqi z2IYeh-bS-cn+Ljg#%V^&;cu%5ICTum9O}+FsY1SM{Jr_;h>R@%-?{Jq8-4r#$M5(* zjE8?3#4*7Nl*+!D*tVL|ny6Mj;3G$`U`{>-bAw!!RXhw^8*`p6F8@ZUjT}03B0hq} z%W(YdpJDN@OR(9zzChL=@cbOEN3iadY;I8>$4F04emKwn(#7;hd(*0@S09Ur0vMoe zI@7-fROMR5KR*7>M}NTm^ImDiBa6j4jy&-c(T=0QiDKi_(m6|oK9Uxun`i|TLDOHu zpJAX;`N;3IwoGVK&?)~m0?&wxd-X*wG-kz#@I)>jcH|pr_ANX;jl~A4br*S^-+{w9 zj&~B!cRC%gOnhQ(HlRNHHvUR2+rLfZ7#nTli)3&cFi!850=j#+(9wS?WgH)W-X3d0 zfgxyo*~`LIoW>0O;BOQA|ClaLgHZad?ZVvXiBbtT{~fp&)tg3X&{AIBzYQH?#~QC{ zw2vwj@<=Y*bgK8ROb`F_X(z5*u%j=U-j>NoWS+DdUoWeHi;ey4Tlr_tL0gfaqOAN_ zc#&8Cnb5PZ55xlxCD6W!koOjg`RC(-z5ssyiv{}rJblx@CldU`iVnr-WyBvfdr66$48o5FDV z?jY|h`KMhg;6fHHFp+rwdh5-xt>Kvjc~=Jc9V-wd=qiCNuoJ&fvpHZ`3cWoqyFYeW zf`gG|cP75?Hk0dxISQt<;a-YEXV52O2B~E6vAgf1HbnHU)T%rAXS^Id&My>(@r8d5 zGS+kO1OBgN-glfs^@VaMoL>?r9`EP=jGTTY`v8x zw-*A+ID0QMTzh+n^=#rm&_egdelnavrs%;O{H?>L?ikmm3Y@=0_n6J-6Yo?U8K5k% z>?NQ$RAIW?Xu0<5%#MJFNop+W&)lYx^4KU{S=}zAYb1I|4Upg@uXx81Nkbk1tKFR{ z1E+X&FU^UFS5g*Oy`3}iQlpfdYep}Z&WoB5hS!B`c(j5_DrnJHaJn_7U3P3U!u)qI zygE&sDj%+Sh0|H=8Oh5uoTEa(PyA41qE#zbSy3@K ziNAtzb0hGRb>?;vC$}u0zY4X?89~8Z{pQ*O61bnN;&w7}cRl$aP(Q-vbC$?8Ch$0a zI{cn^82Llp!cCY=-~RtOTDwB!{p9NvN7V z1dl3eh9eI9w6c#Uc+y(G!5__Ea!>EMHj6gj=Qdc0m#3+y$Q1KWeMFu*Fn7?;)O||) zR*^`W$Axg+1iapNq(b zCdIKNyNQ@*byV~XqesM1ZO<6~u|K>F;#iZ9k(ZJ>2dmp!#IQQlFa$=L>L>YW^h9xl zA#e>rABhVkG4$){Y8|K<`xTy+==2p-Aj61k7iv5jr6~!E9R?<94}Hz?u5qUPlX;q! zh}r#Rvz|26*2``#yTFcXYzeO?q9&d3%jkRM7(LV)ZWA&k@1Ay99lPziD`{@jxpNst z@XknzgOO-pEe8W&>IlON;+SEOOd93qfD; zh>5)}q>cZ@CGMsGXVhEDKz8fFZ-WUBbn&DXJK1X-OkO;M+Pb2p5jk@6Q(nR@9dLm| z-T~B=q^5hps|yb^6q|C}G6Q84oFi%NW5mAGeMvq3i3B(tJHs>er7w)z?E~f9Qs75E zf779)(-aI4%2g9EKS`Z}EpvI^nwB7K8+H($)Eo@YE)!48X+$x;$zr7GY5xeATr`Au z;Fo596AixVgrn#+-~LKqEtpkV>6GC`BurDNz6HnkXeOoRlWr2GqvaFLuDQuJEY*U3 zBC)Lq!~}#tHWj^nbJjSalE8xJ8x0Veio$><0# zjMiiOvh6Qk57RTlg}e9qH?J!A774!!4&B(Z?G}W`WRptGQMqFzc8;O(_)A=x^>(qf zVIfvsq`J~)Fymc@F3u;Uw|B5lb$o|)a~p%1lTg=RBP*6OeJxnEJ)RtAD%Vp@G+1Tc z9p(0Z(hd!4Kk#H1MO3jV?QAl(l^LhpbJO}IQk2`Y#TuiX1f8#vD>asg;DCW=alh=> zpcax0Zofp8I7O)aHU75!OjA8N+c>f9&vKiuD4xIj#H`0Xc$EN;)j@-i zyWw5B8x%~+6VZu@)5KAGvtt%b6)SbG^HQsxLr$Qk)KNRF!{gg!@o-9P@_BOsXUz30 z_L?}s&$fKgggPV!H)2buo28{MLH3BM2m2?lFL_KF?T5``C&7s%>VWS|o&uz6?qh}9 zOPfP|r;@DbQQS^1e#REOAZ?#ltO^` zNvc9^MZu7o)1E%Bv8f?VznDIT;@O4uGh07SSUXBV)f^enD@#fQx=SDm+7-G9mTG+v zAQZZ$ni=X=5PUm!=reK?DQGm3CeUUJ?tGgLm*W0{Fa*VKZ(V9|_UWFGXZx>)Q3S*D z=VN}8sgBcSmMEj;u#3Yi#PP{3p({D53zLj}a1_G_%1VpE(NuRoLfI49s}Q9^;$QN- z_)IU{wreaYy(h99!bsPf)H4cQfD`3te#Ff#B+U3_|5=amu8LSGJg#2_VzlH}36&!@ zBQ6i0ZOlTJ&Q$LkFp55|5sl?73m>9*d~sSGVq!uug)W}iorDSL@X!@Va4l(!ZKD(- zKN;q+5$aN8K6^G#FxNWfa@LrL#9Bhm<%W8iiW`;68HrS@r&TT|g{R;7alV^fs5t2o z#bl`27qmiF9`?Nko0rAx#bV9J{=@9E<|W}}ebdtUt>*`+je!emxU%wlBFbx2V+^0; zy?5S^FByrkiR*JFbo$kokxu#Q<4HW){otiV1CwlSAf{}D5y<-8%q4Ll9zPA-_Z2uJ9+&&k zs`JE_7S{optP}W(-iPUvwWQ&4q)ZHa2M3*_CHuh&_|oqLKH4R;Zo)_edbF76%^m(0 z`c7Hy`Wjn+A?bIc(Kh!v=QDHI?DzBe7FiN#Mh@36`Mi5d-^70Q;;pW-8M4U{iVV&5 zklvp1tUT!kl-#g_(z_;GrJf45^6=uP759Nfv8~@8vJKRm-kjAPoGHkYTe)sHL`NVW zcW52WaI=(}ZN~UTC0F>L83pgUc;{>kgyu}(JQKv{(>L0N{FvPuFZM2Te4r4GZPB&9 z59a8~nHHMUAW_X^W}b&J`Qm&;N{p$C@g=PV*+Qn)HYn*HtWm#RRpH}LPfj$yqzpo{ znw`O`AgniV+e|d4V_NVaQ~|k=5&l!u!=_Wbzh^$x^r4<0FGE0dow0=uSX=X-*iMwFXR*S>NHj$2#g2xhG8)IOPn@XUMO&B8VAWCBcr9 zvL>qEn=|TA&$y9h5{^2s4!W{u9+xR!NHE zJxvCdQmDr<5sT_=h(!24c{JDRX^7tZm`RUⓈ40w49cjO#+_b{uyDNs}#-aE@20( zWrX(k%ePh}9YL~2THdIO!wM7!6ZWAsCFa|mgmst2w*`J$ZIrNfTT#@zeI*7p#o%(; zFZ`+qD6h}GYkp6WKHj#x~amvxnG=1W^H0W@S(U>5TWzz3B%QV(( z$g!3IDae|lLNc4Dum}o9+YPcUHgj=TDAB=oNLE`B>(dy`G8|FT+q8Cf4d=qa{&mtS z(xk!zS8x=*gJ`5ms@q#TX7Th7C1UrD*>7-EOevu6Eq^7GOcBDK_7x1kO$wyonmNejsd-;{d-cF?V$0p@||UiOd4% z|C&e&$i5UR31@tGlDl2zPUe$r(*sPUA3_9siHq`HNs^*qCcpE=#eLb z77jHR{P`RJO;3|{K?~~L;AGWn zM-ZjDIPm`ByF;X&WBypF%1(oxJ0(?)1rr-U9qp-C#jBq@;#vQ?e{oS7c>bj=&(sViV_H>~~vxQOocAru@kLvT@ULv1yK~7c9iq*e=iX%YjQeiO8Bm}?9wY{%(SrbITV_viQ!u93i1#I7iQqvANL z`+I$97G6y{z~zC+ub8?$)f86_^*hzna>8d1);CuB(Zd)nTMl6}jE0-m^a|bf490 z(ZNYSRa>rFV>^!}rbzZ9zU3gMDyiq2KrRovEfZd(uXSg^Az@r>MNdBBMtLSU{N;i? zlyi6`V%zFdSo{5yR#V{iH?zumZt;a+bFGv1Uke7?&X5@CIjqKU^=S0ghtS(nL+qbX zKNo)fLeITOMh?Q%E}@6>65hpQdq^J3liE7VBY+vII~u$i>lUDIx_LYMvHzmzSEd94 zTPqXH!i$|ZB+qX&)FZWqc9wIGOgvqars0Fl*Aga+NKWykHU{3@vxfB)u@HN_o^>x! z;Y!QqH0|4HdY!F$m*CG#&#$2_QKS;TYXSd*EBn44gOa@!?)lSY8^J=K^w(3c1lbqz zS>(cPp0={`IZ3Y6+nQB3)N!_c`C+Wz-PsM*X$W8f4qsm1%qL!Zb1Lo2*vUswB%{gD zuwCs)Wy2quvuHF0=CGQJg~|MO{xVI8y!0V_ixXzQWF=Z!<&9aa_x8t?q0rb@@06bl z4=*X*)qm`_)W!%%?p=7~Z+g05GyP(91Jxo?cnv=FomOk`(Ba@pi7yxX!;|4Ada1F< z?ffS!D$1gptq*b_RbF>@@pdrvk_hZkhY;H0w}X0?gKMu@D{SUDYi#Db!QuOpK3c~P zG%5eA^gx!*8)jhSZ(azBWN zhCqW3rE3d(2Ejj zI{Jl*qL=nO)$*}D;mZ(W_Qd;rtF*@)I~76rlhu|!CS!&ycF2309ZAKp9=z-(AaaPO zEdYw6)a6#&pVbHpWR<*v`9WhEpc4X9UThy*dvh44rdY(%&&A5K%uS1*&mv(#U?uHJvEIU;oYP3Q z6Y6#8y2^}r3Zj>?UFNY1W>c+Sf;nbZZU>3y!a9NcPK*w18|}vRp0_rg0U{#OF9!<0 zLzKsP2bLwo$G8t#$;x_=L9eW@cJ9;ekxNPV{gqZIr6}`!k!foAM1(YaLd{Vcw#gYX zDpbNmh5BlDAw9dI@P?id4~yxjUci~@p|b6mSyUzCT;zhoQBVGYD*D+=qd9N;F1 zn0m->m%F+%3?!o)&b7amO;+><+dbj?&pzpW=jXTS60FRH!D&t%tnjoL&*O@%Y~!HU z6!@$|swpD!?I4`kN2=@dTu=d-&jX(MMPnMVDVMsfl<9TEL3pZ;cjcLQZgW}iJ6PjP zZaonulGPY0754}Zng{TMxwHc1vTw7Kr``^=~ng@I-6I_vScOb?Ma=+U+n0|TsCPALVR z#dx*Tb2G3IQW3RpxoaW@q8`eNdoy5+=(bf5RQ93%Nu`{s70b@-!{LYfoBj=n>z7)ssLY8jO`Pc8O-GiJC zdIhubf#WsK?@V|-bgl)z^TQB}85uc4_$GE>$u2gAm+wjZt z#+aFEraC>j@0Uqa_1=r_8At-GdzgC+xHr@`7^>*n(Uwt;-VX9*NDKk-zJAEemFd%S zrR`mV4|QkT$L42w9vg*M=a3h_!z&bz^G-ih_iq_K3!A!aK6|%FMWa94TorvBWj{w2 z$jRWz*KaPD9^o1m^c`G-t?TnxzMdC@iWqx9P|Dp$`2 zmJx>!^iIp)X_^Phk?5Xxua?ntF6+BgE}nd~w5?$@x;}Y3&Eg3I^Kd35E~2W2IhCl- z;nh>}WhAiv8~!VIq**j<{EM02V+8pv-<}OwHf&rePGNU#V86jO*btTGW-cWbd3g3C zj+$v+vt9uN;T=j?x(M9G=kEaY^7x(lqznlX($-kLOnhiMpX;`$XnVa{w`Wr9YiRM~ zYQbXZ#y_r9*nv>eeV%9=pNiX6>fQ3}!y?G^d$`wXzU9S zypg3As8g)3Y2_E*_(t<}sHUOx#YfKq9Cn6blkMM(+X6=}2VRB)G3uKDM7JS8#P+5jbaZm=Ol`D^Z&6zeQa7yDf>>^gRv4No=XuU$_J*VQ z?UvfJt3{m<=H!Kan8ZN>W{3`aZJx@!F$3hyi?2e53TOGh z86xkkTIdO{U7y`GpCGQ%+#i3K9j7t>xgAVmP?M$5Sh4&w;yU}Q!q2$G_N=C{Jg>DI zRaM8Os%p=hk8-l!**lOB5?r}6l(2!D)!m9qmhG9?a&Q3z||2?VYi-4Sr0R!keqYO!Y2U*^B)UB zk!2ze#jqxuV*GR!0&&HYo5nF z0K8Q9=f+5YUKw#588Tm}gD^0>jMsszYC~}{^l2hs=^iVmVhR+Yym|Us@ZC5GrB}K% z?6Sda{UX4ixTAfMn&V3p)>5n&2^+^Dm^R^vlwFX3O^+zn3P3rY`GYZL8Rt-|P@&4U-N})R%ra*!J*OhU}v8Wz!qB5+LYVTsV;D&j$)QBq%*(I+pMzR4rgH7b4))a zFA9nouq`S&77%m08#{!XZR28=8e_|tf{zDcJ8qsgP9^o5mbvn&?ftQbm5y8T6+)13 zyO!&~ks8~aqry^vbI1q(Tv_j`w_I-$Lf=j0bFFy40g+AR4X`SyPwL52$ji>As!M1I z0&*G-=RY1Txa<~NFMHGFutIH1uQrD19QmUQ=uI5ZJG& z&bir+qU3WSN9fgU4qR}y(uDP3y#e{exwpSi4^oq*#A}y2gHE&ro%_j`uT=Fv&{5dJ zbi6?=y=JR(tX7l4NatYk;Ug7oCg5ZU;gl=X-yG=c`+jojs&ubEZMR?`{4%D<=aIjK zGN;XjZ$NxtU9B}mCHIU*F8)Qa2LnAXTL`D{#ekz!VQ&AmVCZz&QJ3r!E16mbu2=r! z#a8Bq0^8fK%fN2KiI~%&_A{6K<$yXD(`CP2AY(&h5oM2WJBW&f#c*f0pfV+>lmWdz^lSn8ucPL2B&UpIe(zqw!k;#{G>Y3VUE{^?QRNv!x^EP;vzXS1UXjT{3 zTo21yuxvp?tEw8hDDn60uoV`1@qc)u#r#VzOfyBR#op2A`B#CV0jg6;4VH+eFER=& zUN@KLcIByZO!^wUJ|bsYe!-<*1%qv;3ih-Z4+zp;Ppv1BM()$v(QV_G{Uh4&7!#a9 z#9S@{P8=e+9JMM@v@c)Ix> zd`{c?^VAEOIT-8Pd?S~*f~l{=gHL&5IAdE$iFVxEjik+4XHT$pt+=^Vylp9IZeU8O zrN)%1)nx6;7LQ`;_+UO)ArEe6EPH@a@>C!n* zUeGrhjzn-2X*NZp3Cs4NLlB~}_^_vOW{$8>#+PznelPrFM31JLeBNc1An5XFHWTik z?p*x9#lEzD zLi)BDr8eFw2Te_rJRhm>3~t!tbmu6ZBPN*+;1s^uQL}cVja?Y6@2q7!v=I%8U@J4m z-6qtCZb7GLO!ELE(^_=iMM)Up-J#C|ArpGO-eV+kvOA8rgC{O=^tvM2yowulq>?!0 zHlo5bcC4kVn-QPsoAkWK!~n%Wg+k%2W$Slw36h&s1`t*+m(RVlb~i`xVf9FxUJBx7Q_fEa@*2_45!s3b7J}JqgJeV@)S*26j}HPs!I7{29pi zz%~UNRj0(GLP?L>BuD&>EzWjcYz-AU9k8{fS&YJxmsh$5;F?>2Begc-xWxvrs|~I~ z>FE!*Td1UhpV)zRT3zp>)DN49;SHxO-p64Eqs@@(a3YRSp^?;{RM(|003MfjzbROu z5GnwGY<>NPujE_{KY$9*Y)X`f($A$Zd>}qzz1)%tpyd@Fmj?_3QwYSoDSZI;D`{=b z2rij~jsfCjrx|}|!``C<@h?N|1gyue%N{(y$W%ZWSQ>;$!o<_iliSi<8%B>!lhsLu z{VLZC;9Hiy6k~be=G!d6guI`wFvWFWeA1Z{Y14^uTfY-_hASPz<7oO@ z+q1`>Ju`rZp~*1`gInk)(4(NE~%woEhFvM z-thNl#QoTuUEnr(I#BuPfjg6qF;*f_zr%mydi4E^ON!3bs59l-lClU;&KUGWnYzS(xEIh-557@1}hs>f)B*dGoEQ$CM1O`T;+&zm+c_nPKSyOsHX z@BR>RX#Z~3C7Vr%qxg({cU?sHIn$Fl7rJl#wnY8ztRV+JX(J6IwWk}l8NX#}e3H6T z*6$atHs4-P#Hi}*yM^Q&!kS+$ZJD(>9gbNM8Pi6oU)NRB`33w+qiV*V)79t6 zNa+~MDI_amZ;rmG~EMviMv!}z%j_}$YsgFEP~r@PXgP@GCnr1l4D0!Y=O>_DZ%vw_eeK)A#J ze$d{72rdqe{h@#{{nZX5Nx~V-XUa>T1|P7c=h^fY7T`+DOb1#Yai345J9gpTaW~5m z?o2KEuy~l;vbcV32@A%SU%6kFBLkc#?sbXde#X)lcah^T+^2&PXRQT7Y-~cbILJ}y z=?b>;=uqXy^!qIp+xiVIKyY!3P_D7Q#)D#c<3D@=*!m+&gIWLpZ*98cECtjwKyjri zaok$Ll#2FN{0k=9lOVf^(d^5kV}$?8@!6eKlbN#k%{pWKWpPEN#bS5VdkxW?`;%#3 zXi7@en~H>TE>bsdXvZk!ZSEosZY&$Wd(HPmFEt+Zr!@6+=1# z8!>*a7U{e2?_%(sd>G){Mz)wM33#1I5fu7cNk}e?I%f*uF{aq`DVKp3@ug6RtG~1SF#BH0oaqd?EA^o%i+-VzmK#GO{R(g5B7stH9er9NJL9@zLfR>BQe4w#tF+l-qwTkG3d%Psy z-B@F4fw1m4api__fY#;&P1cPO@d<5~GvZTuG+M_+22SgMII)|j9F8RKoXqzseyT#A zjwxu}yKjb*^xb|o#k=ef6X!%l%=kS(gxsG*$%nq-`U^5vQDsHC@t~f$bDyIMb|sf| z-6_TCLJ;-wTNKJJg&(E{AjT!BUE#hSm)N)vQ?e!{rv1jMEF^<3Q7wT(^{+?Y(^ckO z=I}o_XPoaDI75=L`<8DWZ4*||GX(aY_8jLaA*r^A0%6=i>6Sztb2CLa|MZ2pIv1h5 zeCr2%hkL`PoFiu2k6H($$D+>vjqTc>&Z|#9X|j3`1TtN0ByCE^lvUi!_r(M3gvs zicGhjw@A7N!*^IF+?C&YifeL5MP(Y=QMXx9#ztfgjCdSj4QQAvs}g0+H;=qzXc^n} z+B#Rgw^ej0B8fF{xBZ6M4t6-^D7`{TE}9~#q$K14d(EhCwf4c}5W^baY@xI|e}8}2 zz&I3SWH*Zwzi^^!oh6?KFJ$Bsdb-}NyUS(s_1@)^(RD<6I=Uw;>aTzGN+DQh0EE8%xjQbvy~?&-Y=CkO)6?A<08elv7^}6IQ}tk{|IC(g3yn;h_Ell&-T!|9v$X3WxKCTkTv_))qMy4t?*~yQsAI3kA6V zfU1s539dR3Ueo!lWj$dXq`Es-GYOPXbV$IGHk?RLH&s2X>6~CSa&$)?&{uf7 z&lwy+Iyf^Md4R@DD)JMS)M#fEPCJmyV-c9!bSd!##auy-q^mb=KbMs>QR9V9n8pLo zbBFp?*Nb%8DyCH=N04cGZDGEdvCh#}dD@G1M!Lt%xb0tB&6=}n{(sYC8YNKRnE!xggjf?jSdcG`otStuzSif>6O)SWAA%!s(30TO!JY(x z@4DND+{G{b566_$kIxCq0c05JN?buUL8N(o-F?h;f<@Ep5^Tp+VmPr$mub^On=kVi zTtI*0Yx6UGQN2BGIXO~E@6AWnI&zbnbcMa)s$bAwn&1lO$YICzS@iqlE#;ZXvnwbSSm3yuY7zh%%83MiVgXK`iC=ohk5SJ z+&&I%|T_Rf5)d?0<1(FH{?qFCpLlPU8J7 zVkZe>duFs=Lfc*Jp_Z?s-|F0fTJjf!Y(uc5(FRARhB5zDL$85sxIZ?N6z`;QL_H%e zGH=Q!tmXtyVAo+)hE!Vn>;!QrZ9W*QYtjLU3D@9)#=oIaINVSXF|R9MOt@}i71HCV)Se(OF+;fdx9%Gqxs660RH!co3APR+1!Wzjno16J zwY70VmkZ>xy3L6XSQ>+g0x=gp;mY2{Le)RnnUTI(B9oBth;i~gVz6y=c%h(>m9tk~ zQQ@)Q^{nw^3>q2jOkQ)j%JsWI?fPp$K2is#!DhC7IwzOzvMCZLzUU<>>-!-1q^eWQY7{3D;SBe{HIz+k5CW@HeLD+r|EW_Y{4e~srWasI()ECiO{R9MSMBC0Bv zg;;-L7%15P8-}%HW7B5ko;mj}RutQ0mePkQokC*B;5aJ37AX)>QG1A#^R11j=`8^9 z&ff8q9VkH8tl~3PsPPLa@kAq_ay*$aqJINJ0W!#GpOdG|wa>qC&3XHCSdA)c;Ohey zq7ejb+Crzix;{sEvO-tRNG(P<=|A;voW8Au?>V7Voa3}$+u~=qIuz~hRiyeKX@iik zD5GBFn_D)Y5uQ&)V6O+Kx)@?}K)u`G;JeHXTjiDobYlf-;V|ZgFW{9~pEZ&{<=TK%dggRuPU@}y7zLc- zJDn044b5tUG~E4^!~D_W>5`uqfHonZC%Q2*q_d1+H-{xACWg2usE*X_pYCrrZVgExzsv-p+no_E_%n=T zs(_IoIzGP3A6q)#-LHuS-jLzOO-A{VjdDuI4t7 z%u08|7ki^aJ!1He1e+%K2>bY%&vL0Voc`{nbV=qfqF|s}5lYm=(?-wLs$pJBawC=N zagQ7=(gMSU^ykLTOb=3AXfstkm@fK6MwY*#^-*^-x$x*FT8v70h5loFZE+-}XEt*x;g$oT<*;0x|Tv6Yq`B0nF>lB~=K2t*vr zakoy_gl@Vr=Wdeol&P81w5c{;*xHxf2X!}j+%OxG==|J+{eT$q zQxKWl)j6#^P&k94ooh?sTz3e*AzKz?9F!EINykM>s_s6~allE?BW^<|?vqFVsA{qj zFGG`<9HTc4OYWE?Y1t$YUCx#&f>4bdq3u{M0v}y zY@hi0t%r*3ZnXU4Cr#`N`{J|DS4KWN7m#g%by)Gx$*6HW6r>)R)LXzIi4WQ8$eZHQ z7K&TR%L9ToK5lO^2DRd4Y;g5p3GjQU*OB2uXsG*jfU&OTIqS)d?QIannx5^iWM($r ze+^Wp9`h|25*{|s#^&r%QINvRHqlVz?{p=YieVHpkSg`--L6}As|UrH56B} z||@=7tks9%81w*FSUO~atIa$ymEHVCi;EFLh+f#tCqEq102pV^Z5%gS$tY zDL=wU_~Q7_gwgf5%%M{W5J<RR9Q^t{xiKG5vRYHJgV1kJuhs`IUh{EiCTi`U1n-@DwX11gMH0W$*Vf!9`hksKo6 z+o{B&1&4$z?lg2DmqbRc!(6u~+i1!BFn^dpbi{yd5uJ1BAQAWWzOB=6?H3ap@z<~q zdmnYddR%;~wF;}H`Y5w0`Dghd=6zp$k%ZY_@th|Pft74kjCq`!JtedcsmpXQarDe0 zu7M*qt0BipuIWkw9I<|<8#J%}7OA0d>S_f>6e2fU<25cm{~6v8Bn1Qf`bpAH4cX1& zIl$QT_4F9G?((_sevm+!_82p#x%PdWHZU7?h!o6C7wZ5|b{=TU3#;$%0imeJUK;`O z74Qa7RLY9#y?A1{h@f>?)5*AnJjIu%z8LZG@iDp!9R#GLvU3c@^Ibv$U0{lP4B8X) z0P>(|9!upaya1u|bxP1@@069F5Kz&mdd#ixI&()M<-SFrfb`8|IraFJzr}Rzt0u3L zY@i-)Vdiz+dJAmS*=j;b7YtTnelrHW7FAWn2h%1J0AL9zQY#@9h>E1YJ=M~@|L6kJ zkcfp8<$%9Jk)`(O4G&kZJCe;>hPd8osGh5{`r#|tNu-+?gOu)ko1dSz#vukurmyTA zvaZG-^t0LYpe)J>HsXGi8gj!^5z41nuHQe1350|z@`5bXWl%HaXoj=5THb23{4X{a{`LIUnrM<$ooC%9dGeZ}jr zzP?rDLN5@zF8N*OV36=S=aw^?#Q5~{A^4NOU$G-~vw(E?s$YOB9Eh>z2gr1WvwLfe zPVG(mJVQQxy0bA_^arN^x)6jJN-<@~qmfV%n<>4abkU>XC1ST}2M}2V1H&BKFE~ZG zb=}h1+6n~s2l{L%-@bhVXd9&Mm+hO)p9C4npOD9?7HJI^YE;m}lt(MLi^v-X7EdjZIW1SP|fd^Q?aQ@Z4k)ip7E%2xg%Lyf2_;IBzHvL1j`*q%s zqy9ROsCF^L7f*KF#P^A_@d zqpj=((J5IBWlD(7ooI-kU2M+eV1v@wPGI8WV8WIM72$C~(;;2HWC1T^mV{A`>>;#V zD5u6k$wpo`Qn_KonexluExPibB2|81E1=Y>X0cCIT8IExgnF4F8W7d`&me0rz62l) z{=)$>?u)I8&%t*A6l8I$qJK3l==w*ef*a|}%0@s=!DCPz0NV|dAST@^2G4k&NRF)8 zE6d+WfTRJC&SHY+>lyQVbs$<=r->vWm?=Ka02Q*3kc1;LpSP;2 zs`hdJ?2f;FXwK0j(6${+M+2LZX+X<;SUZ0k8TG8K3iZ#pg)e}|YO%jxP()Z*81Qqz z0_N_TS<0VR!Nj#YeYsX=cj@k_ZGTH9fg{6djTub36t&~wtH=%jOc>xJCF`pN0CoF* ziQiQe@=C_XRq?iMCabCG=|he-g(w7kRANlR&`A2X-hp|&tGj0z5XC@^cq;BsfVYRw z;^_c|LN^i}yZr`p6^uYUf#sp`w@vxS&5$6sBE|q8C&8{Rz%1p8?N?BEDsZ2WbAtkH zQY$dGa?a9Vml3C>&GHEjjxhKIKoR)CdvC#aBE76YY_gV${_A+;8IbfIf{Q_Kl~X)y z!BZ5jhfUugpz=Mi2P?n>F##bdaz6r430Pga|3FrpM>Q_@A<#ngYSB=9poVV)OTKI? z*navTCsSHiS69>zFbMR#_s||hMuAASD!obD*%=c_BS^WK?h(4F;~9Twf)|p&#q!WI zCo4+^7Z zE8j~WZ5I{4;`)4{rH;88xwvZZ7BJ&W!vKo3U8SI|E`WptbayX?`z5xQ1Wo^-Zeq?J zYa?*j=1@BTrUdDyBPk9*;J*#bg&Lz4;9Q(*d(r_hMU@8Xcr{hMd51Ol_I2|0&}ET7tR#L6Mu=N>Zh0EDI0um#Gy0dJ5~ z9tbV;$}WMSbzft#b2^aWau^Jd&~}AqnIOurk<)2s=R4c_vsjV)?f)WehtCspw5-T+ z`o00v3pX`yz2rp*9-`cGr8^`=tw_5I{G$5INz$1epf%>BzNRQ!lzi>u-DFHoW(xxO zpl^U#&eglQg94^zDFB8+dH`{(CiJ*8(p0RhthL-n8zW0x(7G55(nM+CQUcfXwSoc; zpW9BRgE18#W+7JvA-bL#_6kT2266&R)Vl(O=IsGMko)>{*XLs+0MGzP+zpuEAAlI3 z>tbIDiImwGDNr++{`Lqw2jgWYFBfYl&j6A^SY7=oXnl6;-@(3D#mi|z(rKchLm>l5 z;tFUhJXqixa?g_;5!kr;KUfaPC6@Jdb97AN&Lz2?RKN&~8U06G@b^H={FU`TP1u@g zAQ7S#(F`~a#=Dz(bMH0Q+AO6kXhV>kW7!MBuTUl8t+o~EHyBYW(1oCzE#6De>t)HPU~5zNlFrs<)RPnn(7Ho`sU5a4Ok`!4T0JKmx)2OQ2$t|V!XJP2I)`<6 zB;O0Hcw;itOYn*T-sqi#f1VNf14%ld68udaa8~{|cEF#0KfJnnga_F~C;AVc0dK+W z*^tbR|L`(A_`lO@1^)`60TjeMRjb)Xk5V`-H7zae_`kn+EQKfJ_-|3hOqOTYYY-ah}G`s)A2wfq<3;qP&r>0?Y_ z8db*NZ=+{J>E|X0LKxsuQzKpKT-{)N+REo3!dE!TKpGJ6|J zAGVC>!$>u7|D_KJd$Z!#u@5Z(C(F!;`XhY)yYXIu#J@Z5>s=ZdeHmZ;wE&E4o21LY zf0<6H{>4%$atH!&M4p|r$p(?qv%Q~p|5n@o6>yVe@+R@R&|8d`l7k+nqNT;S0F7>0 zwc4A2@lRvA2$xGnpD)+b#^2&i1*ckB;3CE1R0|IKl8w;tc{Xe04wm5tLT|ir-fzk_ zFpnd<4gM0W5MptXxFQYxkV5Yt`begK#UJp6?}mPI;;Z-T`ZeHI!+7SXYcB!11Jlpo zR9H7xwq z9cm+S<+BOoHw@i+sy$l95_KkGr{9PFJo?8t&r&cpT8DBZ=jY4|rL-w-#U07J$8QX1 zU~B#Q3kjQDli%cUUW5HzCcX&wHXFRF;Ty+8KN4>W*!lDbKcP=eG zCc3Bk$T#bETF8ay{b7nsO3^Jp%P2jXt}=q0nT1Z;rk=et5^%`SUAR6dAgux^J0`2q zb(yw3nW=Z5CkC(I@jVzYuNPH)R$oH$;HjWJI#C~KZ{*&L6cl^8*kIxC8KZRn^P1Aj z@9)f*$sCCwHFl4^1Mb&Z5$txvJ4wu`dooe;vjWMK*zRVgI>kr-vz^Tkma$A)b1JxG zIexHteF?>gmKDTW$6e;Jhn$z{|JdlDI+DIrApOUV$vlut0Pu_W^?lOh=6rVROOhvr z3B5&Ew)*>*D%O2W6zLYY6bYQ<6otXlUkl=dxMB+D-{6IG>I%lBjfEM&NA>5@?$Rn( z&xVK_Pe^p_%8wjp%LHSRbj1l{5$Ptj?^@+V;sY`a`~?o_v(qg`KlXbL+V;CG^gUEI zJMMvD>ZK`0s6bBg-+}+3hx)?sU^=1BaF;69wv*=acOR8*#9PBLb=jVNnziSu6&~=% zoR28V+$_xN%(vOmv5C8S+*n@(TT5M{NwijB=IAfoHwF3RT2TdaEvD3SJuVrh5!H3U zxwTY}mkfD|pZlAHPxqu^sLDTjdZROj8gbD_1zc|AN$4y!>#czn?K2jPhL4Y16S%-4 zMR~P}exer18=U){P=? zkh++!W#v%OX4Y<5F6gLed>LX(NoJ^ClONN81aMqSV?n~1LaJlKv;e{n>dI8ncuv6}zZ0Z+EX{6+75Q`zL!p|7HkCX&k7#1Ve0guuFQ%F{E` z-Y}iSs(OPAkY z#Yf7@@E}=adJ3xaY&kvp@W7_FTi6!Its_csKHdQID>Ad=`SFm|Y3dp_{c}%>N$l0+ zK~!_U)QxW8zqe{J^(Wce_3;LNjXIrC@btFt}t2ie}i=qbvV}mj zjMV~CFSaN+86ez#5~sC?8TGSOYu$BJf{yiYL}sRh1J+P}xRxK0&Lof%kQuAjMOGmirEb~O)sD>$u%6NJ^BV~y z^1ctE^$8ka{V}Pmx-60)*kqwG>Z}cG0dfiLn3u0!zimjnJpcIUNeQiw%Zl9tQN|RW z1nD&K^wXDzobs%*UA-i8l1$QD1B>^@T1_GGhM1#*Vpkn!`DTc9x_ z4^b!f9{YK}BKpb8X1%YkxpT596MXt@=^Z9W`*hN%rv!++Azi?}qG8}-7}w7D3m5_z zHc>GNZC(i{HbUm{a%@Ic@Zt4p%DS?Zy)2>SUj6HHdP-`zxFbJK5$;n~xJRVftmK+V z((lHXF##oOBHI1*BSBoW{gh4IZx;tz-Ug}Y&g=>?_5~n`&e46eC(;jGbVXcwYttgYH}Q{1;^L<^{j?Wa)%IK zwlTiB$ulAvU@vqbj+?D$g+Ow!CUThQNzbYT$;P*Pa_|D4Y)1dzYnyfK>i~EQtLXBZ#XE{X3pk8?xn2c+~z~CaEEj4 zUrkP95n9^5jf-WUl{IW9wSW?}6NVn;{*vJM7w^F4;tPF&5*FAU{evwlKuBrXrS{6H zDvkggFkApSIb$D1zv$Fo{Xt5lBN$Uxedgw^acsPT;ZbYCyqO6S!>B^ra9MQqJHCB>>PVE(#h6BnfN*Mgop-9<`@UCiCa z*I;kZRU&^Ii=*=L=Kz5v<_qXa|Hc${dp0(H42heYq4}6=D=j8d0{J%4Y6;JeZwtvR z8jxeYbGZ!wo*H}`9zt_otj;Uj^tEjQC2yJ&z(W-L)wP>@!shl06ikd#WSMNVoV4Km z8R_t3#d?mp!p5@nqNVf=E1?pt-(}X)j79~Y3ZdjyD*!+Ohv1dq2o&>OMJaVo>Ubmq zy3wUQK0jv|tRVhuS${d3k-X{YVttaH#hLWbTz@eSqxVbK#@3;e4;B46Q{?#ipYN)i zJC>bMjy^#p;Tve)PrYwrF@gTvztI0?{r$Y>`@=((*IM;1e7_HY2PrP(4;zx32J0iW zp7SWS4M(bAiJo;5KFFx}HR->`T3wa1Xe_cstrq{B<^uD*E&gig_5EWXb(6V8H zN%{vV@iQ+;0?;#Rqe90o`!ILvk4^E>eeY>F*_r-8(zfp9n0P<_OyHbt@)jq4Q?=9p zkyGgNU$aBHi`h5{ zyHl%8dc8Pb`Du##R_#g*IYOuT8tri{;9UC!pD87Z_VhJ}%4q!|_$5K|k0B{)bjRAK zIGZ)m0RaFV!eltKMi?k3N8J!8vh0`uVKzV|f9&NZ)cM*4t6+#tssy{T;0bYG9}Pk9 z=de8f+DQ9!%}?)%9kJ+j6@Gbk>i-gYzmDZ>9w(!@l0b+pUn>emtT5Oa@jIR{L#9K4 zoGHJEjvu$w_P~Au8drwuM3Wa+0jP|COw3Z#8G&{mBa@?Uyrzoyh5Q6XMKQP)qw>p4 zdojGhuD-Fc^&;4=ApY|N${QmbriZY``Tc_m3LdK_m8u6y`vvRLinL5lOpn}91jM}tIn^Tp@(QVDL5U|RB-<>o?XVv03m^>TWLGf z&|Qt}uxEXxIJohgH+Zo<&0lLDy=H6@!!#QYmNG|uJyo6}HKnPl*#wM$7L8M2v|3-` zd7O6LQ?1Q3%m(f|Q~0|bkP}iq>*R~4Ft-4pqkRjH&it12jNOp?7kUcpGm1<<)0Ic7 zec;0#Y2yh;s~mu^sych?Ow`f1-#_&#oYiXq@C)zNmB<;cHfKqa^TqQZstpI0*CaHK z(dl5OgV0KE?Re=`p$O?7o&E}Av8?_}gCw9MN%<}{!bb34;YN&-LQW=qUku|ze{Rt& zJ>@jyHp=0LMb_cMU09c!Ig-6BxoKd&4xD*8v9?Cto_N)QQEn%9^drg!skdB4%1OgT-U57a-nM~Se~CDPm+;`<5l0Bn$|a%BuXjz`B)_xMJ$!D4$i3EnZNgC$ z^i#%o2jyqE$4<3X+^!>frSuD?Rz+x`J?uw9yx(0mJD?(F&vR)p*;WBrtdmt%wJWO$ zPeD=LS>FpA*HzV~N#w>Em@?I?w>b6>tav4(EJxFR#V5Kier|2AUL=6N%%%jsTiU&* zz=uG%WF7Y^zy!nV>C=rLpzh$>hqQaGp9sF4oh#dJ`{9V>5Z7w9gqv(TRZPfZI{YFv zl!xWJJf>*CTFK}9QD393;2YPN!T7~~gXQzXXqCG{b*M}*Ts5$MMfsC5;n9TiocN1f zp7HBgheOLdM9J~On&c52;ay!5Z=Fe6NOTHhRqFNXSYEBIc$*JGFvMvdX`H>$b!YSs zqyqTBJcKgt`>6TCl4k44#H9EqUqsy@+kBH!P7I+ z+1S=%nfFK5xvZi`q-Z= zO`x>#yM`YKA=VEHxaYhNJ}GCs_DBpWCtK-?{5;z4zW2i}=g}7?jP^S1D3cf`&+ZWS8ZWbxrR>LvFM={$02 zYrbgMjrBh}LL(nP!ne4HEiZIPQLNzLKk4yIWfCE+kExw^TmX;vHRs~b)aTUkDVk0ttQ?d9rTJ z*88lJso_6H|L(FQr#PW<6&(|L7yooRnK$-kO69!KV2Y=a>yq@m=1aClhAF$%Y*^;3 zQ|%h&`z4F<+-JRn9GQzFzX%5#6)J|xaJV6iZYm5hA1oWhIwy7KLf)~qB+ z$}!_>GNZ8=RgEygHIG%=w&6lj`4e}|HleO45=p)7gd?YSd8=&ihRU-4DNMZIlUgp2 zb2!c?5VInK@zQ32B3tGKl;_N&-St6Bu`+3LwPA{e5=zLdtf>Z)IeC$KKk7+ga(fYW zVQMOftizz0i(=a%D)#Tc^!bh{`7#+v(Zk$;lm-ysvuIhj14N~X01V_=Pdqzf-fT7+ ztRE?EeuVu$gw;#pV14^%x+n|l>P|yfcXzr%hS=ez8?_w&EB|G*2ObK&4_m|-DFwv;mU(JHWT`j zSyyV*bG_E0E{tMN=jSU34put(d->(DYfr8X+hm38R%KPHbbCUkwTI(u#QILh*_ zL(R3xM9-th;~1H~G-ai^?=qz?j4#5HJ^-?q*_Ms>jZQ297r9_F%ida`{*0t*ObREn zE})^lZeVsUhPr)o1VlgO3YLdCHk(78&d1gJK8hYFyn(H)8^>+~**03wQ>r#UYUvCM znh0?g8;c4)8jI4E@lP_@aHB1=(y(v%u880$azcXda6NU$$;Vab52YqabBQadMkv-U z7ZdeymG85lV&G|-3YApp1%$@mIKYRO`q$-7y4ChJPYed0nWQbstsPj#^tUkL7oB;* zhwCMz8_T^csFx@gDupp^l+T@qg%s&Y5G9l*Iujo}3pUsFVtZic+*Q`n48SCHz&;j5y{w(#n96esp{5)&j@~aeKQHdz%lKRpX^EAyQboBwcYD12 zlL-;S3D~!=&IR*CjHgA{iuY4X7!(`BI4K*ZN~BTst* zDuhcTTNoFXUj0r^ZY@SlcLAo8f;c%jo&6#s zHT;R#S<8ax-glKc#}Pdtletk!n@^(Szw9H=4*Qib;5+};l*K#Nz%1xFSIi$hcCT}* zP_nh7D@t3QbZx2g z`F&l|eo8p`q8(XT$^)~JscHeD_dRB|<7-YlbYQW;Cp(f&O?%Ow9iVbK#ZSx9wbD3o{bZk5>ze=+pg#7&G)^dba z?}GZ&=m;7v+e9oH`&aVn?-{0a)d?B~_WgE=}A2=fkaMM-Q3Ia`3JN0!`0>rr0rYNLhK+2O5(xXX7VCw~B=1o)7n zUt=Z+ouM)Yt`&}y3 zjFH&o;jfgl_q$;t@y9*fkG1Y#2)|ICL048$R`>KK3&~wgB3|~SXO~IU+SI3f&3I2I z0fomHg0Q2O;0^peIqwLHz#+F9fPmw|2dQTPn-G@7db57)Kn~t=dDgE0>a!Rc%GpAF zo&wat8)QD)$i`$9!}j$B^bFKXfx5Z#aB)E}NaI?Atj30Rpf?G{It}PS@6KNZw7oQc ztC!wMYcpw-iBPhbfBs4Q8@DfhO(iO4|7zWdKdR*idB!~u^4F$_CrAc7q?mkYI=Q$O z&soT2^Zm^#Uq$@OQwnsU>eYD$C8H9cN`?K~s?x4ilIF_RFg^y5p0e@eZNs5%u zi1OCuPRP3yM?S#Ie&lj(pWWvZ5Ur+XFgvXwO~RHayvOnBF4TWFg`@{T*Xl5W`Cx9& z3yUN7%&;ia^3!m&3}%Fgre>C87e+)(bBK1Tj0OBy(IClU4rjbPlA{jA>YW!?N^nI( z^sN3MfUNw;AF)CiPrPPEYaQU(vESB8Hz%96LnnpiucCjs+EF^rXc68)6im%+`z4XT zxp)xtZb)G@jMVK;0@lQDUnPGT3rCvMtjrvSKM0fR$xH$ z=)Db{bnUUJY4HPE-_{DS5?f=bvL;EP6|HOCc`4Uxu`u*Z#c+I0a7{!Vn-(&ouCe45 zxO<*8cdy*v4!NoEy67SEjWQkqL52RpZP%UYE@Yv$`OT6XWVW{fph~=8WsPjuA?yWO z1;3JA$CZJ7@RQS+PR8dig~i1YnPe)PX%$Gf0IQ^`M~HM@vB6G3y;J5v38hNZ(x~P@#j4ZfNP#uD;9CJ|IQcU=sffL1yF5O zIiR2P^-`s4*)58kF{bdYMA&)Lm+(Kq;nGj(U!o6hNh&Ck^gJyzIGZ|qw9#9tAW>84PcVlV%+=>arsGDLqZ&i`A(fW-iHHpMhY$36K9yEG7dVQDaL?4c zqK`%;>)s(!E2j{8ds1v-5Ol5+Y=wb_C^2T^DV&QyWqKT3(EMnP9Ax+YA7-j(JKQhf zdG)Y6dDSG+Ba?wZT(>ie79x0cab7dtM}uF&kOX~xUMSqECQ0^|%Sz?A5bp%DpTf$q zH@xFGiYwX~Q~m0(RE_ZOHUSH=E!1FJ6~e`<4smO&<699TeXj4-HC3BY6#u3+zAHQq z_;85_(6;mzUVY24@P4-AkCH0#`A(B87O16r86guI`I<_+Y*Opelgih=_PLw)Lg|v4 zjA7!1B@5HiXLVoW)=?Y5>Y;d=CYiP%JToee55WV(HL5GG+-98;orfgwmcFxF{8Xw) znKhdR|7S~lb&?(x)T*&v`Bi0w%sTX8Zu)}$up4UO%Z04gxYB)6=k)s>bHkw`sN3fV z(g&yQuk=^>ubjUUIMAz=>H;+yNJ9U`hqw$#2%PN{C7?m(7*4Yvih=xe7NGGxA+rC^ z^=x^$ADbLknoTZ2%5fhMq`iSMoFfYZ0-0IF+_d9?V2R#N&}{Q}WTDC~S~9llW(Pdz z9P(WvKY>r6Vx+uwBO-oc-{z{9iOXqElmPi*U$w&(AgnX!2;1-v0K9<+@LI!8V-zx- z4_SX|SVjb?fdgs3t7SJA(2(n&KMBJuKZFZvc4YZ@I;q?+fI^W&Y~7&3Vme67Jkd&O z+`nMFA)-E#UjA-Xy!yE#r^0Hic%CBYl52(UT98@=aS;ds3Ekq5Sby<>0-Ps}`~mSq z-8o*26GSdB0uh#--i z57V++2}?_ovh((|9`XHUE&Oep_Ys=4td_8C=|NC*Ov|cass-*b&w*N^u;+OT72ydB z>$UbIN*x_bS#`G3<9||PFs@?g{TMwI_QVEim7}^-nt6ZR1zMX41KEJPJfR% zG+T15y=5@M{NdB1h-*SAw>x~WC&ka1NOJeDv8h7FImw?#)j-DVojTf|%oYp6$t9{r zk;34rIpuUp>?_%r_0DyKy3I4rCN_U4L_p3G@)p1%^L?mXw&X0Fc|xE0G3lj~KrJ=! z&96`Y?Xt+83zIh$K)Nj)hp47_; zjfKTdzEFHiG&y9#-21LGJhOnRIM&zu7e#s|4aHDQG&2YN&&ya-ZJR76Yib4sX$z-U z*$=0_{F-R?ORShUvo`uQ?mlf-<7BmV`=Jv)cMZHM<%}Qa};g4 zo)9hEBJHZ7tES5@Nvg89?r*(-n>Q{VKjoudu~r(gmH3MKd(?IB6IDDkOi?=Qcexyb zwPqx0tzUWCf#oPPu2{GCOH;$2!_h=1)2cE1lxPA9N!h z$L!kBb-cVEZo`e%2`!Z8L_rx*kHKcvvr|0YQ86{m<`>x9jMdV7+Q6{9yYS1CoL{>{ z_IqZE@3{o1@)g+-6hur+?7TZK%%rhjmwew#QR4IGc8Tpo9w$|&Ssyi}Id_pDED}Xf zIx{9Er9|lFQprv>Av=aaH8(Z&2e(EYD6P6a)thj%3{CzWxNdG@W(Mo+m5DsOKtQcF zi0sTqdusZK+KYOQ_)GVV8R@vgAkV z^O0g5Ex^bb^wnxm5ElNx=~tlvR5OZGd-JpSo4;h{Y?L;CmK&HjX?eP?U-v?XVYO&PuiaO|f`Qh`^^iFW zQmzpb!!Ku7(i5F{`}az6xviut2X_I?ziB0%xJ^1CHO`;92CY1jz-qeDaH`^B5f7s3 zsBLRoOw|Q*P2gf6J7bT^)RClX`htprGIqBj(o}Y|eksyVz4o?DB+O^Qv%V_&Vnn%j z*79`w@VG2_SL#BPuH6P>Zq~E3Ds$%GaQ~8|n>7%<7ao$pqrpJWSGc-Ot4Aww0adi# z6Csb4rtW!~foFntNT2@V`Lm+24wf;&B^oi+^ws9adCKv>O$Jc$a$j!eMPT@^P|#V- zzAbv$Gv3Ie$kOa}z2x%a2&QqpfG`g($@KZ=>3I5EvF4`NqU<}#aW2K8Bh_4*r;Rz? ztfCrHNQb6LP_h0XqnamvKk(rLA8WOyZWRkj$O%tClZl*?OJm4X7cdab216I zLKMf?)1Q4IV~3w%F}felZoO6+{GE{(D^OMVX2HY`+s=pUnvdhi+;WRP$O$iWWnA0` z@$#6!$*S~?joFFZO}XT~YF^*n`%3B{WO^EyD+rK4gJ{}P-xpB7T zR1_GgFiCQ8{*1pRsniaDv%3jDUml)~SWb;qlit&OoS=WzYsvc7=j+iU%>awS?Vo9t zOlkM8tv|bxb`5;4i0q+_c6cuQAOjuVb)y@rCxD_dGFYWqqoUX`OU+EfpR=p|x?WW} zG5^!zR1xw{57QzU6=A+@sNM0JHOvZ*_vK3l9z)o*G#2qHUWxBxslKaQ;!57&_~F`Y za?HQYoJ`mEdF;?)u-nBli~NRBmHs+C*2#A6xyA8QCPrWDACY;PZnRcy23^$7@9Tfl z3F3iag&uUgJw@;&5H%w`{mYe_G%y6ZcgdI}Jgu^iEPpTde^rTs5&EqUkV`~nWMuF< zZ{>E7dPxfka&-@u9e$~H5Nu!3ws?TgI50$=QUGfIem~qO$X8lhtbQFv%##kGm6f-& z%x`RJ;xKF-wj8c5A|@eGk(W=ctYmNEG7IxPr_n{JZ9G+dIv$t-GX|TO?ty_B1;PYE8Rg2eQ@l)VKvSJLfEj9L;7)|H_5I@?nU-eo5vogHC zOYpnd$BT!TmtIInFE7uJo{mnU$x|Q|EFDW#TlOnaP#pfko`bS4Vd_tj9~uH3BvPubPVvn)(`CZUd>8^*aU8o#|=qrv3f5 z+mlsN;g<&~=W9Y_Oy8>q$_g335(&v-+?)tCvBFhmT*h=Fix&4kLE2%)tTCrt5eW$e zbV?M5OUK)eE-oWc26FIOFN8`jSgTmAGwmfrn{f*F_9<$(3v80=;nf{^-!}iwnrX)Z z8tFvy6A~qD7fdED%io>jceITZtEjBw@OMrIBhJVy%CDJEJe5sOF z($-y<9PT|eO_MS?AvqJDJA=`y*rYFW>E0LuZT0yUzA-@!kF0=bx;83hE9Z?h4(+eaNCt0RcQxPt1yU#4O|MWI>9U!^Lwu5=so1ZdK_aByC)oG zulKx0lBbU8y%Ole?+pjhEfz>i^f_7#stWf4p$AhWV)uIgJ5>GN{n6IAJ$e`XA4iO4 z5d1K*3~DcH+LI)ieftXCPZomT^0c)o#2a2V3D!ZqVYPx4r@o3^ekF9@Z#wU820Y4^ zm(k*^e_ML;=4SN4g%9b)y8}|569I+8CdRJ1A1fTH7sGrgY0 zXX%%m3ch4azbz#8ebnd-e5_SMqzD>*Xo*;JJ=tXAmO)H9I?=kyD4)pT(-$2kBu{>g z$s~)N&K8`KdqPH0rI}mV;h#m)-{rMuDWQ14JV(b_xeRgNJBr90@TEI16``~8wf~IX zOO$bE3GG{3bk&#g!b_hlD)^ojDVOW5+WXy;t5t}8<<8$KgcE(^Rwb>zzDdq)v^g)v zw7WSAw$*>>rLk3d8<(-vF5V9p=jMU^TJl~K>?08=qpyCb<323{ePQdB--91j-?*Q5 zRTmwqE4$}|I#pe-7Iri)mb^SoA?;*(0&&ah@IgUo<9XY|&Y5=mK26}1K#lqrJSk@A z&~W33Hjswm;k*)MfnJ7u=V-|587Q|Nd6D9^bF;j&W4l#Pe|-+q#A+`}PDo6Gaew!` z1?nklRyk%VDk-fjEoB7L*{%1vZimcbfInxar|U5iQO;%!u0Y})r&^?|vU+1Ljzu;a z$`V$Q5Y*7nkc{~tDm*+~Hkm&U=!u@uHlzXC@uE(^3)YCj7+4ua}NRgIWIa>eK z)fLAgJZEKjITPR*Hq>Lwh(D>A6wL*A-}poVR*4G)3cb9#3XR=fU(Yq|wHI{F{l!3*-d1Z3nm0dd;18gy88MJxLNWbiOuAC|J6m6%Ohs8xoQ%s=UNeM#%YOd#YD?+s_Kc*UOV1<(xCdVcB?TEhFtA2i zJKg#MVi~@jP_nTzFurT1q4P0oG_20R?le*TsenbpZ^s}L_xvm*20UU}kkla#kar+3prc($X+l&t9rnx~NuUE^1a?5%wk zob=r&Kk+H9lr+MFEXRAqC2il9MhdFJEmyN%Sb&D*+>x)33cpR3kl8u02Kuk>*yo^I z9CN1Dtmh+7D&mcy6e2nmd$3(GDZ!TZln^6l zL_IoCo;lC=rXO&8GUuy(Laud_D(lTPYgBR0ZQoRyo?_&C>}krld}r7VyDKo;sGg8{ zj0znMa;uEhdZ;DxkgLj8{hETj<(5caQGrpe=d?omcdlod)GU5E*r@&^lUd_>nIJ zIJv?)_?8AW`$4g{l)30azDmRp3Z?2&SJz0DCqH;ffAjMSk*S>Lz;IM>-Sik3WWu3v_RhdGYh9O^;Q@vkBw-Zxh# zo;LdhNSCCND+e|;Rd1x;n7)UKeK@K_DfT45Iy6Dx!luo7Tz=zRH#dC`(07i`t)fP9 z6)0trjRTXXwMjozRUlDTc zhyrDYB#u({di9hh!I1_de$&w?rVj~$n&Fv=igq7p5*RM+25`_uhWq(5bel+De9vY? znvUhGJN6EJY92h4lp;vS4``WH8wOZ`HXQ{8Mcd1IBrWOV(IjN4j_A&N%iP@^ltB7R z6#D=j>oyZ*9c69w{BPS8zx})`y?@49j{0Yrc`}EX1eszJXFNr`WJ;cyyQZ)~`Qh?8 z1O^EVfyF$hqf>xE#OcmqN303G;BUyaV^b_kxT2z>;b1M$Evs_ZYR0pM8NXmbfUR(z z@Lxg0G4b(qa{cG^E3x?PwtN6^RRL6isYV@PbOHi1<4h9u8NDP~fgh>ic77KL&fhjK z0DlGP*cNHdWCL9&Q3JIEz!*g*XbB|oIEjIXo!wO`rq-8Wh&Iq$Y#3MVbF@za$~!w+HDp| zGohn{do?tF`9e8)b|72V(6E`D>a}&=?Fb@>D}*1$G8~>)ZBw+c_@FMjzmft$`#w}j zb!BA((B|X=mb2*Tm{lDJJgKtq3s&!{>V2K z;wdyB1@@TtkM|TB_+Sn!Aq+ho9iCQQxU^xLJ@IVqJB|RGF$nHM8S3j(R~zjRdOra? zHn|EJ?cM$TYQDa3iL>r}?~5@#acYUOGQB);bGHCjY`Q)7QadtgT0{iZ%IYfNs=kWG zrW?5pqEV^;YVIIkrJ%an`y}aS@+AcMkJDyaox&M3cE)gy933sKc>m3u6Sc0{!qSKY zV1ayM5Od7SafGpJr&;)~P_Rjtg{?xrJHe5>w}VFI14h zg08y(W||2K!J2vFs$4=ooWQdue9T~}5{&rLsLK^}6N!C`vDm0ml>Ds1^@jijb5m_; zv~}k_LvHD*g0FCM*@F@Jg*A0m1qKwA&cEZ?jgcSY9(1f#wmRv{Pf~T$AY6|g{txQj zGpwm~TN}pZQWORDQi>u)mmnRaHvt6^LMMb4nu63&q)S&>h*CsC?*gGD5PGi)0s_)W z=)LzELg#(5_TJ~Leb)KDAMd|6mt4*yGqXJNDP!E@9`^tbED0f4=`;7^H~aHxa*+MI z96~VV;1$7%KLxA&k=ZFdX`t`3`1M5GR}7WUr;u$}z!;QdQ87uPN=uQeVVI_G-=3Tw zw91xlMQQ*&mRBOyJ&$c{Y(SoI)|rTpzLq#qxtb7TNP6Nxu+&ll>LecBn87cuYB@2J$~U%sxBW)fji~z$QF&N(W*p z){InS^Rv?WyJn)CM{?nw0Xp>^IiPX!U)Xfe3JB@iv>?iOE!PbtbPE(0m9p+i<456h zWMr6>r=2Vf`fZ9~!~p?r?iZh)bx*RjDF$4=bo=PSRJ$Oqkj_)`g^b=7IZh8W-$B(c zIgJc^gL!dk!6}S9R_2pz+pvb=M4Hoi8aK40m<~A^87*u+paTrqzWV_zd|G9Mh;P)Z zJ!$eS(@0>XnG3&YRPnN&BI7+gaRF+9)<1`e;KXJx?6Fy0ODGdJJv}|?8)@NJZyu<= zhTIWrxn<>|Gd7SHpK!A72s(Kb9&4;;iyOb@2Z#YjR`N-Rk4{QZf`ry{o?7Rd$RJ_gPPiHZ3tr3m81nVOQ)cq*aNC) zD}$!~xK6R-l^8<@0d;6r@QFWc$=N4s-c$C1QT5EU1!Z$RKcJzsu}q>O%g<|ZyQ6}nnqz+Gp2om+!gx(qk8~=WHh@g^U|?!=s4L3^ zIq_*iR$Tz$e5?_6D{X2jAETA=-gY2|wCQF0{R$8RSpxG4sVPYNgWC!%shI)h>OdJn z57HOIJ81*b>s#*8yEajZ<@lW*NjlGc0L^5vR=x{>(bc8i42)?*y+h^nWpj_r>dZiq zr-^Z_^FABBC;CJj#Ne~&hJ8;Jv{W9-iJj+MrMSDUY|w9 z>VQrI1L|IE=TUjHt)Fa0%dsT8!1&Cg4Tr;t*Q$z*O=Wr!#ySY+T4^1J@hO{N9rOeP zOcUsV1b_H&xAZ#c=7G}eS%SDj;fY}!s;MTbPyj9f;cUmQXT;PgBD&IvBDErD3o;#p zH)kRus`s$IbIx1}kUJT)C7!W;7D&g%w1it#u!8YLi=-=L`Qi;;en^yb>;BTvvU!UG z?0%~{OMi+vUaE`EFQ0TaOg7gYqy4?Tf!2s?$}npYnb2q(CICSX8hhC6%nc3zr6v*E z0VS}C2aVUVE$@$RYGynOBYmuva+0u7y~-ycE`BS>m{!_rZyV%^@=Vf6h6qkgBRGc$ITtSCT{q0G`lJv)tYmwjH`yQ0gYr zxW-Ql3QaGn8F6-V0j?B5G$oL>#Ms!_E%w|PED(c$=oFoph=^O+*(MNh_7&q7$yTFQ_w>ewlRdUoEEQ zcsBXu2_rQsWj^B%6k7FJ5HUU|1C5~e!6xwwWH6Dg9qU2U`&NFa=G+k9a9%@<#Ldgx zg>Cb7_r%GJcnTy<6z&b$E0+IelArY{Stbi?LdtuJ^_ciRk!%@E325B<6w*8~_d{!E zdply-4!>4mWi#+&k+8nd+5Yn<%+If$H^lH6qyt3;4k01!;=qby!X`fp z3rl8JmhH?Ru_S~_VS4f1yI;TuD`jnw1n>bksMaJoOYPb>dq+nWfUm6(CyC48?{*EY z(#f2#=GnkQ7h+jYh@tb{j|XC81RR&WE(e}n9(cAx-5jcZ=4vE zST$hH4Ga|4Y3JA0c+TID%`Yylb`VTgdeQ=Hy%&>#@nX;DWdarkhDQg#)tra>9ZY-I zY;E;s+zviDFkc_F@;&F97s4(bUnM=7KVL>lpY=Z1u6S`0RrAfx>2s6grQFu`1m@|Z z8eY-l*PgudVUqGyl@jvc+V?MNmyYBvs5YV4p%A3H1b&W*gIAY$8mcXMrP5Kp)?6ju z>p971+Ed+q<}5~4r!GGyZ`@IMXQaX7fqf9+>B^pNt_!@{LQ z50ZpY2drT^n>D+np^g9wkbfL+|tei`*2o8vWlk*3KgFy-aubdHZ3 zvumV84co=EAMkV&0i!o1C4YO?WS}=gaUS3kv8M5;nvLoXan)ih>B>mxs(!xRISUZZ z;E+BYYfy`917-pb_@}3*r{-ynNf2}7Gj6o<64+!XQ-XqNB~^H=YH*4A#ewM4(~GW(iK3G3JSqkT zt*%FVoFu1hgPFM+$n+9k>c_ncsA=!rHhR0oUFNr_U8BouVU?=s?q05*T%7MB?co6? zCN1-p`W(>bqOT0&3rtPN<>hrUo>2k~SJU>+P94yaK)`mdqTy66ElqmwXGu3$VK2M) zCvUn%fnr3GBPAZ;e&?qiB;+jZNdPQYmv{DI8{IGArz_l~s9*i(&o|PnNiFinA31&j zM@PVwa-I2pHCe_N4rYr#?VH1HMYrSi3Q!FQQvFBwp4o&3+2?h2(kTD)l@uP{rf9-v zfHo+zAVrQz$^ zZND=1Rfl;oWFMEuyLn_%U7*8Fu$%i*Du3QTk(*@VSGGIu-hFKs9gS{>8Pz9|0xlPA zY^qN`NtId>Y!#mQ8Ks*Q0V9E#`H?F;>T_JDFY|X8ja>r}(q(pY=)@H~hfGx;aZ~g4Pce9s z6F&b`xtf7CwxDgw*{QX-SlHo2oJmO~5}dg!smMga8w5xaMBNgA*%KNGoI2Y-rUd`% z#9*x>EMqRkjypiVpWaJ&mE-Y$8m+fDd6in4cU|ppO9nu1T1&z9L|U;X8D zq|Gna`BtVUwYq5nW4djL8(4<&{aiu04y3D*sl#YazDmPDRMf1b1%gmrg?(@|$;#if zgcufKF>-KeWm=i^e66MQ>bq-E2K;n73v00uSLHo#e6O0Lk3@$PV=FveQ9N zm$X^BsqtgHsmX!oKMzf&DM?SLEUVh!Q{_!PkauimU+yq}|6(z+OmEZv)WDDe=u02x zOkyVn)o}9&naV%yx4#_1NRaq|Vju08TkfMvIQ{x3_VJgWzPXmOzJZR(FU!;DVjlEBpZBx0JehwXlQT4M|LFeY(ZD!Pn|B;> zOVK#;3g2J*80i@FujH8`ft;0w`us}xEc^BQ?VI5l@yfCm-ZMsqVgpVBp_QVbw%}h* zN802=y^pk|f8eMl6MV3^%N2Jk|J}!Kg!d0MXR+%QdMeU#%sLa_U(u>w*TXk44WRR} z9lemUg79}8|I5W=eh%1Mbk$H)shd3bAE$YBnA9#-4tsoNVBX>O_CGo)X;01H*r8=R zJvQcuDkiB?y(0Ed?4ZoMKRuAY9*B$So5f$>leVKj{q1P4GHEro7wC_V8J@km{Xh1v ze3O?HDQQ_Q?X=rF)qoQW<&Y&dl)(zy_P_hUm)W}+o*58@PKTgLlJU8uF%K+rardX( z4F(0wy)}d&r!A58G~eU>OAZbW#rizK!NG$2;Nik-!WcvZMM);*zh6_5Q~wa?A9B4k z01f~A7Ct?xRK~_M+MsqC)69*xW7H#n=TzbCP-G2q8n1yBR>M}TS7_YJT5Hf-gq>9>AQ3mH_JH1#R(b_(Q4$k;WgYWslcB}H z*n@GT!qIeUVc|hYGfDH?T$YUNaWo#_ndbd&Y(hf)L%;s}=E475Kl=OohyJkrde1DY zXqf_?Hl;2td_J*IjjlDAEAd~>Amj?4EY7y1$#v*m z`&;WzL0_)nOLFn6fh^~mb|X*hIlWLT9W3=)4LYVaPVb%4SHtCjM%gvs(Ti}`R^U)apwKM_16C5>|Q${ij+VcR@cLy_T!AN?fN=U}vEg2FuFI>9Ww4P$fLszpH{Wkb76XP2M+{ddH z)MwEIhORu+*;IfsFlEN!@!OvUnHomtjf(nS8reo;1l!0Bc5xk#^FMQ04@3E!SHR+dV* zU&1N@ClT<4^Q_rPuEwNe6J_SRe{oN#;5|X+0@QJw| zn(8H!W;QxGw3B{reHv?_!Kh>3Ow{F27$`5j&9}AZBfnOpz-_nk~H+`g+lWG(i z;I`cnp&XAduMNtsEqGGj@{Nq_KFJ+_0DJuH`>UEox{&4#Pm7!w+E}1UoC{!`QkTVU z+nz6PQ~VZg`<7c5)rU@e;m;6TDp3dl9IjVD09HfF<1CM~r#I1I)((@GlVhQP%V<&z zhXQt{(~nEO`@`7^yB~t#mTPzr-HeX)fYx}d_r1M1*hBkOlwCckhZMw!7qTh^u+{wh zaQPbOdYF==*LBijy$quDSE{7$6V|@INT_GkIxha{Y%|3femTY2Nst?%ksiYnjD1CT zVkNfvC|EWr`K9z{Yir_`FgnZWa;z49V?N=|S&k+9EpIZiN_PqGs1x4$xykWb7#mMQ zUg6d}?Sv@V8}3FV#%-1bx;Y(L_R1x=*crBWx@gu0Tj{dq^;y@Ve9Z@~aR~*{a?SGI zj%Rlg+u3-z)h^23vbL)i_w0r1+yc??fZfu&Wkb6v?(o~k>4a&k09RszEKgDArte}T zg?j`nBkgioT}RI~vc;Ed{P@b&XV!ks3S!mTrS1g2HX4kdKR+{E6fv3p8^c3a41Qfb z)}@3jaEu-UXcL&!$o!wqJeHHyA|t$!a$bh=9Sd_33`ak1bxtOw8-?pq)bhj5>bu&< zZx$Syv*1d!GX1}0DTMXRnlEy`NHs7yOQYB(YIly&H2-8yyVpNsp}K9f=FG~8*o9I0 zy$oG&RFAHD>o)TF_?Nl$sQf+GSuoY*Q{wn4Pe4$?b|*J7Dmpszc;i}c(0P0T2>)sV z?|2@pZGc9D12_VRjrRc1c`w{yoU|k7Zw0H}vgg8G`R$`M9*%+XgNosnBrbDUCy8p4 z1A-(Ni(FmXkv(UlL&LJlsw%Yc@jfZi0lsnV)QJLX!Qg#(XnykS7clgY~eG zY?&{?IG6l5W5j~Zc-LMCl{Zw_7G>I<{)Og-ud@ZWIhK`srMNJ&A$wdOE}{ zICMun+8FqZR#6#lh)0?5CRt3B=w}3J=*UU@0({n|zATx%$K|&YJ9t4i(3&(oV)`U> zgN_5A&!(2^$CL819(L8sej?KAH2c@gWWjyN4g)GMvM*}C#l6#d)pG3;S$w~lh{v2f z!y{2>n?cKj^H9C+DwT=}QTB_d`eH%}KD4(a6_sO|n3hm(T}Rg-rEtGV5i$3Nhp=Ot z)QU%%A-jRQ^*H@9be4P|H@R$itBWOigANrDv0CuGmL^ScnT6nzC0O%B+pUyA5pP=nqFX5{{vUvAZ2f&V2>@U8110EEUI8sdAwhtK=8ytn zd&~V4lS+^D~IEhJt!Z_C?99)out8VjXb~1k3;fi-c-kzFw)SccA;*F>p=z@!0;4Yj(h~ zN_Z|vX4LxcH6^g(9Z|cXwYGFR^7XvvMu9}ciydD3-G?tQa;72C)vD0F$}j1byDe8& zq=mGYFHQ{3O#8V<8kq#H-pTtYFzdz^j%HI`&H5mY?%+-o-dE(>&`b5g>TV|~aGU2ADOyt}XbKi$ZZ z#(bz`ta43GZ#KV}SMl*OnUUUKc!0{4-YetE9fEk4{9FHGVw<~MdTBkq=AQ6c6RBAE zuDgXx)DXFP&UrL1U~A9lr)5SM8@dPQg;1K{JA%M z1DRCky;>wHYkNkI-tkR2u%C-%Ih7VTi#cozVW(KzWBbk9v_R z+QVj1mha^;4}pb+H?=S`f$$}pmD3kd>pXfXx_a`taX8~)P{AOANK5sQ+X1SfHfakb z(F1L+J*F?>z5gf2boYYiPy%;7BP52VlSNXF+c`kkX`1y?La@dqvYZe84MK*p4(H#7 zLY*s1jJ-kV|Ni<2z|Y44qlt~1FR|0ocdyq+ngELfXk|gh?b}Ech(wX#L=umK`HtY+ zyEF?3DTH`gR!|=VG)B$%Si1v&(vj20dGr{f>8)^?*S(>}CM2P?-p6oD~Phwgnb+ibZ)*%q0` zP@H8ZUr%iSUbfCKtT(bA071ozHf?-05oE8T2aqZucPUe=VOqPXI&T1G=I2=iF9K}! z&3uzUaCgV)blh!bP^BS-_c0c_V+q#tT#xUiE$X)CnlHaFgY4K@GwHoPdy0GsfkBb1 z+InsRpadS;xbU4C(%nJZY@%v`f?pANxT=H|=PC1ImS0DX`f#r5}-nDF^hKt^) z3t+!bzpuiXY1yn6;a*$c{NROKH+^r{Ju!Xe*z+zhb?Go7gG8`QDpdvY^8=@KUZmLI zSS7v4+Q+mbP-iYGIoX~Oo+%921)YYaJw@iNd-f+4EgR7Fi8@m9NOVO-1>kG;4p9PI z*0vM%bul%nAu@_tMCTgu&T+@W_)oZngvdP;n`r;HbBFQ$v|>b0%JqJ=w0q+;05E+2 zzFTYTTc4w1YILp9Z{5`6jv!nU)v2 zUSo`5%p)aB9u>r%MG-MRW40Km_@vD?l1&@p5@g^%=pEWaVaU;RT~=Eqer){8AGBd4n%!(zmQIMq1Vn_G~Qd^^|G1rzf}^05Q?8%%zB+B~2KwqNIPJgnQ>-x)fd z{A8%2rBBudF0&yZ>p; zXM#u;cT5bZOp&G;nB*_&^lOD%B4I=rSVqBe2brHafe*Of<2~z0(#j@-BIt27!oo%ROKj=WM8^G0@`My+RI_J18%t z?=FcyK4nlDp+{@Y(sN66h)+=rH|Wlu9p+>e3}>qT(>{F5D;-_s5|%~n4=bq{*}Rp> z%aHbsWFIz^_*|5ybvAwDWBgNj{C2^3d9aNMmh?%^h;X^Iqq#3L*o1oxcTxe*C_FO! z{U5~GSZ5kBe&}&qa9c`5qWoeU5 zN>H}rLqWo>BMj?ZJFt$fG>YXhBF^NHtJSY?M&vkRQN+8GFLSU6i&)g%`KhAS zSSxTe=!wr5qcB}XL?{o%-tUfiLQ!PjFt-sh*f_|Ho9&myYvNXU~j{57GDCb5S~%t)xm z`R^`8i#3tu(FdO%vfKANK-v#=A>P-MZ9XbXa<$1mwhyJ9QU}Js&@JDc#FCLSY1mtA z9SWcwam3mb-gO5F+A)4E=akK;;(3n4aYd1XDg$_hkg+Y@^HUQdF@kEduX_0Y-ocM~ z3)3mDdW#LyJS&#l8Hb75QLAh0=f`rieJv`>rW&}Oh>$2K{?Uam6i24`^H3lu_|}86 z)Z641{L_()GJq4xS8H5lt*43Q8NO;qn4lom)K*&j_Yv2l>_E72UUhczn0}b&sc2yS zq2^VC+mgwSh;CVI=pOC}Q>#}Ul@@dU56U81|E{6iSY+>fa`1$WRID+-syuu+VV7vz zmgHXT-5jL+gUg+LytYnR$qVYCaXVv3P%P_$kvH_eof|suu49Fo{n5roiJCROE7#X| zbDn`@DX-g!KLYo$h8g36oG6c15*Kmt%BsrIbD5&pkV`@R{n2b~t)tloQ)Wr?xFJ?f z?fAv;t)ZwQ#!PEsH?npVgEg$a5o|gzM4Ft6Pgas!FOW@9GbeBuVgvN-Nd|Du;|qQGld1_OmZq7xD@ zyoO!=ZX5N!$9o<84L?R(6)#-4AnAKl>ZB9_vH`eCy+5?n9i;EqI=~AVxGB$~2Y?#zBb-BZqo=IEo|A>8C6|bZ&h&H!u0$~h zQ1RkEStO5EOM36;mD`VE=vzPa2KXM6&atsMEZ_Y|S}sw{AJA|b>ufneGWtyhg?-|OHV0$3|I8@*G*J0OnpRW@ew;t|mcN6llj%4g8J;*`(FnzU^ijMC zJeQfD8nhxFg+9^fI0F_s9e!<-(z9Ji@Jk9jf?EcccQr%gPY=VOKqR8OZ89chr_R6h z+52!^{?V%uF?HB(Mbh?Udgev4SCq=Q#_7Olp>-B_4<_s1vLc9ysHP6W1pQ(;(>|}4 zo>QwDg^$dbmkKnTjPfcAHbQ<=%NJt%DxBbXU>(NDaF=@2waq1UaBL1(;PI&Dz=qzN z6Iye@M3EnQ?IYqkyDBkU(R~@ETcZmMg1+cYw_!wybVd3wqpJ|%s>2{YFv2V*tU#D30s?9J7%N#49<6O8=;TCLyNPO67 zP-hY$#BPJKKep&h=Oi`Wk!`UFpLrsWuLa61(O^(O(lRoAk+NL(r&P5rzs5(M{K(X! zP9uv7<5J6B)=PHbyqP21uj*8E;274!oS)a9*r*cbIU%NDXr%I@ zVU|VE!l$qSnGnd?bgFG0UW{=Z@{WF}gh7qaHAzi5$?B-nd>Wx}dn)k*X|lp4gx*WJ%q7!;oyKa~0BgQMgr%?Tar=~CwNY~0Oq!&a(7-fZDdZ-M%&3ZGR0wDhza zRVoWl9d&RYt8bdM<%39Khq{lfRadS;94OX`pN>u{X^)iBH1AVIC$i4-^+swHan0*o zsHC$u&2!B;Y`FE1SBDcBMZ{*wZr3h2s#VZ&fK|&xd2mBSTVyX)JNkKTO4VnJ zAiQq`pNQY%x^{yi36I^HBcBQs{^H)_qTMSt_++ZK*F|OmDJgg|=cC@f@Jlp$c;~1J zJ+va5MCR)5BD2nSdQPO{=d#x-OeOpFDcMfpp*={7G0&T1Z&pysmtq@^RvG~LP`CSd zQ!fP2I^9h*)!oaTi|xIiUjFpy6Uop3!~tMkLr7UsDGUN~$i3-WYS*nV>-AAOp&=m< z|II!HUiN*QZO(^d-vD?SYg8qt5&l}4lr{ti zW;)sG#u5^^9t~Nx)xfRZ;PZXM*_W9kvB-4N1eI^vN>=puZX^p51 zOrP40JGCLcUJqNh^IsLRnoK(y^nI{=pr_2iGweJ-$7AiDcygWXMp9yFwBrje3Sjue zl>}u!VuU2mZ|HaXR$;7AM2R$kv(nuQqm1{hem7eBm+K5k9MtO?_Ze+$~X|Gc~D( zWYcPE?ofc=h>l|Qlop2pC)VwlD!FF=Ti$n+G4dCh*Wue8kD)bIgavay_vrB?Ls|5b zGh|fGoSEM5u-9O!D6ZFTFPBgCFIItaQ>Jd`orLvE9HS@a7Uwou=btHZ=0`EGTkw`_ zxmEt5-iILGt}jYD6@GbSeVEF=c7Y7{1g@KK+3#T?N1;(lPjUN|C$WllGjfPGgGJ$& z4@c!1kqnowLvz;i{PxOq1nCZben`&oXQ?<_$J?frhx!==_|)MFP2@%F2Hmg=rMFiI5<-nCtqb)6h8SIh7&yNYJ+#K@zY+o&`aBk-B*51V;TY=T{CfGZM8F3RP z6Ds??>PKq&p}bcqVNDE3Mg-b(D(I*X>*kQ{!3%TcYRfiRCks_fk18U&1Tu zBF$(ApBFCV>1Rs(7D&&|kNeK|fRvAxa?^AspA-4=Oj21u0@@){r;`GIP&K-^G;Fio zj-}807|Fs>tyz=q?9%1$yinW0`RKezR@X@}K*ULFy17qV*lL)o)APGVG0J*+pn1Mw z7f>#6O3_zAW$s64S-*2*;6VTiZs<5Y31}U>Z!)<0TLE{jzQSZNU`cTZmj<1k5&7DG z{Lr*p(`&h>^S;6VO>J#$smG=XaK%SKz6(eJ`dn^zs1CBotJ#;B%{>BHSy`>8-(4aZ z0l>4jF&J>h8kH$?>tUgD?*eW82aW$UA*P#x!Xif`To&?Tc#P9yuy9W2Z*mHbA9?}s z8=NmA1<0f7N#glZAcwXsDfS0c?XtA&TcaioSCq%|E4ynQ+ZrmN1jDWqwHNr`qtBi za5*{U1|SBli_NPLn6SyU?ms3_Ik|a5_+6}pN*OY$#zn8~CW5k> z8x>YmBp!Kksxqp+rQM;6jLL6niF(hv+iR>GY?vP?WVIZ<$lN#eM4DhX5SYtstTc@P z`SY-MTwN8patRR0BO2mI)F}Mr5bOTJ(*o!wCA)o*&?HA zY!S!HME46wXPVR~=X|Htir|vhTn`Hye%Ta&NL6qaJ$z~bf$g|Muu>dfx~d=)WqX^N z?H=e7cv<1ItbS^GKX&8qep&*V{@F>bDfYqL5p$Eqbqu$p>{ou}MwReZ8Y`oT#W7Wg zMLtN%%0vdXsH5FA5pJBrC`<;sm+Y|d(heCM7|RyTU7EN1bG3Fy7tvOLmqm;VD1B@0 zo*7)uxaTn>*GwL>q*62aO&B|}9YD}%)l~E37=pJ|3XTareL=|c-#C@19@;-sSJ*7I z&k^%C3b1RdEj2Z_H&0ldrox6iqo=Ub(kDvjUiGF-Cd-%hH05;2MSZI4m=JZN==rfM zzs}F-z5|=uEe~0rNmr>F>dLFEeA>ndmhX{PK4ivtNQ>={0}*A9YkfaFS`9ZJyG1aF z@vI_egLzt2PJeIV?%~6&@l3WhisTfbP7yTbVL!q8qlT9JHm{u>6%la{0E{Bmns{C1 z-p1I~f52$1b?EVrQz#0`Kz5+8_`#EMYo=x2GpiQGCE5UYQHn z=j&M_l3v2{BwFk1gKIlGTvgu|02<%Qd?y`bKmQo)*7)=Zf6kPgoQ!KYCmZ)WW|H*W zLHV7Q?G^4fgCsT_K=D~2;j%KY7aC!O-eI6vuU3HxwYBT(O2FPDbc&fGHYfUsG5t_& zkne0o!#Jh`&h^=@Usm+x2Zx4JDnOy;zIU&Fpc`;)rl6kG3 zEktkz8*QVXxeG%Kih^&|=-Wh>4?_Uo)3jA+aZ=*pYi<}qDlWb+q%7I3@= z8;WXH7FT+Ao9s=<^w_pU*oql+gFaG3stq8CP2Datd9Fc1eQXeP>UD0Aug(ClE?-N| zHgT;q-3sF`I}zD-gEg^ptPqJ}Zp)VtT=h0Jns~o^HQHvkbS}3b3TcBJTsNj&GWX8Fq75y@Qy?Y_5S%sNWXF=h*Mf;&j zJkm8XJorQD>KntA>`yM{MI$RlB|SDY(-mxQ--6kSh!$M7 z@bMh}rD2h)=)cBO5Y{dEJ<?a{b@wi_wV^&we6w&&EWZYg?Q>sT{gtyYnKhGpT;Fta3Es>K;UiLN z#_sx(Cuo{79f4doOaR~h!Oqr}=24nFsiPLvD8G93s;7=P z!R_JUv3{_v$fQ(Kpy$HFt+KtnjWMjq_u60MWY31SvqbfSs^n=vHw6@FwwaQrrVVro z$pxW;>Y(=+P`bN?PYPJiE4>-nMn=l`gwL$tc&BwLvFTr(ok*R&=^1|X%IVqhX3K^O zGOkk1|CA8xP)E=W++Vr}!k)ALfIuHVegi66XGF4VtbqF3qCi}X^!CjgGV>BpEH8tK z2^-y{!6j)Pt~bQAP!n#L7MJM`at5z`O1W267_@ z6I&P49J#LD${PKiADIMA;5Ncsp6%;)T!yYJC@EZDN2hIWaQH{t07i#7QX|r3TGDC} zs$Li!sh5asn062U<;YUjCFgdv*}yF;O|dzr<#aVu37E zRx;{zwDi6T(w$>^6!_3<&+ERX8yg;~D38_40}OiEaK2sf!ddKUO{UqgLSWZ%vNLo3 z{7F6k`tim|hj5!~{i`cvFrkdQjcwE{EX?BQ#po~5CeG*`kxj;| zeI%;xs883zb2B_QkNy`NL;4esp>T4tTpFx#or<8FPOLj1`T6f6!@DX{*LV;q;yOW; z_a=N-@zxcp6dTZ%CXot{M45{g9 zdHWr!k+Sx7>39bU(?rCL5>?@D+Q^(Uu zm+qD6AoAsgMA6$pCW0Z&P?+@LzSKz6ZA{Gi-1xeOJ~3ZgTU!PD!*|pk+wrJv5Cypj z>5I4zQVBc+IDZHI&l%t)A1~ITW{bRB&ZycJpRHb~r`U##y5rIN>-?TlGaXH=^pS*y zGwN{skF8=Bc}a#wGWC=lN?+X)834}gDt0uaM4dI?s$=$Du6RREHdS40m11HL#TCm} zM{C`#HI^4oTfc=a-1!`GK6QiC7t=0e>ax}OxN~f*GPVsE-fw-6vAB3VD-<6eTc50X z0QXpzFnuhjW8<%cgrqFW!gNDRM84Pg7eG6zM*|gR1Ydt)-TbUs76s1wJ6jZVzV_D+ zDy)7ymqZzqzUCT35-!u_4Uqg&7F6*r=agwhO?8zQ$|qCpIP%UrjA!|_59E)>Luc*ilPRfnjlV7G|+YU~hYt#&{2Nr~)^qfZy#aA6`HvqLa3 zMmdp=?39&=H${hy#q|Ri5Who=Z>N=O44JIVHc8o)g@zaOt)$Dp4x7_{Z9cpP%hYwB zHw$N8K}cW1u(-N+ z?PQm=HS|85cxmAh*<%ry+q(|8)fG_BUKeD~+_+hB8zj$p?pm&&99oU{W`&u=3qwHN zXze;L!d^QHWXh}EA$?^(Q9CRipA2NDxVX7hOvJ`seWPg9iv+J~_tPL-d>*>8QlCl2 zuI^j`uz&FRMHA1mS7ocCZ>RGXTs)V$3)$J*t3|bUg4%Jq*xkzkot7oP%bw|<9!uve zrk=}o`gzCHpE%d;1M*RSwtB95a>u!6T&HESxSt%-)%;_}r1DNtSX;&1Xkha-2}zxJ ze>q@jNG?bT8`Z5qs!V?loQwxngyqFG8YYT3=o^rKeT2i5#iD4~?CK8gMwEEun0SjS zA)}INJ4oTkcC+EMs++OgwFOs>|83;1iP6Kanf<2rw2xETT$JN6$1xp2O_yb8xW zNQT##r={JeKWKbrqB*=8rTM^JQZFZg?ioWV|-MT zdaP4=BQ%T*b(wl;I{yJDyUB0n^xW7y|3u`=Hdte5TX0)MEwhh$9m9}^)Uk&qNVp%p zS?2AMSFB3pD0F*Kus+k3@lkoCL=7Uv7T!hF&lNC5c9fXH9Iyd2FOgBDPgdJ8^pW%h zf3QMG8gI38gMF-=I;O4BPEM^U*1pDGeHY0vd0EVAB8Vv-PjA?XGOZ)^W=LK+&-(Zy z4cVbHDtji(djdnu(G`0!CH#_e!h)}!xB_B)9dS)K)gjwDEs=Y*n_G23FE4}4q%WUS#Ds>xX z&K+WGn@_o0^AGpH*!wJ(E_p$eVT~1;j7=Pm%BN}Wo)^mvlUzITk~8hABoqMvB#<%3K9Ud zmwA2e%WGH;Q&$%msL^0iOO*l0Nd42*di?_6j&eTa=n*GT2$W|Bbej~(I~11T0*=@- z!F?5FLkWYD3=ht_C~jg2a&dV*Iv&sqs>fVx=o^#6|3m681trE3id*CC=++S!qA#c{ zMZQP@qy`8wc0I;E5Lk`$$?GzXI!^(2OVN_8GbzulmF>Ln)uja1*yBcmD*~_-&ho zstjH!t-V97nP^t_s8-4&IviSt(5gkggnstt+^xJqJHcN~1H#^ppHorB39^=-kfC}> zalqp2Q*8zZ3OE|AJG*AnZ}rB9HB(UyZ)AQ&irb{0olno}(gHb|jsjqA!uJP?DFS1G zx)uQl+YA8R!=hZqE*+j2a~6X1C@0+tX8J+F#Y#vQjDCReG5?w1h&mC7KK7G`V*7T{t0sd&D3=FAYJ6!Pkv4r+2o=sW(!U`>X25HHy zQfnroytGD5h*hx5jEFD1)HxY$^FuZyI=CTcK50};DM9+# zwGfs&g)h05$J^je`p#FGzVNw`$T?rj(g5~+dU7%V29zr>X*%NsjBRWdCm~L+UTJD- zetz^wIfc#|m_Y!JVFd=Uc`Pd$Aj`eIrYoxjvjd<4z$J1I5h}DZ$rSEkmL_q+3T9_W z`GBOjoZG_B+aRa1tuBg~mQIn&L$7PX7c%Sv2bPhDXzVD-bU!$7oChNr-Ji9B&VIJE zFSYR*h^hjyfESE@!vjEKgyV}Jkj60gxQa&Ok9mMjX$^Gn8p-RF@VGu0Vyp&L|CCo` z5>N|k{^@5Tf9$Glof;&3@Y`sHh8QJtjnVNOn(tmNdW2jQ5%wvz)L_gSHe7!Xz=1FbZqYpWG=EgO#Ws1}y}#=n~dYr@zUpgOf5UZ&Z(o4vSD+&p1M=}e&1W^x6zBj zb7$9pazbO?g|=zlr0B#)8r}OvyjG;&8<`TAg`ccaNp^S~NHL5SnbG@8kjrFi8B1r* z0=8JcFYdhRs=}ybU8)J6w5YyOA9d6>pvsZeknw~!DKnrbL8dla&YQq{bhbK~o9IQI ziis00c{CDe)3x?(hmRoDrhVZ|2HF*_Ji+c()#_yx`}@R&9ml(D_G)?0MP{z$Ecx}a z?Jz%-zggp@Og^|2{Y2V+QmlmLx3e5C;_bAXpSU%pRFFFZ>ivEOtLJK)f0yQ$_1Ci# zsVy9PSoi96Hb+m5TDA2vX{DQyH=>+d#F^e8AaK=E_YRUXExDQEl4wQPH}~t?)>n9B zHhP{SE_Zqy)^n1Kx5p29(_iDrw(n^f2jaDhSNEA!%O@N-4*MX>LcyVF6EJ_m&)*^MTCWf0ui-#nKuXgEtCEpL!M zAgGCkM4AyJa~em+oPuh7eMrD^b92i|_S{?tLv8(b%N;fd;CtbUc+3w2T|fb;a6uuJ z+<85j_;`O#DJes-$u({kmQ}$Jp~Ox}zqPocLnMjt;@6425c~bRy#nq?*<3V{u&aTW z_G?)1!x-#3GjRbraL)Cv9sd#dlOo};i^qu14XKY9;^vZK(Rms1?UEoHAS4{V&y1A_ ziLtdaxM})~@9k`vxO1&n*}hh1Ee)G}D3F|EQuf%C>dG9M%kDnqp%L$0cq)STV9^v2we;`|16Gcbf#i4g|=;t*oV| zr|M{bZt>ekx9mHxrAk_^s|16~vSwq6sl6CvYc>a%y_cxUJY@ytOB&zJA&`U$e+0(p zq)B*ncAFy4iqSVB$!EZEKRZFFxB@Qfq`T1dnxyvzO(>~7B}drJado1thcv)SIW?p~ zE0GWOiEt*ea#@ceZbaNBkoBbSX|}yT`Q&eyM!6prR~<&Pmo{;b+>k6c1Z~>pgQtl1 z{$CR4skd-8`Cp}e-+R4lW{(`9K7q4L^uiqi-4bmp(QZx8_5-@^i$DKS<>q!>CtRvs zfA>K^>D>J09*8W%YiRChH>pud|00spA;-I>>n_gt*ey1FC=Lc3uN56L?;6%kMZgkX zmY+ARJWr0|5^=~hDPQlH8O=LByMu*!qV)=#fA!{FfPPAha=xCaROGvVxqOy+w10l) z4yGt#Q6d&POI)k zI6l5d%j_f(OCGw}(+BJ0ubL>m5DPqzzH8HXrly&0Y9`5-V)fzxbq=HQf5If`%26V? zi~9#{nJSC_|6%W~!>a1GzJE{=B}4=Sq$DJyK{}OgmF{NKDV>6J2}q}cba!`1E3xTK zcXz{YZtruSbDwiR&wD+;>wW)x)^*|D$li0VHP@VTjXB5oe#TJ**pbSUC~C~*w%=mJ zxZEm}t5_=={4tN?_+0uM>D>KK;hp5a3E=@~I zU*%)9j;<~^PsR|8Zy*%FCcg33y!C~VOC^7h!IQ%~avWCkI&2KqU4@gf$n^W(8wc?<`ovDQbb3MD*d-YmaBd=QlVtX-Ei? zWph z-(-L5<^In;w((!PM8BQI5E%E3VL>GvdT8bii$wUI-C*;-0;h#4Stz07z!H7 zdoa23UmszCfTPTM-pz(LaFk0IiKj83!+c3hqy@KgacOx4EL92%3oi}_1&+@bIz)Oo z!BRs{ziH^wZdSfP%}^trwtH$y3~XdxT%Wqbe>!{G*B0dh_|vRvnN#)|u1<8M^V z;lV+<<&0W?0+&39uUAavcVAw#V~(~1Et;DH)G!?#FL&OAXN>4Y;{)B7^~BacKysxp z9yEm9_joVNt+N zy>&Z!cf3AzT8h*Lnk&~geLq3KA~#cejafj;KXe$xlg~xI@T_^Q8tFD!u}nedWlBTq z;uA^H-Bd7%$AdVB@{+eJR{OKn)*Cj3GcMbmr`h-awEC5b?spDIMda9TK6#OaaEwA9 zj{}Mu6^eeukp2Oj)CB;Eu*6GmT!dTNIykUDs-a+DU`XKHH}q{{5`_oG1BeGeS&;)C z%`59Up@e;?G@RTNsZi%&0r>ojbPPWLeFNN;kj|!~NXzq&g}Xs$NRNr*E6l@_Iek{xh8vVh^WcxWS%82-;(EPH(jJe=Tq zT6R)Em^YSgMK#v|DgB_J9O-0sTq4ip0790ji4jwv|{br`igRO`i#^gE># z3Mzr)M1G+*b*vu?qg(;e3oZhDTrX-KZX7Z0^6LH791+rs#u-fG*Sp&@vS0e|IB^4qJdn{&BB6|jNM2N0isoDRa5@5LLXQZl&q#v`wH zDyVxDW(WcCX)4TIekWcdmmb`kw0kcZw4c3XNS8cYOFvhuH3)=r46m-PzMX(wj*j+r z<37}Rcn$p=v-y|1yM`RVTlD9lfb&}G^+E3D_i5Ieplj`X2cw;llHsl|+SWU~)VV4D zC1C0|iU_Ecabn-K_QhNM-da!Go(3etXSYLArobaxf(jHrLH|@{d!f?g*N1EbO2Vbu z)Tlr%-9MULy)}{{5v6Q4nhPgPp%Zfc91q`o8~n5%L{AYV_w~wK%F6z_4FJ=)>2PK! zzyS>}hGPKeS)$E*U{Z1d%%J{1RpbtC()5Fpx2gOd%iq5n<=uy+5paPYkb0B49o!G`C*AJ#ShCb|Co$Nwu_K=OYM zu>X!`ptJT_EL0|XPILzIjAN9IT{%I6NKzb{+PNb6xMolOPaW#>-_QoOe+LtcWzk}3 z5Es&*?kZyG+kNNC?ibQh$SA3Kq7gb*nqC5CDnT{~2TL=iPJzpx%%Fud06qL~g#rAMeSy(-!YVPFMX2MWu`iGv#i-hj3x)$5zW-+Q z)dC#ywmk`l97aWcp3f|Q?n8m`H@$4%qv{04@`f7~{A|2mhWxD>K}F>%7yp=|r~lsb ze>c!86FK8^y}x(BmjOR*JO19AUV8mJ=pg+YisK8`*X7{9Q#+{r^&bX5q}RUl_lmj9 zuTKa7bKL81J>!4zAOFAbAAXOVN5(&)1ZbS){Fgi%YnfoV@G-v;bV;t1Z(FPr0Ju>N z9xi|cq6B~-7UDB$XGczpkKsLYR3SRAIw?Lr2e(yBDiW5!B?av3-zp)Ie?0~`Q_)Qb zz5tF#=)|%_LZa+LMa5;@rA=T#0dVWj6n$3;2`&4Ek(s(W8){H?p&h`a zz53TP9Q@ZD3moTn(fy%jsV(&G1x!+qB1aK$O>;rYn$Q_g(mxI_v-bHY{}&Q6 znhDS9-lF4pg!!h@g1>oftk;4l%axT4IMR`Z`5nmC<#O0>^64)$ueoQ@cI;x2ODkJO zf0*t61g~zARcr8;PuCuAo6cOEyd=^J3sTGcxkLJ$9}dt4K?5UWHa37)-YM~yR)_@K zY!nhLyTZcS;nYg8XDeuBrzVpjGyXFuMO+_VOD$R`N$ET2Ry%+N1WssO`yhgs>?;`2^ zI_3*d%}0PxxCzwcoeT)og$0^*N~}iGV_yOSdY@)_{@2%syktYLx;4eJ*AvB~B6 zui)=y_>L`!esJq-6*dmx<_=214v1Y7Q>JWM$AM=90Uf+Ikexh=C%CoC!g97n^ z@>J+^TIU+Fl+8R?rTrS8@h2m(tZakY?iI3Fa)}k-v>@Q$ns$9Q1n}2#iW*2Tc`!xA zm;ym3vE+@-rGrfT6J1=bLSy3^Zk`WoX&{Uf?3ld-Sp+&QC5C{e%4Icq;u&XJ6A)Uh z-J}3g<}i7=^C1V2HE=u{tF%zZndB3eLvz=NkB^4~+5wLD`0R5R5NHYWxqjNnDW*CG z`2m!T4$m>pjX(lEK<`bt8nd36E%OH@W}n_|c;zx84o|8Ksr$>o*O!rT z_8~t)^$=Z-8pjRkF)_a?Dn}MIt(eHHCqs<%_ni;(s#R+BtLxKkL@{$}4 zl(ybj5v_8iWS$usqNFUO*kh(K6T_`wsDCQ@(9G>kaXWj{X|mkQagq0-e$Pfu7=#!R zlA@yPRTklKTiv+hYp^DjL4Fp|LyoL9=_oi6B_jsCZ?eicrIU~S4ebd56}3zdv=H_p z{>|v_?m%VbhwqsZwzdq;8X0%GME|KQEKYh6AGKet6k;aDbs0&;*d|nbbxn576VEYLnHwmGnk{N{v6=M@!DNuLJ%R zIziG?-sT->qw1;;{kP$S3laf(A3EsX_-fYNYZ&_aWx&$q-0`%>f?<4@goMkE6z(*bnxTLIJJv`;=N0G?W7d$kgDDS#elFqi$W^6MRdLPEMu=@)?OCkgBmT z$EyCTD(mcfz-OKL&;eJ!z~RPM=eI!LCkFB-WCAF{_4#UQ!Z{R8M7Undv||$(3m}oB zVp|GcZa9BJ5r~2WIT5-6_t&UQ6{MMkf|D5@XVz!HOPl(;ngWri7ucIrGyiwlqdw_ zMjymoc-4or^==y1^Pf{_<#1ia-O2U_edu7CsedMg#(6r2R6f?UKXx;?@iwMtDueBi zDn}U=5`RhuU7MGWZVq%s5aa^96~(WTy}%=25_G}eGp?bF{}2`1Y%DTUQQ)Z@i+1k4 z2KHTvh8ubBAzA!O3TO18RtXbHSN%Gp@`@Dw`(6uuAk8Ar0Vz5$fofP#ca9nh+xts8 z%Jc9m1+x{IUqALF5^!p?NcdN%;z7b#Q?8ffR)1>1-V$WBik2BfEL{h{UJ>Kc?3Q4H z05rHZ?#j!hqKusgcAh>oKm>vk11=i)2I~jSNbH`UO+GawD*!rj}O2}5S zerPbNVBr>w)d&1~hQHq!5uWe$2)xt9J+4PULsAzI0jIuN7)rvZH zWx>h)dd4+R)USRJcHvBr1sZqOqQHuS{cBPo)K!_@ySMW#!1GX?aJnAkD&3*hCVi*T8(v`B=xnE3&j*7r--_A%B@S$* zi>+ZfMV$vvsDPLRBo+i)*m-Gb&qWwivcc!p4_`=C>;xaXn6wJRc|q{38ZZx6rJQ+) z1owZbC|TOv%nK*SrFIbtx%pL)NU=^bQ%eJW0iqFOAW&hmf@zc%NFBw(xy3TzjK5ZF zHvWX`O>Pa#VYhR4E1L2eK>AfQsrz1LQX*}=zqfjTO{7@KXzTrSCu)gD#g0F|@bxyY zVLs~O7EwmlEC{62lzy)SG(3q;J28VG0oDArj1@uR%dMf+h_8%}H#*nDX(7vQ_=IhFZ*qmLuC~pl+cz;tN(m z)#`R+0y=a`9yt#^%LWnTmlNEDy;o!_*;-imcI$fM ze2#q2cy%DP0-(OeG>o~poc)Qnro{g7T){ZmPG@GUPXjuf4Uku*5Z|i*bCGsQD2v3z z#DrSyl3jei5#Q0z=X}>ktne6Yitb;(-rd~XJlj7Swzah#0s*e}ba_k5R)BOakDm3+ zW&8NS%!gqak$Ej}O6Y`VpHt9WC4m=Xvi_Wah|{{+vUU)cF>=CO2^gadoR&brG+^Nb z_@P3l({|xn&W4fGGc(ck`u>f#H<#aT7Q%@8-vas%+@&@7)v_vi)CeDd38Rj{1CqV2-X0(>uYKaRV&NX`>Ml-coN|QhztpEQUcMWE+#q4c)po`oP2#t5BhugZgUl zDeTaaO;qjzTFT#@lJ%l)OY}~&;(I9udhb_m8}CK>J(UnsIz8?Nt3m)DL2bcXs9TjX ziXz^=Q*VowlJVqrs_wEnd!zn#kx@A7%l`c*hBG=dg6Mj~A6}y#yjK%pIe>}Nrb}0{ zD|dW29(pA+Y|K{oVH;u=5uN$fS(&u*wfb9>Wl1v?lsfh=y3eu&m)4qh!|^|J^*x9A zU3l;l9~xi5lI)Bq2hLOM_*V}N+fG;>5D1!2sVyVZpGfyJ#LhfcVqwpEFU$FhIZGfw zyGXoh^%;NTiG%+m++>Dw!>Fjcal2_nnHS^-F(v z!+XOPpCuxkq2D#j;@&B3xegOT>_gXKiLd_dijg@OC(#ww#HOVEgczim$Oh4NIP8g` zU%nis)~>kW;Nl*(F9{>8^tmShr^0vc*S!^r$n19+HW|feXsq^odKn3VTlNKHT1jqy zcp);geXOq79xw69S{?YRS?55fa+cqlHoMpr&brMge||D$70-HVVp+5N6v1ITjVm|B8H)DU;gCf&7TcenWeW00#+OgF{eJ5$ATd19zg-kd@E% zM6a_i{*@UNZ9tCz;VJzE?JWp}xcON`5=AATo4;~<-Gn<)Z-Rx186lm>pPVU^_$)CX zKts_KBEK`VENax36j)Tm$mt!kI+)l6T&4CCNc2@^V*@G_w!S6B?DM)xL=SZOdSV0f ztb&SK*(gF}I)|83VwFO^$;z8y;?v^pO`h-uy+n}1@@Qe^WpXBTN0&RoE%b=9DNummZ&=D}f@I<|TnKR9jGJ`h}4oY+-u}(!sru?}Kk7S%K-(^b|O3XCu2<6Tc7tnM}Jxs7l^=bq6AT_FnnE z*Kx7Bx4c4p!>TpZ6U-;pbQ~Vs;m3up1>G(b;UQH@dnaP&Dw2d#zqkX6tMA>s$|iux za_qB61f>XxCJ)+DDg~87%WSueY*B(rCb#tQcAKqt!lZPJKg}OP@w*Jl+$IStiHqN? z-iwTVR1}{Jbzw@54pxe49MmHrU^^u@Z#SUqh~7WtS^fMPn{_x7OIM}w$7rs>;XP6M z!8X_S;C%eeq>;8{@1;v;H;Z@uT(6Itd`Q&07GC=?+jT#EvKUi3#v9;EK%A8)Z^%z8 zCeY)Ts;_dUM5f6X>bVKwhuGK_u0oEt!4ago`|`Um^%u;hE;!mY!XApbx~jnavf{NAEqQN&Wu$ zEatk=!6NEHhO9(;=D=^f>74yrDauFUzQo2r=I?_xQ>C}*kE=7M)DFZ(Sy}RV2U6s; zbzouy=Ud~tvI=)(3R|i)(aJ>W4U4t87qh~2qe`?ZJ}YAL;~~{`EjD$+a^+{`#KZSj z+Xrm!S%@PwpF$NJ&>ymW@Z%$>!#Z5ooqN{F8#h@0c_RS}dq-MN@ZryZJ$B?^B)h*=}{pI>W6{sW4SM-452?d zmg100&I-C77Ah*LcTZvARgi@j=j^hahN_y#fB}x$ zWt6uY_zgAPa>*4AcK{?vo@^Z)4gdDT$i9DF8AYdk1+zw3?pNZ+5BH+Lz zxqXb_sa_dU#bKV7o7*$)Thw?F)YBvR=8feych|8fT`;+XfCanV!IDJdZR3s`0YCrP zukXQ^5$`wIEgsaj@Jn=Z#0*!J=8nze*sUfAaw_xk@~*+!ZsH~!XWgZoRpUz@0u3!l zOk&COG&MS9o{u?R+6@Ga@E-QL0d;=wuC(xy={&>X!7^bv9T{Z4`Dx~iqku%>A@#{4 z(r=z}3j8dR_b)!wEX)xpy&3 zDi7DOgoLw62z#l_y3;8#N6?*LYFtt;u24qVHwS5t;eEU8dc1-m;>sTN%Ha;d^ot6v z6p8n(*jks9!c~)-s>~m|q7Kax;_s3N?vMxxr(O4C#V*eNy4J7mf42ht$i~a>fZ)r%cH`3l=KBKNs783B5M0TgwV0pw}!uF6zh(=Z76zf*w zz(=iQTryTI=gN7)PpmK&?!wEMq+4?FP@opa@-kYepAUp&=(<{@HjA* zD`4uP>oF0g0Y)h+GUhyIjOZ!Kw-sa4vSRxUzIMjxKG+iyZ`ZEJGd%ZF$(_wLodhr# zdMf2cH{R?V_{UdF=waMcjP_@LSZFd6C#>@-FGaY3VG5~;VL^SI&697L%J`YIgnA6R z*B;VMB#FJV>#96?)RIM(nvWyzl##M+T)Z*J%@LpP&En=w)ODsq(u2yP%695OEZvha zJzkVx!O@FlH12bakRK*3FX#-tBig~Jvq_9fHO1Wt`S`ic1tpyKl)0lKmYfV>X}kMw zpRgYroiYA%CbB11&84SO`4u-Hb2uc~{SzC6$`!GPpAwS#wUj9_iCj>HQ!_Na|C!Uk z`$fXR!Hub`YGu)#p-X%=4`%gK?AKzKH9{X$5D0tpHzUQItruKSW@f^3t&-VR-<^L+ z^nS2OBJ@F7Ac$W>@Tz@usZKpJK%D$Yv)i$g3_oy6_EF3s>O3Bf5~E9UQY~|xO$@cA}r0&s|SmaVX_?=y}o{VfK68)Z&Ccl z%}MU1YY6(d&<1grba(+4o;*>xMonr(Z>`;wU#u)L{auAEDq09(Re$Q6+NqZE01f;% zc&wx-jOy%CnT5|!1Kc%C_{tNb<#D6*S%)24eJp)qNK@$(51I+viuwJ1F6=h8+_`sF zhZ4tM=3S6D5gfnv8XZ;5Pp{OD&Wl7-$c*ovs)DdY!<24oQ3F18X7x@+HAA(kTu1B@ z5kjqFx|u35!HPi7-nd7*@F}^`-Zce-T-J~NoKFD(;`+nJcVnfbq`0i-nvU<&D<2*m zwGR(Fec$UDs&}>%h1p?5r8?aK2~)H@uh|@KH?=#BuFlfk8|#jaFsfON5SZ_N+pPC{ zgfDHmV`*)W&knRTG?Y<`eZxo?7#Imolec3zTH4#EMBG;wAx-|_gZAa-6HgNRMZX8@ zESMG6WWr|aNo!|pQ5SD{KZ4(5>F(kiDfoe7EakXW#ml#i&PTp45rY=( zJNPHMq61F5#7SHL-Ps?847biG3Zj|C- zjA+8Y54fC$E8HUDpr;o{Kibf}QM11z{20J(tk!BObxgiqCY$5+ zdX0xFh_qZq`I%`BcG71b!XfjMr)HfTC)-XR$4}ngw3rTQ5W5i+u9P{*=uA+q>R+vl z9tLhByddeD@9r;b3kinFQZ}T!6UYz4s4BRJ4 zP8(M~eS97_Wk2aq=9YWS`_lYi)7)cIWCf~bNw{uMf>{nQVizF??4>84t}XfsY{rL$&uv%f!{~aWbLvlh(_dReyE<8R<3YJCFDnlS zy6hgN7Mpc4IPgXENMXJ!H@ow=MtKO z++JeVcsq$mLllRs?_d-{Cf7cKc|rf@UHNfqCNEu7Er_Ww-`Jd^h3+QlUft$SEyiQ+ z&c2v2;=&qY7ULy8UVcw>)v$@L)1})+n>->vZ!Gn;olgg{uhPHQ*Wf-NYMD9F@I=6# zlv8M~cCR=)8{d70O=RPK4HD{Xe*O7|U$CQ#g74MGXr7=g2|XA8IWbIE4#wvEmYrR**kl0+Se57?~m+x)<&XoJZZ*z zwWk7t;iPnRNrQ127a~e9#_m}K2WVKhxx2?R+fl+N3=nYE27ZKM88}$gX+(5EO2F>I6RtTL+U&f_hco!^vbWzdHT<$waX>F}}DFz>fXe0+ z#%{a9Ql6Ez89NfHzP;%HW#coJ4{ZFdCMcw}RT!VUv|^EG@8{m+ui&L< zFeNo}`@~rjCvu?(=!%dnRDp3xT^7z zjO}WV`DSJ;%ZFsZW?&{@P5-_+drigQNAroLC9m0^PT%@MWx7l?D*0e3W#;eNpv@%I#7z(SiqwoQ+{OD^6ZAijt>ck^6E_2Ub*Tw9gwMzG>i!s{`%&=iNrqV03Mvf`%x;(<28hmFv)NRZYWJo|Lp=Si2 z*6sVY%>4A%d7J3U2DVtp$jCxv($O_e4iELO&IC9%n#Z-@3}?#Vv%7Hu{h+~M(`~;$ ziN~6P_O-hR2A<$XWjSl3Xoz(RESuEh<{aX2wJ(MM&#oh{)v(hha3vTWOxII^gL^A( zVnQ>f9M=$D%6-e@qzazv zvB3yC?v_MmN@IsEmS7dZTVYv@{FrEap_TYC;S;@7ey4C|MU+n>!qA7WDCam%j?cuN zyrXJRMtI$Xl+AO@GoJN{aXMOda>I}=Uf|=WU#CoNOM12;+olg6ZJMMO!U6+751h!U ze^~3oN7=v?w9dx=p+D-)#wI_SOhEg>wXEBTC;mmS(cambD<0d~uM1WZkh&GoRg3_+u^M3v)otNga)*B3Z9Q{Xo4 zN3S)!JDNxtNXS?VJ0CMD?*{Cc(&hI{tHkB)OFnKPMGzrm5j8=8k~=RMZkb@V;+ z#7JMbf8f+}9)=<7skDoStD2mP1bh8KZ0>C(Y4+qm-7NyHJN?!G{oU5UFdMA)ne$AS z%x;{TNt}0X>=PpxPeLZ zWYpeDR-J;`8CUOla%v4MYeaummZjIL7_q&QO^N$eI9Y8Kx%E_s(AOPkd=(YOo^EsU zOo*bxO5y_>yGAmyA-oxvwt`NwY@B+uSJcMwE-{KlK{EN*JvS!_iHiZb?zm0oI-S#7 z4_@9l(C=~)A)`)IU)o(xQ8M>6QT3#BpXsf!_ntunI}DX?N?s|MBV!zM3lU8T?Ipo{ne?HNw1$oYKk0daFq z)Xe0g%R+(h!6N}5JbQc1!^0h;Or+G*0X#crccY`D%_r&u$;D)6OV)>KP!U9Cao@eO zu_TX(jC|5~3+qUJ>MtZBa&;(FlVy`1Tx$d4|r;K)U)^)Zu3DU1=nXvSz~i9#NsG5>u9PWZq}f$#!?C5%lf+~`W6iD>i%4N*r!(QT|wd| z=uv{-G&}QJxB+?AFXtxzHKIKUIuAX~i6CO+jyS!+Rrt zz3*ujl}_y8;O2l?bFkE?n`)E2Iew1DDr-2x?-&1Y-kL5sn#LZ2K_@XI`pD=TvdAb; ziv5BKnYHl~xz4zj7%?@!;QU^(%Fi)(wXVf}RyAH{vZbQS?^5koc>n%;M$|N!V#8eU?oXD23C?Cd|=t9x7$bn zv=MYqQ3;?{+1=KJgipLvQ%RhiwIibzZ|*?c;ZKQ5%ZVP45ivwDiQ7J?Kas=kXzd+5 zCpNdkm4%EZa7A|tJoozcjSQw%HDKuJb$xlV|4Zz)-GJp+llH9?aT=^tk@gNDN7A%K zdccp-*6Gq0D>3w;9b~p5z^=N*`?l#kOS z>;pd*)$DaI1pAdglhJxzzG{NFIoK}xVK6#XkiBP1p4r&pr~= z+&y(f27L7Z$w)SgYDkeiplsgcTYO1A=|Dv)*iir4ckcrykp_gNrdky$=%Kk8_998E z!8@C^v^p);D}RYDq4_|w<7_74$HM4t)Hjv?v#N@Sz`X!P3E! zkxaSH&DOTZ3!&B*N;G>XuJ)7yk9yMP;_I6_w@UM#yN5(a+dB%so}c(*eoaf;sS#>{ z_HT7aD`<0+`6CcY8p7^|m)eF026Pvd8MRoiqIFd`RaIr-mAI{viBGohqe>yzr-bqc zAMcq7T$;yO7E#3&cfD2TT=I|?78ZVngv6ko2~=EyTQiP#_gau|p9{?LkApIzcKnb238B>n8Rpk$8pHHje~-0vj9JKJwby<`-L0#Ty!Z zbK$vzn{Y}&hu!12mEom#aPm~>QoL1zYJnFu_Ux)}`Uzum>29yfDNW3qUe(>M1m`Vq`uwiW7ktqj|D#qfd$^OyM8xhdNkR#sxcLOHf~Op1fY z7N2D52c?w#s>3~nRZ5x)otp9Z;D%iTapcRX!9)Hzrpt-)E@IQQ+e>EQks$uP)9odv zu|O&;R2pg9TQxPgt+W7*fu7%Z>XptdD;wqS zZSPV}&Up8-NIYwb%kNQlGC$`wIuU47JYnFNh$`E<9D3}gX;J0Qj(bRdZ;U^SbL#la zv2>8^aF>yW3HtF`t6kUY`JGV2A-L5LawnEiA0#bW1)Jn)<>g=4%#`#i)b{uGboM@z zwof}#WyvNlgmP#>mICI{YI$N@7kB0d;t;1fT(B9N>LXb=rYZ4JT5&>xJNL7-J)k)jQA_i)^!$w!L;{-e6e~Z!K}NlkK(3nNLu&V!6t%3=>6SN^1q+dM*`Bixa1iV%? z6d`QZY`(V61F|R2P(4lh?*^o>#Xs{`*L`NY?-Q`w3oZ6j|2;2NxHB%_fq5+MK zh%p_k#DcbU%q0G?5T=^4j2YCBi{Od`M8E-xE`|I-hWqzW`;uWvI;Od&sY{8E>@_zPXl|Y1@VKP~AwI)>?P7}Y z_IWg&{?`D(sk)leN335AS*$jmq0C%c+!+t*cCmb9VmQa~fw#m@^{uq-NuMQGUFpQ- zJMI@NQ-Kc(3Xi|4pCWKZ$_#*{E?bDZu&Svt=G0gzH;<>!Br@=SOmr$aV#q5QL`L7` zbiZNUC#N1qQ#oU5>u)2ve1HDae#9?8Jl($G^q7vg2G4W1%=3N6?9?q`8GYMLxYAzD zqPw&)T4RB`W}{whmoA1TgFy$?DBqhJ`k$CT-Slt{hZr0fjIE;>N5|yEiwB+5E;KY;)hL|N7(X{c#^##Nx;ju4vmg z)wJx{4u|(kBaZ{!PriKqtj1b|0L73Or}dd@@tF?WwNqvwTZ|)VTX}&w^-E>b+mQmZ zMNpU9x$whKZ}aAfc-Hf+GOch3CuV~edAvcjn%sn}?a7_(w)GXKAD|Ovl)Rri zFw6%_LNo&YBubfty>m!vL{t>IAXssp52q4C=F22L`TG8`1iq+{nZ3Qexx#T3 zt&2;k_D-0Ly7p{>eU0Q-LffYEeyccE2m`RIKV@Z6ff_q{ zd-IHH0A&9K9bHHay}Dl61gF~jH+j$k5R8i<6?+{@D&$vtg$713nQ}t&IOaXqR#-Hv zO1%2%LfWwox713JW7NaB)(2?i+8TW~Oi>4F%TRBFo6-^fu!gr+Jd z(SWFom%&RpISyjGkCEmvgOZ)z@r^c)sUm(RB;Wi+=aH83O6OO z9yGs!ZAjZPVd1an;jhj`rldMM=&NWv{@m3=)BA&&-$t(=(zYdH0LqxQ&KmTj)I<({ zjzBFL-)5`-*gsvHZIIR6QE%# zkg)va(fT)!NT%APZu1}c70$BF_;FT}2Uo1Cp6Dz2GovwU38G5q+ZI#mxaM7oC z_2BH=m-jm6^l$3dQ#5=0Y|^eg2rQ)#GN<^h!Ol&bx`O`+i@0r*KLkSjQId zcxm};@Or7J4{UT85WY&n7|+M9=Zjip?MXX+?#HD`&SsGXW{h7>S`)g&sa3JUi_IVe-{-Vk~$6N2NuOl{=-T z;kyOr=5g0gxWJ~}3O}_vd^ql{frw2-fITaoFwe-yz}sZ3Sy<3ZiA(wcAn8{5wbUNR zdD{D9BEkDM(fHdh%j{Mkr6lmF&jtdUQVFDEfY3duX;o24++)gnbdSksxwn1PaWKOg z{h@wT$%l~D?>OnEhE!e$`A8x0iLzWerbNPHDam{DVh45(@^AHgn?V!bDa%5*;y}^ARj7L$LzYAU%z83{JNzDS1s>38cR&H zct(^}J;>{qo>eVkWouBY}`-b(SrWMtXOR)pToy@s79I)4_c|q1@3Q^}A^8i*KQVubRSN9Y$ zW9&!Wrg_+EWWe@YGs4H*DQv-}NaMufl%%@oG0=B?nrz9%36Q=5gFa&Mp+}c=_jId} z-zwQ+MXjJ$kz|<>jWH{d_@|vU%i5xXSP*Z##4ED4+_FmrlDdllN_({ef{2Q0LV=N- zE)$Kn)fewN8)7h0D6hQR);Hv(EoF&CGO0U{x*?-Ri=3@CeU7YtHr+IoY*86+McIWnpao^F^h_D%;$7ZcTIk(1%DhNK?vlG?h6lr{#Y5OM@Kp z`#VlB>HGDSL2tyE%HC~PBBT~I1h&+Ljal9y&7*c>LU9Q1^6aNX;6A?obQD+1vp+e7 z_?VS0HP)qe{J_U7P@UPAZt*U-2kQPjR=2Ab2*g_lX(f`v9*8@g^;yv+j?36jM*Mqu;&PL&9AhJu!TW)u2O;RX3*g<@IsJohZl0nr+cn2m&TX zAEk5mdg21EFIQxa6a<&(bh5QTAcT`}!trPpC+1 zjSyn?M@YLb+GjpOAx*1^_D%wIWJS6@xFTPOkH2bNPg@TD;dx|7CmTTVbBoh&w|EXG zrg=d*6YJOH_ywW!eJ1nnO}a$RfVoGMK}7n#NpG-jbkpM!>PuvQ+P1|7#$9lC58ua} zM(jB?jH=`#2}fTI+Woy<91{VI12n39SwZ2)x($S`{6g$2hxR6egM^ofs{6tp*zHQ6Pk9WK6`?iF z;dN3L==XEoXFm&ficpSv60m0O=i_Xkn7S(Cnyj3aGS4e6oDoq6yL5SS`Qo7aNbU^e zQ38f!TtpK|cZNq)+=$f^s~7bhRKo&XO=*VDHxDaLz{|!;oQqEk;&E|F*m06C`jMU>&sf1 zMd9t#PxQw)2Iy}`rS82K#{Q~RG5N~Ex5)9Hjk|J5u6CPGjL4F$0j1McaK5T3NgW5R zqec}q2j*k$fIum2jwI#Ps1&1*CyrR^kdPg^3{PInWcRshed%QVmJJ*O68R?G2Wt0G zZX$w^1oZT0?$M7KmDN^57Zz%zLe*B!Er`Y>9dPDx@Z@jZ{mQg3&cZz+*d+EpDQai^ zC=tATtVguCXNNx(3?5ddp$vW6iWOYkiFVb~r)G|3uN zvnxZ@r$SFQw5B-tNasf@BbjYrvRS90Nj>=D5=xaBb6Zx{lh4Ir9YTyceL)r+Qlhe? z{Q@7^r2KdU#_7Rell@%-Fm>U_l4;qll*8S7v%;TCWQCV(-|oL~Mn*W4xkqCRP6L=O z?UJ1<3Ox@=znvnXsol>f$^5Kzzoj7^8$?Bs4LzW?{{1QVCxOGc+ue%bg`nW6W$o9O zWU=2PM=X{QKG~<|mAn^TdIE^l2x+CcLn<#~zi!NyTsY!H(Dp^po6jH~Jrg!p*Iz!T z{?mw9X}vEDTI5H~ySdVUKaU^Z6{=I5gNJDHnZ8WH&5!6T`QB#2?z=vB(9pq&2AeC% zY76aP=6#)(lz_54QC>krZ0`_xwjmUQVhF7`d{(d%5Zg!=U8>|h_Uw~^fJ=&TG9wRYP0RuAZa8eKf61||=Elt4p`L#_r zi`g%|n7&lO)*qxH33c&giSfnVhxo(4#^r>UhD>L_@gdB{c$(!$_P#ydRk^MUf?xWN zWr>fy@Hz62Blf-jd|wiKQ1O5f=NB>PiNcWW0ZkLT*WBwsI`wNZeIc9*I z7USgPgqJ8zzA!)ky4Q&Qp(#;2_}ia#c>kAm{Lu_cS2Vv*;LpDLuU8FB>^~lHf8M}< zzTzg|i52-*EB@=<(l`0Pbo+l51+MP{%73)kKdvVtSoW`-0Cs4J6${iVT8+wpYfUd77qq6y z$nTX&Z7w!0ELaSk)HXS4S|uIu{6709~C)ToX}3vF+2pGZ@K2K08-g8kZ3SNgv$ zfrv#gGoX7lS=b-<^!)tw;eR{6-&2^k-Jz>6osEr=>`VC=Mf3!5xc~KW@SsKuB?=kv zpSlBLnE%H&9sW-#{oQ|@bip|puX8l`OZS10eK5T{uqT=W8=!dF@?ic{p#w=05QO~u z6r@Bx3uB$NA8;HEKkJf+_$(`{YfK*a9Wb+2GW387Rr1s3)63Wk0-!Vjj}BptlF0yJ zyqPBn7FDr@g@sJ?-A^d1e#7685#WC|5&RD)4`rs zu2>%8Mw2uYmVRH!bO|8gFL@L{Ttl1@zgG-5H2!mPQQ6e2iwD1J6_%Eu$HC!J-Xw4+ z)Rs-P+8B9N-_g5#by88n#TJ$N;>8;qz(Hy4?+*s>r58GhU#E`c2DN;ou>W-z-<(^L zH>qnh7R5WlT>9z_IHFc~)=%?OI#U8l3D`yPO#fKU-@BAQF-={|BuC<`Snq+WjSqK? z_)(I|3nvzKOXe$CgZ$KixM6gS?qS>Iy6)cIQ=U!RF=uW^xl7^R~gV>n!)`t z%lnVL-B55|#C}l$ywBDsar6-_UH$6QqJ$=73 zGih%kH5dyYM+e-oDBql%*Vkviyk~F-{lK_@oW~P`VF=X1pf|cF!qwm$Fa4kE>cR&w z?xty`k$lc=a7+pewT;0sK%f$Ot;&gna_i3g_)P!ApJ_~oq^nZzXEIqEBd_KfgZLgG zi7I^F@ZnMrV?Qp4gfXrcL?8oTy#QAWAfY zCONGVXgvdDTNc@NyK~>KckB>!=T(wg6)CCaX3q!Jx2n>BUUXJeNI>S4oGoeqb`=Dq z^+bQB+@Ix%<%72?Cu$=Ykwm#mOfpwoayJFP=ZU3*)Vw8ycFCkdgC-ByF_)o4X3wva zy$z;Hvmr6y!^(4Wb7FC<32`;HJcaYiQv%&=cH3R0hQs^E$E=96`ukxR4(31dK-Wmu zzf%pwYa!iX;J7?FN@ZUFFiY{`MVo?K=iluLi=US3{_WtiJdU9!j(qNrG<^2lqM z4cF7tQ|zK!CWw@$YotMJ(d~NGEkL{v!4){YJnXl3YPoZ~+n<@TKo!ekh@chJIo)7D z>|ommTv=Bxd;k^D)cmER=h_oHn)`}|2DK3eOZuEDf=%GSB_2DWJx~4mb@btg^wP=> zE6sjs=1LF1!_*{nMS_U+z?{<2)ss?E@&k2$1Po9~Mb~F|HcAISu9B9OZL4=tFFEdI z>+HSy20(_rqoXv?U_wX)0|C(4J34a0v-9$na_gK#MIHP>qs!2tAt|J(^YbBQ?)WAT zZ}Yl_2I-_P{A^UcnmN_?WNlIFSyM6!`(h_XS>@do^ivA_UZ2J5h0$V8FWojWY}ZjKVf&PZ1pOu@TmL^4c;zhs1v7Ut7bt8{fMq=>f|c z+wB11fA0+Bwde3$B=kDXEXW5s>3^2N5M!MVDXv$Krg}cyqAH{l){q2h%b>)Q`Z1~x zx=~`eHt;MlnmZ;_uYbj#zJ9*dH^~s_l)$EfhC!;cJ;ipW-OO%TToS075YO%4r~5Ig zcs@q|6m&o`1Ry(LSUH0QpS#BVnVH!HkVr;Als#l*W%oe~V#b{i3*(RC=>S)i%iogh zx?bhG(QIPwFR~w0&(6wXu+6t%tSIC~K&)nN%I_A^M7Jg&D7kRdQ4C}pT-?yGFptqM zHXG7%N?pyj`xzW8$+>K|5GXCH$rR9yvRj@q?ABkL!1b}SipaJc~T#b$)+ouS;B8W$_pzs? zq+|9QZn`n}E;Y8Audgl$PC672M*`O(4TKNTVw7MN?(FRRHQ%%wpej^gzZ&asX8BkC z^!M!iGZWi&!z|9;R!wyCsRL=(>&>xxMYDI)UZ-GtvA0}72TUCxh2}nA)3)9o3j`qC zCs|oxz^F!O!szQe(g8Zx6T=+Ur&>L7RG2VWX%$5m9uawPy0~Z*X#rxc$Qu&^V295L z7A%dqOZ~f#9@$Ra(Y~W9pQHgSWA0%1(4%z|E#Tz zKRaCAFI25Dn5}+u@1EPz@m!tZROu`BVu^->F6zs}77WDyN@rYqc67YYv{4HP=pH33 z4mf9`)7R5GP#G#g@Q$WUYXZI7c@fJ9`?p%q6joa9vH=f4L#;}8veWB{_Kk{?7r)tn zwTzEP<-A_AF`_56*FXnRLt1fhCaY1CiA+xyJO%>Vh0BY zK7Q36e7xr`!MpRayL)<;#v69{4c2zQj8R#>;fU+$j?x||{$~{7Lybqicu?^Ib}*)I zhP(%4N=Mbnc;im${eVtJ7}xdU?+gPkiiu9$6Yy;BBIPSpH0v-C4IAJt29daR`(RNReTziqz1$PDwA%#&WY(U9 z3l^8ulrP}7Q|0g%j228_&nr^OH+FVH0cH+w;DM6>hH|j#{Q_nScvBjR5UNgf-;+qC~k)K$>^Vd?=l zGH#}-=G1`t%#HXlb2-NKHG9Ei+4kO4*_;Tx!*~k>g@}i~`6MbG@UlAmbm`HG?!%iq zF1U{&rJ`c2qLOOY`(}JZCyYm#@A{Nta+1ps&^J@x!B$zZ)4{2L%_J2Nl$=B2y1|(S ziX*MfUbwA|RFy!Y!3urv(Y>!q$m9Bppwqh!tls7H>}-&alMvADw6UvgYCJa!8xlQW zF70j@#0+vR!ZY>E*?qVw`_i|;n#Lr@1s1va#bDkPFl@it%`S(}R+oeOz+^D+6xeUK zfYoKP!Ym0QnhH8Qs$0xAA_GrTe20D>3FOH#n~j;6xw;!~AP8j|8sxI>6JH3xnQ z&_#j9rx;*|Z}Y|G1M@&m+I72Zd?-(mSt5~Jv`vza1CE7N!+iVqwf!r%KvX*W@&F(> zc;%xQZJ38xp$uCAB)20X)=YT+cV(_4ixE4O*jFgmSg_)<`kDh#1Q3(LTGwXFJ zwx1Q{M5dKrLH~M7uxtUUK)@){%nV#FN}vs?;Tm4}i@4$>x3C^@m45t)Gl13CK?vP} zY4c!?tP%K&I!|CVkMimjrtK(sTAZ|)Vor~SCGA&Y&J<{HK|T`Di^Oib^%CZCLV}>V zSIk)YL#9M)j<-Q5!D$J!vmih&gj9ddxu)f^*$F^|yVYJ`bDMRtMw>V6FgSEwCKlsh^_H;!iSavT#2!zng0yA5>(_LE27v^}id4S#v%{7O& z02PnXyb-b@^ftbN9gW^d!WBM?t4r#Gu})Q{)@u&Rf_6AJ5Jr$&#(I|BgF@VYrO&GX zzJS65W<{=>&+h_>?HzB}PDvkA((9SXVaaKufgq0gw0ub!G4zvgoqri_M*MZVE}rDDHotCworo;ONutC>haC59E71Tw-xUla}}8Eo#}%cX@9>c6O& zWVre4)y@gsh6vg_Uprd%FL?0-CA5$4PJ13kj>x%wCGXIH5rxQD82)T<^yGSG|1;ug zt}jK}igu55Mou}5JM#G~v_y9tR|3hJpSH82`#FWb$Udt~FuEWfN73Mk?mOtjNV=9t zMPqW_y2aGDzy&g_vvd_OAV8#vC@E)85A|)pKOE$qf_e|$xWR2yR3!7uQ^u%C1EQ3? zya2HM#B3JSJff#B0r%~2r5BV3c))rlBR3T=I^S{2nNdbxKtl4yolE=9NM|Go$X$~K z?}WwG5V;>%jtf@#m$~QlwKvFa^zKJTP@9^iz~GwxjH0@Ixt*T4w>7v|LucNIIn95TTS?R$aM5@e9GuwP6@0)k`7D0zIs~<% zOloiNeg@CpOClA?dXpdhk>U;-L7ECl8#T{_749QTO3!YR>sy$lX>95pYf(CW!l7)8 ztqHJiKaOdkhI$93gaaGTEzs57&={C<8rR>r%zO| zZ;YUz1R<%JTqEGaa)*?Z^zs*mo5rY7;r?EWw&8R+EeHo`)M|Z1pu8&B=Cn~>6%}k? z!08XBw0-yV25H%8`^E0z8X302!R4XNw@%>#z54okP?8CwQ#D-z=JCJ4Pco)5q|F}bV`bBFI#9}vgmUa z40=tRzzof__uA}g>}0amk`v1i$XP@s*y7kA1TC*K1Ew39Rvu2E5>cW)W-Qsc2aWj-jNHReHewVM?m zk5&01SA=|>>M&-nnwC8N4iHh#C9p~x;uJ2H28pK*>HUB?4da>W-&$Z*fXeyN?W$P`YL%ASh%*I*Y6@PH7ai5n>Ofz7-8*??@^G2J|5Q2h&?eGK3FA|-!~Nif zNXe3deHxW3I-|%wgtC{i&;IKZBXtc0?P_FDC|iK)VppoDsPusCf2^~^DdSHZ;Joq* zhtMBpyY=2%{U#Q%;^ZrrCrU$A!`2BAqXwcaa(1RKuOF8wDUrz+j)CLVW3q)E{ZqLHBC}jQI3>(f9iA$ilnE z&&J_8Pk%>3mJ!tN6Pt1X+XAOs?IU?Xjby^4zSwmLceynQ^F?g(^MutX{iMVL02j3e zuEN~r6s*Vk+z7lK%=%Z4E9O26m6bNoUTR@G#ZUSAT)r*FWiZ&fRlY+DUE=eB*iGs` zvD?&OjX`rSN5RKlB!0KW=g8DDbqkG`^5UnoEJ+oaix|hVnI}Zn)dOBG@w=Pi7fL4m zA51x8bTPT@F~0_-=zZO%aWY{YB#G~5seOxWpVmNN?69w5^#ZXQm3{qaLQs%zk&28O~k7Fl0f@s?gkAU)i)sp04&P*Gy93m%yudlA0Z(+ zXV?NS5@XAE4d2aC&KbV ztTP)wCqWzg15l(wio=aCg; zH&B81>6nqA3hMReR*!NOdp6Xmq9*|?}TxTXd*8jm7yZ(y_s4yo{d6d8elGgOtYd!;r{ukS- zEw4WmRv?ArxDvQ@6t3nO-`g*%;IghZk*SHgmPz2wG1q}7Psoy(1H%cUxORyHCrH|3@(_*V4? z`b5p&-*t6$U0QY#m5?ZhoEMKGbS<~GB%jFX_Z%M_q)5W*k!mmcxVA3NjWT&hfg@uZ zkaTf49=!zhxDOf{aAp^{(QwAY`uc4^V@*0+OClTXq)`FI2a%gg9}1DJn0Wfq0ybEH z8$Xh;uyAdeX~MMFuZxrI#nj+y-%gzrw}xwbN43k4qlauWjbQ%!_v)oe5kv`ZFjN@( zR;5$udibau-iO{TplDdv7>FW+uBNwV#R&4uB-$ zCu#CNtci#nVTPhhhu#V|OA-KQ=+)n!R_mC@z)J9-@v9D$BM36uJ~y0)qf0}R&#w|r^TiHr$wKBGNhe&nRb*=AuZ z;R5cAObPnUWk3Yw?E;u z)@8d}Dz8On#eyC-pU({z*|3iMA+A(=)b|EPzz>T>RHmOecbXCn)Dfu~vE^XB)nMS~ z^?b-T<8HyD&@uUWiI-mq0J}_=uuak&%IqKqPlVv?w;!9w-We#86CE z_XUXXiFq8u%^neJ%ubc{#4~y9fy~|?0z5BT4!-MaWQ1H3bQf_4KaC3F7suNK?0a;er0;)yE-%-x zePJ75m34^%pzsI!qyv z<$?NmbU(A!j+Qq8+O-dMAZEKAVnpGH#P0GdY}UDCn5oYjTm(3gnK>xgX8zm;Md&%F z6CQ-HuX@IwB44?}b_3WNS+)U>2#03$a#Hh|y>d<_!pexw&_Qg4VvgXH6#=26;Aho# zcX^+j>EuT@Q~1-3m3GyLI<+U#=I?F?Sx6S*J0Ud(VRU5KNd;jmNRci#Wp{2-ey<0C z_g%P$;BTL!R9wC4hnVd9FgW*hBaT|P=MUcF{*8ZFO3)_)UXMy2Hwr$p1G{T@2!uT5 z+f8&s;;K9#0$?wu5m1wIB@OiDN35?9VE>WD|gp)4dnd+JO zVl>r}XnRu}FYbB314t~R_6h3F~fE zZsuNx71<(rn$%KG6i`|NPQ09v;~Mkb0H0Q(qOGgPM)_{Ly_1UiWSYH`ooZVpjZ0h1 zGPrtSR;YkapUX(rvM&bQ1NWxJDXZZY@o@+?c!Zk1FKudmVd^I>@li>OR2vtHU2;k>HhG~ie+ z!Fde(V4cI|mQ=FAEFz@r{cL9aAu9L#w`fj-zVvdC&RKZzfprGA3pQh%I(hCA167XM zp={#3`5+~)!CDxdsR}l$7h}*;KiFQS*sL8evYm+Ug)31pP_};lx93vFYYx|Hhc?$@ zOQ^;4<*T$B5;6adh-cp!u~YVnbxU+M?pp>=v`35y)+ln=FmkXmyHIhzFM=os{+2LW zp|_mlFHqHA++rFr)6v? zZ8&T%$K&JRGR~rN$Rh66iix2m2pXaI*X}^j)@obf)cA2oNC;wm0MWrdkRTH9Y^dFt zBWP*l(ynCNA-z6rM^$rq6XSuFAek{;X4F2C?bZaqtLEmn*C%e7*iPg8J9TV96E$~2 zfjLtBDR~skdaI*{N`J6Gl`HcauNjy$zX#=Zgs9QCGmHSJz7Tl&Y9Gn`-6B$Mox6;7 zbDaQ1vtJAxN4)5<6SRyFasd;klR%(xp)X9!>#^6~xJ)p-=v!)JLyP8GeYF!*=U;PY zPVsQI&(V?+EEkAC5%lAN#vZGwsfopgzXvN5D0<ZK2=ThO0t+d4yB&=T`)U}01zx#9OY zsE1}JdT-s-tbyYU2z@1V76S0z&+XlUY;O<0&WymnP(i905~W9J-g%nB8TVD6?fjS# zWil;&47)+TDBfQ=#S?Wv z*ata}jU%L;?L!W(%cj~?;EdjNHRnJ^W0(`vMa#kfHq2KN4QJm8^4dOKwbD_P+3|yz@$I?a;Bw_LqkA*sCn>Aw{;D_mPLkAP$~a zr@VG;HF+`kj}$r`bl>y^C#qjEiuLMm$2Jy=?}pYI9IsonZ=AK-x`$${?4{-Q5 zE$-))g+@d?q{OE5>+FQ+8x+VD8)dqbNALWSSVkiFh^JAtDJ-SNbyX2xY=G&?KRBf` z^aU+u5_m9eNLdC0!z}HDVVGOj!Dmz{v8jcqFU6eWE4E2e!J)m((Z>>4*7&V6WxHeX zeB$vZ#X|g5CDRT74SG8kNr=G>SUdG9d=Rry-{mVYgwi=pV+Fx0 zhn|0n)(}~;Tz@B(fDvZ?G=h!fEZgzO8S{dq6FaSeG5S^HB0n|xd4cXYvnLK+50%R& z^n9eQaVEMKBzQ?5fai!B*05p(OMIipW(?~TZ&>?Jw2Y!(8b~d;wS6N#jv3OEWuE!o zjk^Uko4ovM_{_>`CH=TsNoPx>q)824G&f@>W_AL#UeuI?KE-$9!Q z1TuBnaHH(ka1%pkk{AboRtBSE=^4jqlRwC3)e2#l^cW1F7zderJblgjVRs)qNOd^G z1wkH&RX%`3yt%pA{!1UR7dpX4>DGhfX8>WWcR7EIi~A0QN03QlV%k^9vYTU|YlnAw z_cip#Gn*2Hi}UjXW2wi?dc30M<_wf!zJN~%1b>ylyV71~h8^e!KUCXpuZ$Ev%ZcK# zT;eH(!_z^YcW_{7ivCCspr804;M2yV0wG~5-w`HA!TA7K()6Y5U|5n5_)U~UGw2-b z?E$xphW_g61wb@2@(ay+&488f$Md80mW9hRn7KwC=EXM^US3vi7ARa^UF`$D zL1`&Y+&0cv0RisgOg@ANi~fUoJ;KGW>_meKcr*DGj1CIxnNgOE-)YibWo8}OyK)j?vY9i#jQ=Q{=0(N}ZMZnM-fQ9Lt0Ka3>Cxz>tgx+q zuguE9G0(=5Xuzxh?%+`g#$R?*Ir{$D`4@}a7w(4~Uazc)Ei{oPm&P0)Cod)Fl#`+~ zVA-75Wi;B8uA6yjll_ooi%6e#@pGziI4t9S`W*s5vS>)sD<4fO;#Gm{f_{&g{E~Ak z`?elEQ@0k3r*RCAuq#ik`T=D_Ykd1KdeT`$}5npfO8w36S=S@~jNnl3zAAlLpt&)vvi zbP5kPmY=0qt#33{c3f5g=d6>ECwFY+IDZm)o_;v|%IO-Op-q4(YBAg$B2u<-aTk=;Hnql{NPn!I=G41hBNHuZ!03JL_v-XzjKls3gHg?e_2IvC z!dWClTM}mly4>{)VFy6t7H?(O+cK-4dx}t=NtEdI>K#VrgI_N8mTlgBc$FYc1kyp*lNuP~$+|;rorQMq zs?%X_S&xe&De&LU2}?MUGEL%|bvn}689ub9)~y?6z0sYrcDSg0APHDUo#TTeRdE0C5&3%4@+f65&0g1qISM%HbP?u5P{1b zyM|Q2_@Hqz?Q1U>Gfe!_Hc=e+`CVa`pwVZRg!kcp0{Em|7akSzgORU zAyl1sobP}$h~-Y3bW5HDph<)Yf17x@@ZjnhY)l41d_UVqq#s^(i4Dm;*Jc!9GJN~| zq0{&2zSxqmI(~j@^sfa_qNb+rNXt$K8>HUTkDgZN0z-0UO-(vep~phzcloir13nYt zS)fZ_Db{JL=-A}o+M^AUd=;Dou5?`Ei%bt{th(LJQ?zGLE$r&E6Adke3v2;gBhCu< z5XKLCYrAdgHo?eDbz}W2D7dre3=@kn-eULUZkEQu$ZOZPi*qTk}zIHw+pz5D;{ zlC_DYO|^wQNH951Ady#dctEJTrOFe*ILszJ@;cP_W9GDeKBvgG%PdcZGw$X-y1tfF z?IFroBCn8`Id^z;$i_jk5F++YGfm6=%~Dhud&^lg|Jzt< z*HUI@QoQ`(Hwto9J-I`pO}*9SyQe$}viUxtEl9X>fi@6~Ku|yxo-D(i?|}pJo}d8Z zITEfaSNq{-jj;M8YA!W4`nXLSrJ{Z>l2+l^fzLuqp*3&zCs_!$om-NtD#wuc}IY%ruO zO-|juB&`@Sa&2oqF&}H(cYz@%Nmi7U_M$JT-7Saj+RVgqq@_QopN?EUafWS+`H>9? z7wih%uYE`{Mrt$ptv5o2ra|fW<1jA}e!zmo&f-g@4K`p3+SDD@TS3OpXwhoVgMXU2 zT!mJ9{+F`@Iv^y zT;sQ2LlM%J3wr^tvr{ZN*TwCBuOs$7j%aT+J^Cp400~=-E~C7np(on?Ab7a5jNpRp zlMT{g6?^XPCs0PT)TI2`vaVfI6H`gpTxf(oc(v&Ozn{{_Q~JQsxz1V}f4J=7Sz-^1 z)nMM7MNHLlRj{m3!3WB>-%#AOii?ML*G{L!p>ed$b4InsKZ`EZgicq(ovkd zDGWSD`&vLCIMds=Exhz4N>W0C0F%FBpn6dmN%|xa6-Ag!f=|XE>Nk#F?@>RS@S3po znt>b#XN1S@1}q7UP-C7!CeT{I5#f-Q!~x>d0LcR8g)8 zea(A6`$`7&A*8O`B1mvmNe0c}|p}Dh!_S6)ve9a2ZdM|b%`#-O?->@~b77)~^)T>obhIF4! zykk|&;i{ncnZ9U}eY?A@Pi4!6N|18`=9+kd>^<3^!E^jc@CFwAEJg0uW2bY)>_h3C`P%BUKY_5;p6RAv;Z?&6joAmB16o4cyoU zcW_mJp~PvMj_h2scK0}ANyGFR*>?4e5JO`<{llj5QQK*KD@NE`^KC1?64l^_#l-f8 zhEfTi<5q`^NmrWE%lN zCZm&>ba^u;<)2Vb;dOP1>kBSEb;F5R&!`qXs@W!kbwVNi3I_5&BK>afJ=lCV+wI(@ zm#ZAyWdVXec_ND;vnPKQBFGiUT~! zZ<*|_%yIR6itMb-HhO7&QgKg%nsT#>BQ4@9Y+%2&+@^rlbCS7cd8rXsf`o4Qxl^ z+}G&e;Mc8@XsGLj)Ll5hhj}Dy$Suq6Ha1YWdu|brFTxJu6Si)jn(*ffJ^#~x=dNAb zol(;{ez{^^NPptv$5KWsPa4lP?;9cj_8-&xE<0VqI>d+C6SdE^xCo6@_ky02K%3QS6xqw`Z~THA|WuLUq{++PVP8r<(6hl#o=TVEC^WQfXR9l2{?#%>gunKm90`H_kobuCio%0sSce+Ti%F z6#ddd%T@Jb6#HY7qb~WC5nA~?Zn-2BqLE=XGpiq>Ipw{U{MjCvgIce+sYt^}fXPiU zc3Xy$d{peaxa(KOulxc`i%`0!sRO6&_r{v7BcIRo*9I`%4bV5O^|$ianEw_}n>Qtk zuKCLv&aJu)yLfb~=tl)-7%^z5P^AFnxEnwsP(-z*%Ha`FW#hq?hc>Lp)xz5= z`d-^l0s{@n47XB6CZ7^ zVuiRwT|PY<{1!~@J70gGW^j@czrJMg%3>QUUiEGv=DV#BY;`(KBbVOFxI>1wlto1z z7>Y4Sv9;Pz0Bv|tMSa>GYTPJhEVi`nN1;4Xjk5M8s}IGeY&lO&3@Xra=HC0EX`0!A zHx*q8LrWoPikam}iH#Afy%#o-^eUqPmolZ{bax}4-&!B^gPpSv36>|Gu(3k%x4N>V zbh_^6hMKRJ6Q2cC70NlDSt$kk)(fIdjx$>!E0(pNj5)LRxcU+kp<-B(g#*36WxXrt zYa*AYAn@VCebANAWPtj`3(qIia(kfuGfLC`pYqg&QV^bkMX>;MWPy?cm)74NH-FkK zG0*V5`lkzyc|i%Af?)H64vmX`80YqpaAWgmFw;(%Gw=ezBbJa)(z3KVc*!Kpm?6oV z%SsfvuE+6E^Gf56M`-agc7!285@TcgwL=sAj&SIrhdV&uSAPszU~0QwAm{QHPgPW* zC>-mQocw&k?Xt$Ts0(@@Ng~T%&9?Dk3Y{CR$8TZ2Rai5dpKs`xRQ^7CXU?u?WmlSF z-*N*Hk4^mL`14;(ZjhE0AK){yB^(Uw=PAliHy-md-MeR0R2rnUle7N)O<_S%D5KL; zQ7-ot9f?DB8a?Bp`!8Rc zL;&C|GIe!)aEx{!!$F~}<+P(HPVHn&{Mra<*;lUeqDhI4VI_(3$E=F|-#ObTaLFY{ z{=Zn;NOGBn50Mfrdh zK}X-@Q=w!@P@d{3@Y2JrAsKcG$MR;|Ik;(ZeUr|%3_3eH{^2w7S=!TDo#sxPDzWEJbKnD0nAx!1b|04 z9rIYI)`y@<$E){My`(yq6?j9hPSCZsgaqa0gZ9NpexU(8$kvcG(+VeMjcfTf^!u46 zpx>4NXPHj_*wkE(P|$6)Z$#i3DocgbkFXC@$1;`}U)_X&+k`qhNvSiIYA9oXK2l3$ zZC|mk$K4%`6njaqzDak!V);eJ>X+R~w24Z~77*i;T^Pn~g4sm!(^;L>a2m)AS_tBf zIJ@6jH;c!o`yfRN;+I%c7)3sROho8jp|99`y{ltIcB|zbqs2Ps7>zj@Xe$My9wH^) zB9Kr>aQAuI?8tHK>}A}u+D)y+X%w1?O+?6F;^%A$%y!CM*n|_2g}52wmR@9fMD{0X zyD?KI`t<2Z;OYR+oQOOZ-P7Cc46KGEMt%F-9d51uwXxy+Li)_aJrqVxud8&Cg}D0i zXO@bvv8rfPc3pVD@IKQyr*h`Jk_N3ddOBdiI#Lay2(SilT^7RDlj79}n0~;|l$-{b zFm0^F>VSCU^X#4RT3C2Vc7|E*4+m!^iip)_@->-5e)54@Y%I3^#U_ceE_YH2zNPdy zLBr9J&jY1TlItHzK7Ra!cjc&@)%RCl+^n&KH~Sdx**$t;A*>DAT=8MKQ%4cZal0qE z=Wnqj<1pLZ7Ogd-QvBkKiwM|BK`i*Y{K{l z2-M|EfRG9W_`~gOSHKAUH*K!qA$T|(JMR7l){Px@3hMfGN)}M9p+?6UM`&l4=Y#j0!$!K4-T^KM>3CWY$QwT2Lbcw_Aj%=P zR0MRQcaQiL*s2MsfkDkPP|Zbpo%{Mf3~E4KY>b4zPyk_bpBSuFZrXdN-&{+Z&X~Ux z0QsX?paKh!qIQKXxg=f}poQ|3j`_<{Wa;uWSW6gm!AV>%)55ui0vCL6iBg;4J<8z{ znx4rsdg=4q+1v?AcUIn$;^Sx-JS87e&?&JzC$tR4Umb-=g_Z@hMmX>zSy+U4Ibwx; z?4B7xZ?xF7(2h{?%5iJo06O6U1{3cR_H7rbRUu8Lu>?FaFItDBk&~6-iYnkFBqY=) zY+&$`ZN}UKQW=B*xd#S5X+wC-t8#Mgy8{*v!REgO^-JH1|8KeJ&}XVQxY{ti8Xrp$ zesB)o)Ti;?P=+VTAPD0}A|zm3aW!bPz3ZaK9xGdqx2U0e`wf!>0azyb$p z!p@pZM3VT8T(|Dhns4eBS2f0$t3T@JgKmUi)NaPY8&U}+v77nDS~U4PFax9pB(WGK z&%Hf!Z6ZWu_Ad8#WCou8{XhcR`cA&cV0mVG$MQ|lIHM_qiH#j_^|8G!3Ofi}2JSZG zL-a#`tI#nKg4Z0-bA5WE#;#CW5ul1FchJpW=k}HW#h2t8&{_|$a|Zy41A#9POe0F7 zEJ~vo8h|tV_XGcSG|J1Imnlm^_ikvf=*wRdWl&OzB~pT`7|@#@l9iXU6b;8eYd<{O z+S8BE?^MYH1G>{_b>I z4a|TUV#KU>W?}#jZEE5jVjc}j{nNvOBW$Cm8)(NfemmBLd|WhUrjx$_%3;KOfK0sj zZD9o9%>jUBa`W&gmVJ2wBztel5qfdM@c*#0dH7l8vkMOeDUA7 z>%=#F#HyT0I}aTFl5RMhQ42cp0@?6T)qii}(czGFPleav;5lIDA^a9hXE|5p{yjSX z`D`_r(wty^HOVbQG>p<1v?+7Dxqy}BB2MIgee}gh&mREZ4LdkA-_0fS$4HuA;M~jp z)8XP@pX>9Lo@WZm>;7{V2P4vw`yg@n%SYqy@$j#ISrjZREM^;Z-2wiLYx`(KX z{a0=GpW|6Z8nebh)@mcd!;8#+y#-WvX&^F?bDL*E5Qskl_>A3V0|#K|z+4xTj0||G zGyS%^s9O4u5%AZ+uIY5(%to~ z+0S?U@4KJ9|8I^%g<;0I@9SFExz2U2a}o4ZQ4SZI3>ys%4Ojl5^fNTH>$GTS7>C!c z!ZU{_i7()vOHR+^B+>GED3;)xE9MWLJU~M$48MMAhymYY*+0~BLPMhrK>fKCKEGv( zhIa8?UiyKmo8Ib#yO)Y{?ZuYHr&27dM_StV>7Rb2eG#1EoAONOc|C!SEJ=;VrF^_U zXUu;>e4Wf?V;yeohBZ2?{#3@aM<;rrTtH+>E_3(pj~v{#zRT=SmOgRFd;8Fbc7J8V zc+a-6h;*Q`sh!$5T1cFue?sk^+{=B*doDypPtVp`I5#Uh+kLHM_@TT!jkx&a2<7a- z$(BcrX712Wo2YgZ3YXaBWy?>T`ij!hSBCXGa|=&Gex=G28b<~G%L9!OBcfNK?&Xb9 zuM@vgf z-=L&?(x3LEaBPjwY6z!zGz8w4lLKFLEe~dEmDy6_i|yWUshV&*Fvr1&kb!sn_hUKz z&Nk_C3?8k9y88BVcK$PUbwtZ;{gB}mT)z;`s#PBGi&H02D*U6PBWW2KhbCNs4{>op ztw>#Q@4ZK)AR3l z1KDW*`FJJ)xBoPqH&91cH*|P~frsa2a<81Xx44jykk`?C%<6arVck@C@8b2)x<4tw zBSof<|CDx{eN)R;U!ABD7*OxD=I@6mk9U`(Bqc9XzuF~mcXvNL^UkYWX7R_TR$Lj% z1PyUso#oN)*ahIL_JKWRDm7&n`a=~gn&cVUKfq?=0KR;>C&o+FJ zdmcf7f%Qu-pXuu2-iHl$5Tv+u>sG<56Bjn(>$i1Z5_BgBq!$!?*xufLx;HNsfH$+{ zW-pvHV$JWeKHlzkTkoN@HJfhbOB!zO2)KMB{)Es3FKy=k$DV{zO7FXg&Mho#H{nZc zo*hgTJ1r{asI#t(l`U>}a;AG8tfQ6#*4|5;S}*@LY@3V>1}P~in`Xgl_=xSPi?b=W z8a*^xIywl?9PN_#;o`@EwXaTiUi`eX>LOxlY6?;9w;=TL&kcR=BZdTin?}o$XKHE~ zuScyBGxk5fKfWCq8Tn_ln91h%4;ot9#sbXr0N=KM1`#dop303QoI%Y8Ci%miVU!|m zZEXgy@vuTq)zxJ?Kd~>G;%J zBH8C$2o<-(b?5hjf`Vcd(h9h*lp)iTy^VGjy1SAkl6`$IpPnb<%LKRhLeT40x#+lz zn(l5)CG*?-e%I|F{Qnc=b;nU@j*3~CnTBV_d(~(AW7eZZekm!mj~+h`djCGfZmM?N z`(*9q#$?hb_UBaG?{IDq5=y~(ly4!(Lv_(0dOh}6;=#MD@+4f+>A9vm{hz}Q$4SRLZvmU0ggxbyy{RO8k#1P2;y zeD3qIH28c32fVRpC*6YmJ>FZffD=0P>VR@* zv6qRK)^{bZD(nq9W*;0)M<=I3?OeemMdWh8){$3iw;7zJ@87@wupZ?Z&`?o%JGBAt zptYuay}D{m%&FJ)>R>`HTRj&}_}Ar5@#OIBZATVX*3mLM>f~4Zq*lXuxVcs(+7+kU zofYsge+Dx94Grg(mzO;@c1-vz`kF`R|0NzBCE=hrI5^PL(|?GKeQ0Dvi-m>ta(MtN zpy|@YiCfa*Qb`?m9JRH{oEEwoR`&Yf6R12_xgi)J=s(89^aI$# z;k6pdF@(?CT^oyG%`2Y`yfjk@OLlaAvOy|n|D|w+t3O?7v2@I~$+CpUecR--_pybr z>pI19eqJ6UCucYu$9R65N6yaoASc8BirhIuEfMO^T{gDnl|4x=ld~?~UQ|x4dM} zV&Xe))EpFxS+ z-vLq~00LnNm7hMXkJiwW52q3f>8C`jxfFXHZ5w~WzF1067IfRZ14l+7Nth_18_};M z5jtTTFnyi}c_WluV0&!poEX^9e`rzu@MAa!#KC@zjglyOQhU723M;sEa;D=t;fzBi z8Vk{UpXi@_XRdm$amVMq+>wm~6=mfHAOKtm-Cmmwm~->< z+(ymUtog~&7#JA5wpwnp>DMM=QhVJ9Zjl5k<+;C#3K!rb+#i322L&1a`S}%?2RcA; zyNS_gk?HA@l8+I*f+g}w?Wb6^K3p7p2i z`}M-Y!dL}Hz%uuXvjeSKFQIR8;RxHZVxJ3d6p}zN-UoCppMB3N86Cz7z+COli-}Lw zY*c8#kBK(}$uR9n0%E6Eq89)Un8XJ|tA9%(in;3(RVu)236(?}fFK<1<@=z3OS9BE z4mMS*)S47^_o&1#;<7p&#Ps<~PEH8Chdki3BapUlcvPZofDaitIn6Wn?>cOU)%5hj z+D#glUOECTFSQ<(gv#WlAzas2OZW{xdH8um-y zWBeDgfkOaBdYvCFYO)b?06j-B10aO3GdIT5A*oXEO0)ml_Vf7TkV*nKFe{ED;}y?BGoTf`*~o=k5S6hcf}xz+ut=IdXI=A_bxk zf7r8m?e;%17y*G0fiWUvrnpxeeL6yp$`H=e9Qsh9^}xajsZG!y}V7jff> zn6lMVhlXx~bw|e|j_OTG;4r9*fyxGjZ{rTFlwR=et~g$%TZwQ?R=5+IoVFt(A|MII?XQg? z4^E)wfpdV`<)08-kkXhrIa>jER8*wg-Gxr}*REqkbar+YYO-mveJXGdH`|_TM=<_l zog#Sqo(SMwF=&q=MQ{)Z`F-|SX4dmQG99-SD4X&=;nc=BdRTjL?uoi;xK~oh^F%~M zIhuuyf~%>SwA(_A5)#S15*LY)kvGveD*vPu+$buPw1-**0vzbz?;jRTfCQT!HG&j) z02oj{0ANt5tD!(rO-%-J927#&GeimAb(-OW1+OC#@Qfd$7!?<7;;7AIkw@BaR9iU?SuIa^tWIYQ( z2gQh?RGHp#L$j}%$kDI+3>iL;NKb*DTzb?VB> z1bX=~A3xsm*jsLC^!p1xf%&GUr9u6$x^pxF|1Yb0jsYw$1i}phf=l8x<01i zd$M3J_+qkJs5|~1vhg}6im@9S{~Ky%)OModw!RlZ{9A*PSs(yKFMiR&z7h_Z z|1j^RLJ^g|zPKwfrx3)nEcyr(@a#kF8&1)pFP)wSS8y^)bsVa#SX^N z>&=s2$pY&Rl~Rnwy7sXrn)eY3J=dt~Q$Z1(v-a|bB1!5cMGi`vU zojpk+qs8X+AZT#= z+=wEOtz0Xuv=GF=`BJFOxfv$~Gr|y5K4G1`z3D%Gd|c>GaDocRxNIy`N)k@1AgDJW zCbb0L=C%3FhdO$2N{uNzqygc8Xz{ph8c@C3RbH<-(1TLv{nNU3lN5**fO{xE;K+eO z)wR%sUjdm86~Ry$cSu|uDFN4P@99aau1;)jmR_&kQH1ydT7^tB*7f}!1Uj3D=k*`7~`OjK40`alAt**<|MvsG3NjNk~FuCiFfE~Nj1y3ZsaeCtA zH?2P3vjgA1zfau1ae&Ov_|jJLEZmdp`cXSmG8(FwInTkTA!IW!Y&}%_~q>Y&tAflENPfmpG68@q-TyRk{I@c4>b5Ei3E& z-pX*)r%$r-@>o@_8+bKuDDn>v-B4AAc8R4-Ffn^ZX6DRFe%%77Fqn538T|p>p>zZW z26_f;x`^vKYNJ5+j5#|w07)=Z1s#C>0qCB;eUGK@VaLv@|BzeJsfRaC0Z1a| z>$_FyBqXeu|MWaCIQScg;qTvLqm*;a z*Z+{s=dAnA^B-Hd????u|7g_JlyNX5YQbD#lTo7()@=EjQXg5y6W*w_oiVEMz$7&; ztx#jSeD)rji(kb2>J9Q0G|@RPo;U(5m)YY~p3NZla?3mWrC42LI5?kM-i;Z3MYL2i zU5)(Bgy-3KjnOCaEv9`lf-F56x#xDZ`15Ko`lfY4>&Uwo9;qRw+j4PNEUBv6PG9gC zt9aZ<;`-!1Ci?nqtx^vy(gA6*SStSN7(~zPrw<05xWz`vc_xFs0u482ujhvT@(34gBj@$=z%8;25ktDNImc1T7YX z4(KTTg>{cPD(KmEpKEEgqfpY)(((=o#lA<4p%X>WsP#hMW6pV0Ig%30kpglHD1y9z zzaa762XJT_DjQov>D4&Y;)zVjUXiT%)saAqfL2qwB>$siG>;wB@k`Y-H`8!$d<10_J;1=nR-I5=>eY&x}Ln@a@M}9{0f(VX@q=9}87|V!MYRC=;}sZzs6q23gi0(vJHM9fH59mxP`&r%J{JHO zhdew7d<;cG=jP@pinogs-Oc6>w@$2Ltj$O;+c;@0?6Kt$vfLzcvdT%wvb#u}ispc* zxrTPZ(C)u)lcQ{Lv+lc+gQueNgKiz!nY*egOPMJ}De)ceEwfnAAAe7eXHmMRrgl%Y zLM--icHt=cC6lTN-w9iWlprF{*6a{h8b{ejQ_Ghr1WyXS-6Vw-L^I-XXhnEDpmlhM%MzKvGM9O6EI`Y;ovfyo?cXv|QxppX3sgUil6VYrM>i3sPBL_4Kp)y1JL?zWvJwzJb9w|d^k_{sEPW#9+eP^&ANeiVXu^F z=b~EI!7Vq3I6^t+{cs#vhj@@nUw7B2g1^Oe3toB7OCHuEPd_yC zLL_*+I$FV^nKd29$3nEduz_41Q~n^#IK(g{u_Eo%ogS-%^Fcz?#}g(J*}rq1wz#(O zEV>AE*-Q7Fi8-fROtKoRvl=Zk8!h*5SmfU6d*g*l8ZSqmo!?VMkJ{%44^P`ToQ9D29HfE%W_9to|83K19R(Vh3o5t&p z%-r$?tubJl-01j9b+ESh`v zl{If&2LkuTib+P{4h5gb?h7;sXMHF1HDzHN)Iq2!yLoh^sHrNvZjP2maG zy?ggiN*YMa=mv$Fkdc{lwM%G$LISj*(zLAXRg_W&N{lF|8~+(?N!XpGpI_0TZ2ATa{fFh?dus2)H;bP=!!C}JF95QpLkrb|f!7Xv zl&3e%S}_n+qTeH_Vw-cithe9eX!PafeMw0T93Qk$sBAAE;xu-qVkM|SN@8AyyBWjVGDZ!#>auisITBndfOH+{C%O`AMXUtZ`7g6PF z*%(TT#_J5A!UxIq5>+@RR9BEw)M&+T)=l-EpPd}RYJ*4yjbPZQMs$49dX(fnkg4Jh zZQiA+Ith?dQEk?PlOsrsZlEO`fiNpI82sd~A`2RoSJ1!{qNbtSLVdo8iIVWn&kyQ$ zAlYp<6Dm!=6bAhm6+zI3-I?^<@M~-%4#ogQAGmWp)Syy^CPGc39}r!bzSLco(UqEe zlO~8s317o@-9KU`SLoKM8=5uDqiV&@w{w*?>20e_X&-9o-0Z${^y!mzS|h)xEN$Tone`YnzG|m``O?7ZaEd+C_>?*= zO6^9q@`sjPi4cL14}=0?A%mn{ZXSZ|Vs9@B{(h_zX@3pleX%f69_d>xn3^y=OVg$5 z;1`qgMy!>KKQbEjta-8DPAOU>mV}|K+$A8h71t~45q?3Btn;Sdac%M1{zEnCv5C1} zb&QXABFMdE9J^;sU^NwAzj+C(nXFEsQ|oru4m5{ayuH(-CRr}&x;Dn zBF6c`NaIH5qD^?4MqH^#kKA|^>+dl|zj0MEIhKnvvFT`CbBNkozIH4YZL2dM+n2oD z8hBeHV#6V-jybq1JdJm2{Y`3*!zIN?YHAA|8A;h+O(u;d%MEvpW8MV?2csK6cL$ND zVkxUQO&^xh_3dM;r|4VSI%*$fB=N88iQ(U`?5?3g2XFwC#7*d)&1_K!9W5Q4fbMG! zim4YQOSB(0W1pZ!<8-z+jH38JZI*tQu%aA7AU=qIH=^FCu)wGV8=AvXPJ`+XZ2Qx2 zQLYJrNjEz1L!dg+-~qXIHA;*M|NqJn5RqMGydZ6WEE(x@aWVyZ_72#GK(%QHY1JJ* z3Ys8aPa=3*-(f}t<&G8D@Y6+B{@geZQt+|k->G$sC^6tKo=WJRYnA=*yYBig`Qxa; zJ7YX?2g}m3yBm^qw~HH_+9p&;UG*pYRZPZIpC#?zzftLa`jq7aGOVkk zW4mUn6+R5t{-)wZ6zfT^xcmq#!N{VNyM@6@b=%KYAa`eH@q6HGzQk9f14+w{1OEk& ztSRd9QeB?)YN=cE(aNzJiVyTKFx;v3H*!<^C}pCS_i-x!C?D&5xLHbx%kM^JrJ-c( zri6*M{v@vJd`0uw$pEq8N@IPM9M{(1%OaQCev4Gz50>!v>uq@qUGc08_9mi!^7WyQ z{M^S54@=RVMye^zo3@TaHXv;L??*)O)0LGxTveg4!wPK23Cp&b$6r{AN=!HdiqibL zovL>DE9FXCRiF80rsDX>lh#TR9pb4?i>U@3JSDmpkd+~>D&y=x#C%(vq}2Oub2uF` zmz!P)O-X#o=g*UujrV0md6RbUi%HkZEXWndoocewaQ=~8Udj?@GpAodoecAb@B#_ySquy%~_ z`C~~P&!CM&I3G)%)qMah3$3WQ7^qjy?^n4K2mUXro6QR#rBbs|o*~%~6l>jI3V{?` zvXUNvIRGjRvZ_lcC4ZxO2M?qP4oD5fqYBVILDl8#+CRAPFb$?^U*+gleFDyW?P_qY zIx8$2h-#php$;_&QG%%B3km(6;sfAZfBMt$n*#6`3tOp>2Xz->&{E(7bp~ZTL$L$Z zzA=!OH>VqZo&_aN@n}_bQV!jmaCk9d^S^fkz7{%pNn+3Z#5Xz&UF}17%`NYmHbLB& z)|YgR8j7j;zSrz9A||m@yojWaSps*X3Fley&qB7N3CRaL1X~;&d6sJA>C3LRF`Wf@ zr;5jzQqVt>_6yB&Z@DFL|~|#<=ZLVQnSFpRXOnE7ZtEd(@{W9nJKft=bfT|O*G~tDZq281&rg1<%Su8= zaML-lS75SaWZ>nI>(tHO=O?ub5nA2Gp|LZ)5S`p$I$^&&wr$HVLsYVp!*J>)iN@4) zAsQ2%N6TW_dUSTk%5v8+*JLQFJ$#HV?^7a~ zx!lj4sZFJsR9j7Pk)NOFMK~n$#O}8_zZ^p=P%*BH+URnmDJND1SQT(UlZd1Q%WZrp`cK zjCg2-+;0S(D3yG8&mFq-yQ^X;unrcSxDu-+!W_l>^y$p>0hBrI3YolR5=@(q1iP3g z_L1%qz<2-W5m6jeW5dTy*=48}zM?K8{>*PK-uD$E^Uv76QA(Fu!*`y7SkaMgs#QjO zekTkUCk*(Tzc}D}d<#jsp!mTP!@0pXtQJ+`Wb(^a9LPYVYshai{=jnM8r{HeNFJxQb zOx^QCO~!;iM2p4$pp*C0#4PKR>OL5c^L9iPqbkJ)*Z??C`V z8CIeD{s_{G!@VQFCl@Tim0Bjx4{f6r$Qoh2g}@wytFdTEgSdw%9ThtCFA)#WVtB%m7eM6pW1(%+_WFC zeLpBWQq@gF_|VCecV!gnMT+WM((DPia*MS%J~VGjwE7hdpNiD0#NT!iS^8Bmr=DZ_ z`x|qB-E{+}=149BdKI4H_9Th*g8F$Zk(tFD0?`Cny%udVQL&G;6UGjFBC8MX?7#o2 z5L@%9B%k7l)ImH>c0Ih9#P#{*!mmtqF3FLkJ3dxgCy#U{)WVcb1$jPo8#PkO&+G^r z$yeHuvHIX#J;v<4BjR@99AN15!G288EVo0j$M{eX=W}C+TFIDd`osc!!i>W6Pu(F6 z&cBsj??h;s+{Q?bp`%KmBk>qH6C^$Nv0~P~7aD<%(<`&)Q5I^5C=%@pTOo1cS!mKx zujPrHTMsKZxCU$Vj4HXMqa}U0#9_JYEOtZgZv~X&P{k(VO1$*dEE<8}yD9F{1nji$ zUs$lGd>;&L(w1h;PEaQn$Yr6y6#VMwcv$9{Mm&fUudUlonBDebv~qF5$p!^P|V+z?Ir2vAmD~XA076->LlP z=qrS$iu|jdhbq(3rNb)Pw@6f&OpwgDc^b=K@0QmrzRl5)`$<ArNm^m) z-KGy4PCPSdsrSFH)rEXH|Hhg`;3LmO{jk!)cShtK%j8xru2)%DLgE3UPoxr)PEW06 zU1i}tmPtLk7>KHhmX^ip z)oG9ev9rC#tKFSukt-M3uONiM&p@P(E5yKnQ8i&p@!J4gJ&RCrrKhA^2A?ySJ4pDg zNe-rbQ1(Ck+dB4_$OUXoKqWD3usE8p_#E4o^JIqF-+D_buC&s(dayW5&-ozGdiVSV zwiNR1ugc2gMoTSYd2cgWG4s@xnN=Mo8Lge20DdH2X&AGD7jly{#2O1i&1S+R?E!=q zF$M<)!7Qp+z|?p!{nm_KZkEK%^s_>}1ARM|b6LwjE2TCL#5?xJHGAr1>@F#RR9Lm}_Uw-J$ z8X6Z)Ka;T|=!vZ}XWfCH-(effFyCv@ilZBk!QbKn%L&f+D{3; zz0;lBE;(e!N=K#CD`yY?rmFQkdeTkxTO03Jk7Hozr`c)8yCdofRR;QBE^gT51_X-U z&@0E8rZU&3ee#B-t<-?QnhHu!X*=1P%J--7_YuZ@OuP^I^YGtvHL65CEM4F_DV&U@ zy}Xi8iEFZ*;w9R!F_Zqv4LhZcsl28?;3ZawJJ>DJgt{!Lbn+{bIHb}7Cb}y)gO?5t z?o@857Ck~|pP4GfZy~+@v9irWB!_N%Oso9S8%-vuCSl*=Xfy5-J3g`XqRwMtI3t2S_dJ$x|No|>P{RA0=I)Q*r9 z#04E3Dm5tQRbbd6z4jx~Pbdb!eB1HUCZI{#4$CIFw-wcfh8}NbCRXYU%JF3yqbmzb z{UQ;1@QXXjIyxbp^R!}ON#MsRFle|86jj~MbRj2)?XTAF#uWbjI`1=-gAKfpsNR1w z0udP>{|I{aP%#P_WoUadFNKhaes&)VX^jmXVfE)_;EjPs^SuJeqNr49^0|EMR|dRs z9=!X68ixURauWVx&&$5zx#I1d3%{Riz>nEqa9MRB%;e0&_Wp9+ewVu8qj1>@vbvI! zU$mU~iJ2-jVVW&E>4m(yJr$FRIQF?AMtyfyjNH!_swX;<_?15jjW0^kS3_Ie) zwuQ8=@FjkzcUlm9S8*@cq-3MH92}Qv(e>> zD_5ue0CYA|G~?RmC)K!oqn~Cfp&B9r|F@p zI?(_n(c^6?35lYwKG+FL^t`JE-6lp!#)FgQtG%y63)kdc{Wl9!YcyqlVa1Ua%1|Er z_VI{~fDIdDn_vqo4zsbCgwTGj#?gd_DqqMP=>s$*!+4?zWef^2d^qo3v#dbW!3jb0Y}vM{`k1u_CS

dOYhvjR1 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

$R)J5dIUmuA&W>;q(Jr^gT4*YV7INI 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

B> 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�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 SharePoint Embedded (SPE) is a cloud-based, API-only file and document management platform built on Microsoft 365. Developers embed Office collaboration, Microsoft Purview compliance, and Copilot capabilities into their own apps while content stays inside each customer's Microsoft 365 tenant. This index is organized by task. Each link points to the single best page for that task. + +## Overview +- [What is SharePoint Embedded?](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/overview): Definition, key concepts (tenant partition, containers), and routing to the right task area. +- [Scenarios and use cases](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/scenarios-and-use-cases): When to use SPE; enterprise and ISV examples. +- [What's new](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/whats-new): Recent releases, preview features, and breaking changes. + +## Plan a solution (architect, IT decision maker) +- [Understand app and tenant architecture](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/plan/app-tenant-architecture): Developer vs consuming tenant, app ownership, container types, where files live. +- [Choose an app model: single-tenant or multitenant](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/plan/choose-app-model): Enterprise LOB vs ISV; who owns, installs, and pays. +- [Understand container types and containers](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/plan/container-types-and-containers): The container type/container model and ownership. +- [Choose a billing model](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/plan/choose-billing-model): Standard vs pass-through (consuming-tenant) billing. +- [Plan authentication and permissions](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/plan/authentication-permissions): Permission models, admin consent, app-only vs delegated. +- [Plan security, compliance, and governance](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/plan/security-compliance-governance): Purview, DLP, retention, sensitivity labels, conditional access. +- [Understand limits and calling patterns](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/plan/limits-calling-patterns): Service limits, throttling, batching, retry guidance. + +## Build an app (developer) +- [Quickstart: Build your first app with VS Code](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/quickstart-vscode): Install the extension, create a trial container type, run the sample app. +- [Create and configure a container type](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/create-container-type): Create trial/production container types and the owning Entra app. +- [Register application permissions](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/register-application-permissions): Register container type permissions and grant consent. +- [Configure authentication and authorization](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/configure-authentication-authorization): Entra app, tokens, app-only and delegated flows. +- [Create and manage containers](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/create-manage-containers): Create, list, update, delete, recycle, and restore containers. +- [Upload, download, and manage files](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/manage-files): File and folder operations via Microsoft Graph. +- [Open Office files from your app](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/open-office-files): Office web/desktop experiences and launch behavior. +- [Preview files in your app](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/preview-files): File preview UX and preview links. +- [Search containers and files](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/search-containers-files): Query content with security trimming and paging. +- [Store and query container metadata](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/container-metadata): Define, set, and filter custom metadata. +- [Share files and manage permissions](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/share-files-manage-permissions): Grant/revoke access and permission inheritance. +- [Respond to file and container changes with webhooks](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/respond-to-changes-webhooks): Subscribe to and process change notifications. +- [Archive and restore containers](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/archive-restore-containers): Container archival lifecycle and cost. +- [Add real-time collaboration with Fluid Framework](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/fluid-framework): Live collaborative experiences over SharePoint Embedded. +- [Add Microsoft 365 Copilot and agent experiences](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/agent-experiences): Agent patterns and knowledge source overview. +- [Set up SharePoint Embedded as a Foundry knowledge source](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/sharepoint-embedded-knowledge-source): Configure Microsoft Foundry Agent Service to retrieve SharePoint Embedded content. +- [Migrate from Azure Blob Storage](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/build/migrate-azure-blob-storage): Move blobs into containers with metadata. + +## Publish and onboard customers (ISV, developer) +- [Prepare your app for customer installation](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/publish/prepare-customer-installation): Package and configure a multitenant app for customers. +- [Choose a billing model for your app](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/publish/choose-app-billing-model): Billing choice and its effect on onboarding. +- [Guide customers through tenant setup](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/publish/customer-tenant-setup-guide): Customer prerequisites, consent, and billing setup. +- [Validate customer app installation](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/publish/validate-customer-installation): Confirm registration, permissions, and billing. + +## Install and manage apps (administrator) +- [Admin overview](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/admin-overview): Admin roles and where to manage SharePoint Embedded. +- [Create apps in SharePoint admin center](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/create-apps-sharepoint-admin-center): Create SharePoint Embedded apps from the admin center. +- [Create apps with PowerShell](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/create-apps-powershell): Create SharePoint Embedded apps with SharePoint PowerShell. +- [Install a SharePoint Embedded app](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/install-sharepoint-embedded-app): Register/install an app in your tenant. +- [Grant admin consent and permissions](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/grant-admin-consent-permissions): Review and grant requested permissions. +- [Set up billing in Microsoft 365 admin center](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/setup-billing-m365-admin-center): Configure billing for a consuming tenant. +- [Manage containers in SharePoint admin center](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/manage-containers-sharepoint-admin-center): View and manage containers in the UI. +- [Manage containers with PowerShell](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/manage-containers-powershell): Script container management. +- [Monitor usage, billing, and cost](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/monitor-usage-billing-cost): Track usage and cost drivers. +- [Review audit events](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/review-audit-events): Find and interpret SharePoint Embedded audit events. +- [Apply security and compliance controls](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/admin/apply-security-compliance-controls): Apply Purview retention, DLP, labels, and eDiscovery. + +## Reference +- [Billing meters](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/reference/billing-meters): Storage, transaction, egress, and agent meters. +- [Audit events](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/reference/audit-events): SharePoint Embedded audit event names and properties. +- [PowerShell reference](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/reference/powershell): SharePoint Embedded admin cmdlets. +- [Microsoft Graph API reference links](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/reference/graph-api-links): Graph fileStorageContainer and related APIs. +- [Troubleshooting](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/reference/troubleshooting): Common setup, auth, billing, and runtime issues. +- [Glossary](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/reference/glossary): SPE terms and definitions. + +## Optional +- [Microsoft Graph file storage container API](https://learn.microsoft.com/en-us/graph/api/resources/filestoragecontainer): Underlying Graph API surface for SharePoint Embedded. +- [Learning module: SharePoint Embedded overview and configuration](https://learn.microsoft.com/en-us/training/modules/sharepoint-embedded-setup): Guided training. +- [Learning module: Build SharePoint Embedded applications](https://learn.microsoft.com/en-us/training/modules/sharepoint-embedded-create-app): Guided training. diff --git a/docs/embedded/overview.md b/docs/embedded/overview.md index 9a4741024e..58d2761483 100644 --- a/docs/embedded/overview.md +++ b/docs/embedded/overview.md @@ -1,72 +1,81 @@ --- title: SharePoint Embedded Overview -description: Microsoft SharePoint Embedded is a cloud-based file and document management system suitable for use in any application. SharePoint Embedded is a new API-only solution that enables app developers to harness the power of the Microsoft 365 file and document storage platform for any app, and is suitable for enterprises building line-of-business applications and ISVs building multitenant applications. -ms.date: 08/17/2024 +description: Microsoft SharePoint Embedded is an API-only file and document management platform built on Microsoft 365. Start here and route to the right task. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan ms.localizationpriority: high --- -# Overview of SharePoint Embedded +# What is SharePoint Embedded? -Microsoft SharePoint Embedded is a cloud-based file and document management system suitable for use in any application. SharePoint Embedded is a new API-only solution that enables app developers to harness the power of the Microsoft 365 file and document storage platform for any app, and is suitable for enterprises building line-of-business applications and ISVs building multitenant applications. +Microsoft SharePoint Embedded is a cloud-based, API-only file and document management system you can use in any application. It lets app developers harness the Microsoft 365 file and document storage platform, and is suitable for enterprises building line-of-business applications and ISVs building multitenant applications. -SharePoint Embedded allows you to integrate advanced Microsoft 365 features into your apps including full-featured collaborative functions from Office, Purview's security and compliance tools, and Copilot capabilities. +SharePoint Embedded has no standalone end-user UI and no no-code option. You access it programmatically through Microsoft Graph, so using SharePoint Embedded always involves building or deploying an application. -> [!IMPORTANT] -> Help us shape the future of SharePoint Embedded! -> Take our [quick survey](https://forms.microsoft.com/r/1YpGd2pAUS) and share your experience! - -## App documents stay in their Microsoft 365 tenant +SharePoint Embedded brings advanced Microsoft 365 capabilities into your app, including Office collaboration, Microsoft Purview security and compliance, and Copilot. -When a consumer uses a SharePoint Embedded application in their Microsoft 365 tenant, SharePoint Embedded creates another partition within their tenant. This storage partition doesn't have a user experience and the documents in the partition are only accessible via APIs. This means that all documents will be accessible to the developer’s application, but the documents will only reside in the consumer’s Microsoft 365 tenant. Within this new storage partition inside of a Microsoft 365 tenant, a SharePoint Embedded application can create many "File Storage Containers" for storing content. - -## Introducing File Storage Containers +> [!IMPORTANT] +> Help us shape the future of SharePoint Embedded! Take our [quick survey](https://forms.microsoft.com/r/1YpGd2pAUS) and share your thoughts. -SharePoint Embedded applications use Microsoft Graph APIs to store files and documents in a new entity called a "File Storage Container” or Container for short.  If you’re an ISV, your app will create these containers in your customer’s Microsoft 365 tenant, and if you’re an enterprise, your app will create these containers in your own tenant. Each container provides a place to store files - you can think of them as similar to an API-only Document Library in SharePoint, but with some slight differences. Your app can create many of these containers inside each tenant that uses your app, and each container can be granted permissions separately storing many files with multiple terabytes of content. + -SharePoint Embedded containers are dedicated to and accessible by just your app, so the files and documents your app depends on are isolated and secure within that tenant boundary. +## Choose your path -## App-managed content experiences +This page is a router. Pick the row that matches what you're trying to do. -By default, the content stored within a Microsoft 365 tenant by a SharePoint Embedded application is only accessible through that owning application. Applications using SharePoint Embedded also provide the user experience layer for accessing and managing content, using some of the rich content capabilities that Microsoft 365 offers such as: +> [!TIP] +> **Not sure which path?** Ask one question: *do you write code, or manage a tenant?* +> **Developers** write and deploy applications that call SharePoint Embedded APIs — start with **Build an app**. +> **Administrators** install, consent to, and manage SharePoint Embedded apps inside a Microsoft 365 tenant — start with **Install or manage apps**. -- Core content management features like support for any file type and folder structure, searching, sharing, automatic versioning, recycle-bin, and more -- Collaboration features like view, edit, and co-authoring Office Word, Excel, and PowerPoint documents in Office Web and Desktop +| I want to… | Start here | +|---|---| +| **Understand SharePoint Embedded and decide if it fits** | [Scenarios and use cases](scenarios-and-use-cases.md) · keep reading below | +| **Plan a solution** (architect, IT decision maker) | [Plan a SharePoint Embedded solution](plan/app-tenant-architecture.md) | +| **Build an app** (developer) | [Quickstart: build your first app with VS Code](build/quickstart-vscode.md) | +| **Ship my app to customers** (ISV / developer) | [Publish and onboard customers](publish/prepare-customer-installation.md) | +| **Install or manage apps in my tenant** (admin) | [Install and manage apps](admin/admin-overview.md) | +| **Govern and secure content** (compliance admin) | [Apply security and compliance controls](admin/apply-security-compliance-controls.md) | +| **Look something up** | [Reference](reference/glossary.md) · [Graph API](/graph/api/resources/filestoragecontainer) | -SharePoint Embedded is used by several types of applications: +## Key concepts in 60 seconds -- Certain Microsoft products use SharePoint Embedded to manage customer content, such as Loop and Designer. -- ISVs can use SharePoint Embedded in their apps to manage content within their customer’s Microsoft 365 tenant -- Enterprises can use SharePoint Embedded to manage and store content within their own Microsoft 365 tenant, but outside of regular Microsoft 365 entitlements +### App documents stay in the customer's Microsoft 365 tenant -## Consumer Microsoft 365 settings apply to app documents +When a customer uses a SharePoint Embedded application, SharePoint Embedded creates a dedicated storage partition inside that customer's Microsoft 365 tenant. The partition has no user experience of its own — its documents are reachable only through Microsoft Graph APIs. Content is accessible to the developer's application, but it physically resides in the customer's tenant. -All documents stored in the SharePoint partition created by the SharePoint Embedded app are in the consumer’s Microsoft 365 tenant and therefore are subject to the consumer’s Microsoft 365 tenant settings. +### File Storage Containers -This includes settings from Microsoft Purview compliance, risk, and security settings, documents can be opened from Office clients, and customers can use the Office web clients to view and collaborate on the documents. Choosing applications that are built on SharePoint Embedded provides the app consumer Microsoft Purview security and compliance capabilities on that app content, such as: +SharePoint Embedded apps store files in an entity called a **File Storage Container** (or *container*). Think of a container as an API-only document library. Your app can create many containers in each tenant that uses it, and each container can be permissioned separately and hold terabytes of content. Containers are dedicated to — and accessible only by — your app, keeping your data isolated within the tenant boundary. -- eDiscovery -- Auditing -- Data loss prevention (DLP) -- Retention policies, sensitivity labels, conditional access +To learn how containers and container types relate, see [Understand container types and containers](plan/container-types-and-containers.md). -## Understanding the costs and billing for SharePoint Embedded content +### App-managed content experiences -Microsoft 365 customers have different entitlements related to storage, usage, and features depending on the licenses the customer has purchased. +By default, content stored by a SharePoint Embedded app is accessible only through that owning app, which also provides the user experience for it. You can light up rich Microsoft 365 capabilities, including: -The partition created in the consumer’s Microsoft 365 tenant by a SharePoint Embedded app doesn’t count towards other Microsoft 365 entitlements including the total amount of Microsoft SharePoint storage that can be used by your organization. Instead, the partition in the consumer’s Microsoft 365 tenant by the SharePoint Embedded app are billed separately through an Azure subscription on a pay-as-you-go metered consumption model that’s based on total storage in active and archived state and the number of API calls. +- Core content management — any file type, folders, search, sharing, versioning, recycle bin. +- Office collaboration — view, edit, and co-author Word, Excel, and PowerPoint on the web and desktop. +- Low-code integration — the [SharePoint Embedded connector](/connectors/sharepointembedded/) for [Power Platform](/power-platform/) (generally available February 2026). -> [!NOTE] -> Learn more about billing for SharePoint Embedded, see [Billing Meters](./administration/billing/meters.md). +SharePoint Embedded is used by Microsoft products (such as Loop and Designer), by ISVs embedding content management in their apps, and by enterprises storing content outside their regular Microsoft 365 entitlements. -## Get Started with SharePoint Embedded +### Compliance and billing follow the tenant -[Review the prerequisites](./administration/billing/billing.md) +Because content lives in the customer's Microsoft 365 tenant, it's subject to that tenant's settings — including Microsoft Purview compliance (eDiscovery, auditing, DLP, retention, sensitivity labels, conditional access). The SharePoint Embedded partition doesn't count against Microsoft 365 storage entitlements; it's billed separately through an Azure subscription on a pay-as-you-go, metered model based on storage and API usage. See [Choose a billing model](plan/choose-billing-model.md) and [Billing meters](reference/billing-meters.md). -Create a "File Storage Container" in 15 minutes or less: +### Availability -- [Free trial: SharePoint Embedded for Visual Studio Code](./getting-started/spembedded-for-vscode.md) +SharePoint Embedded is available in the Microsoft 365 commercial cloud, in [Microsoft 365 GCC](/office365/servicedescriptions/office-365-platform-service-description/office-365-us-government/gcc) (November 2025, not yet GCC High or DoD), and in [Microsoft 365 operated by 21Vianet](/office365/servicedescriptions/office-365-platform-service-description/microsoft-365-operated-by-21vianet) for customers in China (February 2026). See [Microsoft Graph national cloud deployments](/graph/deployments). -Follow manual set-up on SharePoint Embedded from the following Microsoft Learning modules: +## Next steps -- [Microsoft Learning: SharePoint Embedded - overview & configuration](/training/modules/sharepoint-embedded-setup) -- [Microsoft Learning: SharePoint Embedded - building applications](/training/modules/sharepoint-embedded-create-app) +- New to SharePoint Embedded? Read [Scenarios and use cases](scenarios-and-use-cases.md), then [Plan a solution](plan/app-tenant-architecture.md). +- Ready to build? Jump to the [VS Code quickstart](build/quickstart-vscode.md). +- Administering a tenant? Start at the [Admin overview](admin/admin-overview.md). +- See [What's new](whats-new.md) for the latest releases. diff --git a/docs/embedded/plan/app-tenant-architecture.md b/docs/embedded/plan/app-tenant-architecture.md new file mode 100644 index 0000000000..541954a83b --- /dev/null +++ b/docs/embedded/plan/app-tenant-architecture.md @@ -0,0 +1,221 @@ +--- +title: Understand App and Tenant Architecture +description: Plan how SharePoint Embedded apps, tenants, container types, and containers relate across owning and consuming tenants. +ms.date: 07/10/2026 +ms.reviewer: dilucesr +ms.localizationpriority: high +--- + +# Understand App and Tenant Architecture + +**Applies to:** Architect + + + +Use this article to map the core SharePoint Embedded architecture before you choose an app model or create a container type. + +SharePoint Embedded is API-only storage built on Microsoft 365. Your application provides the user experience. Files and documents are stored in containers and accessed through Microsoft Graph. + +## Architecture at a glance + +SharePoint Embedded separates three concepts: + +- The application that calls Microsoft Graph. +- The container type that defines application access, behavior, and billing accountability. +- The containers and files that live inside a Microsoft 365 tenant boundary. + +All files and documents in SharePoint Embedded are stored in containers. + +All containers and container content are created and stored within a Microsoft 365 tenant. + +Applications create, manage, and interact with containers and container content through Microsoft Graph. + +![Diagram of the SharePoint Embedded architecture. A SharePoint Embedded application calls Microsoft Graph, which connects to storage inside a Microsoft 365 tenant. Inside the tenant, a container type groups a stack of containers, and each container holds files and documents.](../images/SPEArch.png) + +*Figure 1: The application calls Microsoft Graph, and Graph reads and writes files in containers that live inside the Microsoft 365 tenant boundary.* + +## Developer tenant and consuming tenant + +SharePoint Embedded uses two tenant roles. + +| Tenant role | Meaning | Typical responsibility | +| --- | --- | --- | +| Owning tenant | The Microsoft Entra ID tenant where a container type is created. | Own the Microsoft Entra ID app registration and manage the container type. | +| Consuming tenant | The Microsoft Entra ID tenant where a container type is used. | Host containers and content for users of the application. | + +The same Microsoft Entra ID tenant can be both the owning tenant and the consuming tenant for a given container type. + +For example, an enterprise line-of-business (LOB) app can be owned by the enterprise tenant and used in that same tenant. + +An independent software vendor (ISV) app can be owned by the ISV tenant and used in many different customer tenants. + +> [!IMPORTANT] +> Containers and content are stored in the consuming tenant. They don't move into the developer or ISV tenant just because the app is owned there. + +## App ownership + +A SharePoint Embedded application is a Microsoft Entra ID application registration. + +As an owning or guest application to a container type, the app has access to containers of that container type. + +SharePoint Embedded requires a 1:1 relationship between an owning application and a container type. + +This means: + +- One owning app owns only one container type. +- A container type is owned by exactly one app. +- The owning app developer is responsible for creating and managing that container type. +- The owning app defines the access controls for guest apps to containers of that type. + +> [!NOTE] +> Other applications can be granted access to the same container type, but the container type still has only one owning application. + +## Container types + +A container type is a SharePoint Embedded resource. + +It defines the relationship, access privileges, and billing accountability between an application and a set of containers. + +It also defines selected behaviors for all containers of that type. + +The container type is represented on each container as an immutable property. + +Use a container type to answer these architecture questions: + +- Which app owns this family of containers? +- Which tenant is accountable for billing? +- Which behavior settings apply to all containers of this type? + +For more detail, see [Understand container types and containers](../plan/container-types-and-containers.md). + +## Container type registration resource + +A container type registration is also a SharePoint Embedded resource. + +It represents the installation of a container type in a specific consuming tenant. It also defines selected behaviors for all containers of that type in that specific consuming tenant. + +Use a container type registration to answer these architecture questions: + +- Which apps can access containers of this type in a consuming tenant? +- Which tenant can create containers of this type? +- Which behavior settings apply to all containers of this type in a consuming tenant? + +For more detail, see [Understand container types and containers](../plan/container-types-and-containers.md). + +## Containers + +A container is the basic storage unit in SharePoint Embedded. + +A container also defines a security and compliance boundary. + +Applications can create many containers for a container type inside each consuming tenant. + +Each container provides a place to store files. You can think of it as similar to an API-only document library in SharePoint Online, with differences specific to SharePoint Embedded. + +Containers can store many files and multiple terabytes of content, subject to SharePoint Embedded limits. + +For current limits, see [Understand limits and calling patterns](../plan/limits-calling-patterns.md). + +## Where files live + +When a consuming tenant uses a SharePoint Embedded app, SharePoint Embedded creates a storage partition in that Microsoft 365 tenant. + +The partition doesn't have a SharePoint Online user experience. + +Documents in the partition are accessible through APIs and through app-provided content experiences. + +Files remain inside the consumer's Microsoft 365 tenant boundary. + +The consuming tenant's Microsoft 365 settings apply to app documents, including supported Microsoft Purview security and compliance policies. + +For governance planning, see [Plan security, compliance, and governance](../plan/security-compliance-governance.md). + +## Container type registrations + +An owning app can't interact with containers in a consuming tenant until the container type is registered in that consuming tenant. + +Container type registration is performed by the owning application. + +The registration specifies the permissions that the owning app and guest apps have on containers of that container type in the consuming tenant. + +For full registration requirements, see [Register file storage container type application permissions](../build/register-application-permissions.md). + +## Access relationships + +An application's access to containers and content is determined by permissions configured during container type registration. + +The owning application receives permissions for its container type when the container type is created. However, it may only interact with containers of its container type after registration in a consuming tenant. + +The following diagram shows the dedicated pattern. Three applications are deployed in one tenant: two independent software vendor (ISV) apps (App 1 and App 2) and one line-of-business (LOB) app (App 3). Each app owns a separate container type and can access only the stack of containers for the container type it owns. + +![Diagram of the dedicated access pattern. Three applications (App 1, App 2, and App 3) each own a separate container type, and each app can access only its own stack of containers. No app can reach another app's containers.](../images/SPECTDedicated.png) + +*Figure 2: Dedicated access. Each application owns one container type and reaches only its own containers.* + +SharePoint Embedded also allows applications to access containers of container types they don't own when those permissions are granted in the container type registration. + +The next diagram shows the shared pattern. App 1 and App 2 both have access to the same container type, so both apps can access the same stack of containers. + +![Diagram of the shared access pattern. App 1 and App 2 both connect to a single container type and its stack of containers. App 1 owns the container type, and App 2 is granted guest access to the same container type.](../images/SPECTShared.png) + +*Figure 3: Shared access. One app owns the container type, and another app is granted access to the same containers.* + +Plan the access model with both application permissions and user container permissions. + +For full details, see [Plan authentication and permissions](../plan/authentication-permissions.md). + +## Common architecture patterns + +### Enterprise LOB app + +In an enterprise LOB app: + +- The enterprise tenant usually owns the app registration. +- The enterprise tenant creates the container type. +- The same enterprise tenant consumes the app. +- Containers and files are stored in the enterprise tenant. +- Enterprise admins manage billing, compliance, and tenant settings. + +Use this model when the app is built for internal use in one organization. + +### ISV multitenant app + +In an ISV app: + +- The ISV tenant owns the app registration. +- The ISV tenant creates the container type. +- Customer tenants consume the app. +- Containers and files are stored in each customer tenant. +- Customer tenant settings apply to that customer's content. + +Use this model when one app is used by multiple customer tenants. + +The following diagram shows a worked example. Contoso is an ISV that built a human-resources app on SharePoint Embedded and deployed it into Fabrikam, an auditing firm. Fabrikam also built its own LOB auditing app. Each app has its own container type: Contoso owns the HR app and its container type, and Fabrikam owns the auditing app and its container type. Fabrikam is the consuming tenant for both apps, so both stacks of containers are stored in Fabrikam's Microsoft 365 tenant. Fabrikam owns all the data stored in its Microsoft 365 tenant, including the HR App data. + +![Diagram of a worked ISV example. Contoso's HR application and its container type sit in the Contoso owning tenant. Both Contoso's HR app and Fabrikam's LOB auditing app operate in the Fabrikam consuming tenant, where each app's container stack is stored separately.](../images/apparchexample.png) + +*Figure 4: An ISV app (Contoso) and an LOB app (Fabrikam) each own a container type, and both store their containers in the same consuming tenant (Fabrikam).* + +For model selection, see [Choose an app model: single-tenant or multitenant](../plan/choose-app-model.md). + +## Planning checklist + +- Identify the owning tenant. +- Identify each consuming tenant. +- Confirm where the Microsoft Entra ID app registration lives. +- Confirm which app registration owns the container type. +- Decide whether other guest apps need access. +- Decide where containers are created. +- Confirm that content must remain in the consuming tenant. +- Plan container type registration for each consuming tenant. +- Plan billing for the container type. +- Plan authentication and admin consent. +- Plan security and compliance responsibilities. + +## Next steps +Choose the app model that matches your tenant and customer relationship: [Choose an app model: single-tenant or multitenant](../plan/choose-app-model.md). diff --git a/docs/embedded/plan/authentication-permissions.md b/docs/embedded/plan/authentication-permissions.md new file mode 100644 index 0000000000..b4a8960054 --- /dev/null +++ b/docs/embedded/plan/authentication-permissions.md @@ -0,0 +1,227 @@ +--- +title: Plan Authentication and Permissions +description: Plan SharePoint Embedded authentication, admin consent, delegated access, app-only access, and container permissions. +ms.date: 07/10/2026 +ms.reviewer: mawin +ms.localizationpriority: high +--- + +# Plan Authentication and Permissions + +**Applies to:** Developer + + + +Use this article to plan authentication and authorization for a SharePoint Embedded application. + +SharePoint Embedded applications use Microsoft Graph to access containers and content. + +For the full authentication reference, see [SharePoint Embedded authentication and authorization](../build/configure-authentication-authorization.md). + +## Core principles + +SharePoint Embedded authentication and authorization follow these principles: + +- Applications interact with SharePoint Embedded through Microsoft Graph. +- Applications need container type application permissions to access containers of that container type. +- Applications can only access containers that the user is a member of when using access on behalf of a user. +- Applications can access all containers enabled by their container type application permissions when using access without a user. +- Applications should use access on behalf of users whenever possible to enhance security and accountability. + +## Prerequisites + +Plan for: + +- A Microsoft Entra ID application registration. +- A Microsoft 365 subscription in the Microsoft Entra ID tenant. +- Microsoft Graph permissions for SharePoint Embedded operations. +- Container type application permissions granted through container type registration. +- Admin consent in the consuming tenant. + +## Permission layers + +SharePoint Embedded access has multiple layers. + +| Layer | Purpose | +| --- | --- | +| Microsoft Graph permission | Allows the app to call SharePoint Embedded endpoints. | +| Container type application permission | Allows the app to access containers of a specific container type. | +| Container permission | Determines what a user can do in a specific container for delegated access. | + +> [!IMPORTANT] +> Microsoft Graph permissions alone don't grant access to containers. The application must also be granted permission to a container type. + +## Delegated access + +Delegated access means the application acts on behalf of a user. + +SharePoint Embedded operations on behalf of a user require Microsoft Graph `FileStorageContainer.Selected` delegated permission. + +This permission requires admin consent on the consuming tenant before any user from that tenant can consent to it. + +The user must also have container permissions. + +The application's effective permissions are the intersection of: + +- The application permissions granted for the container type. +- The user's permissions on the container. + +Use delegated access whenever possible. + +Delegated access improves auditability because actions can be associated with the user. + +## App-only access + +App-only access means the application acts without a user. + +SharePoint Embedded operations without a user require Microsoft Graph `FileStorageContainer.Selected` application permission. + +This permission requires admin consent on the consuming tenant. + +With app-only access, the app can access all containers enabled by its container type application permissions. + +Use app-only access for background operations that can't be performed on behalf of a user. + +Apply least privilege when granting container type application permissions. + +## Admin consent + +An administrator on the consuming tenant must consent to the application's permission request. + +Admin consent is required for the `FileStorageContainer.Selected` permission. + +Container type registration also requires consent for the owning application to act in the consuming tenant. + +For container type registration, see [Register file storage container type application permissions](../build/register-application-permissions.md). + +## Container type permissions (Microsoft Graph) + +Container type creation, management, and registration are now Microsoft Graph operations. Plan for these permissions: + +| Permission | Purpose | Tenant | +| --- | --- | --- | +| `FileStorageContainerType.Manage.All` | Create and manage container types on the owning tenant. | Owning only | +| `FileStorageContainerTypeReg.Selected` | Register the container type on consuming tenants. | Consuming | +| `FileStorageContainer.Selected` | Access containers of the container type on consuming tenants. | Consuming | + +`FileStorageContainerType.Manage.All` is a **delegated** permission and **doesn't require admin consent**. Any non-guest user in the owning tenant can consent to it, use it to create a container type, and is then automatically assigned as an [owner of that container type](#container-type-owners). (Before June 2026 this required the SharePoint Embedded Administrator or Global Administrator role.) + +> [!IMPORTANT] +> `FileStorageContainerType.Manage.All` is only needed on the **owning** tenant to create the container type. Remove it from your application manifest before distributing to consuming tenants so customers aren't asked for excessive permissions. On consuming tenants request only `FileStorageContainerTypeReg.Selected` and `FileStorageContainer.Selected`. + +## Container type application permissions + +Container type application permissions are granted by the owner application through container type registration. + +These permissions define what an application can do against containers of the container type. + +Container type application permissions include: + +- `None` +- `ReadContent` +- `WriteContent` +- `Create` +- `Delete` +- `Read` +- `Write` +- `EnumeratePermissions` +- `AddPermissions` +- `UpdatePermissions` +- `DeletePermissions` +- `DeleteOwnPermissions` +- `ManagePermissions` +- `ManageContent` +- `Full` + +Grant only the permissions the application needs. + +For example, don't grant `Full` to a background guest app if it only needs read access for backup or analysis. + +## Container permissions + +Container permissions apply to users. + +They apply only to access on behalf of a user. + +Any user accessing a container must be a member of the container. + +Container membership grants user permissions for that container. + +SharePoint Embedded supports these container roles: + +| Role | Summary | +| --- | --- | +| Reader | Read properties and contents of the container. | +| Writer | Reader permissions plus create, update, and delete content and update applicable container properties. | +| Manager | Writer permissions plus manage membership of the container. | +| Owner | Manager permissions plus delete containers. | + +When a user creates a new container through delegated calls, that user is automatically assigned the Owner role. + +## Container type owners + +Container type owners are distinct from container owners. They govern the container type itself, in the **owning** tenant. + +- **Automatic assignment**: The user who creates a container type is automatically assigned as an owner. +- **Add or remove owners**: Use the container type `permissions` relationship (`POST`/`DELETE /storage/fileStorage/containerTypes/{id}/permissions`, beta) to manage up to **three** owners per container type. +- **Capabilities**: With `FileStorageContainerType.Manage.All` in delegated mode, owners can create, read, update, and delete the container type they own, manage its owners, and create containers of that type (delegated calls only). +- **Restrictions**: External identities (guest users) can't be container type owners. Owner information exists **only** in the owning tenant and isn't propagated to consuming tenants on registration. +- **Effective access**: Owner capabilities are user permissions; effective access is the intersection of the app's Graph permissions and the owner role. + +## Container type registration implications + +For the owning application to act on a consuming tenant: + +- The owning app must have a service principal installed on the consuming tenant. +- The owning app must be granted admin consent to perform container type registration. +- Only the owning application of the container type can invoke the registration API in the consuming tenant. + +The registration API specifies permissions for the owning app and any guest apps. + +The last successful registration API call determines the settings used in the consuming tenant. + +## Exceptional access patterns + +Plan for operations that don't follow the normal Microsoft Graph authorization pattern. + +Exceptional access patterns include: + +- Container type management on owning tenants through Microsoft Graph. +- Container type registration on consuming tenants through Microsoft Graph (`FileStorageContainerTypeReg.Selected`). +- Administrative container operations that require `FileStorageContainer.Manage.All` and a SharePoint Embedded Administrator or Global Administrator signed-in user. +- Microsoft Search scenarios that require additional permissions during preview. +- Operations that currently require a user license. + +Review these before designing privileged or search-heavy features. + +## Security considerations + +- Prefer delegated access for user-driven operations. +- Use app-only access only when needed for service operations. +- Grant least privilege at the container type level. +- Grant least privilege at the container membership level. +- Require admin consent in the correct tenant. +- Treat registration as part of customer onboarding. +- Avoid broad guest app access unless the scenario requires it. +- Review audit and compliance implications with your tenant admins. + +## Planning checklist + +- Register the Microsoft Entra ID application. +- Decide which operations use delegated access. +- Decide which operations use app-only access. +- Request Microsoft Graph `FileStorageContainer.Selected` permissions. +- Request Microsoft Graph `FileStorageContainerType.Manage.All` (owning tenant) and `FileStorageContainerTypeReg.Selected` (consuming tenants) for container type creation and registration. +- Plan admin consent in each consuming tenant. +- Define container type application permissions. +- Define user container roles. +- Identify any guest apps and their permissions. +- Review exceptional access patterns. + +## Next steps +Review scale and performance constraints: [Understand limits and calling patterns](../plan/limits-calling-patterns.md). diff --git a/docs/embedded/plan/choose-app-model.md b/docs/embedded/plan/choose-app-model.md new file mode 100644 index 0000000000..dacbeee504 --- /dev/null +++ b/docs/embedded/plan/choose-app-model.md @@ -0,0 +1,193 @@ +--- +title: "Choose an App Model: Single-Tenant or Multitenant" +description: Compare single-tenant and multitenant SharePoint Embedded app models before you create container types and containers. +ms.date: 06/25/2026 +ms.reviewer: mawin +ms.localizationpriority: high +--- + +# Choose an App Model: Single-Tenant or Multitenant + +**Applies to:** Architect + + + +Use this article to choose between an enterprise line-of-business (LOB) model and an ISV multitenant model for SharePoint Embedded. + +The app model determines who owns the app, who installs it, where containers are created, who pays, and which admins must consent or configure billing. + +For architecture details, see [Understand app and tenant architecture](../plan/app-tenant-architecture.md). + +## Decision summary + +| Requirement | Choose single-tenant LOB | Choose multitenant ISV | +| --- | --- | --- | +| App is built for one organization | Yes | No | +| App is sold or provided to multiple customer tenants | No | Yes | +| Owning tenant and consuming tenant are usually the same | Yes | No | +| Customer tenants host their own containers and files | Not usually | Yes | +| App owner pays for all usage by default | Often | Depends on billing model | +| Customer tenant admin must onboard the app | Sometimes | Yes | + +Both models use the same SharePoint Embedded primitives: + +- Microsoft Entra ID application registration. +- Container type. +- Container type registration. +- Containers. +- Microsoft Graph access. +- Pay-as-you-go billing meters. + +## Enterprise LOB model + +Use the enterprise LOB model when an organization builds an app for internal users. + +In this model: + +- The enterprise owns or develops the app. +- The app registration is in the enterprise tenant. +- The enterprise tenant creates the container type. +- The enterprise tenant is also the consuming tenant. +- Containers are created in the enterprise Microsoft 365 tenant. +- Files remain in the enterprise tenant boundary. +- Enterprise tenant settings apply to the content. + +This model is usually single-tenant because the same tenant owns and consumes the application. + +> [!NOTE] +> The same Microsoft Entra ID tenant can be both the owning tenant and the consuming tenant for a container type. + +## Multitenant ISV model + +Use the multitenant ISV model when an ISV builds one app for multiple customer tenants. + +In this model: + +- The ISV owns or develops the app. +- The ISV tenant usually owns the app registration. +- The ISV tenant creates the container type. +- Each customer is a consuming tenant. +- Containers are created in each customer Microsoft 365 tenant. +- Files remain in the customer tenant boundary. +- Customer Microsoft 365 settings apply to that customer's content. + +The ISV app provides the user experience and calls Microsoft Graph. Customer content stays with the consuming tenant. + +## Who owns the app + +App ownership is tied to the Microsoft Entra ID application registration and the container type. + +Every container type has one owning application. + +SharePoint Embedded requires a 1:1 relationship between an owning app and a container type. + +For an LOB app, the enterprise owns both. + +For an ISV app, the ISV owns both. + +## Who installs or onboards the app + +In a single-tenant LOB model, admins in the same tenant can create the container type, grant consent, and configure billing. + +In a multitenant ISV model, customer tenant admins must onboard the app for their tenant. + +The owning app must have a service principal in the consuming tenant and must receive admin consent to perform container type registration. + +For the registration flow, see [Register file storage container type application permissions](../build/register-application-permissions.md). + +## Where containers are created + +Containers are created in the consuming tenant. + +For an enterprise LOB app, that is usually the enterprise tenant. + +For an ISV app, each customer tenant has its own containers. + +This separation keeps customer files in the customer's Microsoft 365 tenant boundary. + +> [!IMPORTANT] +> Don't design an ISV architecture that stores all customer files in the ISV tenant. SharePoint Embedded stores app documents in the consuming tenant. + +## Who pays + +SharePoint Embedded is pay-as-you-go. + +Billing is based on meters such as storage, API transactions, and egress. + +The billing model is selected for the container type. + +SharePoint Embedded supports two billing models: + +- Standard billing. +- Pass-through billing. + +For details, see [Choose a billing model](../plan/choose-billing-model.md). + +## Standard billing + +With standard billing, consumption-based charges are billed to the tenant that owns or develops the application. + +An Azure subscription from the developer tenant is used when creating a standard container type. + +Use standard billing when the app owner wants to absorb or centrally manage SharePoint Embedded usage charges. + +## Pass-through billing + +With pass-through billing, charges are billed directly to the tenant registered to use the SharePoint Embedded application. + +The developer tenant admin doesn't set up a billing profile when creating the pass-through container type. + +After the container type is registered in the consuming tenant, the consuming tenant admin sets up the billing profile. + +Use pass-through billing when each customer tenant should pay for its own usage. + +## Consent and admin responsibilities + +Plan these responsibilities before implementation. + +| Responsibility | LOB single-tenant | ISV multitenant | +| --- | --- | --- | +| Create app registration | Enterprise tenant | ISV tenant | +| Create container type | Enterprise tenant | ISV tenant | +| Register container type | Same tenant | Each customer consuming tenant | +| Grant Microsoft Graph consent | Enterprise admin | Customer tenant admin for consuming tenant access | +| Configure standard billing | Enterprise/developer | ISV/developer | +| Configure pass-through billing | Consuming tenant admin | Customer tenant admin | +| Govern content | Enterprise compliance admin | Customer compliance admin | + +## Which setup path to follow next + +If you're building an internal enterprise app: + +1. Plan authentication with [Plan authentication and permissions](../plan/authentication-permissions.md). +1. Understand container type design with [Understand container types and containers](../plan/container-types-and-containers.md). +1. Create the container type by using the guidance in [SharePoint Embedded container types](../build/create-container-type.md). +1. Configure billing by using [PAYG billing for SharePoint Embedded](../admin/setup-billing-m365-admin-center.md). + +If you're building an ISV app: + +1. Plan tenant relationships with [Understand app and tenant architecture](../plan/app-tenant-architecture.md). +1. Choose standard or pass-through billing with [Choose a billing model](../plan/choose-billing-model.md). +1. Create the container type in the owning tenant. +1. Register the container type in each consuming tenant by using [Register file storage container type application permissions](../build/register-application-permissions.md). + +## Planning checklist + +- Identify whether the app is internal or customer-facing. +- Identify the owning tenant. +- Identify all consuming tenants. +- Confirm who owns the Microsoft Entra ID application registration. +- Confirm where the container type is created. +- Confirm where containers are created. +- Choose standard or pass-through billing. +- Identify who grants admin consent. +- Identify who configures billing. +- Identify who manages compliance policies. + +## Next steps +Review the storage model: [Understand container types and containers](../plan/container-types-and-containers.md). diff --git a/docs/embedded/plan/choose-billing-model.md b/docs/embedded/plan/choose-billing-model.md new file mode 100644 index 0000000000..368ca17135 --- /dev/null +++ b/docs/embedded/plan/choose-billing-model.md @@ -0,0 +1,196 @@ +--- +title: Choose a Billing Model +description: Compare standard and pass-through SharePoint Embedded billing models before you create production container types. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan +ms.localizationpriority: high +--- + +# Choose a Billing Model + +**Applies to:** Architect + + + +Use this article to choose a billing model for production SharePoint Embedded container types. SharePoint Embedded is a consumption-based, pay-as-you-go offering, and you select billing at the container type level. + +For the full billing setup procedure, see [PAYG billing for SharePoint Embedded](../admin/setup-billing-m365-admin-center.md). + +## Billing models + +SharePoint Embedded provides two billing models: + +- Standard billing. +- Pass-through billing. + +Both models use the same billing meters. + +The model determines which tenant is billed and which admin configures the billing profile. + +> [!IMPORTANT] +> Once a container type is created, its billing model can't be changed. To switch models, you must delete and re-create the container type with the desired billing model. + +| Billing model | Who is billed | Who configures billing | +| --- | --- | --- | +| Standard | Tenant that owns or develops the application. | Admin in the developer tenant. | +| Pass-through | Tenant registered to use the SharePoint Embedded application. | Admin in the consuming tenant. | + +## Standard billing + +With standard billing, all consumption-based charges are directly billed to the tenant that owns or develops the application. + +The admin in the developer tenant must establish a valid billing profile when creating a standard container type. + +Use standard billing when: + +- The application owner wants to centralize usage charges. +- The app is an internal enterprise LOB app. +- The ISV or developer tenant plans to absorb or separately recover usage costs. +- Customer tenants shouldn't configure their own SharePoint Embedded billing profile. + +The billing setup requires: + +- An existing SharePoint tenancy. +- An Azure subscription in the tenancy. +- A resource group attached to the Azure subscription. +- A SharePoint Embedded Administrator or Global Administrator to operate billing cmdlets. +- Owner or contributor permissions on the Azure subscription for the admin who sets up billing. + +The standard billing pattern creates the container type and then attaches an Azure billing profile (see [Create and configure a container type](../build/create-container-type.md)): + +```powershell +New-SPOContainerType -ContainerTypeName -OwningApplicationId -ApplicationRedirectUrl +``` + +Attach the Azure billing profile: + +```powershell +Add-SPOContainerTypeBilling -ContainerTypeId -AzureSubscriptionId -ResourceGroup -Region +``` + +> [!IMPORTANT] +> Every container type must have an owning application. A single owning app can only own one container type at a time. + +## Pass-through billing + +With pass-through billing, consumption-based charges are billed directly to the tenant registered to use the SharePoint Embedded application. + +Admins in the developer tenant don't need to set up a billing profile when creating a pass-through container type. + +After the container type is registered in the consuming tenant, the consuming tenant admin sets up the billing profile in that tenant. + +Use pass-through billing when: + +- Each customer tenant should pay for its own SharePoint Embedded usage. +- The app is an ISV multitenant application. +- The customer tenant controls the Azure subscription used for pay-as-you-go charges. +- The consuming tenant admin is expected to complete billing onboarding. + +Use this pass-through creation pattern: + +```powershell +New-SPOContainerType -ContainerTypeName -OwningApplicationId -IsPassThroughBilling +``` + +> [!NOTE] +> Use the `-IsPassThroughBilling` switch with `New-SPOContainerType` when the consuming tenant pays for usage. + +## Billing meters + +SharePoint Embedded billing is determined by usage. The supported meters are described in [SharePoint Embedded billing meters](../reference/billing-meters.md). + +The current meters include: + +- Storage. +- Archived storage. +- API transactions. +- Egress. + +Both standard billing container types and pass-through billing container types use the same meters. + +## Storage meter + +Storage consumption includes files and documents with their metadata and versions, in both active and archived states. + +Storage consumption also includes content in the recycle bin and deleted container collection within SharePoint Embedded. + +Plan lifecycle and deletion policies with storage cost in mind. + +## Archived storage meter + +The archived storage meter measures storage consumed by archived containers. Archiving a container moves its data to the cold storage tier, which offers lower storage costs than active storage. + +## API transactions meter + +Each Microsoft Graph call made explicitly by the SharePoint Embedded application is counted as one transaction. + +Customers are billed based on transaction count. + +Calls made by internal services to containers aren't charged when the application has no control over those calls. + +Nonchargeable transactions include: + +- eDiscovery queries that search through container content for compliance or legal purposes. +- Admin actions taken through SharePoint Admin Center or SharePoint PowerShell. + +## Egress meter + +Egress is data that exits the SharePoint Embedded platform, such as a document downloaded to a customer client device or data transferred to a server operated by the customer. Charges are based on the total volume of data transferred out (GB). + +Downloads from the SharePoint Embedded application server to Office desktop clients or Web Application Companion are exempt from egress charges. + +Review pricing and cost management in Azure Cost Management as part of your operations plan. + +## Admin responsibilities + +Plan these responsibilities by billing model. + +| Responsibility | Standard billing | Pass-through billing | +| --- | --- | --- | +| Create container type | Developer tenant admin | Developer tenant admin | +| Attach billing profile at creation | Developer tenant admin | Not in developer tenant | +| Register container type | Owning app in consuming tenant | Owning app in consuming tenant | +| Set up consuming tenant billing | Not required for app usage billing | Consuming tenant admin | +| Monitor Azure cost | Developer tenant | Consuming tenant | + +## Relationship to app model + +Billing model and app model are related but separate decisions. + +An enterprise LOB app often uses standard billing because the developer and consuming tenant are the same organization. + +An ISV multitenant app often uses pass-through billing when each customer should pay for their own usage. + +An ISV can use standard billing when the ISV wants to own all usage charges. + +For model selection, see [Choose an app model: single-tenant or multitenant](../plan/choose-app-model.md). + +## Setup links + +Use these setup references after you choose a model: + +- Create and configure container types: [SharePoint Embedded container types](../build/create-container-type.md). +- Set up billing: [PAYG billing for SharePoint Embedded](../admin/setup-billing-m365-admin-center.md). +- Review meters: [SharePoint Embedded billing meters](../reference/billing-meters.md). +- Register a consuming tenant: [Register file storage container type application permissions](../build/register-application-permissions.md). + +## Planning checklist + +- Decide whether the developer tenant or consuming tenant pays. +- Confirm the app model. +- Confirm whether the container type is standard or pass-through. +- Identify the Azure subscription and resource group if using standard billing. +- Identify the consuming tenant admin if using pass-through billing. +- Confirm SharePoint Embedded Administrator or Global Administrator roles. +- Confirm owner or contributor permissions on the Azure subscription. +- Plan cost monitoring in Azure Cost Management. +- Plan storage lifecycle to control storage consumption. +- Plan calling patterns to manage API transaction cost. + +## Next steps +Plan governance responsibilities for tenant content: [Plan security, compliance, and governance](../plan/security-compliance-governance.md). diff --git a/docs/embedded/plan/container-types-and-containers.md b/docs/embedded/plan/container-types-and-containers.md new file mode 100644 index 0000000000..cb1ac748fa --- /dev/null +++ b/docs/embedded/plan/container-types-and-containers.md @@ -0,0 +1,195 @@ +--- +title: Understand container types and containers +description: Learn how SharePoint Embedded container types define app access and how containers store files in consuming tenants. +ms.date: 07/10/2026 +ms.reviewer: shsaravanan +ms.localizationpriority: high +--- + +# Understand container types and containers + +**Applies to:** Developer + + + +Use this article to understand the two core storage objects in SharePoint Embedded: container types and containers. + +For the full creation and management reference, see [SharePoint Embedded container types](../build/create-container-type.md). + +## Object model + +SharePoint Embedded stores files and documents in containers, which are grouped by container type. You create a container type before you can create any containers for an application. + +| Object | What it represents | Who usually manages it | +| --- | --- | --- | +| Container type | Relationship between an app and a set of containers, including access, behavior, and billing accountability. | Developer or container type owner. | +| Container | The storage and security boundary for files and folders. | Application through Microsoft Graph, and admins for governance operations. | + +## Container type concept + +A container type is a SharePoint Embedded resource. It defines: + +- The owning application. +- The access privileges between applications and containers. +- The billing accountability model. +- Selected behaviors that apply to containers of that type. + +Each container type is strongly coupled with one SharePoint Embedded application, called the owning application. SharePoint Embedded requires a 1:1 relationship between the owning application and the container type. The owning application developer is responsible for creating and managing the container type. + +## Container type identity + +The container type is represented on each container as an immutable property named `ContainerTypeID`. The property is used across the SharePoint Embedded ecosystem. It affects: + +- Access authorization. +- Trial exploration. +- Billing. +- Configurable behavior. + +> [!IMPORTANT] +> Plan the container type carefully. Some creation choices, such as trial versus production and standard versus pass-through billing, can't be converted after creation. To switch, you must delete and re-create the container type. + +## Containers + +A container is the basic storage unit in SharePoint Embedded, and it defines a security and compliance boundary. Applications create containers in consuming tenants by using Microsoft Graph. + +Files, folders, metadata, versions, and recycle bin content are stored within containers and are subject to current SharePoint Embedded limits. + +For limits, see [Understand limits and calling patterns](../plan/limits-calling-patterns.md). + +## Ownership + +Container type ownership and container residency are different. The owning tenant creates the container type. The consuming tenant uses the container type and hosts containers. + +All container content created through the application is stored within the consuming tenant's Microsoft 365 tenant boundary. + +For tenant architecture, see [Understand app and tenant architecture](../plan/app-tenant-architecture.md). + +## Access authorization + +A SharePoint Embedded application must be associated with a container type to access containers of that type. After association, the application has access to containers of that type according to application-container type permissions. The owning application has full access privilege by default to containers of the container type it's coupled with. Actual access also depends on whether the app uses delegated access or app-only access. + +For permission planning, see [Plan authentication and permissions](../plan/authentication-permissions.md). + +## Trial container types + +Use a trial container type to explore SharePoint Embedded development without linking an Azure billing profile. + +For trial container types: + +- The developer tenant is the same as the consuming tenant. +- Each developer can have only one trial container type in their tenant at a time. +- The trial is valid for up to 30 days. +- Up to five containers of the container type can be created, including active containers and containers in the recycle bin. +- Each container has up to 1 GB of storage. +- The container type is restricted to the developer tenant. + +A trial container type can't be converted to production. + +To create a trial container type, developers can use the SharePoint Embedded Visual Studio Code extension or the Microsoft Graph container type API. + +Container types are created with the Microsoft Graph `POST /v1.0/storage/fileStorage/containerTypes` endpoint, using the `trial` billing classification. This call requires the `FileStorageContainerType.Manage.All` delegated permission; app-only access isn't supported. The calling user must be a non-guest member of the owning tenant (no admin role required) and is automatically assigned as an owner of the new container type. + +## Standard container types + +A standard container type is used for non-trial scenarios. + +Each tenant can have 25 container types at a time. + +Standard container types are billable and must use a billing model. + +SharePoint Embedded supports: + +- Standard billing (`standard` billing classification). +- Pass-through billing (`directToCustomer` billing classification). + +For billing selection, see [Choose a billing model](../plan/choose-billing-model.md). + +## Standard billing container type + +With standard billing, consumption-based charges are billed to the tenant that owns or develops the application. + +The owning tenant attaches a billing profile after creating the standard container type. + +Create the container type with the Microsoft Graph `POST /v1.0/storage/fileStorage/containerTypes` endpoint using the `standard` billing classification, then attach an Azure billing profile: + +```http +POST https://graph.microsoft.com/v1.0/storage/fileStorage/containerTypes +``` + +```json +{ + "name": "{ContainerTypeName}", + "owningAppId": "{OwningApplicationId}", + "billingClassification": "standard" +} +``` + +## Pass-through billing container type + +With pass-through billing, charges are billed directly to the consuming tenant. + +The developer creates the container type with the `directToCustomer` billing classification and doesn't attach a billing profile in the developer tenant. + +```json +{ + "name": "{ContainerTypeName}", + "owningAppId": "{OwningApplicationId}", + "billingClassification": "directToCustomer" +} +``` + +After registration, a Global Administrator in the consuming tenant sets up billing in the consuming tenant. + +## Admin and developer interaction + +Developers and admins interact with different layers. + +| Activity | Container type | Container | +| --- | --- | --- | +| Create the app's storage family | Yes | No | +| Configure owning app relationship | Yes | No | +| Configure billing accountability | Yes | No | +| Create app storage instances | No | Yes | +| Store files and folders | No | Yes | +| Apply container-specific governance | No | Yes | +| Delete the storage family | Yes, after containers are removed | No | + +## Container type configuration + +Developers can configure selected container type settings after creation. + +You can configure these container type settings: + +- `ApplicationRedirectUrl` +- `DiscoverabilityDisabled` +- `SharingRestricted` + +Use the Microsoft Graph [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) API for supported container type updates. For administrative settings, see [Create apps with PowerShell](../admin/create-apps-powershell.md). + +## Registration + +To create and interact with containers in a consuming tenant, the container type must be registered in that tenant. + +The owning application invokes the registration API to define application permissions for the container type. + +For full details, see [Register file storage container type application permissions](../build/register-application-permissions.md). + +## Planning checklist + +- Choose trial or standard. +- Choose standard billing or pass-through billing for production. +- Identify the owning application. +- Confirm the container type name. +- Confirm the consuming tenant or tenants. +- Plan container type registration. +- Plan application permissions. +- Plan which container type settings are required. +- Plan container lifecycle and deletion. + +## Next steps +Plan authentication and authorization: [Plan authentication and permissions](../plan/authentication-permissions.md). diff --git a/docs/embedded/plan/limits-calling-patterns.md b/docs/embedded/plan/limits-calling-patterns.md new file mode 100644 index 0000000000..354dec27d6 --- /dev/null +++ b/docs/embedded/plan/limits-calling-patterns.md @@ -0,0 +1,247 @@ +--- +title: Understand Limits and Calling Patterns +description: Plan SharePoint Embedded service limits, throttling behavior, retry handling, and performance-sensitive calling patterns. +ms.date: 07/10/2026 +ms.reviewer: mawin +ms.localizationpriority: high +--- + +# Understand Limits and Calling Patterns + +**Applies to:** Developer + + + +Use this article to plan SharePoint Embedded calling patterns before you build high-volume container and content operations. SharePoint Embedded expresses throughput as **resource units per minute** (a normalized request-cost model) rather than as a fixed requests-per-second rate; the [API rate limits](#api-rate-limits) section explains how to translate resource units into an expected request rate. + +Limits marked with `*` can be increased on request through Microsoft support or your SharePoint Embedded onboarding contact; plan for the default limit and request an increase before you approach it in production. + +## Limit categories + +SharePoint Embedded limits affect: + +- *Container type counts +- *Container counts +- Storage per container type and container +- Files and folders +- Permissions +- File size +- Version count +- *API rate limits +- *Requests per app, container, and user + +> [!NOTE] +> These limits can change. Verify the current limits before you launch to production. + +## Size limits + +SharePoint Embedded enforces the following size limits. + +| Resource | Limit | +| --- | --- | +| Container types that a partner tenant can create | 25* | +| Container types that an app can own | 1 | +| Containers of a container type per consuming tenant | 100k* | +| Storage per container type per consuming tenant | 100 TB* | +| Files and folders per container | 30M | +| Storage per container | 25 TB | +| Files and folders with additive permissions per container | 5k | +| File size | 250 GB | +| Version count per file | 500 (Automatic Version History Limits Default Setting) | +| Number of users shared per folder or file | 5k | + +An asterisk (`*`) indicates a limit you can request to increase. + +Of the container types a tenant creates, one can be a free **trial container type** for development and testing, and the rest are **standard** (billed) container types. New tenants start with a lower default that can be raised on request. For trial-versus-standard details, see [Create and configure a container type](../build/create-container-type.md). + +## Design for container type limits + +An app can own one container type. + +Don't model each customer, project, workspace, or user as a separate container type. + +Use containers for application storage instances within the container type. + +Choose a container type for app-level behavior, access relationship, and billing accountability. + +For container type planning, see [Understand container types and containers](../plan/container-types-and-containers.md). + +## Design for container limits + +Containers provide the storage and security boundary. + +Plan how many containers each consuming tenant might create. + +Account for active containers and any deleted container lifecycle that might affect quotas or storage. + +Keep container boundaries aligned with access, lifecycle, and governance requirements. + +## Design for permission limits + +SharePoint Embedded allows up to 5,000 files and folders with additive permissions per container. + +Avoid designing every file or folder to have unique permissions when a container-level or folder-level model is sufficient. + +Use container membership and roles where possible. + +For permission concepts, see [Plan authentication and permissions](../plan/authentication-permissions.md). + +## Throttling responses + +When applications hit service limits, SharePoint Embedded can return: + +- HTTP `429 Too Many Requests`. +- HTTP `503 Server Too Busy`. + +Both responses include a `Retry-After` header. + +The header tells the app how long to wait before retrying or making a new request. + +> [!IMPORTANT] +> Throttled requests count toward usage limits. If you ignore `Retry-After`, your app can cause more throttling. + +## Retry guidance + +Implement retry logic that: + +- Detects HTTP `429` and `503`. +- Reads the `Retry-After` header. +- Waits for the specified duration before retrying. +- Reduces concurrency after throttling. +- Avoids immediate retry loops. +- Avoids request spikes after a wait period. + +Use bounded retries and surface persistent failures to operations telemetry. For general guidance on handling throttling responses, see [Microsoft Graph throttling guidance](/graph/throttling). + +## Concurrency guidance + +Reduce the number of concurrent requests when throttling occurs. + +Avoid burst patterns that send many requests at the same instant. + +Distribute work over time when processing large sets of containers or files. + +Use queues or background workers to smooth traffic. + +Prioritize user-visible operations over background maintenance when near limits. + +## API resource units + +Different APIs have different costs depending on functionality and complexity. + +The cost is normalized and expressed as resource units. + +API rate limits are also defined using resource units. + +Each request costs resource units based on its complexity: + +| Resource units per request | Operations | +| --- | --- | +| 1 | Single item query, such as get item. | +| 2 | Multi-item query, such as list children, create, update, delete, and upload. | +| 5 | All permission resource operations, including `$expand=permissions`. | + +> [!NOTE] +> Resource unit costs can change. + +## API rate limits + +SharePoint Embedded enforces these API rate limits. + +| Resource | Limit | +| --- | --- | +| Requests per container | 3k resource units per min | +| Requests per app per tenant | 12k resource units per min* | +| Requests per user | 600 resource units per min | + +An asterisk (`*`) indicates a limit you can request to increase. + +Application limits are defined in resource units. + +The actual requests per minute depends on the APIs you call and their resource unit cost. + +To estimate your request rate, average about two resource units per request and divide the application resource unit limit by two. + +## Container creation rate limiting + +Per consuming tenant, and during the tenant's peak hours, container creation is limited to 5 new containers per second. Requests beyond this limit are rate limited. Outside of peak hours, containers can be created at a faster rate. + +## Permission operation costs + +Permission resource operations have a higher resource unit cost. + +Operations that include `$expand=permissions` are listed at five resource units. + +Reduce unnecessary permission expansion. + +Cache permission-derived decisions only when it is safe for your security model. + +Refresh permission data when membership or role changes occur. + +## Batching considerations + +Batching can reduce client overhead, but it doesn't remove service limits or billing impact. + +Count each underlying operation when you estimate resource unit consumption and transaction cost. + +Avoid creating batches that concentrate too much work against one container, app, tenant, or user in a short interval. + +Honor throttling responses for batched operations according to the response details returned by the platform. + +## Performance considerations + +Design for: + +- Fewer permission-heavy calls. +- Predictable concurrency. +- Incremental synchronization. +- Backoff after throttling. +- Separation of foreground and background work. +- Tenant-level fairness for multitenant apps. +- Monitoring of request rate, response codes, and latency. + +For billing impact of API transactions, see [Choose a billing model](../plan/choose-billing-model.md). + +## Operational monitoring + +Track: + +- HTTP `429` and `503` response rates. +- Retry counts and wait durations. +- Resource-intensive operations. +- Requests by app, tenant, user, and container. +- Background job queue length. +- Storage growth per container and tenant. +- Permission operation frequency. + +Use these signals to tune concurrency and identify tenants or workflows that need design changes. + +## Planning checklist + +- Confirm current size limits before production launch. +- Model containers instead of creating many container types. +- Estimate storage per container and per consuming tenant. +- Estimate file and folder counts. +- Avoid unnecessary additive permissions. +- Implement `Retry-After` handling for `429` and `503`. +- Limit concurrency and avoid spikes. +- Estimate resource unit usage by operation type. +- Reduce permission-heavy operations. +- Monitor throttling and latency. +- Include billing impact in API design. + +## Related planning articles + +- [Understand app and tenant architecture](../plan/app-tenant-architecture.md) +- [Understand container types and containers](../plan/container-types-and-containers.md) +- [Plan authentication and permissions](../plan/authentication-permissions.md) +- [Choose a billing model](../plan/choose-billing-model.md) + +## Next steps + +Start building with [Quickstart: Build your first app with VS Code](../build/quickstart-vscode.md). diff --git a/docs/embedded/plan/security-compliance-governance.md b/docs/embedded/plan/security-compliance-governance.md new file mode 100644 index 0000000000..55059c5acf --- /dev/null +++ b/docs/embedded/plan/security-compliance-governance.md @@ -0,0 +1,229 @@ +--- +title: Plan Security, Compliance, and Governance +description: Plan how Microsoft Purview, audit, DLP, retention, labels, and access policies apply to SharePoint Embedded content. +ms.date: 07/10/2026 +ms.reviewer: mawin +ms.localizationpriority: high +--- + +# Plan Security, Compliance, and Governance + +**Applies to:** Compliance administrator + + + +Use this article to plan security, compliance, and governance for content stored in SharePoint Embedded. + +SharePoint Embedded content resides in the consuming tenant's Microsoft 365 boundary. + +Supported consumer Microsoft 365 tenant settings and Microsoft Purview capabilities apply to the app documents stored there. + +## Governance model + +SharePoint Embedded is API-only and doesn't provide a built-in end-user interface. + +The owning application provides the user experience. + +Compliance administrators and SharePoint Embedded administrators enforce supported policies on containers and content by using Microsoft Purview, supported admin capabilities, and PowerShell. + +Some compliance scenarios require user interaction. Because SharePoint Embedded doesn't include a native UI, the app must provide the experience when those scenarios are required. + +## Tenant responsibility + +Content is stored in the consuming tenant. + +Therefore, consuming tenant policies and administrator decisions govern the content. + +For an enterprise LOB app, the enterprise tenant owns and consumes the app. + +For an ISV app, each customer tenant governs its own SharePoint Embedded content. + +For tenant role planning, see [Understand app and tenant architecture](../plan/app-tenant-architecture.md). + +## Discover applications and containers + +Compliance admins may need container details to target policies. + +Use this PowerShell discovery flow to retrieve container details for policy scope: + +1. View registered SharePoint Embedded applications in the tenant. + + ```powershell + Get-SPOApplication + ``` + +1. Retrieve containers for an application by using the application ID. + + ```powershell + Get-SPOContainer -OwningApplicationId + ``` + +1. Retrieve details for a container, including the container site URL. + + ```powershell + Get-SPOContainer -OwningApplicationId -Identity + ``` + +For cmdlet details, see [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer). + +## Microsoft Purview support + +SharePoint Embedded supports Microsoft Purview compliance features for content stored in the platform. + +SharePoint Embedded supports these Microsoft Purview capabilities: + +- Audit +- eDiscovery +- Data Lifecycle Management +- Data Loss Prevention + +These capabilities work similarly to SharePoint content, with limitations where the app must provide user interaction. + +## Audit + +Audit capabilities mirror the existing audit functionality supported in SharePoint. + +User and admin operations performed in applications hosted in SharePoint Embedded are captured, recorded, and retained in the organization's unified audit log. + +Audit events related to SharePoint Embedded include additional data to help filter results: + +- `ContainerInstanceId` +- `ContainerTypeId` + +Use these properties to isolate SharePoint Embedded content during audit searches. + +For more information, see [Auditing solutions in Microsoft Purview](/purview/audit-solutions-overview). + +## eDiscovery + +Compliance admins can use Microsoft Purview eDiscovery tools to search, hold, and export SharePoint Embedded content. + +To search all SharePoint Embedded content, configure eDiscovery Search for all SharePoint sites. + +This includes SharePoint sites and SharePoint Embedded containers. + +To limit eDiscovery Search to specific containers, choose sites under the SharePoint sites workload and provide the container URL. + +For more information, see [Microsoft Purview eDiscovery solutions](/purview/ediscovery). + +## Data Lifecycle Management + +SharePoint Embedded supports retention and hold policies through the Microsoft Purview compliance portal. + +Retention policies configured for all SharePoint sites apply to all SharePoint sites and all containers in SharePoint Embedded. + +To selectively enforce a policy on one or more SharePoint Embedded containers, use the container URL when configuring the policy. + +Because SharePoint Embedded has no built-in UI, app support is required for user-interaction scenarios such as an end user applying a retention label through the app. + +For more information, see [Learn about Microsoft Purview Data Lifecycle Management](/purview/data-lifecycle-management). + +## Data Loss Prevention + +Microsoft Purview Data Loss Prevention can identify, monitor, and automatically protect sensitive items stored in SharePoint Embedded applications. + +DLP policies can be enforced on all SharePoint sites and SharePoint Embedded containers by configuring the policy for all sites. + +Admins can also restrict DLP enforcement to specific SharePoint Embedded containers by specifying container URLs. + +Some DLP scenarios require user interaction. + +For example, a DLP policy that prevents external sharing might allow a business justification override. + +The client app must provide the user interaction if the scenario is required. + +Policy tips for SharePoint Embedded files also require app support through Microsoft Graph where applicable. + +For more information, see [Learn about data loss prevention](/purview/dlp-learn-about-dlp). + +## Sensitivity labels + +Global Administrators and SharePoint Embedded Administrators can set and remove sensitivity labels on a SharePoint Embedded container by using SharePoint PowerShell. + +Use this command: + +```powershell +Set-SPOContainer -Identity -SensitivityLabel +``` + +The label is applied at the **container level**: it sets the container's sensitivity and governs container settings such as conditional access and guest sharing. It does not retroactively relabel files that already exist in the container, and each file carries its own sensitivity label. For item-level labeling behavior, see [Learn about sensitivity labels](/purview/sensitivity-labels). + +## Block download policy + +SharePoint Administrators or Global Administrators can block file downloads from SharePoint Embedded containers. + +Use this command: + +```powershell +Set-SPOSite -Identity -BlockDownloadPolicy $true +``` + +A SharePoint Advanced Management license is needed to enforce this policy. + +For more information, see [Block download policy for SharePoint sites and OneDrive](/sharepoint/block-download-from-sites). + +## Conditional Access + +SharePoint Embedded supports basic Conditional Access policy configurations. + +Use this command: + +- `AllowFullAccess` +- `AllowLimitedAccess` +- `BlockAccess` + +These settings are available through: + +```powershell +Set-SPOContainer -Identity -ConditionalAccessPolicy +``` + +For more information, see [Control access from unmanaged devices](/sharepoint/control-access-from-unmanaged-devices). + +## Information barriers + +The `fileStorageContainer` resource has an **informationBarrier** property that lets you manage a container's information barrier (beta Microsoft Graph endpoint, March 2026). Use information barrier segments to restrict communication and collaboration between groups of users where required by compliance policy. + +For more information, see [Information barriers in SharePoint](/purview/information-barriers-sharepoint). + +## Tenant settings + +Consumer Microsoft 365 settings apply to app documents stored by SharePoint Embedded. + +This includes supported security, compliance, risk, and governance settings. + +Your application should not assume that every consuming tenant has the same policy configuration. + +Design for policy enforcement results, blocked operations, and user-facing messages. + +## Governance responsibilities + +| Area | App owner | Consuming tenant admin | +| --- | --- | --- | +| User experience for files | Provide app UI. | Validate policy expectations. | +| Container discovery | Expose identifiers where appropriate. | Use PowerShell and admin tools. | +| Purview policies | Handle policy-driven UX requirements. | Configure audit, eDiscovery, DLP, retention, and labels. | +| Access model | Request least privilege. | Grant consent and manage tenant settings. | +| Compliance evidence | Preserve app context and auditability. | Use unified audit log and Purview tools. | + +## Planning checklist + +- Identify the consuming tenant governance owner. +- Inventory SharePoint Embedded applications and containers. +- Capture container URLs needed for targeted policies. +- Plan audit searches using `ContainerInstanceId` and `ContainerTypeId`. +- Decide whether policies apply to all sites or selected containers. +- Plan DLP user interaction in the app. +- Plan retention label user interaction in the app if required. +- Decide whether sensitivity labels are required on containers. +- Decide whether block download policy is required. +- Decide whether Conditional Access settings are required. +- Validate licensing requirements for advanced policies. + +## Next steps +Review scale, throttling, and retry behavior: [Understand limits and calling patterns](../plan/limits-calling-patterns.md). diff --git a/docs/embedded/publish/choose-app-billing-model.md b/docs/embedded/publish/choose-app-billing-model.md new file mode 100644 index 0000000000..dc82d9b6ce --- /dev/null +++ b/docs/embedded/publish/choose-app-billing-model.md @@ -0,0 +1,193 @@ +--- +title: Choose a billing model for your app +description: Compare standard and pass-through billing for SharePoint Embedded apps before onboarding customer tenants. +ms.date: 07/10/2026 +ms.reviewer: cindylay +ms.localizationpriority: high +--- +# Choose a billing model for your app + +**Applies to:** ISV + + + +SharePoint Embedded is a consumption-based pay-as-you-go service. +As an ISV, you choose the billing model when you create the production container type for your app. +That choice affects who pays for storage, API transactions, and egress, and it changes what the customer administrator must do during onboarding. + +Use this article to decide between standard billing and pass-through billing before you publish customer setup instructions. + +## Billing choices + +SharePoint Embedded supports two production billing models for standard container types. + +| Billing model | Who is billed | Who configures billing | Typical ISV use | +| --- | --- | --- | --- | +| Standard billing | Developer tenant | Developer | You include SharePoint Embedded consumption in your product price or centralize billing. | +| Pass-through billing | Consuming tenant | Customer admin | The customer pays Microsoft directly for their SharePoint Embedded consumption. | + +For current billing details, see [PAYG billing for SharePoint Embedded](../admin/setup-billing-m365-admin-center.md). + +> [!IMPORTANT] +> Choose the billing model before you create the container type. +> Standard and pass-through billing can't be converted after creation. + +## How billing relates to container types + +A container type defines access, behavior, and billing accountability for a set of containers. +Each container type is strongly coupled with one owning application. +The owning application developer creates and manages the container type. + +Container types are used for: + +- Access authorization between the app and containers. +- Trial exploration during development. +- Billing for non-trial workloads. +- Shared configuration settings such as discoverability and sharing behavior. + +For more about container types, see [Create New SharePoint Embedded Container Types](../plan/container-types-and-containers.md). + +## Standard billing + +With standard billing, all consumption-based SharePoint Embedded charges are billed to the tenant that owns or develops the application. +The developer must establish a valid Azure billing profile for the container type. + +Choose standard billing when: + +- You sell a bundled SaaS price and absorb or allocate SharePoint Embedded usage internally. +- You want a simpler customer setup path. +- Customers shouldn't configure an Azure subscription for your app. +- You operate a managed service where your tenant owns the consumption relationship. +- Your commercial agreement already covers storage and transaction costs. + +Standard billing usually reduces customer onboarding steps because the customer doesn't need to set up a SharePoint Embedded billing profile in the consuming tenant. +However, you must manage your own Azure subscription, resource group, cost tracking, and customer usage allocation. + +### Standard billing dependencies + +Before you create or activate a standard billing container type, confirm that your developer tenant has: + +- An active SharePoint tenant. +- A Microsoft Entra owning application. +- A SharePoint Embedded Administrator or Global Administrator. +- An Azure subscription in the developer tenant. +- A resource group attached to the subscription. +- Owner or contributor permissions for the admin who sets up the billing relationship. + +When you set up standard billing, provide the Azure subscription, resource group, and region for the billing profile. + +> [!NOTE] +> Standard billing doesn't remove the need for customer consent, container type registration, or validation. +> It only changes who configures and pays for SharePoint Embedded consumption. + +## Pass-through billing + +With pass-through billing, consumption charges are billed directly to the tenant registered to use the SharePoint Embedded application. +The developer creates the container type with pass-through billing enabled. +The customer administrator then configures billing in the consuming tenant before users can access the app. + +Choose pass-through billing when: + +- Customers must pay Microsoft directly for their own SharePoint Embedded usage. +- Your product contract excludes Microsoft 365 consumption charges. +- Customers require billing visibility in their own Azure Cost Management environment. +- Each tenant's storage, transaction, and egress costs should stay with that tenant. +- You want a cleaner separation between app subscription revenue and platform consumption. + +Pass-through billing adds customer onboarding work. +The customer admin must set up pay-as-you-go billing in the Microsoft 365 admin center and connect a valid Azure subscription and resource group. + +### Pass-through billing dependencies + +Before a customer can use a pass-through SharePoint Embedded app, the consuming tenant needs: + +- A SharePoint tenant. +- A Global Administrator or SharePoint Embedded Administrator. +- A valid Azure subscription. +- A valid Azure resource group. +- Owner or contributor permissions for the admin who creates the billing relationship. +- Completed app registration and consent steps. + +No user can access any pass-through SharePoint Embedded app before valid billing is set up for the SharePoint Embedded platform in the consuming tenant. +For the customer-facing setup path, see [Guide customers through tenant setup](customer-tenant-setup-guide.md). + +## Impact on customer onboarding + +Your billing choice changes the customer handoff. + +### If you choose standard billing + +Tell the customer: + +1. Your organization owns the SharePoint Embedded consumption billing relationship. +1. The customer still needs to review and consent to the app. +1. The customer still needs to complete tenant setup and validation. +1. The customer doesn't need to configure SharePoint Embedded pay-as-you-go billing for this app. +1. Any product charges are handled through your commercial agreement. + +### If you choose pass-through billing + +Tell the customer: + +1. The app uses SharePoint Embedded pass-through billing. +1. The customer must provide an Azure subscription and resource group. +1. The customer admin must turn on billing for SharePoint Embedded apps. +1. Users can't use the app until billing is valid. +1. The customer can track usage in Azure Cost Management. + +> [!TIP] +> Put the billing model in the first page of your installation guide. +> Customer admins often need to involve both Microsoft 365 and Azure billing owners. + +## Decision checklist + +Use this checklist before you create the production container type. + +| Question | Prefer standard billing when | Prefer pass-through billing when | +| --- | --- | --- | +| Who should receive Microsoft consumption charges? | You should. | The customer should. | +| Who owns Azure cost management? | Your operations team. | The customer's operations team. | +| How simple should customer setup be? | Minimize billing steps. | Customer billing control is required. | +| How is your product priced? | SharePoint Embedded consumption is bundled. | SharePoint Embedded consumption is separate. | +| Do customers require tenant-level billing visibility? | Not required. | Required. | +| Can customer admins configure Azure billing? | Not necessary. | Required before use. | + +## Avoid common mistakes + +Avoid these publishing mistakes: + +- Creating a trial container type for production customer tenants. +- Creating a standard-billed container type when the contract expects pass-through billing. +- Creating a pass-through container type without telling customers they must configure billing. +- Omitting Azure subscription and resource group prerequisites from customer setup instructions. +- Reusing one owning application for multiple container types. +- Sending cmdlet snippets without explaining the required parameters and owner responsibilities. + +## Communicate metering boundaries + +SharePoint Embedded billing uses consumption meters. +Storage, archived storage, API transactions, and egress are the major service meters. +Customers using pass-through billing should understand that the meter usage appears through their Azure billing relationship. +For pricing details, link to the product pricing page and the current [SharePoint Embedded meters](../reference/billing-meters.md) article. + +## Record your decision + +Before you proceed, record: + +- Billing model. +- Owning application ID. +- Container type name. +- Container type ID after creation. +- Azure subscription and resource group owner, if standard billing. +- Customer billing prerequisites, if pass-through billing. +- Commercial explanation to include in the installation guide. + +Use these values in [Prepare your app for customer installation](prepare-customer-installation.md) and [Guide customers through tenant setup](customer-tenant-setup-guide.md). + +## Next steps +After you choose a billing model, prepare customer-facing tenant setup instructions: [Guide customers through tenant setup](customer-tenant-setup-guide.md). diff --git a/docs/embedded/publish/customer-tenant-setup-guide.md b/docs/embedded/publish/customer-tenant-setup-guide.md new file mode 100644 index 0000000000..c30b0aaef1 --- /dev/null +++ b/docs/embedded/publish/customer-tenant-setup-guide.md @@ -0,0 +1,195 @@ +--- +title: Guide customers through tenant setup +description: Give customer admins the SharePoint Embedded setup, consent, billing, and validation steps needed to install an ISV app. +ms.date: 07/10/2026 +ms.reviewer: pemtaira +ms.localizationpriority: high +--- +# Guide customers through tenant setup + +**Applies to:** ISV + + + +Use this article to build the setup guide you hand to customers who install your multitenant SharePoint Embedded app. The customer administrator is the consuming tenant admin who manages SharePoint Embedded applications registered in the Microsoft 365 tenant and the containers that hold customer content. + +> [!IMPORTANT] +> Don't send customers only an app link. SharePoint Embedded onboarding can require admin consent, container type registration, role assignment, and billing setup. Walk the customer admin through each step below. + +## Customer admin role + +Tell customers who should perform the setup. A consuming tenant admin is either a **Global Administrator** or a user assigned the **SharePoint Embedded Administrator** role. The role is available in Microsoft Entra ID and the Microsoft 365 Admin Center. Global Administrators already have these permissions. + +For the role details, see [Install a SharePoint Embedded app](../admin/install-sharepoint-embedded-app.md). + +## Customer prerequisites + +Ask the customer to confirm these prerequisites before the setup meeting or installation window. + +| Area | Customer requirement | +| --- | --- | +| Microsoft 365 | An active Microsoft 365 tenant with at least one SharePoint license. | +| Admin role | A Global Administrator or SharePoint Embedded Administrator can complete setup. | +| Users | Users who authenticate to SharePoint Embedded containers exist in Microsoft Entra ID as members or guests. | +| Consent | The customer can review and grant the Microsoft Entra permissions your app requests. | +| Billing | An Azure subscription and resource group are available if the app uses pass-through billing. | +| Support | The customer has your app ID, support contact, and validation checklist. | + +Users don't need an Office license to collaborate on Microsoft Office documents stored in a container. + +## Information to give the customer + +Provide these values in your setup guide: + +- Product name. +- Publisher name. +- Owning application ID. +- Container type ID. +- Container type name. +- Billing model. +- Microsoft Entra permissions your app requests. +- Consent instructions for your app. +- Redirect or sign-in URL the app uses. +- Support contact. +- Expected setup duration. +- Validation steps. + +For ISV preparation guidance, see [Prepare your app for customer installation](prepare-customer-installation.md). + +## Permissions your app requests + +Tell customers exactly which Microsoft Graph permissions your app needs and why. SharePoint Embedded apps install with two permissions. + +| Permission | Purpose | Admin consent | +| --- | --- | --- | +| `FileStorageContainerTypeReg.Selected` | Register your container type in the consuming tenant. | The application permission requires admin consent. The delegated permission doesn't require admin consent, but the user who registers the container type must be a SharePoint Embedded Administrator or Global Administrator. | +| `FileStorageContainer.Selected` | Read and write SharePoint Embedded container content for the container type. | Required. | + + +## Setup overview for customers + +Use this high-level sequence in your customer guide: + +1. Assign the right admin role. +1. Review the app publisher, app IDs, and requested permissions. +1. Grant admin consent when required. +1. Register the SharePoint Embedded container type in the consuming tenant through your app's setup flow. +1. Configure pass-through billing when required. +1. Validate that the app appears to the customer admin. +1. Create or access a test container. +1. Confirm the app can perform the expected file operations. +1. Remove or keep test content according to the customer's validation policy. + +## Step 1: Assign the administrator + +Ask the customer to choose an administrator who can complete the full setup. If the customer doesn't want to use a Global Administrator, they can assign the SharePoint Embedded Administrator role. + +Tell the customer to finish role assignment before the installation window. This avoids delays when billing or validation needs elevated access. + +## Step 2: Review the application + +Ask the customer administrator to review: + +- Publisher identity. +- Application ID. +- Container type ID. +- Requested permissions (see [Permissions your app requests](#permissions-your-app-requests)). +- Data stored in SharePoint Embedded containers. +- Whether the app permits guest access. +- Support and incident response commitments. +- Billing model. + +If your installation flow is hosted in your SaaS admin portal, include screenshots or tenant-specific values in your handoff, and keep links stable so customer admins can reuse the guide for production and disaster recovery. + +## Step 3: Grant admin consent + +The customer administrator grants consent for the permissions your app requires. Document the exact consent experience for your app rather than sending a raw consent URL without explaining what it does. + +Give the customer this guidance: + +1. Sign in with the customer administrator account. +1. Open the app setup or consent experience that you provide. +1. Review the publisher and requested permissions. +1. Grant consent only when the publisher and permissions match the customer handoff. +1. Record the time and the administrator who completed consent. + +Customer admins should grant consent only to the exact app ID in your signed installation package. Consenting to a different app ID is a security risk. + +## Step 4: Register the container type + +Before the app can create and use containers, the container type must be registered in the consuming tenant. Because this flow is app-specific, link customers to your product's setup experience and to the current registration documentation. + +Ask the customer to confirm that: + +- The setup flow uses the expected owning application ID. +- The registration targets the expected container type ID. +- The registration completes in the customer's tenant. +- Any error message is captured with time, tenant, and correlation information when available. + +## Step 5: Set up billing when required + +Skip this step when your app uses standard billing. If your app uses pass-through billing, tell the customer that SharePoint Embedded billing must be configured before users can access the app. + +The customer needs a valid Azure subscription and resource group. A Global Administrator sets up billing in the Microsoft 365 admin center, and the admin who creates the billing relationship also needs the Owner or Contributor role on the Azure subscription. Then set up billing: + +1. Open the [Microsoft 365 admin center](https://admin.microsoft.com/). +1. Go to **Setup**. +1. In **Files and Content**, select **Automate Content with Microsoft Syntex**. +1. Select **Go to Syntex settings**. +1. Under **Syntex services for**, select **Apps**. +1. Select **SharePoint Embedded**. +1. Follow the instructions on the **SharePoint Embedded** page to turn on SharePoint Embedded apps. + +> [!WARNING] +> If pass-through billing is turned off or the linked Azure subscription is disconnected, users can no longer create new containers. Existing containers and their content remain accessible. + +## Step 6: Validate administration visibility + +After consent, registration, and billing are complete, ask the customer admin to confirm the app can be managed. Admins can use SharePoint admin center and other administrative tools to manage SharePoint Embedded applications and containers. + +Customer admins can: + +- Enumerate applications in the tenant. +- Enumerate containers of an application. +- View container details. +- View active and deleted containers in admin experiences. +- Manage sensitivity labels and sharing settings where supported. +- Review security and compliance behavior. + +For deeper validation steps, see [Validate customer app installation](validate-customer-installation.md). + +## Customer setup checklist + +Give customers a checklist they can sign off. + +- [ ] The assigned admin has the Global Administrator or SharePoint Embedded Administrator role. +- [ ] The app ID and publisher match the ISV handoff. +- [ ] Admin consent is granted for the expected app. +- [ ] The container type is registered in the consuming tenant. +- [ ] Pass-through billing is configured, if required. +- [ ] A test user can sign in to the app. +- [ ] A test container can be created or opened. +- [ ] A test document can be uploaded, read, and deleted. +- [ ] The customer admin can view the app or containers in administration tools. +- [ ] Validation notes and support contacts are recorded. + +## Troubleshooting during setup + +Use this table to route early setup problems. + +| Symptom | Likely area | Action | +| --- | --- | --- | +| Customer can't grant consent | Microsoft Entra permissions | Confirm the admin role and app ID. | +| App can't create containers | Registration or permissions | Confirm container type registration and consent. | +| Users can't access a pass-through app | Billing | Confirm SharePoint Embedded billing is turned on in the consuming tenant. | +| Admin can't manage the app | Role or tooling | Confirm the SharePoint Embedded Administrator role and administrative tool access. | +| App works for members but not guests | Identity or sharing | Confirm guest identities and customer sharing policies. | + +## Next steps + +After setup, validate the installation with the customer administrator: [Validate customer app installation](validate-customer-installation.md). diff --git a/docs/embedded/publish/prepare-customer-installation.md b/docs/embedded/publish/prepare-customer-installation.md new file mode 100644 index 0000000000..602b0ce61a --- /dev/null +++ b/docs/embedded/publish/prepare-customer-installation.md @@ -0,0 +1,218 @@ +--- +title: Prepare Your App for Customer Installation +description: Prepare a multitenant SharePoint Embedded app, container type, permissions, billing choice, and admin handoff for customer tenants. +ms.date: 07/10/2026 +ms.reviewer: stpuceli +ms.localizationpriority: high +--- +# Prepare Your App for Customer Installation + +**Applies to:** ISV + + + +Use this article before you send a SharePoint Embedded application to a customer tenant. +SharePoint Embedded is API-only, so customer installation depends on container type registration, consent, permissions, and billing configuration instead of a traditional SharePoint site deployment. +Your goal is to give the customer administrator a complete, repeatable onboarding package. + +> [!IMPORTANT] +> Prepare production container types in your developer tenant before customer onboarding. +> Trial container types are for exploration and can't be deployed to other consuming tenants. + +## Customer installation flow + +A customer-ready SharePoint Embedded application usually follows this sequence: + +1. Choose the application model and tenant model for your product. +1. Register or configure the owning application in your developer tenant. +1. Create a standard production container type for that owning application. +1. Choose standard billing or pass-through billing for the container type. +1. Prepare Microsoft Entra consent information for the customer's admin. +1. Give the customer tenant setup instructions. +1. Ask the customer to complete container type registration, admin consent, and billing setup when required. +1. Validate that the application can create and use containers in the consuming tenant. + +For the next decision in the publishing path, see [Choose a billing model for your app](choose-app-billing-model.md). + +## Prerequisites + +Before you prepare customer installation materials, confirm the following items in your developer tenant. + +| Area | Requirement | +| --- | --- | +| Microsoft 365 tenant | An active SharePoint tenant is available. | +| Admin role | A Global Administrator or SharePoint Embedded Administrator can manage container types. | +| Application | You have a Microsoft Entra application that will own the container type. | +| Container type | You have a production standard container type, not a trial container type. | +| Billing decision | You know whether the app uses standard or pass-through billing. | +| Customer package | You can provide app IDs, redirect URLs, permissions, support contacts, and validation steps. | + +## Understand the developer responsibility + +The developer manages the SharePoint Embedded application and the container types that back it. +A container type defines the relationship between a SharePoint Embedded application and the containers that store content. +Each container type is associated with an owning application. +The owning application has default full access to containers of that type. + +Developers can use the SharePoint Embedded Visual Studio Code extension or Microsoft Graph `fileStorageContainerType` APIs to create, list, update, and delete container types. Graph creation is delegated-only and requires no admin role. For details, see [Create and configure a container type](../build/create-container-type.md). + +For model and tenant decisions, see [Choose an app model](../plan/choose-app-model.md). + +## Package the application configuration + +Give customers the exact identifiers and URLs they need to review and approve the app. +Do not ask a customer admin to infer these values from code. + +Include the following information in your installation package: + +- Product name and publisher name. +- Owning application ID. +- Container type ID, after it has been created. +- Container type name. +- Billing model: standard or pass-through. +- Application redirect URL, if configured on the container type. +- Customer-facing sign-in URL. +- Customer-facing support URL. +- List of Microsoft Entra permissions requested by the app. +- Whether the app uses delegated permissions, application permissions, or both. +- Whether a guest application requires access to the owning application. +- Data residency, retention, and support boundaries for your app. +- Validation steps the customer can run after setup. + +## Confirm the owning app and container type relationship + +Every production container type must have an owning application. +A single owning application can own only one container type at a time. +Do not reuse one owning application across multiple production container types. +If you need multiple isolation or billing boundaries, plan separate owning applications and container types. + +Create the production container type with the SharePoint Embedded Visual Studio Code extension or the Microsoft Graph [Create fileStorageContainerType](/graph/api/filestorage-post-containertypes) API. Microsoft Graph creation is delegated-only and doesn't require an admin role. + +## Configure a production container type + +Create a standard container type for customer use. +SharePoint Embedded supports two production billing choices: + +- Standard billing, where the developer tenant is billed. +- Pass-through billing, where the consuming tenant is billed after registration and setup. + +For standard billing, the developer must provide an Azure subscription, resource group, and region when attaching billing information. +For pass-through billing, the developer creates the container type with pass-through billing enabled, and the customer admin later sets up billing in the consuming tenant. + +> [!IMPORTANT] +> Standard and pass-through billing choices can't be converted after the container type is created. +> If you choose the wrong billing model, create a new container type with the intended billing model. + +## Decide what the customer must do + +Your customer handoff should clearly separate ISV tasks from customer administrator tasks. + +### ISV tasks + +Complete these tasks before the customer starts setup: + +1. Create or configure the owning Microsoft Entra application. +1. Create the production container type. +1. Configure container type settings that apply to all containers. +1. Document Microsoft Entra consent requirements. +1. Document whether pass-through billing is required. +1. Prepare the validation checklist. +1. Provide escalation contacts for installation failures. + +### Customer admin tasks + +Ask the customer administrator to complete these tasks in their tenant: + +1. Review the app publisher, permissions, and data handling documentation. +1. Grant admin consent when required. +1. Register the container type in the consuming tenant through the app's registration flow. +1. Set up billing if the app uses pass-through billing. +1. Validate that the app appears in tenant administration experiences. +1. Confirm that containers can be created and managed. + +For customer-facing steps, see [Guide customers through tenant setup](customer-tenant-setup-guide.md). + +## Prepare permission guidance + +Document the permissions your app requests and why each permission is needed. +Use product-specific descriptions instead of copying permission display names without context. + +At minimum, a SharePoint Embedded app installed on a consuming tenant requests these Microsoft Graph permissions: + +| Permission | Type | Purpose | +| --- | --- | --- | +| [`FileStorageContainerTypeReg.Selected`](/graph/permissions-reference#filestoragecontainertyperegselected) | Delegated or application | Register your container type in the consuming tenant. With the delegated permission, the user performing registration must be a [SharePoint Embedded Administrator](/entra/identity/role-based-access-control/permissions-reference#sharepoint-embedded-administrator) or Global Administrator. The application permission requires admin consent; the delegated permission doesn't. | +| [`FileStorageContainer.Selected`](/graph/permissions-reference#filestoragecontainerselected) | Delegated or application | Interact with SharePoint Embedded content for the container type. Requires admin consent. | + +> [!IMPORTANT] +> Using SharePoint Embedded on behalf of a user (delegated access) is the recommended approach. It improves both the security and the auditability of actions performed by your application. + +For single-tenant apps, you can [construct an admin consent URL](/entra/identity-platform/v2-admin-consent#request-the-permissions-from-a-directory-admin) and provide it to the tenant's Microsoft Entra administrator, for example: + +```http +https://login.microsoftonline.com/{tenant}/v2.0/adminconsent?client_id={client_id}&redirect_uri={redirect_uri} +``` + +Ensure your app's [redirect URI](/entra/identity-platform/reply-url) can handle admin consent flows. For the full permission model, see [Authentication and authorization](../build/configure-authentication-authorization.md). + +If your app uses guest application access, explain how the consuming tenant admin can view guest application permissions in administrative tools. + +> [!CAUTION] +> Do not hide optional or elevated permissions in an installation script. +> Customer admins should be able to review the requested permissions before they grant consent. + +## Prepare billing guidance + +Tell customers which billing model applies before they install the app. + +For standard billing: + +- Explain that your developer tenant owns the SharePoint Embedded consumption billing relationship. +- Tell the customer whether SharePoint Embedded usage is included in your commercial agreement. +- Confirm that the customer doesn't need to configure an Azure subscription for SharePoint Embedded billing. + +For pass-through billing: + +- Explain that consumption charges are billed to the consuming tenant. +- Tell the customer that no user can access pass-through SharePoint Embedded apps until valid billing is configured. +- Send the customer to [Guide customers through tenant setup](customer-tenant-setup-guide.md) and [Install a SharePoint Embedded app](../admin/install-sharepoint-embedded-app.md). + +## Prepare admin handoff materials + +Create a concise admin handoff packet that includes: + +- Installation overview. +- Publisher and app identity information. +- Security and compliance summary. +- Billing model summary. +- Microsoft Entra consent steps. +- Tenant setup steps. +- Validation checklist. +- Rollback or uninstall guidance. +- Support contacts and expected response times. + +Keep the handoff specific to one product and one container type. +If you publish multiple products, provide a separate handoff for each app. + +## Provide a validation checklist + +Include a checklist the customer can complete with you after installation: + +- The customer admin can identify the SharePoint Embedded application in the tenant. +- The customer admin has granted the expected consent. +- Pass-through billing is enabled when required. +- The application can create a test container. +- The application can upload, read, and delete test content. +- The customer admin can view container details. +- External sharing behavior matches the customer's policy. +- The test data is removed after validation. + +For detailed validation, see [Validate customer app installation](validate-customer-installation.md). + +## Next steps +Choose the correct billing option before you send installation instructions to a customer: [Choose a billing model for your app](choose-app-billing-model.md). diff --git a/docs/embedded/publish/validate-customer-installation.md b/docs/embedded/publish/validate-customer-installation.md new file mode 100644 index 0000000000..ae71813471 --- /dev/null +++ b/docs/embedded/publish/validate-customer-installation.md @@ -0,0 +1,239 @@ +--- +title: Validate customer app installation +description: Validate SharePoint Embedded container type registration, permissions, containers, and billing after a customer installs an ISV app. +ms.date: 07/10/2026 +ms.reviewer: dilucesr +ms.localizationpriority: high +--- +# Validate customer app installation + +**Applies to:** ISV / developer + + + +Use this article after a customer installs a SharePoint Embedded app. +Validation confirms that the container type registration, consent, billing, administration visibility, and basic container operations are working. +Run these checks with the customer admin before you announce the app to users. + +> [!IMPORTANT] +> Validate in the customer tenant that will run the production workload. +> A successful test in your developer tenant doesn't prove that the customer tenant is registered, consented, or billed correctly. + +## Validation goals + +Complete these goals before closing customer onboarding: + +1. Confirm that the app and container type are registered in the customer tenant. +1. Confirm that the expected permissions are granted. +1. Confirm that billing is valid for pass-through apps. +1. Confirm that the app can create or access a container. +1. Confirm that the customer admin can view the app and container. +1. Confirm that content operations work for a test user. +1. Confirm that common failure modes have been ruled out. + +For customer setup steps, see [Guide customers through tenant setup](customer-tenant-setup-guide.md). + +## People involved + +Validation usually needs both ISV and customer roles. + +| Role | Responsibility | +| --- | --- | +| ISV developer | Supplies expected app IDs, container type ID, app behavior, and support troubleshooting. | +| Customer Global Administrator or SharePoint Embedded Administrator | Confirms SharePoint Embedded app setup, billing, and administration visibility. | +| Customer Azure billing owner or contributor | Helps resolve pass-through billing setup issues. | +| Customer test user | Signs in and performs app-level document actions. | + +## Before you start + +Collect these values: + +- Customer tenant name or ID. +- Owning application ID. +- Application ID for guest apps, if your app uses them. +- Container type ID. +- Container type name. +- Billing model. +- Expected sharing behavior. +- Support ticket or onboarding record. + +> [!TIP] +> Keep the validation record with the customer's installation package. +> It helps future support teams distinguish setup issues from product regressions. + +## Step 1: Confirm container type registration + +Confirm that the container type is registered in the consuming tenant. +An app can't create or interact with containers until its container type is registered in that tenant. +Use your product's setup portal or registration flow to show the registration state. + +Ask the customer admin to use the [SharePoint admin center](https://go.microsoft.com/fwlink/?linkid=2185219) to verify that your SharePoint Embedded app is listed under the installed apps tab in the Active apps page under SharePoint Embedded. The customer admin may verify details of your SharePoint Embedded app such as: + +- The owning application ID. +- The container type ID. + +If registration isn't complete, return to [Guide customers through tenant setup](customer-tenant-setup-guide.md). + +## Step 2: Verify permissions + +To verify that your app is properly installed on the customer tenant: + +1. Using the owning app, request an access token for the Microsoft Graph `.default` scope in the consuming tenant. +1. Verify that the access token includes `FileStorageContainer.Selected` and `FileStorageContainerTypeReg.Selected` in either the `scp` claim (for access on behalf of a user) or `roles` claim (for access without a user). +1. Use the token to [get the registration for your container type in the tenant](/graph/api/filestoragecontainertyperegistration-get). If a registration is returned, it means that your SharePoint Embedded app is installed correctly. + +> [!TIP] +> You may also validate that your guest apps are properly set up by requesting an access token for the Microsoft Graph `.default` scope in the consuming tenant and validating that the scopes/roles you expect are present and that you can use the token to interact with content. Only the owning app can access a container type registration in a tenant. + +Confirm that the customer granted the expected permissions and no unexpected app ID was used. + +For most customer installations, validate at least these permissions: + +| Permission | Typical use | Validation note | +| --- | --- | --- | +| `FileStorageContainerTypeReg.Selected` | Register the container type in the consuming tenant. | The app can request this as delegated or application permission. If delegated registration is used, the user performing registration must be a SharePoint Embedded Administrator or Global Administrator. | +| `FileStorageContainer.Selected` | Access containers and content for the installed app. | This permission requires admin consent and should match the app behavior the customer approved. | + +Validate the following items: + +- Admin consent was granted by an authorized customer admin. +- The consented app ID matches the ISV installation package. +- The permission set includes the expected registration and content permissions for the app model. +- Guest application permissions are present when required. +- Delegated and app-only behavior matches your design. +- Test users are present in Microsoft Entra ID as members or guests. + +> [!CAUTION] +> Do not continue validation if the app ID or publisher doesn't match the installation package. +> Stop and resolve the consent mismatch first. + +If the owning app or any guest app is missing permissions, return to [Guide customers through tenant setup](customer-tenant-setup-guide.md). + +## Step 3: Verify billing status + +Billing validation depends on the selected billing model. + +### Standard billing + +For standard billing, confirm internally that your developer tenant billing relationship is active. +The customer doesn't need to configure a SharePoint Embedded billing profile for your app. +Still tell the customer how SharePoint Embedded consumption is handled for your application. + +Check: + +- The app is documented as standard billed. +- Your operations team can monitor consumption. +- The customer handoff doesn't ask the customer to configure pass-through billing. + +### Pass-through billing + +For pass-through billing, no user can access the app until the customer sets up valid billing. +Ask the customer admin to confirm billing in the [Microsoft 365 admin center](https://admin.cloud.microsoft). + +Check: + +- A valid Azure subscription is connected. +- A valid resource group is selected. +- The setup was completed for SharePoint Embedded apps. +- The customer billing admin has owner or contributor permissions where required. +- The customer understands that disabling billing interrupts user access. + +For billing model guidance, see [Choose a billing model for your app](choose-app-billing-model.md). + +## Step 4: Create or open a test container + +Use your app's normal product flow to create or open a test container in the customer tenant. +Do not use a hidden validation path that bypasses the same permissions and container type registration used by production users. + +Validate: + +- The app can create a container of the expected container type. +- The app can open an existing test container. +- The app can upload a small test document. +- The app can read the test document. +- The app can update or delete the test document if those actions are part of the product. +- The app reports errors in a way the customer and ISV support can troubleshoot. + +> [!WARNING] +> Avoid destructive validation in an existing production container. +> Use a clearly identified test container and remove test content when validation is complete. + +## Step 5: Verify container administration + +Customer admins can use the [SharePoint admin center](https://go.microsoft.com/fwlink/?linkid=2185219) to administer their installation of your SharePoint Embedded app and its containers: + +- Get details of containers for the SharePoint Embedded application. +- View details of a specific container. +- View containers sorted by storage. +- Set a sensitivity label where applicable. +- Manage deleted containers where applicable. +- Restore or permanently delete test containers only when intended. + +For customer administration guidance, see [Manage containers in SharePoint admin center](../admin/manage-containers-sharepoint-admin-center.md). + +## Step 6: Verify sharing and compliance expectations + +SharePoint Embedded uses Microsoft 365 security and compliance capabilities. +Ask the customer admin to validate the settings that matter for the app: + +- External sharing behavior. +- Guest user access. +- Sensitivity label expectations. +- Retention or deletion expectations. +- Audit or compliance review requirements. +- Customer policy exceptions, if any. + +If the app requires external collaboration, confirm that customer tenant sharing policies allow the intended behavior. +If sharing is restricted, document the product impact before users start using the app. + +## Common failure modes + +Use this table during onboarding. + +| Failure mode | What to check | Where to link | +| --- | --- | --- | +| App doesn't appear for admin | Container type registration and app ID | [Admin overview](../admin/admin-overview.md) | +| Consent error | Admin role and expected permissions | [Grant admin consent](../admin/grant-admin-consent-permissions.md) | +| Pass-through app inaccessible | Billing setup and Azure subscription | [Guide customers through tenant setup](customer-tenant-setup-guide.md) | +| Container create fails | Registration, permissions, and billing | [Install a SharePoint Embedded app](../admin/install-sharepoint-embedded-app.md) | +| Guest user can't access content | Guest identity and sharing policy | [Grant admin consent and permissions](../admin/grant-admin-consent-permissions.md) | +| Admin tools fail | Role assignment and administrative tool access | [Admin overview](../admin/admin-overview.md) | +| Billing was disconnected | New container creation is blocked; existing containers remain accessible | [Set up billing in Microsoft 365 admin center](../admin/setup-billing-m365-admin-center.md) | + +## Validation checklist + +Use this checklist as the final customer signoff. + +- [ ] Customer admin granted admin consent for your app. +- [ ] Container type registration is complete. +- [ ] Customer admin sees your SharePoint Embedded app in SharePoint admin center. +- [ ] Billing is valid or not required for the customer tenant. +- [ ] Test user can sign into your app. +- [ ] Test container can be created or opened. +- [ ] Test file operations work. +- [ ] Customer admin can view the app or container in administration tools. +- [ ] Sharing and compliance expectations are documented. +- [ ] Test content is removed or retained by agreement. +- [ ] Support handoff is complete. + +## After validation + +After validation succeeds: + +1. Record the date, tenant, app ID, and container type ID. +1. Save the billing model and customer setup result. +1. Share the validation record with the customer. +1. Move the app to the next release or rollout step. + +If validation fails, keep the customer in the setup phase and resolve the failure before broad user access. + +## Next steps + +- [Admin overview](../admin/admin-overview.md) +- [Install a SharePoint Embedded app](../admin/install-sharepoint-embedded-app.md) +- [Troubleshooting](../reference/troubleshooting.md) diff --git a/docs/embedded/reference/audit-events.md b/docs/embedded/reference/audit-events.md new file mode 100644 index 0000000000..18c521f896 --- /dev/null +++ b/docs/embedded/reference/audit-events.md @@ -0,0 +1,67 @@ +--- +title: Audit events +description: Reference for SharePoint Embedded container type audit events in the Microsoft Purview unified audit log. +ms.date: 07/10/2026 +ms.reviewer: pemtaira +ms.localizationpriority: high +--- + +# Audit events + +**Applies to:** Compliance administrator + + + +SharePoint Embedded container type and container type registration operations are captured in the Microsoft 365 unified audit log through [Microsoft Purview](/purview/audit-solutions-overview). These events let compliance administrators and developers track changes to container type definitions and registrations in consuming tenants. File and folder activity inside containers is captured by standard SharePoint file audit events. + +For step-by-step investigation guidance, see [Review audit events](../admin/review-audit-events.md). + +## Container type activities + +These events are logged when a container type is created, updated, or deleted. They use the **Workload** value **SharePoint** and appear under the **SharePoint Embedded Container Type activities** category in Microsoft Purview audit. + +| Friendly name | Operation | Description | +| --- | --- | --- | +| Created container type | `ContainerTypeCreated` | A new SharePoint Embedded container type definition was created. | +| Deleted container type | `ContainerTypeDeleted` | A SharePoint Embedded container type owned by the tenant was deleted. | +| Updated container type | `ContainerTypeUpdated` | Properties of a container type, such as name or configuration, were changed. | +| Updated container type owners | `ContainerTypeOwnersUpdated` | Owners were added to or removed from a container type. | + +For the full list of audit activities, see [Audit log activities](/purview/audit-log-activities#sharepoint-embedded-container-type-activities). + +## Container type registration activities + +These events are logged when a container type registration is created, updated, or deleted in a consuming tenant. A registration lets a SharePoint Embedded application operate in a given tenant. They use the **Workload** value **SharePoint** and appear under the **SharePoint Embedded Container Type Registration activities** category in Microsoft Purview audit. + +| Friendly name | Operation | Description | +| --- | --- | --- | +| Created container type registration | `ContainerTypeRegistrationCreated` | A SharePoint Embedded container type registration was created in a tenant. | +| Deleted container type registration | `ContainerTypeRegistrationDeleted` | A SharePoint Embedded container type registration was deleted from a tenant. | +| Updated container type registration | `ContainerTypeRegistrationUpdated` | A SharePoint Embedded container type registration was updated in a tenant. | + +For the full list of audit activities, see [Audit log activities](/purview/audit-log-activities#sharepoint-embedded-container-type-registration-activities). + +## Properties + +Container type and container type registration audit events include the `ContainerTypeId` property to identify the relevant container type. Unlike container-level file events, they don't include `ContainerInstanceId` because they apply at the type level, not to an individual container instance. + +Container type and container type registration audit events use the SharePoint base schema. For the full schema definition and enum values, see the [Office 365 Management Activity API schema](/office/office-365-management-api/office-365-management-activity-api-schema#sharepoint-base-schema). + +## Search for events + +Use the [Microsoft Purview audit log search](/purview/audit-search) and set the activity category filter to **SharePoint Embedded Container Type activities** or **SharePoint Embedded Container Type Registration activities**. You can also search with PowerShell: + +```powershell +Search-UnifiedAuditLog -Operations ContainerTypeCreated,ContainerTypeDeleted,ContainerTypeUpdated,ContainerTypeOwnersUpdated,ContainerTypeRegistrationCreated,ContainerTypeRegistrationDeleted,ContainerTypeRegistrationUpdated -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) +``` + +## Related content + +- [Review audit events](../admin/review-audit-events.md) +- [Apply security and compliance controls](../admin/apply-security-compliance-controls.md) +- [Search the audit log](/purview/audit-search) diff --git a/docs/embedded/reference/billing-meters.md b/docs/embedded/reference/billing-meters.md new file mode 100644 index 0000000000..4674d49e85 --- /dev/null +++ b/docs/embedded/reference/billing-meters.md @@ -0,0 +1,63 @@ +--- +title: Billing Meters +description: Reference for SharePoint Embedded pay-as-you-go billing meters and pricing resources. +ms.date: 07/10/2026 +ms.reviewer: pemtaira +ms.localizationpriority: high +--- + +# Billing Meters + +**Applies to:** Billing administrator + + + +SharePoint Embedded uses pay-as-you-go (PAYG) billing through an Azure subscription. SharePoint Embedded has four billing meters. Both standard billing container types and pass-through billing container types use the same meters. + +For setup guidance, see [choose a billing model](../plan/choose-billing-model.md). For monitoring, see [monitor usage, billing, and cost](../admin/monitor-usage-billing-cost.md). + +## Billing meters + +| Meter | Unit | What is metered | Notes | +| --- | --- | --- | --- | +| Storage | $/GB | Files, documents, metadata, versions, recycle bin content, and deleted container collection content, in both active and archived states. | Storage is based on data stored in SharePoint Embedded. | +| Archived Storage | $/GB | Storage consumed by archived containers within a tenant. | Archiving moves data to the cold storage tier, which offers lower storage costs than active storage. | +| API Transactions | $/Transactions | Each Microsoft Graph call made explicitly by the SharePoint Embedded application. | Internal service calls, such as eDiscovery queries and admin actions in SharePoint admin center or SharePoint PowerShell, aren't charged as application transactions. | +| Egress | $/GB | Data that exits the SharePoint Embedded platform, such as documents downloaded to a customer's client device or data transferred to a server operated by the customer. Charges are based on total volume transferred out (GB). | Downloads from the SharePoint Embedded application server to Office Desktop clients or Web Application Companion aren't charged as egress. | +| Pay-as-you-go message (private preview) | Message | SharePoint Embedded agent interactions. | SharePoint Embedded agents use the Copilot Studio meter. Each agent interaction uses 12 messages. | + +## Storage + +Storage consumption includes files and documents plus their metadata and versions, in both active and archived states. Content in the recycle bin and deleted container collection also contributes to storage consumption. + +## Archived storage + +The Archived Storage meter measures storage consumed by archived containers within a tenant. Archiving a container moves its data to the cold storage tier, which offers lower storage costs compared to active storage. Archived content is still billed, but at the archived-storage rate. + +## API transactions + +Each explicit Microsoft Graph request from the SharePoint Embedded application counts as one transaction. For examples of container APIs, see the [fileStorageContainer resource](/graph/api/resources/filestoragecontainer). + +## Egress + +Egress is data that exits the SharePoint Embedded platform, such as a document downloaded to a customer's client device or data transferred to a server operated by the customer. Egress charges are based on the total volume of data transferred out, measured in GB. Some Microsoft-integrated transfers are exempt, including downloads to Office Desktop clients and Web Application Companion. + +## Agent message meter + +The private preview SharePoint Embedded agent meter uses the Copilot Studio message meter. One SharePoint Embedded agent interaction uses 12 messages: two for generative answer and 10 for tenant graph grounding. + +## Pricing links + +- [SharePoint Embedded product page](https://adoption.microsoft.com/sharepoint/embedded/) +- [Azure Cost Management](https://ms.portal.azure.com/) +- [Monitor usage, billing, and cost](../admin/monitor-usage-billing-cost.md) + +## Related resources + +- [Choose a billing model](../plan/choose-billing-model.md) +- [Monitor usage, billing, and cost](../admin/monitor-usage-billing-cost.md) diff --git a/docs/embedded/reference/glossary.md b/docs/embedded/reference/glossary.md new file mode 100644 index 0000000000..a0b1e41880 --- /dev/null +++ b/docs/embedded/reference/glossary.md @@ -0,0 +1,37 @@ +--- +title: Glossary +description: Concise definitions of common SharePoint Embedded terms and concepts. +ms.date: 06/25/2026 +ms.reviewer: pemtaira +ms.localizationpriority: high +--- + +# Glossary + +**Applies to:** Developer + + + +| Term | Definition | +| --- | --- | +| Container | A File Storage Container: the basic SharePoint Embedded storage unit and security and compliance boundary for files. See [SharePoint Embedded overview](../overview.md). | +| Container type | A SharePoint Embedded resource that defines the relationship, access privileges, billing accountability, and behavior for a set of containers. See [container types](../plan/container-types-and-containers.md). | +| Developer tenant | The tenant that develops or owns the SharePoint Embedded application and creates its container type. See [container types](../plan/container-types-and-containers.md). | +| Consuming tenant | The Microsoft 365 tenant where a SharePoint Embedded app is used and where containers and content are stored. See [app architecture](../plan/app-tenant-architecture.md). | +| Container type registration | Registration of a container type in a consuming tenant so the app can perform allowed operations against containers of that type. See [register container type application permissions](../build/register-application-permissions.md). | +| Single-tenant app | An application model intended for use in one tenant, commonly for enterprise line-of-business scenarios. See [choose an app model](../plan/choose-app-model.md). | +| Multitenant app | An application model intended for use across customer tenants, commonly for ISV scenarios. See [choose an app model](../plan/choose-app-model.md). | +| Standard billing | A billing model where consumption charges are billed to the tenant that owns or develops the application. See [choose a billing model](../plan/choose-billing-model.md). | +| Pass-through (customer) billing | A billing model where consumption charges are billed directly to the consuming tenant registered to use the app. See [choose a billing model](../plan/choose-billing-model.md). | +| Owning application | The Microsoft Entra ID application registration strongly coupled with a container type; each owning app can own one container type at a time. See [app architecture](../plan/app-tenant-architecture.md). | +| Partition | The API-only SharePoint storage partition created in a consumer's Microsoft 365 tenant for SharePoint Embedded app documents. See [SharePoint Embedded overview](../overview.md). | + +## Related resources + +- [What is SharePoint Embedded?](../overview.md) +- [Understand app and tenant architecture](../plan/app-tenant-architecture.md) diff --git a/docs/embedded/reference/graph-api-links.md b/docs/embedded/reference/graph-api-links.md new file mode 100644 index 0000000000..1d0246ce97 --- /dev/null +++ b/docs/embedded/reference/graph-api-links.md @@ -0,0 +1,170 @@ +--- +title: Microsoft Graph API reference links +description: Curated Microsoft Graph v1.0 reference links for SharePoint Embedded containers, container types, and files. +ms.date: 07/08/2026 +ms.reviewer: pemtaira +ms.localizationpriority: high +--- + +# Microsoft Graph API reference links + +**Applies to:** Developer + + + +SharePoint Embedded applications store and manage containers and container content through Microsoft Graph. This page links the generally available (v1.0) Graph APIs for SharePoint Embedded. For task guidance, see [create and manage containers](../build/create-manage-containers.md) and [manage files](../build/manage-files.md). + +> [!NOTE] +> The `fileStorageContainerType`, `fileStorageContainerTypeRegistration`, and application permission grant APIs are generally available on the **v1.0** Microsoft Graph endpoint. + +## Container APIs + +| Operation | Microsoft Graph reference | +| --- | --- | +| `fileStorageContainer` resource | [fileStorageContainer resource type](/graph/api/resources/filestoragecontainer) | +| Create container | [Create fileStorageContainer](/graph/api/filestoragecontainer-post) | +| Get container | [Get fileStorageContainer](/graph/api/filestoragecontainer-get) | +| List containers | [List containers](/graph/api/filestorage-list-containers) | +| Update container | [Update fileStorageContainer](/graph/api/filestoragecontainer-update) | +| Delete container | [Delete fileStorageContainer](/graph/api/filestorage-delete-containers) | +| Activate container | [fileStorageContainer: activate](/graph/api/filestoragecontainer-activate) | +| Lock container | [fileStorageContainer: lock](/graph/api/filestoragecontainer-lock) | +| Unlock container | [fileStorageContainer: unlock](/graph/api/filestoragecontainer-unlock) | +| Get container drive | [Get drive for fileStorageContainer](/graph/api/filestoragecontainer-get-drive) | +| List deleted containers | [List deleted containers](/graph/api/filestorage-list-deletedcontainers) | +| Restore deleted container | [fileStorageContainer: restore](/graph/api/filestoragecontainer-restore) | +| Permanently delete container | [fileStorageContainer: permanentDelete](/graph/api/filestoragecontainer-permanentdelete) | +| Remove a deleted container | [Remove deleted fileStorageContainer](/graph/api/filestorage-delete-deletedcontainers) | + +## Container permission APIs + +| Operation | Microsoft Graph reference | +| --- | --- | +| List permissions | [List fileStorageContainer permissions](/graph/api/filestoragecontainer-list-permissions) | +| Get permission | [Get fileStorageContainer permission](/graph/api/filestoragecontainer-get-permissions) | +| Create permission | [Create fileStorageContainer permission](/graph/api/filestoragecontainer-post-permissions) | +| Update permission | [Update fileStorageContainer permission](/graph/api/filestoragecontainer-update-permissions) | +| Upsert permissions | [Upsert permissions](/graph/api/filestoragecontainer-patch-permissions) | +| Delete permission | [Delete permissions](/graph/api/filestoragecontainer-delete-permissions) | + +## Container metadata APIs + +Container columns define the metadata schema. Custom properties store key-value metadata on a container. + +| Operation | Microsoft Graph reference | +| --- | --- | +| List columns | [List columns](/graph/api/filestoragecontainer-list-columns) | +| Get column | [Get column](/graph/api/filestoragecontainer-get-column) | +| Create column | [Create column](/graph/api/filestoragecontainer-post-columns) | +| Update column | [Update column](/graph/api/filestoragecontainer-update-column) | +| Delete column | [Delete column](/graph/api/filestoragecontainer-delete-column) | +| List custom properties | [List custom properties](/graph/api/filestoragecontainer-list-customproperty) | +| Add custom properties | [Add custom properties](/graph/api/filestoragecontainer-post-customproperty) | +| Update custom properties | [Update custom properties](/graph/api/filestoragecontainer-update-customproperty) | +| Delete custom properties | [Delete custom properties](/graph/api/filestoragecontainer-delete-customproperty) | + +## Container recycle bin APIs + +| Operation | Microsoft Graph reference | +| --- | --- | +| List recycle bin items | [List recycleBinItem](/graph/api/filestoragecontainer-list-recyclebinitem) | +| Restore recycle bin item | [Restore recycleBinItem](/graph/api/filestoragecontainer-restore-recyclebinitem) | +| Delete recycle bin item | [Delete recycleBinItem](/graph/api/filestoragecontainer-delete-recyclebinitem) | +| Update recycle bin settings | [Update recycleBinSettings](/graph/api/filestoragecontainer-update-recyclebinsettings) | + +## SharePoint group APIs + +| Operation | Microsoft Graph reference | +| --- | --- | +| List SharePoint groups | [List sharePointGroups](/graph/api/filestoragecontainer-list-sharepointgroups) | +| Create SharePoint group | [Create sharePointGroup](/graph/api/filestoragecontainer-post-sharepointgroups) | +| Delete SharePoint group | [Delete sharePointGroup](/graph/api/filestoragecontainer-delete-sharepointgroups) | + +## Container migration APIs + +| Operation | Microsoft Graph reference | +| --- | --- | +| Provision migration containers | [fileStorageContainer: provisionMigrationContainers](/graph/api/filestoragecontainer-provisionmigrationcontainers) | +| Create migration job | [Create sharePointMigrationJob](/graph/api/filestoragecontainer-post-migrationjobs) | + +## Container type APIs + +| Operation | Microsoft Graph reference | +| --- | --- | +| `fileStorageContainerType` resource | [fileStorageContainerType resource type](/graph/api/resources/filestoragecontainertype) | +| List container types | [List containerTypes](/graph/api/filestorage-list-containertypes) | +| Create container type | [Create fileStorageContainerType](/graph/api/filestorage-post-containertypes) | +| Get container type | [Get fileStorageContainerType](/graph/api/filestoragecontainertype-get) | +| Update container type | [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) | +| Delete container type | [Delete fileStorageContainerType](/graph/api/filestorage-delete-containertypes) | + +## Container type registration APIs + +Register a container type in a consuming tenant, then grant application permissions on that registration. + +| Operation | Microsoft Graph reference | +| --- | --- | +| `fileStorageContainerTypeRegistration` resource | [fileStorageContainerTypeRegistration resource type](/graph/api/resources/filestoragecontainertyperegistration) | +| List registrations | [List containerTypeRegistrations](/graph/api/filestorage-list-containertyperegistrations) | +| Create registration | [Create fileStorageContainerTypeRegistration](/graph/api/filestorage-post-containertyperegistrations) | +| Get registration | [Get fileStorageContainerTypeRegistration](/graph/api/filestoragecontainertyperegistration-get) | +| Update registration | [Update fileStorageContainerTypeRegistration](/graph/api/filestoragecontainertyperegistration-update) | +| Delete registration | [Delete fileStorageContainerTypeRegistration](/graph/api/filestorage-delete-containertyperegistrations) | +| List application permission grants | [List applicationPermissionGrants](/graph/api/filestoragecontainertyperegistration-list-applicationpermissiongrants) | +| Create application permission grant | [Create fileStorageContainerTypeAppPermissionGrant](/graph/api/filestoragecontainertyperegistration-post-applicationpermissiongrants) | +| Get application permission grant | [Get fileStorageContainerTypeAppPermissionGrant](/graph/api/filestoragecontainertypeapppermissiongrant-get) | +| Update application permission grant | [Update fileStorageContainerTypeAppPermissionGrant](/graph/api/filestoragecontainertypeapppermissiongrant-update) | +| Delete application permission grant | [Delete fileStorageContainerTypeAppPermissionGrant](/graph/api/filestoragecontainertyperegistration-delete-applicationpermissiongrants) | + +## Drive and driveItem APIs + +All file system objects in a `fileStorageContainer` are returned as `driveItem` resources. + +| Operation | Microsoft Graph reference | +| --- | --- | +| `drive` resource | [drive resource type](/graph/api/resources/drive) | +| `driveItem` resource | [driveItem resource type](/graph/api/resources/driveitem) | +| Get item | [Get driveItem](/graph/api/driveitem-get) | +| List children | [List children of a driveItem](/graph/api/driveitem-list-children) | +| Create folder | [Create driveItem](/graph/api/driveitem-post-children) | +| Update item | [Update driveItem](/graph/api/driveitem-update) | +| Delete item | [Delete driveItem](/graph/api/driveitem-delete) | +| Move item | [Move a driveItem](/graph/api/driveitem-move) | +| Copy item | [Copy a driveItem](/graph/api/driveitem-copy) | +| Upload small file | [Upload or replace driveItem contents](/graph/api/driveitem-put-content) | +| Create upload session | [Create uploadSession](/graph/api/driveitem-createuploadsession) | +| Download file | [Download driveItem content](/graph/api/driveitem-get-content) | +| Share item | [Invite people to a driveItem](/graph/api/driveitem-invite) | +| Track changes | [Enumerate changes (delta)](/graph/api/driveitem-delta) | +| Search with Microsoft Search | [Query the Microsoft Search API](/graph/api/search-query) | +| Create webhook subscription | [Create subscription](/graph/api/subscription-post-subscriptions) | + +## Resource types + +| Resource | Microsoft Graph reference | +| --- | --- | +| `fileStorage` | [fileStorage resource type](/graph/api/resources/filestorage) | +| `fileStorageContainer` | [fileStorageContainer resource type](/graph/api/resources/filestoragecontainer) | +| `fileStorageContainerSettings` | [fileStorageContainerSettings resource type](/graph/api/resources/filestoragecontainersettings) | +| `fileStorageContainerViewpoint` | [fileStorageContainerViewpoint resource type](/graph/api/resources/filestoragecontainerviewpoint) | +| `fileStorageContainerCustomPropertyDictionary` | [fileStorageContainerCustomPropertyDictionary resource type](/graph/api/resources/filestoragecontainercustompropertydictionary) | +| `fileStorageContainerCustomPropertyValue` | [fileStorageContainerCustomPropertyValue resource type](/graph/api/resources/filestoragecontainercustompropertyvalue) | +| `fileStorageContainerType` | [fileStorageContainerType resource type](/graph/api/resources/filestoragecontainertype) | +| `fileStorageContainerTypeSettings` | [fileStorageContainerTypeSettings resource type](/graph/api/resources/filestoragecontainertypesettings) | +| `fileStorageContainerTypeRegistration` | [fileStorageContainerTypeRegistration resource type](/graph/api/resources/filestoragecontainertyperegistration) | +| `fileStorageContainerTypeRegistrationSettings` | [fileStorageContainerTypeRegistrationSettings resource type](/graph/api/resources/filestoragecontainertyperegistrationsettings) | +| `fileStorageContainerTypeAppPermissionGrant` | [fileStorageContainerTypeAppPermissionGrant resource type](/graph/api/resources/filestoragecontainertypeapppermissiongrant) | + +## Authentication + +SharePoint Embedded uses Microsoft Graph permissions plus container type application permissions. Start with [SharePoint Embedded authentication and authorization](../build/configure-authentication-authorization.md) before you implement the API calls. + +## Related resources + +- [Create and manage containers](../build/create-manage-containers.md) +- [Upload, download, and manage files](../build/manage-files.md) \ No newline at end of file diff --git a/docs/embedded/reference/powershell.md b/docs/embedded/reference/powershell.md new file mode 100644 index 0000000000..1dc04a8451 --- /dev/null +++ b/docs/embedded/reference/powershell.md @@ -0,0 +1,63 @@ +--- +title: PowerShell Reference +description: Reference for SharePoint Online PowerShell cmdlets used to administer SharePoint Embedded. +ms.date: 07/10/2026 +ms.reviewer: dilucesr +ms.localizationpriority: high +--- + +# PowerShell Reference + +**Applies to:** Consuming tenant administrator + + + +SharePoint Embedded administrators use the latest [SharePoint Online Management Shell](/powershell/sharepoint/sharepoint-online/connect-sharepoint-online) and connect with [Connect-SPOService](/powershell/module/sharepoint-online/connect-sposervice). Users must be SharePoint Embedded Administrators or Global Administrators for the supported container administration cmdlets. + +For task guidance, see [manage containers with PowerShell](../admin/manage-containers-powershell.md). + +## Application administration + +| Task | Cmdlet | Parameters | Example | +| --- | --- | --- | --- | +| List SharePoint Embedded applications | [Get-SPOApplication](/powershell/module/sharepoint-online/get-spoapplication) | None | `Get-SPOApplication` | +| Get a specific owning application | [Get-SPOApplication](/powershell/module/sharepoint-online/get-spoapplication) | `-OwningApplicationId` | `Get-SPOApplication -OwningApplicationId ` | +| View guest application permissions | [Get-SPOApplication](/powershell/module/sharepoint-online/get-spoapplication) | `-OwningApplicationId`, `-ApplicationId` | `Get-SPOApplication -OwningApplicationId -ApplicationId ` | +| Set application sharing capability | Set-SPOApplication | `-OwningApplicationId`, `-SharingCapability`, `-OverrideTenantSharingCapability` | `Set-SPOApplication -OwningApplicationId -SharingCapability -OverrideTenantSharingCapability <$OverrideTenantSharingCapability>` | +| Manage guest application permission | [Set-SPOApplicationPermission](/powershell/module/sharepoint-online/set-spoapplicationpermission) | `-OwningApplicationId`, `-ApplicationId`, `-PermissionAppOnly`, `-PermissionDelegated` | `Set-SPOApplicationPermission -OwningApplicationId -ApplicationId -PermissionAppOnly -PermissionDelegated ` | + +`SharingCapability` accepts `Disabled`, `ExistingExternalUserSharingOnly`, `ExternalUserSharingOnly`, and `ExternalUserAndGuestSharing`. `OverrideTenantSharingCapability` can be `$true` or `$false`. + +> [!NOTE] +> Application administration cmdlets don't apply to Microsoft Loop. + +## Container administration + +| Task | Cmdlet | Parameters | Example | +| --- | --- | --- | --- | +| List active containers for an application | [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer) | `-OwningApplicationId` | `Get-SPOContainer -OwningApplicationId \| FT` | +| List containers sorted by storage | [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer) | `-OwningApplicationId`, `-SortByStorage` | `Get-SPOContainer -OwningApplicationId -SortByStorage \| FT` | +| List archived containers for an application | [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer) | `-OwningApplicationId`, `-ArchiveStatus` | `Get-SPOContainer -OwningApplicationId -ArchiveStatus Archived \| FT` | +| Get container details | [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer) | `-Identity` | `Get-SPOContainer -Identity ` | +| Get container details by site URL | [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer) | `-Identity` | `Get-SPOContainer -Identity ` | +| Set a sensitivity label | Set-SPOContainer | `-Identity`, `-SensitivityLabel` | `Set-SPOContainer -Identity -SensitivityLabel ` | +| Remove a sensitivity label | Set-SPOContainer | `-Identity`, `-RemoveLabel` | `Set-SPOContainer -Identity -RemoveLabel` | +| Soft delete a container | [Remove-SPOContainer](/powershell/module/sharepoint-online/remove-spocontainer) | `-Identity` | `Remove-SPOContainer -Identity ` | +| List deleted containers | [Get-SPODeletedContainer](/powershell/module/sharepoint-online/get-spodeletedcontainer) | None | `Get-SPODeletedContainer` | +| Restore a deleted container | Restore-SPODeletedContainer | `-Identity` | `Restore-SPODeletedContainer -Identity ` | +| Permanently delete a deleted container | [Remove-SPODeletedContainer](/powershell/module/sharepoint-online/remove-spodeletedcontainer) | `-Identity` | `Remove-SPODeletedContainer -Identity ` | + +Deleted containers can be restored from the deleted container collection within 93 days. Permanently deleting a container deletes all documents and files in it. If a container was in the archived state when it was deleted, restoring it returns it to the archived state. + +> [!NOTE] +> To enumerate Microsoft Loop containers, use owning app ID `a187e399-0c36-4b98-8f04-1edc167a0996`. + +## Related resources + +- [Manage containers with PowerShell](../admin/manage-containers-powershell.md) +- [Create and configure a container type](../build/create-container-type.md) diff --git a/docs/embedded/reference/troubleshooting.md b/docs/embedded/reference/troubleshooting.md new file mode 100644 index 0000000000..7afc598535 --- /dev/null +++ b/docs/embedded/reference/troubleshooting.md @@ -0,0 +1,47 @@ +--- +title: Troubleshooting +description: Common SharePoint Embedded setup, auth, billing, Office, search, webhook, and admin issues. +ms.date: 07/09/2026 +ms.reviewer: pemtaira +ms.localizationpriority: high +--- + +# Troubleshooting + +**Applies to:** Developer + + + +Use this reference to identify likely causes and fixes. For end-to-end setup, see [create and manage containers](../build/create-manage-containers.md), [manage files](../build/manage-files.md), and [monitor usage, billing, and cost](../admin/monitor-usage-billing-cost.md). + +| Issue | Likely cause | Fix | Related task | +| --- | --- | --- | --- | +| Container type creation fails. | The user doesn't have the required permission, the owning app configuration is incomplete, or billing setup is missing. | Confirm the user can create container types with Microsoft Graph or the SharePoint Embedded Visual Studio Code extension. For admin-only operations, confirm the required role. | [Create and configure a container type](../build/create-container-type.md) | +| Standard container type billing setup fails with `SubscriptionNotRegistered`. | `Microsoft.Syntex` isn't registered as a resource provider in the subscription. | Wait 5-10 minutes after the cmdlet sends the registration request, then retry. Ensure the admin has Owner or Contributor permissions on the Azure subscription. | [Choose a billing model](../plan/choose-billing-model.md) | +| Access denied when calling container or file APIs. | The container type hasn't been registered in the consuming tenant, or the application lacks container type application permissions. | Grant admin consent, call the container type registration API, and verify delegated or app-only permissions include the required operations. | [Create and manage containers](../build/create-manage-containers.md) | +| Delegated API calls return `403 Forbidden` when listing containers. | The signed-in user doesn't have a OneDrive. The List containers operation on behalf of a user requires the user to have a OneDrive. | Use app-only mode for list containers, or ensure the user has a OneDrive until this dependency is removed. | [Create and manage containers](../build/create-manage-containers.md) | +| Pass-through app users can't create new containers (or can't use the app before billing is first configured). | Pass-through billing hasn't been configured, SharePoint Embedded was turned off, or the linked Azure subscription was disconnected. A Global Administrator must set up billing in the Microsoft 365 admin center. | Have a Global Administrator configure pay-as-you-go services for SharePoint Embedded in the Microsoft 365 admin center and confirm the Azure subscription remains linked. Existing containers stay accessible while billing is invalid. | [Monitor usage, billing, and cost](../admin/monitor-usage-billing-cost.md) | +| Office documents open but mentions don't resolve expected users. | Mentions require target users to have a Microsoft 365 license and are restricted to people inside the consuming tenant organization. | Assign the required Microsoft 365 license to internal target users; don't expect guest or cross-tenant users in the mentions picker. | [Manage files](../build/manage-files.md) | +| Search returns unexpected containers or content. | Microsoft Search runs in the context of the signed-in user and can return content the user can access unless scoped. | Include `ContainerTypeId` or `ContainerId` in the query string. If discoverability is disabled, set `includeHiddenContent` as documented. | [Build search experiences](../build/search-containers-files.md) | +| Search API calls fail because of permissions. | Search scenarios require delegated Microsoft Graph permissions during preview, including `Files.Read.All` in addition to `FileStorageContainer.Selected`. | Request and consent to the required delegated permissions and retest with a signed-in user. | [Build search experiences](../build/search-containers-files.md) | +| Webhook subscription validation fails. | The notification endpoint doesn't echo the `validationToken` as plain text, or the endpoint isn't publicly reachable. | Return `200` with the `validationToken` and `Content-Type: text/plain`; expose the endpoint through a reachable public URL. | [Use webhooks](../build/respond-to-changes-webhooks.md) | +| Webhook notifications don't identify the intended container. | The subscription notification URL doesn't carry the container ID, or the handler doesn't read it. | Append `driveId={{ContainerId}}` to the notification URL and have the handler read the `driveId` query parameter. | [Use webhooks](../build/respond-to-changes-webhooks.md) | +| Container isn't visible in SharePoint admin center. | The admin is using the wrong owning application ID, identity, or role. | Confirm the owning application ID and admin role, then refresh the admin experience. | [Admin overview](../admin/admin-overview.md) | + +## Diagnostic links + +- [Authentication and authorization](../build/configure-authentication-authorization.md) +- [Container types](../plan/container-types-and-containers.md) +- [Billing](../admin/setup-billing-m365-admin-center.md) +- [Admin overview](../admin/admin-overview.md) +- [Microsoft Graph API reference links](graph-api-links.md) + +## Related resources + +- [Configure authentication and authorization](../build/configure-authentication-authorization.md) +- [Plan authentication and permissions](../plan/authentication-permissions.md) diff --git a/docs/embedded/scenarios-and-use-cases.md b/docs/embedded/scenarios-and-use-cases.md index 2c199f2875..390ad18178 100644 --- a/docs/embedded/scenarios-and-use-cases.md +++ b/docs/embedded/scenarios-and-use-cases.md @@ -1,71 +1,78 @@ --- title: Scenarios and Use Cases description: Scenarios and Use Cases for SharePoint Embedded -ms.date: 05/21/2024 +ms.date: 07/09/2026 +ms.reviewer: stpuceli ms.localizationpriority: high --- # Scenarios and use cases for SharePoint Embedded -Use these example scenarios to prompt ideas about how custom applications can use SharePoint Embedded. +Use these example scenarios to spark ideas for how your custom application can use SharePoint Embedded. Each scenario combines several features to solve a common content-management problem. > [!NOTE] -> This article is not intended to be an exhaustive list of all SharePoint Embedded features and scenarios. The intention is that these scenarios are contextualized examples of how combinations of features can be used. +> This article isn't an exhaustive list of SharePoint Embedded features and scenarios. Each scenario shows one way to combine features in context. ## Scenario: Structured user experience ### Description -Where your application requires a guided user experience to make users work in a structured way, rather than the flexible experience of SharePoint. +Choose this pattern when your application needs a guided experience. You want users to work in a structured way rather than in the flexible SharePoint Online interface. -Where your application is enabling a business-critical or time sensitive process, use the dedicated resource allocation of SharePoint Embedded to simplify management of throttling. +This pattern also suits business-critical or time-sensitive processes. SharePoint Embedded allocates dedicated resources, so you can manage throttling more easily. ### Examples - Extended Relationship Management (XRM) applications - Engagement-based applications -- Workflow-based collaboration, with defined state +- Workflow-based collaboration with defined state -### Why use SharePoint Embedded instead of SharePoint? +### Why use SharePoint Embedded instead of SharePoint Online? -- Your application is the only user interface, allowing you to create a prescriptive user experience -- Resources are separate from your Microsoft 365 entitlements– allowing for simpler resource management. +- Your application is the only user interface, so you control the entire user experience. +- Resources sit apart from your Microsoft 365 entitlements, which simplifies resource management. ## Scenario: Highly controlled collaboration ### Description -When building applications on top of SharePoint, it will still be possible for a user with permissions to navigate to the underlying site. Based on their permission level, a user might complete actions in the SharePoint interface that weren't intended by your application, for example changing site settings. These actions might have unintended consequences for your application or content. +When you build on SharePoint Online directly, a user with permissions can still open the underlying site without awareness from your application. Depending on their permission level, that user might change site settings or take other actions your application didn't intend. Those actions can have unintended consequences for your application or content. -Because SharePoint Embedded is headless, there's no user interface other than what is provided by your custom application. If you don't supply a method to change content or settings through your application, then it won’t be possible for a user to circumvent this through SharePoint. You have the choice for which collaborative features are available in your application, for example sharing. +SharePoint Embedded is headless, so your custom application provides the only interface. If your application doesn't expose a way to change content or settings, a user can't bypass it through SharePoint Online. You decide which collaborative features, such as sharing, your application offers. ### Examples - Deal room applications - Shared research environments -### Why use SharePoint Embedded instead of SharePoint? +### Why use SharePoint Embedded instead of SharePoint Online? -- You need the collaborative capabilities of SharePoint, only via a highly customized user interface -- You're handling high-value content, where you want to manage risk by removing abilities for a user to discover or alter the content repository -- All containers for the application can share default sharing settings that are separate from your OneDrive and SharePoint settings -- Content is logically separated from other Microsoft 365 content +- You need SharePoint's collaborative capabilities, but only through a highly customized interface. +- You handle high-value content and want to limit who can discover or alter the repository. +- Every container in the application can share default sharing settings that stay separate from your OneDrive and SharePoint Online settings. +- Content stays logically separated from your other Microsoft 365 content. -## Scenario: Customer facing document upload +## Scenario: Customer-facing document upload ### Description -Your application is aimed at an end customer, either within your organization or externally, who needs to upload a file as part of their interaction. You require a simplified end-user experience in your custom application, along with the Microsoft 365 capabilities of document storage and compliance. +Your application serves an end customer, inside or outside your organization, who uploads a file as part of an interaction. You want a simple end-user experience plus the Microsoft 365 capabilities for document storage and compliance. -Using SharePoint Embedded will support this scenario, while not requiring the users of your application to have access or entitlement to your Microsoft 365 tenant. +SharePoint Embedded supports this scenario. The users of your application don't need access or entitlement to your Microsoft 365 tenant. ### Examples -- Applying evidence to mortgage application -- Identity document verification +- Attaching evidence to a mortgage application +- Verifying an identity document -### Why use SharePoint Embedded instead of SharePoint? +### Why use SharePoint Embedded instead of SharePoint Online? -- It's critical to segregate this data from the rest of your Microsoft 365 storage, while still being in scope for compliance tools like eDiscovery -- No Microsoft 365 licensing is required for users, or the use of external users in SharePoint -- Containers offer a simple, flexible unit of data storage +- You must segregate this data from the rest of your Microsoft 365 storage, yet keep it in scope for compliance tools like eDiscovery. +- Users need no Microsoft 365 licensing, and you avoid adding external users to SharePoint Online. +- Containers give you a simple, flexible unit of data storage. + +## Related content + +- [What is SharePoint Embedded?](overview.md) +- [Understand app and tenant architecture](plan/app-tenant-architecture.md) +- [Quickstart: Build your first app with VS Code](build/quickstart-vscode.md) diff --git a/docs/embedded/sharepoint-embedded-documentation.md b/docs/embedded/sharepoint-embedded-documentation.md new file mode 100644 index 0000000000..2197c1071b --- /dev/null +++ b/docs/embedded/sharepoint-embedded-documentation.md @@ -0,0 +1,109 @@ +--- +title: SharePoint Embedded documentation +description: Task-based index for SharePoint Embedded. Find the right page by what you are trying to do, whether you build apps or administer them. +ms.date: 06/25/2026 +ms.localizationpriority: high +--- + +# SharePoint Embedded documentation + +SharePoint Embedded is a cloud-based, API-only file and document management platform built on Microsoft 365. Developers embed Office collaboration, Microsoft Purview compliance, and Copilot into their own apps — while documents stay inside each customer's Microsoft 365 tenant. + +This page is organized by **task**. Find what you're trying to do and go straight to the page that does it. A machine-readable index is available in this folder as `llms.txt`. + +> [!TIP] +> New here? Read [What is SharePoint Embedded?](./overview.md) first, then come back to pick a task. + + + +## Two roads + +Almost everyone is one of two people. Architects, IT decision makers, billing admins, and compliance admins each merge onto one of these: + +| You are… | You want to… | Start at | +|---|---|---| +| Developer / architect | Build and ship an app | [Build an app](#build-an-app) | +| ISV / developer | Onboard customers and bill | [Publish and onboard customers](#publish-and-onboard-customers) | +| SharePoint / tenant admin | Install and manage apps | [Install and manage apps](#install-and-manage-apps) | +| Compliance admin | Govern and secure content | [Apply security and compliance controls](./admin/apply-security-compliance-controls.md) | +| Evaluating / planning | Decide and design | [Plan a solution](#plan-a-solution) | + +## Plan a solution + +Decide how SharePoint Embedded fits before you write code. + +- [Understand app and tenant architecture](./plan/app-tenant-architecture.md) +- [Choose an app model: single-tenant or multitenant](./plan/choose-app-model.md) +- [Understand container types and containers](./plan/container-types-and-containers.md) +- [Choose a billing model](./plan/choose-billing-model.md) +- [Plan authentication and permissions](./plan/authentication-permissions.md) +- [Plan security, compliance, and governance](./plan/security-compliance-governance.md) +- [Understand limits and calling patterns](./plan/limits-calling-patterns.md) + +## Build an app + +An ordered journey from first container to a full-featured app. + +1. [Quickstart: build your first app with VS Code](./build/quickstart-vscode.md) +2. [Create and configure a container type](./build/create-container-type.md) +3. [Register application permissions](./build/register-application-permissions.md) +4. [Configure authentication and authorization](./build/configure-authentication-authorization.md) +5. [Create and manage containers](./build/create-manage-containers.md) +6. [Upload, download, and manage files](./build/manage-files.md) +7. [Open Office files from your app](./build/open-office-files.md) +8. [Preview files in your app](./build/preview-files.md) +9. [Search containers and files](./build/search-containers-files.md) +10. [Store and query container metadata](./build/container-metadata.md) +11. [Share files and manage permissions](./build/share-files-manage-permissions.md) +12. [Respond to file and container changes with webhooks](./build/respond-to-changes-webhooks.md) +13. [Archive and restore containers](./build/archive-restore-containers.md) +14. [Add real-time collaboration with Fluid Framework](./build/fluid-framework.md) +15. [Add Microsoft 365 Copilot and agent experiences](./build/agent-experiences.md) +16. [Set up SharePoint Embedded as a Foundry knowledge source](./build/sharepoint-embedded-knowledge-source.md) +17. [Migrate from Azure Blob Storage](./build/migrate-azure-blob-storage.md) + +## Publish and onboard customers + +For ISVs shipping a multitenant app. + +- [Prepare your app for customer installation](./publish/prepare-customer-installation.md) +- [Choose a billing model for your app](./publish/choose-app-billing-model.md) +- [Guide customers through tenant setup](./publish/customer-tenant-setup-guide.md) +- [Validate customer app installation](./publish/validate-customer-installation.md) + +## Install and manage apps + +For administrators of a Microsoft 365 tenant that uses SharePoint Embedded apps. + +- [Admin overview](./admin/admin-overview.md) +- [Create apps in SharePoint admin center](./admin/create-apps-sharepoint-admin-center.md) +- [Create apps with PowerShell](./admin/create-apps-powershell.md) +- [Install a SharePoint Embedded app](./admin/install-sharepoint-embedded-app.md) +- [Grant admin consent and permissions](./admin/grant-admin-consent-permissions.md) +- [Set up billing in Microsoft 365 admin center](./admin/setup-billing-m365-admin-center.md) +- [Manage containers in SharePoint admin center](./admin/manage-containers-sharepoint-admin-center.md) +- [Manage containers with PowerShell](./admin/manage-containers-powershell.md) +- [Monitor usage, billing, and cost](./admin/monitor-usage-billing-cost.md) +- [Review audit events](./admin/review-audit-events.md) +- [Apply security and compliance controls](./admin/apply-security-compliance-controls.md) + +## Reference + +- [Billing meters](./reference/billing-meters.md) +- [Audit events](./reference/audit-events.md) +- [PowerShell reference](./reference/powershell.md) +- [Microsoft Graph API reference links](./reference/graph-api-links.md) +- [Troubleshooting](./reference/troubleshooting.md) +- [Glossary](./reference/glossary.md) +- `llms.txt` — machine-readable corpus index for coding agents + +## More + +- [Scenarios and use cases](./scenarios-and-use-cases.md) +- [What's new](./whats-new.md) +- [Microsoft Graph SharePoint Embedded API reference](/graph/api/resources/filestoragecontainer) diff --git a/docs/embedded/whats-new.md b/docs/embedded/whats-new.md index 61a9d31312..404385306b 100644 --- a/docs/embedded/whats-new.md +++ b/docs/embedded/whats-new.md @@ -1,7 +1,8 @@ --- title: What's new in SharePoint Embedded? description: Updates about Microsoft SharePoint Embedded. -ms.date: 06/04/2025 +ms.date: 07/09/2026 +ms.reviewer: dilucesr ms.localizationpriority: medium --- @@ -9,19 +10,19 @@ ms.localizationpriority: medium ## June 2026 -- [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource has a new `urlTemplate` [setting](/graph/api/resources/filestoragecontainertypesettings). For more information on what the `urlTemplate` setting does, see [Configure redirect behavior](./development/content-experiences/configure-redirect-behavior.md). -- The [`FileStorageContainerType.Manage.All`](/graph/permissions-reference#filestoragecontainertypemanageall) Microsoft Graph permission no longer requires the [SharePoint Embedded Administrator](./administration/adminrole.md) or [Global Administrator](/entra/identity/role-based-access-control/permissions-reference#global-administrator) role. Any non-guest user in the owning tenant can [create a container type](./getting-started/containertypes.md#creating-container-types) and is automatically assigned as an [owner of that container type](./development/auth.md#container-type-owner-capabilities). +- [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) has a new `urlTemplate` [setting](/graph/api/resources/filestoragecontainertypesettings). For more information on what the `urlTemplate` setting does, see [Create and configure a container type](./build/create-container-type.md#configure-container-type-behavior). +- The [`FileStorageContainerType.Manage.All`](/graph/permissions-reference#filestoragecontainertypemanageall) Microsoft Graph permission no longer requires the [SharePoint Embedded Administrator](./admin/admin-overview.md#assign-the-sharepoint-embedded-administrator-role) or [Global Administrator](/entra/identity/role-based-access-control/permissions-reference#global-administrator) role. Any non-guest user in the owning tenant can [create a container type](./build/create-container-type.md) and is automatically assigned as an [owner of that container type](./build/configure-authentication-authorization.md#manage-container-type-owners). ## May 2026 -- [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) operations now emit audit logs for `ContainerTypeCreated`, `ContainerTypeDeleted`, `ContainerTypeUpdated` and `ContainerTypeOwnersUpdated`. For more information, see [SharePoint Embedded audit log events](./compliance/audit-events.md#container-type-activities). +- [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) operations now emit audit logs for `ContainerTypeCreated`, `ContainerTypeDeleted`, `ContainerTypeUpdated`, and `ContainerTypeOwnersUpdated`. For more information, see [Audit events](./reference/audit-events.md#container-type-activities). - [fileStorageContainer](/graph/api/resources/filestoragecontainer) supports bulk creation and update of `permissions` using delta patch. For more information, see [Upsert permissions](/graph/api/filestoragecontainer-patch-permissions). -- Clarified the authorization model for administrative actions on containers. For more information, see [Operations that involve administrative actions on containers](./development/auth.md#operations-that-involve-administrative-actions-on-containers). +- Clarified the authorization model for administrative actions on containers. For more information, see [Handle operations not exposed through Graph](./build/configure-authentication-authorization.md#handle-operations-not-exposed-through-graph). ## March 2026 -- [SharePoint Embedded agent SDK](./development/declarative-agent/spe-da.md) has been deprecated in favor of the new [SharePoint Embedded knowledge source in Microsoft Foundry](./development/declarative-agent/sharepoint-embedded-knowledge-source.md). -- [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource has a new **permissions** relationship that allows management of the container type's owners. This is available in the beta Microsoft Graph endpoint. For more information, see [Managing SharePoint Embedded applications created in the owning tenant](./development/auth.md#managing-sharepoint-embedded-applications-created-in-the-owning-tenant). +- [SharePoint Embedded agent SDK](./build/agent-experiences.md) has been deprecated in favor of the new [SharePoint Embedded knowledge source in Microsoft Foundry](./build/sharepoint-embedded-knowledge-source.md). +- [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource has a new **permissions** relationship that allows management of the container type's owners. This is available in the beta Microsoft Graph endpoint. For more information, see [Manage container type owners](./build/configure-authentication-authorization.md#manage-container-type-owners). - [fileStorageContainer](/graph/api/resources/filestoragecontainer) resource has a new **informationBarrier** property that allows management of the container's information barrier. This is available in the beta Microsoft Graph endpoint. For more information, see [Information Barriers](/purview/information-barriers-sharepoint). - The SharePoint Embedded native PDF viewing experience now supports searching within the file, viewing comments and sticky notes embedded on the file, and printing. The new features are now available via the [driveItem: preview](/graph/api/driveitem-preview) API in both the beta and v1.0 Microsoft Graph endpoints. @@ -66,13 +67,9 @@ ms.localizationpriority: medium - [driveItem: copy](/graph/api/driveitem-copy) now supports the `childrenOnly` and `includeAllVersionHistory` request parameters in the v1.0 Microsoft Graph endpoint. -## June 2025 - -- The `CopilotEmbeddedChatHosts` container type setting is now required to use [SharePoint Embedded agent](./development/declarative-agent/spe-da-adv.md#csp-policies). It must be set by the application owner via [`Set-SPOContainerTypeConfiguration`](/powershell/module/sharepoint-online/set-spocontainertypeconfiguration) and can optionally be overridden by consuming tenant administrators via [`Set-SPOApplication`](/powershell/module/SharePoint-online/set-spoapplication). - ## May 2025 -- The limit of container types that a partner tenant can create has been increased to 25 by default. For more information, see [Limits and Calling Patterns](./development/limits-calling.md#size-limits). -- SharePoint Embedded agent switched to a consumption-based model for all users regardless of whether they have a Copilot license or not. For more information, see [SharePoint Embedded agent](./development/declarative-agent/spe-da.md). -- The guidance on how to grant admin consent to a SharePoint Embedded application has been updated to use URL-based admin consent. For more information, see [Authentication and authorization](./development/auth.md#whats-next). -- Documented an exceptional access pattern for operations that may require a user license. For more information, see [Authentication and authorization](./development/auth.md#operations-that-require-a-user-license). +- The limit of container types that a partner tenant can create has been increased to 25 by default. For more information, see [Limits and Calling Patterns](./plan/limits-calling-patterns.md#size-limits). +- SharePoint Embedded agent switched to a consumption-based model for all users regardless of whether they have a Copilot license or not. For more information, see [SharePoint Embedded agent](./build/agent-experiences.md). +- The guidance on how to grant admin consent to a SharePoint Embedded application has been updated to use URL-based admin consent. For more information, see [Grant admin consent](./build/register-application-permissions.md#grant-admin-consent). +- Documented an exceptional access pattern for operations that may require a user license. For more information, see [Handle operations not exposed through Graph](./build/configure-authentication-authorization.md#handle-operations-not-exposed-through-graph). diff --git a/docs/toc.yml b/docs/toc.yml index e71092ba98..b71777086a 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -605,91 +605,115 @@ - name: SharePoint Embedded items: - name: Overview - href: embedded/overview.md - - name: What's New - href: embedded/whats-new.md - - name: Scenarios and Use Cases - href: embedded/scenarios-and-use-cases.md - - name: Getting Started items: - - name: SharePoint Embedded Visual Studio Code Extension - href: embedded/getting-started/spembedded-for-vscode.md - - name: Container Types - href: embedded/getting-started/containertypes.md - - name: Register Container Type API - href: embedded/getting-started/register-api-documentation.md - - name: Microsoft 365 Archive support for containers - href: embedded/getting-started/microsoft-365-archive-support-for-containers.md - - name: Development + - name: What is SharePoint Embedded? + href: embedded/overview.md + - name: Scenarios and use cases + href: embedded/scenarios-and-use-cases.md + - name: What's new + href: embedded/whats-new.md + - name: Plan a SharePoint Embedded solution items: - - name: Application Architecture - href: embedded/development/app-architecture.md - - name: Authentication and Authorization - href: embedded/development/auth.md - - name: Sharing and Permissions - href: embedded/development/sharing-and-perm.md - - name: Limits and Calling Patterns - href: embedded/development/limits-calling.md - - name: Fluid Framework - href: embedded/development/fluid.md - - name: Support archive funcationality in your application - href: embedded/development/support-archival-of-containers.md - - name: Office Experiences - href: embedded/development/content-experiences/office-experience.md - - name: Configuring redirect behavior - href: embedded/development/content-experiences/configure-redirect-behavior.md - - name: User Experiences - href: embedded/development/content-experiences/user-experiences-overview.md - - name: Search Content - href: embedded/development/content-experiences/search-content.md - - name: Launch Experience - href: embedded/development/tutorials/launch-experience.md - - name: Using Metadata with SharePoint Embedded Containers - href: embedded/development/tutorials/metadata.md - - name: Using File Preview - href: embedded/development/tutorials/using-file-preview.md - - name: Using Document Processing with Azure Cognitive Services - href: embedded/development/tutorials/doc-processing-acs.md - - name: Using Webhooks - href: embedded/development/tutorials/using-webhooks.md - - name: Migrate ABS to SPE - href: embedded/development/tutorials/migrate-abs-to-spe.md - - name: Install Your SPE App in a Consuming Tenant - href: embedded/development/tutorials/vendor-install-app-customer.md - - name: Administration + - name: Understand app and tenant architecture + href: embedded/plan/app-tenant-architecture.md + - name: 'Choose an app model: single-tenant or multitenant' + href: embedded/plan/choose-app-model.md + - name: Understand container types and containers + href: embedded/plan/container-types-and-containers.md + - name: Choose a billing model + href: embedded/plan/choose-billing-model.md + - name: Plan authentication and permissions + href: embedded/plan/authentication-permissions.md + - name: Plan security, compliance, and governance + href: embedded/plan/security-compliance-governance.md + - name: Understand limits and calling patterns + href: embedded/plan/limits-calling-patterns.md + - name: Build apps with SharePoint Embedded items: - - name: Billing - href: embedded/administration/billing/billing.md - - name: Billing Management - href: embedded/administration/billing/billingmanagement.md - - name: SharePoint Embedded Billing Meters - href: embedded/administration/billing/meters.md - - name: Consuming Tenant Admin - href: embedded/administration/consuming-tenant-admin/cta.md - - name: Container Management in PowerShell - href: embedded/administration/consuming-tenant-admin/ctapowershell.md - - name: Consuming Tenant Admin UX - href: embedded/administration/consuming-tenant-admin/ctaUX.md - - name: Developer Admin - href: embedded/administration/developer-admin/dev-admin.md - - name: SharePoint Embedded Admin - href: embedded/administration/adminrole.md - - name: Compliance + - name: 'Quickstart: Build your first app with VS Code' + href: embedded/build/quickstart-vscode.md + - name: Create and configure a container type + href: embedded/build/create-container-type.md + - name: Register application permissions + href: embedded/build/register-application-permissions.md + - name: Configure authentication and authorization + href: embedded/build/configure-authentication-authorization.md + - name: Create and manage containers + href: embedded/build/create-manage-containers.md + - name: Upload, download, and manage files + href: embedded/build/manage-files.md + - name: Open Office files from your app + href: embedded/build/open-office-files.md + - name: Preview files in your app + href: embedded/build/preview-files.md + - name: Search containers and files + href: embedded/build/search-containers-files.md + - name: Store and query container metadata + href: embedded/build/container-metadata.md + - name: Share files and manage permissions + href: embedded/build/share-files-manage-permissions.md + - name: Respond to file and container changes with webhooks + href: embedded/build/respond-to-changes-webhooks.md + - name: Archive and restore containers + href: embedded/build/archive-restore-containers.md + - name: Add real-time collaboration with Fluid Framework + href: embedded/build/fluid-framework.md + - name: Add Microsoft 365 Copilot and agent experiences + href: embedded/build/agent-experiences.md + - name: Set up SharePoint Embedded as a Foundry knowledge source + href: embedded/build/sharepoint-embedded-knowledge-source.md + - name: Migrate from Azure Blob Storage + href: embedded/build/migrate-azure-blob-storage.md + - name: Publish and onboard customers items: - - name: Security and Compliance - href: embedded/compliance/security-and-compliance.md - - name: Audit log events - href: embedded/compliance/audit-events.md - - name: SharePoint Embedded Learning Modules + - name: Prepare your app for customer installation + href: embedded/publish/prepare-customer-installation.md + - name: Choose a billing model for your app + href: embedded/publish/choose-app-billing-model.md + - name: Guide customers through tenant setup + href: embedded/publish/customer-tenant-setup-guide.md + - name: Validate customer app installation + href: embedded/publish/validate-customer-installation.md + - name: Install and manage apps items: - - name: SharePoint Embedded - overview & configuration - href: /training/modules/sharepoint-embedded-setup - - name: SharePoint Embedded - building applications - href: /training/modules/sharepoint-embedded-create-app - - name: SharePoint Embedded agent + - name: Admin overview + href: embedded/admin/admin-overview.md + - name: Consuming tenant admin + href: embedded/admin/consuming-tenant-admin.md + - name: Create apps in SharePoint admin center + href: embedded/admin/create-apps-sharepoint-admin-center.md + - name: Create apps with PowerShell + href: embedded/admin/create-apps-powershell.md + - name: Install a SharePoint Embedded app + href: embedded/admin/install-sharepoint-embedded-app.md + - name: Grant admin consent and permissions + href: embedded/admin/grant-admin-consent-permissions.md + - name: Set up billing in Microsoft 365 admin center + href: embedded/admin/setup-billing-m365-admin-center.md + - name: Manage containers in SharePoint admin center + href: embedded/admin/manage-containers-sharepoint-admin-center.md + - name: Manage containers with PowerShell + href: embedded/admin/manage-containers-powershell.md + - name: Monitor usage, billing, and cost + href: embedded/admin/monitor-usage-billing-cost.md + - name: Review audit events + href: embedded/admin/review-audit-events.md + - name: Apply security and compliance controls + href: embedded/admin/apply-security-compliance-controls.md + - name: Reference items: - - name: SharePoint Embedded knowledge source in Microsoft Foundry (Preview) - href: embedded/development/declarative-agent/sharepoint-embedded-knowledge-source.md + - name: Billing meters + href: embedded/reference/billing-meters.md + - name: Audit events + href: embedded/reference/audit-events.md + - name: PowerShell reference + href: embedded/reference/powershell.md + - name: Microsoft Graph API reference links + href: embedded/reference/graph-api-links.md + - name: Troubleshooting + href: embedded/reference/troubleshooting.md + - name: Glossary + href: embedded/reference/glossary.md - name: Microsoft Teams items: - name: Overview From a9f8d82e158e51923596f2629972c48654b3479e Mon Sep 17 00:00:00 2001 From: dilucesr Date: Mon, 13 Jul 2026 10:56:33 -0700 Subject: [PATCH 02/15] Rename setup-billing-m365-admin-center.md to setup-billing-microsoft-365-admin-center.md --- docs/embedded/admin/admin-overview.md | 6 +++--- docs/embedded/admin/create-apps-powershell.md | 2 +- docs/embedded/admin/create-apps-sharepoint-admin-center.md | 4 ++-- docs/embedded/admin/grant-admin-consent-permissions.md | 6 +++--- docs/embedded/admin/install-sharepoint-embedded-app.md | 6 +++--- docs/embedded/admin/monitor-usage-billing-cost.md | 4 ++-- ...enter.md => setup-billing-microsoft-365-admin-center.md} | 0 docs/embedded/plan/choose-app-model.md | 2 +- docs/embedded/plan/choose-billing-model.md | 4 ++-- docs/embedded/publish/choose-app-billing-model.md | 2 +- docs/embedded/publish/validate-customer-installation.md | 2 +- docs/embedded/reference/troubleshooting.md | 2 +- docs/embedded/sharepoint-embedded-documentation.md | 2 +- docs/toc.yml | 2 +- 14 files changed, 22 insertions(+), 22 deletions(-) rename docs/embedded/admin/{setup-billing-m365-admin-center.md => setup-billing-microsoft-365-admin-center.md} (100%) diff --git a/docs/embedded/admin/admin-overview.md b/docs/embedded/admin/admin-overview.md index 5c8f430633..d20ce5f1d0 100644 --- a/docs/embedded/admin/admin-overview.md +++ b/docs/embedded/admin/admin-overview.md @@ -111,7 +111,7 @@ Developer tenants configure billing for standard billing container types. Consuming tenants configure billing for pass-through apps before users can access those apps. Only a Global Administrator can set up billing in the Microsoft 365 admin center. The SharePoint Embedded Administrator role can't configure billing. -Set up pass-through billing with [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). +Set up pass-through billing with [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md). Monitor usage with [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). ### Container administration @@ -167,7 +167,7 @@ Use this path when your tenant consumes a SharePoint Embedded app: 1. Assign or confirm the SharePoint Embedded Administrator role. 1. Install or approve the app in [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md). 1. Grant admin consent when required. -1. Set up pass-through billing in [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). +1. Set up pass-through billing in [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md). 1. Manage containers in the SharePoint admin center or with PowerShell. 1. Apply compliance controls in Microsoft Purview. @@ -186,7 +186,7 @@ Deleted containers can be restored from the deleted container collection within - [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md) - [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) - [Grant admin consent and permissions](grant-admin-consent-permissions.md) -- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md) - [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) - [Manage containers with PowerShell](manage-containers-powershell.md) - [Monitor usage, billing, and cost](monitor-usage-billing-cost.md) diff --git a/docs/embedded/admin/create-apps-powershell.md b/docs/embedded/admin/create-apps-powershell.md index 3c6783541e..2313283c6b 100644 --- a/docs/embedded/admin/create-apps-powershell.md +++ b/docs/embedded/admin/create-apps-powershell.md @@ -52,7 +52,7 @@ Use pass-through billing, also known as direct-to-customer billing, when the con New-SPOContainerType -IsPassThroughBilling -ContainerTypeName -OwningApplicationId ``` -For pass-through billing, the consuming tenant administrator must set up Microsoft 365 pay-as-you-go services before users can access the app. For more information, see [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). +For pass-through billing, the consuming tenant administrator must set up Microsoft 365 pay-as-you-go services before users can access the app. For more information, see [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md). ## Create a trial app diff --git a/docs/embedded/admin/create-apps-sharepoint-admin-center.md b/docs/embedded/admin/create-apps-sharepoint-admin-center.md index 3c7046e2f4..5f284b258f 100644 --- a/docs/embedded/admin/create-apps-sharepoint-admin-center.md +++ b/docs/embedded/admin/create-apps-sharepoint-admin-center.md @@ -118,7 +118,7 @@ Choose carefully because billing type cannot be changed after app creation. Use **User org** for scenarios where each consuming tenant is responsible for billing. Use **Owner org** when your organization owns the app and manages billing directly. -For billing concepts, see [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) and [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). +For billing concepts, see [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md) and [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). ## Configure owner organization billing @@ -222,7 +222,7 @@ Use these checks if creation fails or the app is not usable. - [Admin overview](admin-overview.md) - [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) - [Grant admin consent and permissions](grant-admin-consent-permissions.md) -- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md) - [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) ## Next steps diff --git a/docs/embedded/admin/grant-admin-consent-permissions.md b/docs/embedded/admin/grant-admin-consent-permissions.md index a6a25c5346..1c5d1ea406 100644 --- a/docs/embedded/admin/grant-admin-consent-permissions.md +++ b/docs/embedded/admin/grant-admin-consent-permissions.md @@ -14,7 +14,7 @@ ms.localizationpriority: high task_type: how-to audience: administrator outcome: Grant admin consent for a SharePoint Embedded app and validate permission readiness. -next: setup-billing-m365-admin-center.md +next: setup-billing-microsoft-365-admin-center.md --> Grant admin consent when a SharePoint Embedded app needs high-privilege permissions in your Microsoft 365 tenant. Application permissions always require admin consent, while delegated permissions for SharePoint Embedded do not. To learn more, see [Grant admin consent](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal). @@ -135,10 +135,10 @@ Use these checks when consent succeeds but the app owner reports that API calls ## Related content - [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) -- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md) - [Manage containers with PowerShell](manage-containers-powershell.md) - [Register file storage container type application permissions](../build/register-application-permissions.md) - [Admin overview](admin-overview.md) ## Next steps -Configure billing in [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). +Configure billing in [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md). diff --git a/docs/embedded/admin/install-sharepoint-embedded-app.md b/docs/embedded/admin/install-sharepoint-embedded-app.md index 4aa2ea9832..1e699d0e62 100644 --- a/docs/embedded/admin/install-sharepoint-embedded-app.md +++ b/docs/embedded/admin/install-sharepoint-embedded-app.md @@ -153,9 +153,9 @@ If billing was skipped during app creation, you can attach it later from the app 1. Select the app to open its details panel. 1. In **Billing info**, attach a billing subscription or update the existing one. -For a **User org** app, billing isn't attached from this panel. A Global Administrator in the consuming tenant sets up billing in the Microsoft 365 admin center. See [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). +For a **User org** app, billing isn't attached from this panel. A Global Administrator in the consuming tenant sets up billing in the Microsoft 365 admin center. See [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md). -Use [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) to configure billing for consuming-tenant scenarios. +Use [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md) to configure billing for consuming-tenant scenarios. Use [Monitor usage, billing, and cost](monitor-usage-billing-cost.md) to review ongoing cost. ## Verify containers after app use @@ -223,7 +223,7 @@ Use these checks when installation does not complete. - [Admin overview](admin-overview.md) - [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md) - [Grant admin consent and permissions](grant-admin-consent-permissions.md) -- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md) - [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) ## Next steps diff --git a/docs/embedded/admin/monitor-usage-billing-cost.md b/docs/embedded/admin/monitor-usage-billing-cost.md index 084166d7da..d4e6183b08 100644 --- a/docs/embedded/admin/monitor-usage-billing-cost.md +++ b/docs/embedded/admin/monitor-usage-billing-cost.md @@ -36,7 +36,7 @@ Confirm these prerequisites. - You know the app IDs, tenant IDs, or container type IDs used for filtering when available. - You can review container inventory in the SharePoint admin center or PowerShell. -For billing setup, see [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md). +For billing setup, see [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md). ## Understand SharePoint Embedded meters @@ -178,7 +178,7 @@ Establish a recurring review process. ## Related content -- [Set up billing in Microsoft 365 admin center](setup-billing-m365-admin-center.md) +- [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md) - [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) - [Manage containers with PowerShell](manage-containers-powershell.md) - [Review audit events](review-audit-events.md) diff --git a/docs/embedded/admin/setup-billing-m365-admin-center.md b/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md similarity index 100% rename from docs/embedded/admin/setup-billing-m365-admin-center.md rename to docs/embedded/admin/setup-billing-microsoft-365-admin-center.md diff --git a/docs/embedded/plan/choose-app-model.md b/docs/embedded/plan/choose-app-model.md index dacbeee504..4558f3aa56 100644 --- a/docs/embedded/plan/choose-app-model.md +++ b/docs/embedded/plan/choose-app-model.md @@ -167,7 +167,7 @@ If you're building an internal enterprise app: 1. Plan authentication with [Plan authentication and permissions](../plan/authentication-permissions.md). 1. Understand container type design with [Understand container types and containers](../plan/container-types-and-containers.md). 1. Create the container type by using the guidance in [SharePoint Embedded container types](../build/create-container-type.md). -1. Configure billing by using [PAYG billing for SharePoint Embedded](../admin/setup-billing-m365-admin-center.md). +1. Configure billing by using [PAYG billing for SharePoint Embedded](../admin/setup-billing-microsoft-365-admin-center.md). If you're building an ISV app: diff --git a/docs/embedded/plan/choose-billing-model.md b/docs/embedded/plan/choose-billing-model.md index 368ca17135..27052de360 100644 --- a/docs/embedded/plan/choose-billing-model.md +++ b/docs/embedded/plan/choose-billing-model.md @@ -19,7 +19,7 @@ next: ../plan/security-compliance-governance.md Use this article to choose a billing model for production SharePoint Embedded container types. SharePoint Embedded is a consumption-based, pay-as-you-go offering, and you select billing at the container type level. -For the full billing setup procedure, see [PAYG billing for SharePoint Embedded](../admin/setup-billing-m365-admin-center.md). +For the full billing setup procedure, see [PAYG billing for SharePoint Embedded](../admin/setup-billing-microsoft-365-admin-center.md). ## Billing models @@ -175,7 +175,7 @@ For model selection, see [Choose an app model: single-tenant or multitenant](../ Use these setup references after you choose a model: - Create and configure container types: [SharePoint Embedded container types](../build/create-container-type.md). -- Set up billing: [PAYG billing for SharePoint Embedded](../admin/setup-billing-m365-admin-center.md). +- Set up billing: [PAYG billing for SharePoint Embedded](../admin/setup-billing-microsoft-365-admin-center.md). - Review meters: [SharePoint Embedded billing meters](../reference/billing-meters.md). - Register a consuming tenant: [Register file storage container type application permissions](../build/register-application-permissions.md). diff --git a/docs/embedded/publish/choose-app-billing-model.md b/docs/embedded/publish/choose-app-billing-model.md index dc82d9b6ce..0e52d78ec1 100644 --- a/docs/embedded/publish/choose-app-billing-model.md +++ b/docs/embedded/publish/choose-app-billing-model.md @@ -31,7 +31,7 @@ SharePoint Embedded supports two production billing models for standard containe | Standard billing | Developer tenant | Developer | You include SharePoint Embedded consumption in your product price or centralize billing. | | Pass-through billing | Consuming tenant | Customer admin | The customer pays Microsoft directly for their SharePoint Embedded consumption. | -For current billing details, see [PAYG billing for SharePoint Embedded](../admin/setup-billing-m365-admin-center.md). +For current billing details, see [PAYG billing for SharePoint Embedded](../admin/setup-billing-microsoft-365-admin-center.md). > [!IMPORTANT] > Choose the billing model before you create the container type. diff --git a/docs/embedded/publish/validate-customer-installation.md b/docs/embedded/publish/validate-customer-installation.md index ae71813471..bbef5d91da 100644 --- a/docs/embedded/publish/validate-customer-installation.md +++ b/docs/embedded/publish/validate-customer-installation.md @@ -203,7 +203,7 @@ Use this table during onboarding. | Container create fails | Registration, permissions, and billing | [Install a SharePoint Embedded app](../admin/install-sharepoint-embedded-app.md) | | Guest user can't access content | Guest identity and sharing policy | [Grant admin consent and permissions](../admin/grant-admin-consent-permissions.md) | | Admin tools fail | Role assignment and administrative tool access | [Admin overview](../admin/admin-overview.md) | -| Billing was disconnected | New container creation is blocked; existing containers remain accessible | [Set up billing in Microsoft 365 admin center](../admin/setup-billing-m365-admin-center.md) | +| Billing was disconnected | New container creation is blocked; existing containers remain accessible | [Set up billing in Microsoft 365 admin center](../admin/setup-billing-microsoft-365-admin-center.md) | ## Validation checklist diff --git a/docs/embedded/reference/troubleshooting.md b/docs/embedded/reference/troubleshooting.md index 7afc598535..80ee89130b 100644 --- a/docs/embedded/reference/troubleshooting.md +++ b/docs/embedded/reference/troubleshooting.md @@ -37,7 +37,7 @@ Use this reference to identify likely causes and fixes. For end-to-end setup, se - [Authentication and authorization](../build/configure-authentication-authorization.md) - [Container types](../plan/container-types-and-containers.md) -- [Billing](../admin/setup-billing-m365-admin-center.md) +- [Billing](../admin/setup-billing-microsoft-365-admin-center.md) - [Admin overview](../admin/admin-overview.md) - [Microsoft Graph API reference links](graph-api-links.md) diff --git a/docs/embedded/sharepoint-embedded-documentation.md b/docs/embedded/sharepoint-embedded-documentation.md index 2197c1071b..4909d27581 100644 --- a/docs/embedded/sharepoint-embedded-documentation.md +++ b/docs/embedded/sharepoint-embedded-documentation.md @@ -85,7 +85,7 @@ For administrators of a Microsoft 365 tenant that uses SharePoint Embedded apps. - [Create apps with PowerShell](./admin/create-apps-powershell.md) - [Install a SharePoint Embedded app](./admin/install-sharepoint-embedded-app.md) - [Grant admin consent and permissions](./admin/grant-admin-consent-permissions.md) -- [Set up billing in Microsoft 365 admin center](./admin/setup-billing-m365-admin-center.md) +- [Set up billing in Microsoft 365 admin center](./admin/setup-billing-microsoft-365-admin-center.md) - [Manage containers in SharePoint admin center](./admin/manage-containers-sharepoint-admin-center.md) - [Manage containers with PowerShell](./admin/manage-containers-powershell.md) - [Monitor usage, billing, and cost](./admin/monitor-usage-billing-cost.md) diff --git a/docs/toc.yml b/docs/toc.yml index b71777086a..788c3edf5f 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -689,7 +689,7 @@ - name: Grant admin consent and permissions href: embedded/admin/grant-admin-consent-permissions.md - name: Set up billing in Microsoft 365 admin center - href: embedded/admin/setup-billing-m365-admin-center.md + href: embedded/admin/setup-billing-microsoft-365-admin-center.md - name: Manage containers in SharePoint admin center href: embedded/admin/manage-containers-sharepoint-admin-center.md - name: Manage containers with PowerShell From c9f3b175a84ccb0e9187d296cf588c0034fe1234 Mon Sep 17 00:00:00 2001 From: dilucesr Date: Mon, 13 Jul 2026 10:57:59 -0700 Subject: [PATCH 03/15] Fix table syntax --- .../build/configure-authentication-authorization.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/embedded/build/configure-authentication-authorization.md b/docs/embedded/build/configure-authentication-authorization.md index 074dbb3a8d..7eb2e50558 100644 --- a/docs/embedded/build/configure-authentication-authorization.md +++ b/docs/embedded/build/configure-authentication-authorization.md @@ -47,9 +47,11 @@ For administrative capabilities on behalf of an administrator user — such as e ## Request the permission for registration Container type registration uses the Microsoft Graph container type registration API (currently in preview). For registration, request the `FileStorageContainerTypeReg.Selected` Microsoft Graph permission (delegated or app-only). + | Scope name | Type | Use | |---|---|---| | `FileStorageContainerTypeReg.Selected` | Delegated or Application | Enables container type registration on a consuming tenant. | + For delegated registration calls, the signed-in user must have the SharePoint Embedded Administrator or Global Administrator role. Use this permission with [Register application permissions](register-application-permissions.md). @@ -104,6 +106,7 @@ These operations use exceptional access patterns: ## Grant container type application permissions The owning application grants container type application permissions through [container type registration](register-application-permissions.md) in a consuming tenant. These permissions determine what an application can do with containers of the container type. + | Permission | Description | |---|---| | None | No permissions to any containers or content of this container type. | @@ -138,12 +141,14 @@ Users get container membership in two ways: - **Transitive membership** — the user belongs to a [Microsoft 365 group](/microsoft-365/admin/create-groups/office-365-groups) that is a member of the container. A user must be a member of the container with one of these roles: + | Role | Access summary | |---|---| | Reader | Read container properties and content. | | Writer | Reader access plus create, update, and delete content and update applicable properties. | | Manager | Writer access plus manage container membership. | | Owner | Manager access plus delete containers. | + When a user creates a container through delegated calls, that user is automatically assigned the Owner role. To share individual items without granting container access, use the [driveItem invite](/graph/api/driveitem-invite) or [permission create](/graph/api/driveitem-post-permissions) endpoints. Sharing an item doesn't grant access to the container or to any other item in it. @@ -159,6 +164,7 @@ Validate the flow before feature code: 1. Confirm app-only access is limited by container type permissions. ## Troubleshoot authorization failures + | Symptom | Check | |---|---| | Graph call returns unauthorized | Token is missing, expired, or for the wrong resource. | From 23cbf73a5b839c6b019bafa8dfb42dafc7a637bc Mon Sep 17 00:00:00 2001 From: dilucesr Date: Mon, 13 Jul 2026 11:01:36 -0700 Subject: [PATCH 04/15] fixup! Fix table syntax --- docs/embedded/build/create-container-type.md | 23 +++++++++++++--- docs/embedded/build/open-office-files.md | 28 ++++++++++++++++++++ 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/docs/embedded/build/create-container-type.md b/docs/embedded/build/create-container-type.md index f086020ad6..844414823c 100644 --- a/docs/embedded/build/create-container-type.md +++ b/docs/embedded/build/create-container-type.md @@ -24,17 +24,21 @@ The ID is used for access authorization, trial exploration, billing, and configu > [!NOTE] > The Microsoft Graph API — [Create fileStorageContainerType](/graph/api/filestorage-post-containertypes) — is delegated-only and can be called by any non-guest owning-tenant user. The caller doesn't need an administrator role and is automatically assigned as an owner of the new container type. + ## Choose trial or production Choose the container type purpose when you create it. You can't convert a trial container type to production later. You can't convert a standard billing type to pass-through billing later. + | Use case | Container type | |---|---| | Local proof of concept | Trial container type | | App owner pays | Standard container type with billing profile | | Customer tenant pays | Standard container type with pass-through billing | + > [!IMPORTANT] > If you choose the wrong purpose or billing model, you must recreate the container type. + ## Prerequisites Before you create a container type, make sure you have: - A Microsoft 365 tenant with SharePoint available. @@ -44,10 +48,8 @@ Before you create a container type, make sure you have: - For standard billing setup, owner or contributor permissions on the Azure subscription. > [!NOTE] -> Creating a container type through Microsoft Graph requires only the `FileStorageContainerType.Manage.All` delegated permission. Any non-guest user in the owning tenant can create one and is automatically assigned as an [owner of that container type](../plan/authentication-permissions.md#container-type-owners). For tenant-wide administrative operations, see [Create apps with PowerShell](../admin/create-apps-powershell.md). - -> [!NOTE] -> Users who authenticate into containers must exist in Microsoft Entra ID as members or guests. An Office license isn't required to collaborate on Office documents stored in a container, except for documented exceptional experiences such as mentions. +> - Creating a container type through Microsoft Graph requires only the `FileStorageContainerType.Manage.All` delegated permission. Any non-guest user in the owning tenant can create one and is automatically assigned as an [owner of that container type](../plan/authentication-permissions.md#container-type-owners). For tenant-wide administrative operations, see [Create apps with PowerShell](../admin/create-apps-powershell.md). +> - Users who authenticate into containers must exist in Microsoft Entra ID as members or guests. An Office license isn't required to collaborate on Office documents stored in a container, except for documented exceptional experiences such as mentions. ## Create a trial container type Use a trial container type for evaluation. @@ -55,27 +57,34 @@ You can create one with the SharePoint Embedded Visual Studio Code extension or The Visual Studio Code path is fastest for a first app. See [Quickstart: Build your first app with VS Code](quickstart-vscode.md). For Microsoft Graph, create the container type with the `trial` billing classification. The following restrictions are applied to trial container types: + - The tenant can have up to five containers of the container type. This includes active containers and those in the recycle bin. - Each container has up to 200 MB of storage space. - The container type expires after 30 days, and access to any existing containers of that container type is then removed. - The developer must permanently delete all containers of an existing container type in trial status to create a new container type for trial. This includes containers in the deleted container collection. - The container type is restricted to work in the developer tenant. It can't be deployed in other consuming tenants. + ## Create a standard container type with app-owner billing Use standard billing when the developer or app owner tenant pays for consumption. Each tenant can have up to 25 standard container types at a time. + 1. Create or identify the owning Microsoft Entra ID application. 1. Create the container type with the `standard` billing classification. 1. Attach an Azure billing profile with the SharePoint Embedded Visual Studio Code extension or an administrator-managed billing flow. 1. Record the container type ID. 1. Continue to registration in the consuming tenant. + > [!NOTE] > If billing setup fails with `SubscriptionNotRegistered`, wait several minutes and retry. The `Microsoft.Syntex` resource provider registration can take time. + ## Create a pass-through billing container type Use pass-through billing when the consuming tenant pays for consumption. + 1. Create or identify the owning Microsoft Entra ID application. 1. Create the container type with the `directToCustomer` billing classification. 1. Register the container type in the consuming tenant. 1. Have the consuming tenant admin activate pay-as-you-go services. + > [!IMPORTANT] > The consuming tenant must complete billing setup before a pass-through application can be used successfully. @@ -94,24 +103,30 @@ Use redirect URIs that match your development and production clients. Use credentials appropriate for delegated or app-only flows. For auth details, see [Configure authentication and authorization](configure-authentication-authorization.md). ## Set basic properties + | Property | Guidance | |---|---| | Container type name | Use a durable name that maps to your workload. | | Owning application ID | Use the app registration that owns this type. | | Application redirect URL | Use the URL where files from this app should redirect. | | Billing model | Choose trial, standard, or pass-through at creation time. | + > [!CAUTION] > The container type ID and owning application ID can't be updated later. + ## Configure container type behavior Developers can configure selected behaviors after creation. Available settings include: + - `ApplicationRedirectUrl` - `DiscoverabilityDisabled` - `SharingRestricted` + Use the Microsoft Graph [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) API for supported container type updates. For tenant-wide administrative settings, see [Create apps with PowerShell](../admin/create-apps-powershell.md). > [!IMPORTANT] > Updating settings on a container type can take up to **24 hours** to replicate to all consuming tenants. If a consuming tenant applied setting overrides, those overrides remain in place. Some settings apply only to new content, not to existing content. + ## View and update container types Use Microsoft Graph to list and update container types. A non-administrator container type owner can update the container types they own. diff --git a/docs/embedded/build/open-office-files.md b/docs/embedded/build/open-office-files.md index 5900183ed2..61e8ff473d 100644 --- a/docs/embedded/build/open-office-files.md +++ b/docs/embedded/build/open-office-files.md @@ -19,6 +19,7 @@ Complete [Upload, download, and manage files](manage-files.md) first so your app ## Understand Office experiences SharePoint Embedded Office file experiences work similarly to Microsoft 365 file experiences. Supported experiences include: + - Opening Office documents in Office for the web. - Opening Office documents in Office desktop clients. - Viewing and editing files. @@ -34,6 +35,7 @@ Supported experiences include: ## Prerequisites Before launching Office files, make sure: + - The file is stored in a SharePoint Embedded container. - The app can read DriveItem metadata for the file. - The user has permission to view or edit the file. @@ -44,24 +46,29 @@ Before launching Office files, make sure: When your app retrieves a DriveItem from Microsoft Graph, the response can include `webUrl`. For supported Office file types, `webUrl` can point to a WOPI URL that opens the document in Office for the web. A supported Office web URL has this shape: + ```http https://host/:w:r/contentstorage/sitecollection/_layouts/15/doc2.aspx?sourcedoc=guid&file=filename.docx&action=default&mobileredirect=true ``` + For request details, see [Get a DriveItem resource](/graph/api/driveitem-get). ## Launch Office for the web Use the DriveItem `webUrl` when your app should open Office in the browser. + 1. Read the DriveItem for the selected file. 1. Confirm the response includes `webUrl`. 1. Open the URL in a browser tab, window, or app-controlled navigation surface. 1. Preserve app context so users can return after editing. 1. Handle access denied errors by checking file permissions and container membership. + > [!NOTE] > Office files use AutoSave when users edit Word, Excel, and PowerPoint files stored in SharePoint Embedded. ## Configure the default launch experience By default, the WOPI URL can include `action=default`. To force a mode, update the query parameter with this pattern: + ```csharp System.UriBuilder builder = new System.UriBuilder(webUrl); System.Collections.Specialized.NameValueCollection queryDictionary = System.Web.HttpUtility.ParseQueryString(builder.Query); @@ -69,44 +76,59 @@ queryDictionary["action"] = "view"; builder.Query = queryDictionary.ToString(); string modifiedWebUrl = builder.ToString(); ``` + Use: + - `action=view` for read-only viewing. - `action=edit` for editing when the user has edit permission. - `action=default` when Office should choose the default behavior. + For WOPI action details, see [WOPI Discovery - WOPI Actions](/microsoft-365/cloud-storage-partner-program/online/discovery#wopi-actions). ## Open files in Office desktop clients Use Office URI schemes when your app should open desktop clients directly. The format is: + ```text :|| ``` + Common values include: + | Segment | Value | |---|---| | Scheme name | `ms-word`, `ms-excel`, or `ms-powerpoint` | | Open File View command | `ofv` | | Open File Edit command | `ofe` | | URL descriptor | `u` | + Examples: + ```text ms-word:ofv|u|https://contoso.com/document.docx ms-powerpoint:ofe|u|https://contoso.com/presentation.pptx ``` + > [!NOTE] > The URI must be opened in a blank window or new tab. ## Build a desktop client URL Because `webUrl` points to Office Online for Office documents, build the desktop URI in two steps: + 1. Get the `webUrl` of the parent folder. 1. Append the file name. + Example pattern: + ```text ms-word:ofe|u|{folder.WebUrl}/{item.Name} ``` + Resulting shape: + ```text ms-word:ofe|u|https://contoso.sharepoint.com/contentstorage/CSP_1234765465/Document%20Library/MyDocument.docx ``` + For scheme details, see [Office URI Schemes](/office/client-developer/office-uri-schemes). ## Configure redirect behavior @@ -141,6 +163,7 @@ When you design redirects: - Validate that users return to the right in-app context after Office actions. - Avoid URL rewriting that removes required Office query parameters. - Verify `urlTemplate` after updates because invalid values are stored as `null`. + ## Support sharing and coauthoring Office experiences include collaboration features. Users can share documents, create shareable links, coauthor in real time, see presence indicators, use comments, and use mentions where supported. @@ -156,6 +179,7 @@ When a user creates a sharing link, they choose who it grants access to: > [!NOTE] > Mentions require target users to have a Microsoft 365 license assigned. Mentions are restricted to people inside the consuming tenant's organization and exclude guests and users from other tenants in multitenant settings. + ## Use version history Versioning is automatically enabled for Word, Excel, and PowerPoint files stored in SharePoint Embedded apps. Users can see changes, compare versions, restore previous versions, recover from mistakes, and review changes from coauthoring sessions. @@ -166,6 +190,7 @@ Use Current Channel to get breadcrumb patterns and future Office app enhancement For Office update channel information, see [Overview of update channels for Microsoft 365 Apps](/deployoffice/updates/overview-update-channels). ## Validate Office launch Test each launch path: + 1. Upload a Word document to a container. 1. Read the DriveItem and capture `webUrl`. 1. Open `webUrl` with `action=default`. @@ -175,7 +200,9 @@ Test each launch path: 1. Confirm permissions block edit when appropriate. 1. Confirm AutoSave and version history behavior. 1. Confirm the user can return to your app. + ## Troubleshoot Office launch + | Symptom | Check | |---|---| | URL opens in view instead of edit | `action` parameter and user edit permission. | @@ -184,5 +211,6 @@ Test each launch path: | Mentions don't find a user | Microsoft 365 license and tenant membership limitations. | | Breadcrumb doesn't look right | Container properties and Office update channel. | | Redirect returns to wrong route | `ApplicationRedirectUrl` and app route handling. | + ## Next steps Add embedded previews in [Preview files in your app](preview-files.md). From 623e2a97a59762df8a24e2c8054acd72cb0f8ebe Mon Sep 17 00:00:00 2001 From: dilucesr Date: Mon, 13 Jul 2026 11:03:05 -0700 Subject: [PATCH 05/15] Rename container-types-and-containers.md to container-typesy-containers.md --- docs/embedded/overview.md | 2 +- docs/embedded/plan/app-tenant-architecture.md | 4 ++-- docs/embedded/plan/choose-app-model.md | 6 +++--- ...ypes-and-containers.md => container-types-containers.md} | 0 docs/embedded/plan/limits-calling-patterns.md | 4 ++-- docs/embedded/publish/choose-app-billing-model.md | 2 +- docs/embedded/reference/glossary.md | 4 ++-- docs/embedded/reference/troubleshooting.md | 2 +- docs/embedded/sharepoint-embedded-documentation.md | 2 +- docs/toc.yml | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) rename docs/embedded/plan/{container-types-and-containers.md => container-types-containers.md} (100%) diff --git a/docs/embedded/overview.md b/docs/embedded/overview.md index 58d2761483..7a2ca6633a 100644 --- a/docs/embedded/overview.md +++ b/docs/embedded/overview.md @@ -53,7 +53,7 @@ When a customer uses a SharePoint Embedded application, SharePoint Embedded crea SharePoint Embedded apps store files in an entity called a **File Storage Container** (or *container*). Think of a container as an API-only document library. Your app can create many containers in each tenant that uses it, and each container can be permissioned separately and hold terabytes of content. Containers are dedicated to — and accessible only by — your app, keeping your data isolated within the tenant boundary. -To learn how containers and container types relate, see [Understand container types and containers](plan/container-types-and-containers.md). +To learn how containers and container types relate, see [Understand container types and containers](plan/container-types-containers.md). ### App-managed content experiences diff --git a/docs/embedded/plan/app-tenant-architecture.md b/docs/embedded/plan/app-tenant-architecture.md index 541954a83b..754f2bec03 100644 --- a/docs/embedded/plan/app-tenant-architecture.md +++ b/docs/embedded/plan/app-tenant-architecture.md @@ -91,7 +91,7 @@ Use a container type to answer these architecture questions: - Which tenant is accountable for billing? - Which behavior settings apply to all containers of this type? -For more detail, see [Understand container types and containers](../plan/container-types-and-containers.md). +For more detail, see [Understand container types and containers](../plan/container-types-containers.md). ## Container type registration resource @@ -105,7 +105,7 @@ Use a container type registration to answer these architecture questions: - Which tenant can create containers of this type? - Which behavior settings apply to all containers of this type in a consuming tenant? -For more detail, see [Understand container types and containers](../plan/container-types-and-containers.md). +For more detail, see [Understand container types and containers](../plan/container-types-containers.md). ## Containers diff --git a/docs/embedded/plan/choose-app-model.md b/docs/embedded/plan/choose-app-model.md index 4558f3aa56..6eece813e6 100644 --- a/docs/embedded/plan/choose-app-model.md +++ b/docs/embedded/plan/choose-app-model.md @@ -14,7 +14,7 @@ ms.localizationpriority: high task_type: concept audience: architect outcome: Select the SharePoint Embedded app model and setup path that matches your ownership, billing, and admin responsibilities. -next: ../plan/container-types-and-containers.md +next: ../plan/container-types-containers.md --> Use this article to choose between an enterprise line-of-business (LOB) model and an ISV multitenant model for SharePoint Embedded. @@ -165,7 +165,7 @@ Plan these responsibilities before implementation. If you're building an internal enterprise app: 1. Plan authentication with [Plan authentication and permissions](../plan/authentication-permissions.md). -1. Understand container type design with [Understand container types and containers](../plan/container-types-and-containers.md). +1. Understand container type design with [Understand container types and containers](../plan/container-types-containers.md). 1. Create the container type by using the guidance in [SharePoint Embedded container types](../build/create-container-type.md). 1. Configure billing by using [PAYG billing for SharePoint Embedded](../admin/setup-billing-microsoft-365-admin-center.md). @@ -190,4 +190,4 @@ If you're building an ISV app: - Identify who manages compliance policies. ## Next steps -Review the storage model: [Understand container types and containers](../plan/container-types-and-containers.md). +Review the storage model: [Understand container types and containers](../plan/container-types-containers.md). diff --git a/docs/embedded/plan/container-types-and-containers.md b/docs/embedded/plan/container-types-containers.md similarity index 100% rename from docs/embedded/plan/container-types-and-containers.md rename to docs/embedded/plan/container-types-containers.md diff --git a/docs/embedded/plan/limits-calling-patterns.md b/docs/embedded/plan/limits-calling-patterns.md index 354dec27d6..aa827c8b5e 100644 --- a/docs/embedded/plan/limits-calling-patterns.md +++ b/docs/embedded/plan/limits-calling-patterns.md @@ -69,7 +69,7 @@ Use containers for application storage instances within the container type. Choose a container type for app-level behavior, access relationship, and billing accountability. -For container type planning, see [Understand container types and containers](../plan/container-types-and-containers.md). +For container type planning, see [Understand container types and containers](../plan/container-types-containers.md). ## Design for container limits @@ -238,7 +238,7 @@ Use these signals to tune concurrency and identify tenants or workflows that nee ## Related planning articles - [Understand app and tenant architecture](../plan/app-tenant-architecture.md) -- [Understand container types and containers](../plan/container-types-and-containers.md) +- [Understand container types and containers](../plan/container-types-containers.md) - [Plan authentication and permissions](../plan/authentication-permissions.md) - [Choose a billing model](../plan/choose-billing-model.md) diff --git a/docs/embedded/publish/choose-app-billing-model.md b/docs/embedded/publish/choose-app-billing-model.md index 0e52d78ec1..435e18f857 100644 --- a/docs/embedded/publish/choose-app-billing-model.md +++ b/docs/embedded/publish/choose-app-billing-model.md @@ -50,7 +50,7 @@ Container types are used for: - Billing for non-trial workloads. - Shared configuration settings such as discoverability and sharing behavior. -For more about container types, see [Create New SharePoint Embedded Container Types](../plan/container-types-and-containers.md). +For more about container types, see [Create New SharePoint Embedded Container Types](../plan/container-types-containers.md). ## Standard billing diff --git a/docs/embedded/reference/glossary.md b/docs/embedded/reference/glossary.md index a0b1e41880..688772c849 100644 --- a/docs/embedded/reference/glossary.md +++ b/docs/embedded/reference/glossary.md @@ -20,8 +20,8 @@ next: ../plan/choose-app-model.md | Term | Definition | | --- | --- | | Container | A File Storage Container: the basic SharePoint Embedded storage unit and security and compliance boundary for files. See [SharePoint Embedded overview](../overview.md). | -| Container type | A SharePoint Embedded resource that defines the relationship, access privileges, billing accountability, and behavior for a set of containers. See [container types](../plan/container-types-and-containers.md). | -| Developer tenant | The tenant that develops or owns the SharePoint Embedded application and creates its container type. See [container types](../plan/container-types-and-containers.md). | +| Container type | A SharePoint Embedded resource that defines the relationship, access privileges, billing accountability, and behavior for a set of containers. See [container types](../plan/container-types-containers.md). | +| Developer tenant | The tenant that develops or owns the SharePoint Embedded application and creates its container type. See [container types](../plan/container-types-containers.md). | | Consuming tenant | The Microsoft 365 tenant where a SharePoint Embedded app is used and where containers and content are stored. See [app architecture](../plan/app-tenant-architecture.md). | | Container type registration | Registration of a container type in a consuming tenant so the app can perform allowed operations against containers of that type. See [register container type application permissions](../build/register-application-permissions.md). | | Single-tenant app | An application model intended for use in one tenant, commonly for enterprise line-of-business scenarios. See [choose an app model](../plan/choose-app-model.md). | diff --git a/docs/embedded/reference/troubleshooting.md b/docs/embedded/reference/troubleshooting.md index 80ee89130b..9c0eb11039 100644 --- a/docs/embedded/reference/troubleshooting.md +++ b/docs/embedded/reference/troubleshooting.md @@ -36,7 +36,7 @@ Use this reference to identify likely causes and fixes. For end-to-end setup, se ## Diagnostic links - [Authentication and authorization](../build/configure-authentication-authorization.md) -- [Container types](../plan/container-types-and-containers.md) +- [Container types](../plan/container-types-containers.md) - [Billing](../admin/setup-billing-microsoft-365-admin-center.md) - [Admin overview](../admin/admin-overview.md) - [Microsoft Graph API reference links](graph-api-links.md) diff --git a/docs/embedded/sharepoint-embedded-documentation.md b/docs/embedded/sharepoint-embedded-documentation.md index 4909d27581..74c25c9439 100644 --- a/docs/embedded/sharepoint-embedded-documentation.md +++ b/docs/embedded/sharepoint-embedded-documentation.md @@ -39,7 +39,7 @@ Decide how SharePoint Embedded fits before you write code. - [Understand app and tenant architecture](./plan/app-tenant-architecture.md) - [Choose an app model: single-tenant or multitenant](./plan/choose-app-model.md) -- [Understand container types and containers](./plan/container-types-and-containers.md) +- [Understand container types and containers](./plan/container-types-containers.md) - [Choose a billing model](./plan/choose-billing-model.md) - [Plan authentication and permissions](./plan/authentication-permissions.md) - [Plan security, compliance, and governance](./plan/security-compliance-governance.md) diff --git a/docs/toc.yml b/docs/toc.yml index 788c3edf5f..aee2d5b5f1 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -619,7 +619,7 @@ - name: 'Choose an app model: single-tenant or multitenant' href: embedded/plan/choose-app-model.md - name: Understand container types and containers - href: embedded/plan/container-types-and-containers.md + href: embedded/plan/container-types-containers.md - name: Choose a billing model href: embedded/plan/choose-billing-model.md - name: Plan authentication and permissions From d7affce24265a8675c3712e5eadcdd58a1fd1b71 Mon Sep 17 00:00:00 2001 From: dilucesr Date: Mon, 13 Jul 2026 11:45:14 -0700 Subject: [PATCH 06/15] Use contractions --- docs/embedded/admin/admin-overview.md | 12 ++++++------ .../apply-security-compliance-controls.md | 2 +- docs/embedded/admin/consuming-tenant-admin.md | 4 ++-- .../create-apps-sharepoint-admin-center.md | 14 +++++++------- .../admin/grant-admin-consent-permissions.md | 16 ++++++++-------- .../admin/install-sharepoint-embedded-app.md | 8 ++++---- .../admin/manage-containers-powershell.md | 4 ++-- ...anage-containers-sharepoint-admin-center.md | 6 +++--- .../admin/monitor-usage-billing-cost.md | 8 ++++---- docs/embedded/admin/review-audit-events.md | 2 +- ...setup-billing-microsoft-365-admin-center.md | 18 +++++++++--------- .../build/archive-restore-containers.md | 6 +++--- .../configure-authentication-authorization.md | 2 +- docs/embedded/build/container-metadata.md | 2 +- docs/embedded/build/create-container-type.md | 2 +- .../embedded/build/create-manage-containers.md | 4 ++-- docs/embedded/build/fluid-framework.md | 4 ++-- .../build/migrate-azure-blob-storage.md | 4 ++-- docs/embedded/build/open-office-files.md | 2 +- .../build/register-application-permissions.md | 2 +- docs/embedded/build/search-containers-files.md | 2 +- .../build/share-files-manage-permissions.md | 10 +++++----- docs/embedded/plan/choose-app-model.md | 2 +- .../plan/security-compliance-governance.md | 4 ++-- .../publish/prepare-customer-installation.md | 6 +++--- .../publish/validate-customer-installation.md | 4 ++-- docs/embedded/reference/billing-meters.md | 2 +- .../sharepoint-embedded-documentation.md | 4 ++-- 28 files changed, 78 insertions(+), 78 deletions(-) diff --git a/docs/embedded/admin/admin-overview.md b/docs/embedded/admin/admin-overview.md index d20ce5f1d0..e876518fc0 100644 --- a/docs/embedded/admin/admin-overview.md +++ b/docs/embedded/admin/admin-overview.md @@ -42,9 +42,9 @@ SharePoint Embedded administration commonly involves the following roles. | Security administrator | Configure security policies and investigate security events that apply to SharePoint Embedded content. | The SharePoint Embedded Administrator role is available in Microsoft Entra and the Microsoft 365 admin center. -It is dedicated to SharePoint Embedded administration. -It does not grant regular SharePoint site management access. -For example, a SharePoint Embedded Administrator does not see the **Active sites** or **Deleted sites** pages in the SharePoint admin center and cannot run site-specific SharePoint PowerShell cmdlets. +It's dedicated to SharePoint Embedded administration. +It doesn't grant regular SharePoint site management access. +For example, a SharePoint Embedded Administrator doesn't see the **Active sites** or **Deleted sites** pages in the SharePoint admin center and can't run site-specific SharePoint PowerShell cmdlets. ### Assign the SharePoint Embedded Administrator role @@ -133,7 +133,7 @@ Review [Review audit events](review-audit-events.md) and [Apply security and com ## SharePoint admin center versus PowerShell Use both management surfaces. -They are complementary. +They're complementary. | Surface | Best for | | --- | --- | @@ -175,10 +175,10 @@ Use this path when your tenant consumes a SharePoint Embedded app: Before making changes, identify the owning application and affected containers. Container deletion can break links, remove content, and interrupt the app that depends on the container. -Deleted containers can be restored from the deleted container collection within the supported retention period unless they are permanently deleted or retention policies change the behavior. +Deleted containers can be restored from the deleted container collection within the supported retention period unless they're permanently deleted or retention policies change the behavior. > [!WARNING] -> Permanently deleting a container removes it from the deleted container collection and it cannot be restored. +> Permanently deleting a container removes it from the deleted container collection and it can't be restored. > Notify app owners before deleting containers. ## Related content diff --git a/docs/embedded/admin/apply-security-compliance-controls.md b/docs/embedded/admin/apply-security-compliance-controls.md index 69f869bd23..26241ab8eb 100644 --- a/docs/embedded/admin/apply-security-compliance-controls.md +++ b/docs/embedded/admin/apply-security-compliance-controls.md @@ -147,7 +147,7 @@ To apply DLP to selected SharePoint Embedded containers: ![Microsoft Purview DLP policy scoped to selected SharePoint Embedded container URLs.](../images/sc7.png) Some DLP scenarios require user interaction, such as business justification for override or policy tips. -Because SharePoint Embedded does not provide a native user interface, the client app must implement the required user experience, often by using Microsoft Graph where applicable. +Because SharePoint Embedded doesn't provide a native user interface, the client app must implement the required user experience, often by using Microsoft Graph where applicable. For DLP details, see [Learn about data loss prevention](/purview/dlp-learn-about-dlp). diff --git a/docs/embedded/admin/consuming-tenant-admin.md b/docs/embedded/admin/consuming-tenant-admin.md index f32cef997a..e7b5721651 100644 --- a/docs/embedded/admin/consuming-tenant-admin.md +++ b/docs/embedded/admin/consuming-tenant-admin.md @@ -16,7 +16,7 @@ ms.localizationpriority: high > > A global administrator can assign a user the SharePoint Embedded administrator role to act as a consuming tenant admin for SharePoint Embedded. -The organizations that use the SharePoint Embedded applications on their Microsoft 365 (Microsoft 365) tenants are the consuming tenants, and the persona that is responsible for managing these applications on their Microsoft 365 tenancy is the consuming tenant administrator. Consuming tenant administrators can perform various administrative actions on the SharePoint Embedded applications registered on their Microsoft 365 tenant and on the containers that hold the content. They can also manage tenant level configurations and ensure that data is stored in a secure, protected way that meets customers’ business and compliance policies. In this article, we describe the enterprise manageability features that are supported and can be performed by the consuming tenant administrator. They can do so either using the PowerShell cmdlets or through the SharePoint Administrator Center (SPAC). +The organizations that use the SharePoint Embedded applications on their Microsoft 365 (Microsoft 365) tenants are the consuming tenants, and the persona that's responsible for managing these applications on their Microsoft 365 tenancy is the consuming tenant administrator. Consuming tenant administrators can perform various administrative actions on the SharePoint Embedded applications registered on their Microsoft 365 tenant and on the containers that hold the content. They can also manage tenant level configurations and ensure that data is stored in a secure, protected way that meets customers’ business and compliance policies. In this article, we describe the enterprise manageability features that are supported and can be performed by the consuming tenant administrator. They can do so either using the PowerShell cmdlets or through the SharePoint Administrator Center (SPAC). ## Consuming Tenant Admin Role @@ -72,7 +72,7 @@ To use a pass-through billing SharePoint Embedded app, the SharePoint Embedded a ### [Meters](../reference/billing-meters.md) -SharePoint Embedded employs a pay-as-you-go (PAYG) billing model through an Azure subscription. Billing is determined by how much data in GB you store in SharePoint Embedded in active and archived states, transactions used to access and modify the container and container contents, and data that is egressed from the SharePoint Embedded platform. Each of these factors contributes to the overall cost, ensuring that you only pay for the resources and services you use. You can view this usage and billing details in the [Microsoft Cost Management](https://ms.portal.azure.com/). +SharePoint Embedded employs a pay-as-you-go (PAYG) billing model through an Azure subscription. Billing is determined by how much data in GB you store in SharePoint Embedded in active and archived states, transactions used to access and modify the container and container contents, and data that's egressed from the SharePoint Embedded platform. Each of these factors contributes to the overall cost, ensuring that you only pay for the resources and services you use. You can view this usage and billing details in the [Microsoft Cost Management](https://portal.azure.com/). SharePoint Embedded has three billing meters, as shown. Refer to the [product page](https://adoption.microsoft.com/en-us/sharepoint/embedded/) for pricing details diff --git a/docs/embedded/admin/create-apps-sharepoint-admin-center.md b/docs/embedded/admin/create-apps-sharepoint-admin-center.md index 5f284b258f..f8462e1333 100644 --- a/docs/embedded/admin/create-apps-sharepoint-admin-center.md +++ b/docs/embedded/admin/create-apps-sharepoint-admin-center.md @@ -92,7 +92,7 @@ In **Entra app registration**, choose one option. If you choose **New app**, enter the new Entra app name. If you choose **Use an existing Entra app**, search by application ID or application name. -Do not create duplicate app registrations unless your app architecture requires them. +Don't create duplicate app registrations unless your app architecture requires them. Use one owning application for the SharePoint Embedded app that owns its container type. ## Add app owners @@ -108,7 +108,7 @@ If an owner leaves the organization, update ownership before removing their acco ## Select billing type Billing type determines who pays for SharePoint Embedded consumption. -Choose carefully because billing type cannot be changed after app creation. +Choose carefully because billing type can't be changed after app creation. | Billing type | Meaning | | --- | --- | @@ -145,7 +145,7 @@ If you select **Owner org**, choose when to connect the Azure billing subscripti Expand **Advanced settings** when you need optional settings. The **Graph Explorer** toggle supports development and testing. Turn it on only when administrators or developers need to explore Microsoft Graph requests for the app. -Turn it off when it is not needed. +Turn it off when it isn't needed. For Graph Explorer documentation, see [Use Graph Explorer to try Microsoft Graph APIs](/graph/graph-explorer/graph-explorer-overview). @@ -190,7 +190,7 @@ Use the billing status to decide the next action. ## Prepare for installation -App creation does not complete the consuming tenant setup by itself. +App creation doesn't complete the consuming tenant setup by itself. Depending on the app model, the tenant still needs installation, consent, and permission registration. Continue with these tasks. @@ -203,7 +203,7 @@ Continue with these tasks. ## Troubleshoot app creation -Use these checks if creation fails or the app is not usable. +Use these checks if creation fails or the app isn't usable. - Confirm your account has the SharePoint Embedded Administrator role. - Confirm the selected existing Entra app exists and is available in the tenant. @@ -211,10 +211,10 @@ Use these checks if creation fails or the app is not usable. - Confirm required billing fields are complete. - Confirm owner organization billing uses a valid Azure subscription and resource group. - If the app is inactive, complete or repair billing setup. -- If users cannot access the app after creation, verify installation, admin consent, and container type permissions. +- If users can't access the app after creation, verify installation, admin consent, and container type permissions. > [!WARNING] -> Do not treat app creation as proof that the app is ready for users. +> Don't treat app creation as proof that the app is ready for users. > Users may still be blocked by missing installation, missing consent, or invalid billing. ## Related content diff --git a/docs/embedded/admin/grant-admin-consent-permissions.md b/docs/embedded/admin/grant-admin-consent-permissions.md index 1c5d1ea406..e8b9f661f4 100644 --- a/docs/embedded/admin/grant-admin-consent-permissions.md +++ b/docs/embedded/admin/grant-admin-consent-permissions.md @@ -17,7 +17,7 @@ outcome: Grant admin consent for a SharePoint Embedded app and validate permissi next: setup-billing-microsoft-365-admin-center.md --> -Grant admin consent when a SharePoint Embedded app needs high-privilege permissions in your Microsoft 365 tenant. Application permissions always require admin consent, while delegated permissions for SharePoint Embedded do not. To learn more, see [Grant admin consent](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal). +Grant admin consent when a SharePoint Embedded app needs high-privilege permissions in your Microsoft 365 tenant. Application permissions always require admin consent, while delegated permissions for SharePoint Embedded don't. To learn more, see [Grant admin consent](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal). Use this article to review requested permissions, grant consent, and troubleshoot common consent failures. @@ -43,7 +43,7 @@ An owning application must meet two requirements before it can act on a consumin 1. The owning app must have a service principal installed in the consuming tenant. 1. The owning app must be granted the permissions needed to register the container type and access its containers in the consuming tenant. -Both requirements are typically satisfied when a tenant administrator grants admin consent to the owning application. However, admin consent is not a hard requirement for the owning application to act on the consuming tenant. SharePoint Embedded apps that operate exclusively on behalf of a user do not need to be granted admin consent. Granting admin consent for apps that operate exclusively on behalf of a user may improve user experience as the app won't require consent from every user who wants to sign into the app. +Both requirements are typically satisfied when a tenant administrator grants admin consent to the owning application. However, admin consent isn't a hard requirement for the owning application to act on the consuming tenant. SharePoint Embedded apps that operate exclusively on behalf of a user don't need to be granted admin consent. Granting admin consent for apps that operate exclusively on behalf of a user may improve user experience as the app won't require consent from every user who wants to sign into the app. > [!CAUTION] > You need to understand the implications of granting admin consent to an application. To learn more, see [Grant tenant-wide admin consent](/entra/identity/enterprise-apps/grant-admin-consent). @@ -61,18 +61,18 @@ Before granting consent, review the requested permissions with the app owner. | Review item | Why it matters | | --- | --- | -| Application client ID | Confirms you are consenting to the intended owning app. | +| Application client ID | Confirms you're consenting to the intended owning app. | | Publisher | Helps validate trust and support ownership. | | Permission list | Shows what the app can do after consent. | | Container type ID | Identifies the container type the app owns. | | Guest app access | Identifies other apps that may receive access through registration. | | Billing model | Determines whether the tenant must configure billing before users can use the app. | -Ask the app owner to explain any permission that does not align with the expected scenario. +Ask the app owner to explain any permission that doesn't align with the expected scenario. > [!CAUTION] -> - Do NOT grant consent from a copied URL unless you have verified the `client_id` value in the URL. A consent URL grants permissions to the app identified by that client ID. -> - Do NOT grant consent if you don't understand why each permission is being requested. +> - DON'T grant consent from a copied URL unless you've verified the `client_id` value in the URL. A consent URL grants permissions to the app identified by that client ID. +> - DON'T grant consent if you don't understand why each permission is being requested. ## Grant admin consent from the consent endpoint @@ -105,7 +105,7 @@ After consent, confirm that the app is installed in your tenant. 1. Confirm that permissions show the expected consent state. 1. Confirm that no unexpected permissions were granted. -If the service principal is missing, consent did not complete. +If the service principal is missing, consent didn't complete. ## Troubleshoot consent failures @@ -119,7 +119,7 @@ Use these checks when consent fails. - Confirm the redirect URI or success handling is configured by the app owner. - Confirm your tenant policies allow user or admin consent for the app. - Confirm national cloud endpoints are correct when applicable. -- Confirm the app is not blocked by publisher or enterprise app policies. +- Confirm the app isn't blocked by publisher or enterprise app policies. ## Troubleshoot access denied after consent diff --git a/docs/embedded/admin/install-sharepoint-embedded-app.md b/docs/embedded/admin/install-sharepoint-embedded-app.md index 1e699d0e62..3c9ebf0081 100644 --- a/docs/embedded/admin/install-sharepoint-embedded-app.md +++ b/docs/embedded/admin/install-sharepoint-embedded-app.md @@ -78,7 +78,7 @@ The **Installed apps** tab lists SharePoint Embedded apps built by your organiza 1. Finish the installation. The exact installation prompts can vary by app ownership and billing model. -Do not continue if the app identity or publisher is unexpected. +Don't continue if the app identity or publisher is unexpected. > [!CAUTION] > Install only apps that your organization trusts. @@ -116,7 +116,7 @@ Select an app on the **Installed apps** tab to open its details panel. The panel *Figure 1: The app details panel on the Installed apps tab shows identifiers and billing information, and lets you copy the Entra and SharePoint Embedded app IDs.* -If the app is not visible, refresh the page and confirm that installation completed successfully. +If the app isn't visible, refresh the page and confirm that installation completed successfully. If the app remains missing, contact the app owner and verify the app identity. ## Complete admin consent @@ -136,7 +136,7 @@ https://login.microsoftonline.com/{your-tenant-id}/v2.0/adminconsent?client_id={ ``` Use the exact client ID provided by the app owner. -Do not substitute a different application ID. +Don't substitute a different application ID. ## Confirm billing requirements @@ -204,7 +204,7 @@ Consuming tenant admins can also manage container type registrations programmati ## Troubleshoot installation -Use these checks when installation does not complete. +Use these checks when installation doesn't complete. - Confirm the administrator has the SharePoint Embedded Administrator role. - Confirm the app identity and publisher. diff --git a/docs/embedded/admin/manage-containers-powershell.md b/docs/embedded/admin/manage-containers-powershell.md index a7efd09664..bc93898d51 100644 --- a/docs/embedded/admin/manage-containers-powershell.md +++ b/docs/embedded/admin/manage-containers-powershell.md @@ -87,7 +87,7 @@ Get-SPOApplication -OwningApplicationId -ApplicationId For command details, see [Remove-SPODeletedContainer](/powershell/module/sharepoint-online/remove-spodeletedcontainer). > [!CAUTION] -> Permanent deletion cannot be reversed. +> Permanent deletion can't be reversed. > Confirm retention and legal requirements before running this command. ## Manage guest application permissions diff --git a/docs/embedded/admin/manage-containers-sharepoint-admin-center.md b/docs/embedded/admin/manage-containers-sharepoint-admin-center.md index 19229e4924..a791ce5269 100644 --- a/docs/embedded/admin/manage-containers-sharepoint-admin-center.md +++ b/docs/embedded/admin/manage-containers-sharepoint-admin-center.md @@ -45,7 +45,7 @@ For role context, see [Admin overview](admin-overview.md). 1. Select **Deleted containers** to view containers in the deleted container collection. A SharePoint Embedded Administrator sees only the SharePoint Embedded-specific pages that apply to the role. -The role does not expose general SharePoint **Active sites** or **Deleted sites** pages. +The role doesn't expose general SharePoint **Active sites** or **Deleted sites** pages. ![SharePoint admin center left navigation for a SharePoint Embedded Administrator, showing only the Active containers and Deleted containers pages.](../images/ctaux2.png) @@ -214,7 +214,7 @@ The request displays as "Reactivating" on the Archived containers page. After 24 ## Delete an active or archived container -Delete a container only when there is a clear business reason. +Delete a container only when there's a clear business reason. Container deletion can affect the SharePoint Embedded app that owns the container. Potential impacts include: @@ -284,7 +284,7 @@ Permanently delete a container only when recovery is no longer required and rete 1. Review the confirmation warning. 1. Confirm the action only if the organization no longer needs the content. -After permanent deletion, the container is removed from the deleted container collection and cannot be restored. +After permanent deletion, the container is removed from the deleted container collection and can't be restored. ![Permanently delete action enabled on the Deleted containers page for a selected container.](../images/ctaux12.png) diff --git a/docs/embedded/admin/monitor-usage-billing-cost.md b/docs/embedded/admin/monitor-usage-billing-cost.md index d4e6183b08..62f71a35f5 100644 --- a/docs/embedded/admin/monitor-usage-billing-cost.md +++ b/docs/embedded/admin/monitor-usage-billing-cost.md @@ -24,7 +24,7 @@ Cost is based on usage meters, so administrators should review storage, archived Use this article to understand cost drivers, review billing in Azure Cost Management, and establish operational controls. > [!IMPORTANT] -> Admin actions taken through the SharePoint admin center or SharePoint PowerShell are not charged as SharePoint Embedded API transactions according to the SharePoint Embedded billing meters. +> Admin actions taken through the SharePoint admin center or SharePoint PowerShell aren't charged as SharePoint Embedded API transactions according to the SharePoint Embedded billing meters. ## Before you begin @@ -71,7 +71,7 @@ To sort containers by storage with PowerShell, see [Manage containers with Power ## Monitor API transactions Each Microsoft Graph call made explicitly by the SharePoint Embedded application counts as one transaction. -Calls made by internal services to containers are not charged when the application has no control over those calls. +Calls made by internal services to containers aren't charged when the application has no control over those calls. Nonchargeable transactions include: @@ -97,7 +97,7 @@ Large exports, sync-like patterns, or repeated downloads can increase egress. 1. Open the [Azure portal](https://portal.azure.com/). 1. Select **Cost Management + Billing**. -1. If you do not see it, search for **Cost Management + Billing**. +1. If you don't see it, search for **Cost Management + Billing**. 1. Select the subscription linked to SharePoint Embedded billing. 1. Open the subscription overview to review current spending, forecasted costs, and anomalies. @@ -122,7 +122,7 @@ If cost increases suddenly, review storage, transaction volume, and egress separ Use the **Invoices** area under Billing to view and download billing invoices for the billing period. Store invoices according to your organization's finance and procurement processes. -If invoice values do not match expected usage, compare invoice periods with Cost analysis date ranges. +If invoice values don't match expected usage, compare invoice periods with Cost analysis date ranges. ## Configure budgets and alerts diff --git a/docs/embedded/admin/review-audit-events.md b/docs/embedded/admin/review-audit-events.md index aab3a7eeca..5c9de00171 100644 --- a/docs/embedded/admin/review-audit-events.md +++ b/docs/embedded/admin/review-audit-events.md @@ -113,7 +113,7 @@ Then widen the search if results are incomplete. > [!TIP] > Start with a narrow time range and known users. -> Expand to container identifiers or broader SharePoint activity if the first search does not return enough context. +> Expand to container identifiers or broader SharePoint activity if the first search doesn't return enough context. ## Interpret event details diff --git a/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md b/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md index 6c22bc01b2..9f1f99c0db 100644 --- a/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md +++ b/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md @@ -54,13 +54,13 @@ SharePoint Embedded supports two billing models. | Pass-through | The tenant registered to use the app is billed for consumption. | > [!NOTE] -> A container type's billing model is set when the container type is created and cannot be changed later. To switch billing models, the developer creates a new container type with the wanted model. +> A container type's billing model is set when the container type is created and can't be changed later. To switch billing models, the developer creates a new container type with the wanted model. The following diagram shows standard billing, where consumption charges are billed to the tenant that owns or develops the app. ![Standard billing model, where the developer or owning tenant is billed for all consumption.](../images/1bill521.png) -The following diagram shows pass-through billing, where consumption charges are billed to the consuming tenant that is registered to use the app. +The following diagram shows pass-through billing, where consumption charges are billed to the consuming tenant that's registered to use the app. ![Pass-through billing model, where the consuming tenant is billed for all consumption.](../images/2bill521.png) @@ -129,7 +129,7 @@ After setup, validate that billing is active. 1. Confirm that the billing subscription remains connected. 1. Open the SharePoint admin center. 1. Go to **SharePoint Embedded** > **Apps**. -1. Confirm that the installed app does not show a billing issue. +1. Confirm that the installed app doesn't show a billing issue. 1. Ask the app owner or a pilot user to validate app access. If the app remains inactive, review the app billing model and the selected billing resources. @@ -151,27 +151,27 @@ For detailed monitoring steps, see [Monitor usage, billing, and cost](monitor-us Use these checks when setup fails. -- The admin does not have the Global Administrator role required to set up billing. +- The admin doesn't have the Global Administrator role required to set up billing. - The admin lacks owner or contributor permissions on the Azure subscription. - The subscription is disabled or unavailable. - No resource group is available for billing setup. -- The app uses pass-through billing but the consuming tenant has not turned on SharePoint Embedded apps. +- The app uses pass-through billing but the consuming tenant hasn't turned on SharePoint Embedded apps. - The app uses owner organization billing, so the app owner must resolve billing instead. - Tenant policies restrict access to the Microsoft 365 admin center billing experience. ## Common access symptoms -Users may report access failures when billing is not valid. +Users may report access failures when billing isn't valid. Look for these symptoms. - The SharePoint Embedded app is installed but inactive. -- Users cannot create new containers or store new content. +- Users can't create new containers or store new content. - The SharePoint admin center shows billing warnings for the app. -- Azure Cost Management shows no linked usage because setup has not completed. +- Azure Cost Management shows no linked usage because setup hasn't completed. - New container creation stops immediately after SharePoint Embedded is turned off or the subscription is disconnected, although existing containers remain accessible. > [!WARNING] -> Do not disconnect the linked Azure subscription during business hours unless you intend to block new container creation for SharePoint Embedded apps. Existing containers stay accessible, but users can't create new containers until billing is valid again. +> Don't disconnect the linked Azure subscription during business hours unless you intend to block new container creation for SharePoint Embedded apps. Existing containers stay accessible, but users can't create new containers until billing is valid again. ## Operational guidance diff --git a/docs/embedded/build/archive-restore-containers.md b/docs/embedded/build/archive-restore-containers.md index d0aee7c9ad..43573edc43 100644 --- a/docs/embedded/build/archive-restore-containers.md +++ b/docs/embedded/build/archive-restore-containers.md @@ -42,7 +42,7 @@ POST https://graph.microsoft.com/beta/storage/fileStorage/containers/{containerI The caller must have the `Owner` or `PrincipalOwner` role on the container. Global Administrators and SharePoint Embedded Administrators can act on all containers. The app must also have write permission on the container. -An archived container is inaccessible until it is reactivated. Stop uploads, background processors, webhook-dependent workflows, and interactive edits before submitting the archive request. +An archived container is inaccessible until it's reactivated. Stop uploads, background processors, webhook-dependent workflows, and interactive edits before submitting the archive request. ## Get archived containers Read one archived container with the normal container get operation. @@ -57,7 +57,7 @@ List archived containers for a container type by filtering for containers that h GET https://graph.microsoft.com/beta/storage/fileStorage/containers?$filter=containerTypeId eq {containerTypeId} and archivalDetails ne null ``` -Use this list for lifecycle views, admin reports, or reactivation flows. Make the archived state visible in your UI so users understand why files cannot be opened. +Use this list for lifecycle views, admin reports, or reactivation flows. Make the archived state visible in your UI so users understand why files can't be opened. ## Reactivate a container Call the Microsoft Graph beta unarchive action to reactivate an archived container. @@ -69,7 +69,7 @@ POST https://graph.microsoft.com/beta/storage/fileStorage/containers/{containerI Reactivation is instantaneous during the first seven days after archival. After seven days, reactivation can take up to 24 hours. Keep the container read and write actions disabled until the service reports that the container is active again. ## Design lifecycle controls -Require explicit user intent before archive and unarchive requests. Record the container ID, actor, timestamp, and Graph request correlation data in your application logs. Do not treat archive as deletion; retention, eDiscovery, audit, and compliance requirements still apply to archived data. +Require explicit user intent before archive and unarchive requests. Record the container ID, actor, timestamp, and Graph request correlation data in your application logs. Don't treat archive as deletion; retention, eDiscovery, audit, and compliance requirements still apply to archived data. If a lifecycle operation fails, check the caller role, app write permission, container type archival setting, and whether the target container is already in the requested state. diff --git a/docs/embedded/build/configure-authentication-authorization.md b/docs/embedded/build/configure-authentication-authorization.md index 7eb2e50558..27a73f3883 100644 --- a/docs/embedded/build/configure-authentication-authorization.md +++ b/docs/embedded/build/configure-authentication-authorization.md @@ -138,7 +138,7 @@ Container permissions apply only to delegated access. An app that accesses conta Users get container membership in two ways: - **Direct membership** — the user is added directly to a container with specific permissions. -- **Transitive membership** — the user belongs to a [Microsoft 365 group](/microsoft-365/admin/create-groups/office-365-groups) that is a member of the container. +- **Transitive membership** — the user belongs to a [Microsoft 365 group](/microsoft-365/admin/create-groups/office-365-groups) that's a member of the container. A user must be a member of the container with one of these roles: diff --git a/docs/embedded/build/container-metadata.md b/docs/embedded/build/container-metadata.md index 97de31e681..b682c61d9c 100644 --- a/docs/embedded/build/container-metadata.md +++ b/docs/embedded/build/container-metadata.md @@ -23,7 +23,7 @@ Container owners can create, update, and delete columns. Container members can r ## Choose column types SharePoint Embedded metadata supports these column type properties : `boolean`, `choice`, `currency`, `dateTime`, `hyperlinkOrPicture`, `number`, `personOrGroup`, and `text`. It also supports column settings such as `indexed`, `isDeletable`, `isSealed`, `name`, `readOnly`, and `type`. -Column names must follow SharePoint rules. Do not use names that contain `!`, start with a digit or punctuation, contain spaces, look like spreadsheet cell references, represent localized true or false values, or use reserved names such as `Author`, `Created`, or `Description`. +Column names must follow SharePoint rules. Don't use names that contain `!`, start with a digit or punctuation, contain spaces, look like spreadsheet cell references, represent localized true or false values, or use reserved names such as `Author`, `Created`, or `Description`. ## Create a column Create a column on the container before writing field values on files. diff --git a/docs/embedded/build/create-container-type.md b/docs/embedded/build/create-container-type.md index 844414823c..6a531ffa18 100644 --- a/docs/embedded/build/create-container-type.md +++ b/docs/embedded/build/create-container-type.md @@ -143,7 +143,7 @@ You can also manage container types with the `fileStorageContainerType` Microsof | Update a container type | [Update fileStorageContainerType](/graph/api/filestoragecontainertype-update) | | Delete a container type | [Delete fileStorageContainerType](/graph/api/filestorage-delete-containertypes) | -List results are filtered by ownership. Non-administrator users see only the container types they have a permission on, while SharePoint Embedded Administrators and Global Administrators see every container type in the tenant. For the settings you can configure, see [fileStorageContainerTypeSettings](/graph/api/resources/filestoragecontainertypesettings). +List results are filtered by ownership. Non-administrator users see only the container types they've been granted permission on, while SharePoint Embedded Administrators and Global Administrators see every container type in the tenant. For the settings you can configure, see [fileStorageContainerTypeSettings](/graph/api/resources/filestoragecontainertypesettings). You can delete only trial container types; deletion of standard container types isn't yet supported. Before you delete a container type, remove every container of that type, including containers in the deleted container collection. ## Understand billing dependency diff --git a/docs/embedded/build/create-manage-containers.md b/docs/embedded/build/create-manage-containers.md index f488f5d7b1..0196ea880e 100644 --- a/docs/embedded/build/create-manage-containers.md +++ b/docs/embedded/build/create-manage-containers.md @@ -30,7 +30,7 @@ A typical container lifecycle includes: 1. Add or confirm members. 1. Upload and manage files. 1. Read or update container metadata. -1. Recycle a container when it is no longer active. +1. Recycle a container when it's no longer active. 1. Restore a recycled container when needed. 1. Permanently delete containers during cleanup. Continue to [Upload, download, and manage files](manage-files.md) for content operations. @@ -41,7 +41,7 @@ Before creating containers, make sure: - The app has Microsoft Graph `FileStorageContainer.Selected` consent. - The app has container type permissions for the operation. - For delegated calls, the signed-in user can receive the needed container role. -- For trial container types, you are within trial limits. +- For trial container types, you're within trial limits. > [!IMPORTANT] > Trial container types can create up to five containers, including active containers and containers in the recycle bin. ## Choose delegated or app-only creation diff --git a/docs/embedded/build/fluid-framework.md b/docs/embedded/build/fluid-framework.md index b1a81202f5..8dd06036d5 100644 --- a/docs/embedded/build/fluid-framework.md +++ b/docs/embedded/build/fluid-framework.md @@ -51,10 +51,10 @@ After Webpack completes, open `https://localhost:8080`, sign in with tenant cred ## Decide what belongs in Fluid Use Fluid for collaborative application state that benefits from low-latency synchronization. Store durable documents and files in SharePoint Embedded containers. Persist final business output to your own durable model or to SharePoint Embedded files when your scenario needs audit, retention, search, or reporting. -Treat Fluid shared objects as user-visible collaboration state. Do not place secrets, access tokens, SAS URLs, or privileged Graph responses in shared data structures. +Treat Fluid shared objects as user-visible collaboration state. Don't place secrets, access tokens, SAS URLs, or privileged Graph responses in shared data structures. ## Handle identity and access -Your app still needs the SharePoint Embedded client ID and container type ID to acquire the correct tokens and access containers. Test the sample with one tab, two tabs for the same user, and two different users from the tenant. Verify behavior for users who can view the container but should not edit the collaborative state. +Your app still needs the SharePoint Embedded client ID and container type ID to acquire the correct tokens and access containers. Test the sample with one tab, two tabs for the same user, and two different users from the tenant. Verify behavior for users who can view the container but shouldn't edit the collaborative state. ## Move from sample to app design Use the item counter sample to prove tenant setup, consent, and client connectivity. In your own app, plan reconnect behavior, token refresh, offline transitions, container switching, and cleanup for collaborative sessions that users abandon. diff --git a/docs/embedded/build/migrate-azure-blob-storage.md b/docs/embedded/build/migrate-azure-blob-storage.md index 399fb81691..74e346319b 100644 --- a/docs/embedded/build/migrate-azure-blob-storage.md +++ b/docs/embedded/build/migrate-azure-blob-storage.md @@ -113,7 +113,7 @@ IProgress progress = new Progress(prog => Console.WriteLine($"Upload var uploadResult = await fileUploadTask.UploadAsync(progress); ``` -Use `fail` when duplicate files should not be overwritten. Change the conflict behavior only after you define replacement, rename, and audit rules. +Use `fail` when duplicate files shouldn't be overwritten. Change the conflict behavior only after you define replacement, rename, and audit rules. ## Run the sample The sample uses Microsoft Graph SDK 5.56.0, Azure.Identity 1.12.0, Azure.Storage.Blobs 12.21.0, CommandLineParser 2.9.1, and Newtonsoft.Json 13.0.3. @@ -127,7 +127,7 @@ Use the optional blob list file for controlled batches and the optional output f ## Validate migrated content Compare source blob counts with destination drive item counts. Check folder paths, file sizes, upload failures, duplicate handling, and required metadata. Open representative files through your SharePoint Embedded app, then validate search and metadata queries after indexing has had time to complete. -Do not delete source blobs until business owners approve the migration result and retention requirements are satisfied. +Don't delete source blobs until business owners approve the migration result and retention requirements are satisfied. ## Next steps diff --git a/docs/embedded/build/open-office-files.md b/docs/embedded/build/open-office-files.md index 61e8ff473d..760eead79f 100644 --- a/docs/embedded/build/open-office-files.md +++ b/docs/embedded/build/open-office-files.md @@ -136,7 +136,7 @@ Use redirect settings to route users back to your app when Microsoft 365 can't o `ApplicationRedirectUrl` configures the application redirect URL on the container type. Use it for the app route that handles file-return scenarios for your workload. -The `urlTemplate` setting controls where Microsoft 365 sends users for files without a supported viewer. Supported Office web viewer files, such as Word, Excel, and PowerPoint, open in the Office web viewer. PDF files open in the embedded viewer. Other file types redirect through `urlTemplate` when it is configured. If `urlTemplate` is not configured, Microsoft 365 sends users to a Microsoft help page. +The `urlTemplate` setting controls where Microsoft 365 sends users for files without a supported viewer. Supported Office web viewer files, such as Word, Excel, and PowerPoint, open in the Office web viewer. PDF files open in the embedded viewer. Other file types redirect through `urlTemplate` when it's configured. If `urlTemplate` isn't configured, Microsoft 365 sends users to a Microsoft help page. Set `settings.urlTemplate` with the Microsoft Graph `PATCH /storage/fileStorage/containerTypes/{containerTypeId}` API. Use a valid absolute `https://` URL that doesn't resolve to a loopback address. diff --git a/docs/embedded/build/register-application-permissions.md b/docs/embedded/build/register-application-permissions.md index ff46c3b9f3..f4b2812a59 100644 --- a/docs/embedded/build/register-application-permissions.md +++ b/docs/embedded/build/register-application-permissions.md @@ -127,7 +127,7 @@ After registration succeeds: | Access denied on Graph calls | Registration missing or insufficient | Re-register with needed permissions. | | Admin can't find hidden permission | Portal doesn't expose it | Use an admin consent URL. | ## Re-register safely -There are no restrictions on how many times the registration API can be invoked. +There's no restriction on how many times the registration API can be invoked. The last successful registration call determines the settings used in the consuming tenant. Use a safe update process: 1. Build a complete registration payload. diff --git a/docs/embedded/build/search-containers-files.md b/docs/embedded/build/search-containers-files.md index 56e84460e6..c3ec996405 100644 --- a/docs/embedded/build/search-containers-files.md +++ b/docs/embedded/build/search-containers-files.md @@ -16,7 +16,7 @@ next: container-metadata.md Use Microsoft Search in Microsoft Graph when your app needs keyword search across SharePoint Embedded containers or content. The search API ranks matching results and returns `drive` resources for containers or `driveItem` resources for files and folders. > [!NOTE] -> SharePoint Embedded search is in preview and is available only on the Microsoft Graph **`/beta`** endpoint — there is no `v1.0` search API for containers. Search supports delegated permissions only and follows the [exceptional access pattern](configure-authentication-authorization.md#handle-operations-not-exposed-through-graph). +> SharePoint Embedded search is in preview and is available only on the Microsoft Graph **`/beta`** endpoint — there's no `v1.0` search API for containers. Search supports delegated permissions only and follows the [exceptional access pattern](configure-authentication-authorization.md#handle-operations-not-exposed-through-graph). ## Choose the search scope Scope every request to the container type or container that belongs to your app. Search runs in the context of the signed-in user, so the service trims results to content the user can access. Your app must also have access to the corresponding container type before it can open returned containers or files. diff --git a/docs/embedded/build/share-files-manage-permissions.md b/docs/embedded/build/share-files-manage-permissions.md index f6236673df..4c28bb2bd7 100644 --- a/docs/embedded/build/share-files-manage-permissions.md +++ b/docs/embedded/build/share-files-manage-permissions.md @@ -13,7 +13,7 @@ audience: developer outcome: Apply additive file permissions without breaking container inheritance. next: respond-to-changes-webhooks.md --> -SharePoint Embedded content inherits permissions from its container hierarchy. You cannot break inheritance on arbitrary files or folders. Use additive permissions to extend access to a specific drive item without changing the baseline container membership. +SharePoint Embedded content inherits permissions from its container hierarchy. You can't break inheritance on arbitrary files or folders. Use additive permissions to extend access to a specific drive item without changing the baseline container membership. ## Understand container roles Container roles provide the inherited baseline access for a container. These roles are defined in [container permissions](configure-authentication-authorization.md#understand-container-permissions): @@ -25,7 +25,7 @@ Container roles provide the inherited baseline access for a container. These rol | `Manager` | Has Writer access, plus permission to manage container membership. | | `Owner` | Has Manager access, plus permission to delete containers. | -A user with inherited `Reader` access can receive additive edit access on one document. Removing that added permission does not remove the user's inherited container role. +A user with inherited `Reader` access can receive additive edit access on one document. Removing that added permission doesn't remove the user's inherited container role. ## Grant additive access Grant additive access with Microsoft Graph drive item invite. Set `sendInvitation` to `false`. App-only permissions aren't supported for this operation. @@ -47,7 +47,7 @@ Content-Type: application/json } ``` -Use `roles: ["read"]` for view access and `roles: ["write"]` for edit access. Do not grant additive permissions to the root folder of a container; add the user to an appropriate container role instead. +Use `roles: ["read"]` for view access and `roles: ["write"]` for edit access. Don't grant additive permissions to the root folder of a container; add the user to an appropriate container role instead. ## Retrieve and delete permissions List permissions when you need to show direct sharing state on a file or folder. @@ -68,10 +68,10 @@ If the user still has access after deletion, inspect inherited container roles, ## Configure who can share SharePoint Embedded supports a role-based sharing model on the container type. The restrictive model allows only `Owner` and `Manager` members to add new permissions to files. The open model allows container members and guests with edit permissions to add new file permissions. By default, a container type uses the open model. -Application owner developers control this container type setting. Design your UI so the share action is disabled or hidden when the current user's role cannot add permissions. For administrative configuration, see [Create apps with PowerShell](../admin/create-apps-powershell.md). +Application owner developers control this container type setting. Design your UI so the share action is disabled or hidden when the current user's role can't add permissions. For administrative configuration, see [Create apps with PowerShell](../admin/create-apps-powershell.md). ## Respect tenant sharing policy -By default, SharePoint Embedded application sharing follows the consuming tenant's sharing configuration. If the tenant disables guest sharing, your app cannot add guests to container roles or grant guest additive permissions. +By default, SharePoint Embedded application sharing follows the consuming tenant's sharing configuration. If the tenant disables guest sharing, your app can't add guests to container roles or grant guest additive permissions. A consuming tenant SharePoint Embedded Administrator can configure application-level sharing in administrative tools. diff --git a/docs/embedded/plan/choose-app-model.md b/docs/embedded/plan/choose-app-model.md index 6eece813e6..a79eac5825 100644 --- a/docs/embedded/plan/choose-app-model.md +++ b/docs/embedded/plan/choose-app-model.md @@ -104,7 +104,7 @@ For the registration flow, see [Register file storage container type application Containers are created in the consuming tenant. -For an enterprise LOB app, that is usually the enterprise tenant. +For an enterprise LOB app, that's usually the enterprise tenant. For an ISV app, each customer tenant has its own containers. diff --git a/docs/embedded/plan/security-compliance-governance.md b/docs/embedded/plan/security-compliance-governance.md index 55059c5acf..66119708a2 100644 --- a/docs/embedded/plan/security-compliance-governance.md +++ b/docs/embedded/plan/security-compliance-governance.md @@ -151,7 +151,7 @@ Use this command: Set-SPOContainer -Identity -SensitivityLabel ``` -The label is applied at the **container level**: it sets the container's sensitivity and governs container settings such as conditional access and guest sharing. It does not retroactively relabel files that already exist in the container, and each file carries its own sensitivity label. For item-level labeling behavior, see [Learn about sensitivity labels](/purview/sensitivity-labels). +The label is applied at the **container level**: it sets the container's sensitivity and governs container settings such as conditional access and guest sharing. It doesn't retroactively relabel files that already exist in the container, and each file carries its own sensitivity label. For item-level labeling behavior, see [Learn about sensitivity labels](/purview/sensitivity-labels). ## Block download policy @@ -197,7 +197,7 @@ Consumer Microsoft 365 settings apply to app documents stored by SharePoint Embe This includes supported security, compliance, risk, and governance settings. -Your application should not assume that every consuming tenant has the same policy configuration. +Your application shouldn't assume that every consuming tenant has the same policy configuration. Design for policy enforcement results, blocked operations, and user-facing messages. diff --git a/docs/embedded/publish/prepare-customer-installation.md b/docs/embedded/publish/prepare-customer-installation.md index 602b0ce61a..c82e93cb6d 100644 --- a/docs/embedded/publish/prepare-customer-installation.md +++ b/docs/embedded/publish/prepare-customer-installation.md @@ -66,7 +66,7 @@ For model and tenant decisions, see [Choose an app model](../plan/choose-app-mod ## Package the application configuration Give customers the exact identifiers and URLs they need to review and approve the app. -Do not ask a customer admin to infer these values from code. +Don't ask a customer admin to infer these values from code. Include the following information in your installation package: @@ -88,7 +88,7 @@ Include the following information in your installation package: Every production container type must have an owning application. A single owning application can own only one container type at a time. -Do not reuse one owning application across multiple production container types. +Don't reuse one owning application across multiple production container types. If you need multiple isolation or billing boundaries, plan separate owning applications and container types. Create the production container type with the SharePoint Embedded Visual Studio Code extension or the Microsoft Graph [Create fileStorageContainerType](/graph/api/filestorage-post-containertypes) API. Microsoft Graph creation is delegated-only and doesn't require an admin role. @@ -163,7 +163,7 @@ Ensure your app's [redirect URI](/entra/identity-platform/reply-url) can handle If your app uses guest application access, explain how the consuming tenant admin can view guest application permissions in administrative tools. > [!CAUTION] -> Do not hide optional or elevated permissions in an installation script. +> Don't hide optional or elevated permissions in an installation script. > Customer admins should be able to review the requested permissions before they grant consent. ## Prepare billing guidance diff --git a/docs/embedded/publish/validate-customer-installation.md b/docs/embedded/publish/validate-customer-installation.md index bbef5d91da..5dbea40d71 100644 --- a/docs/embedded/publish/validate-customer-installation.md +++ b/docs/embedded/publish/validate-customer-installation.md @@ -109,7 +109,7 @@ Validate the following items: - Test users are present in Microsoft Entra ID as members or guests. > [!CAUTION] -> Do not continue validation if the app ID or publisher doesn't match the installation package. +> Don't continue validation if the app ID or publisher doesn't match the installation package. > Stop and resolve the consent mismatch first. If the owning app or any guest app is missing permissions, return to [Guide customers through tenant setup](customer-tenant-setup-guide.md). @@ -148,7 +148,7 @@ For billing model guidance, see [Choose a billing model for your app](choose-app ## Step 4: Create or open a test container Use your app's normal product flow to create or open a test container in the customer tenant. -Do not use a hidden validation path that bypasses the same permissions and container type registration used by production users. +Don't use a hidden validation path that bypasses the same permissions and container type registration used by production users. Validate: diff --git a/docs/embedded/reference/billing-meters.md b/docs/embedded/reference/billing-meters.md index 4674d49e85..1999e391ad 100644 --- a/docs/embedded/reference/billing-meters.md +++ b/docs/embedded/reference/billing-meters.md @@ -54,7 +54,7 @@ The private preview SharePoint Embedded agent meter uses the Copilot Studio mess ## Pricing links - [SharePoint Embedded product page](https://adoption.microsoft.com/sharepoint/embedded/) -- [Azure Cost Management](https://ms.portal.azure.com/) +- [Azure Cost Management](https://portal.azure.com/) - [Monitor usage, billing, and cost](../admin/monitor-usage-billing-cost.md) ## Related resources diff --git a/docs/embedded/sharepoint-embedded-documentation.md b/docs/embedded/sharepoint-embedded-documentation.md index 74c25c9439..af447a4d79 100644 --- a/docs/embedded/sharepoint-embedded-documentation.md +++ b/docs/embedded/sharepoint-embedded-documentation.md @@ -1,6 +1,6 @@ --- title: SharePoint Embedded documentation -description: Task-based index for SharePoint Embedded. Find the right page by what you are trying to do, whether you build apps or administer them. +description: Task-based index for SharePoint Embedded. Find the right page by what you're trying to do, whether you build apps or administer them. ms.date: 06/25/2026 ms.localizationpriority: high --- @@ -29,7 +29,7 @@ Almost everyone is one of two people. Architects, IT decision makers, billing ad |---|---|---| | Developer / architect | Build and ship an app | [Build an app](#build-an-app) | | ISV / developer | Onboard customers and bill | [Publish and onboard customers](#publish-and-onboard-customers) | -| SharePoint / tenant admin | Install and manage apps | [Install and manage apps](#install-and-manage-apps) | +| SharePoint Embedded admin | Install and manage apps | [Install and manage apps](#install-and-manage-apps) | | Compliance admin | Govern and secure content | [Apply security and compliance controls](./admin/apply-security-compliance-controls.md) | | Evaluating / planning | Decide and design | [Plan a solution](#plan-a-solution) | From 2598e33a7f61a9f5a6d2c908317a40fadd465d82 Mon Sep 17 00:00:00 2001 From: Marc Windle Date: Mon, 13 Jul 2026 19:23:35 -0700 Subject: [PATCH 07/15] Address SharePoint Embedded review comments Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/embedded/admin/admin-overview.md | 8 ++++---- docs/embedded/build/open-office-files.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/embedded/admin/admin-overview.md b/docs/embedded/admin/admin-overview.md index e876518fc0..203fb1af46 100644 --- a/docs/embedded/admin/admin-overview.md +++ b/docs/embedded/admin/admin-overview.md @@ -8,7 +8,7 @@ ms.localizationpriority: high # Admin Overview -**Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin / SharePoint admin / Compliance admin / Security admin +**Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin / Compliance admin / Security admin ## Consuming Tenant Admin Role -Microsoft 365 SharePoint Embedded Administrator serves as the consuming tenant admin. Global Administrators in Microsoft 365 can assign users the SharePoint Embedded Administrator. The Global Administrator role already has all the permissions of the SharePoint Embedded Administrator role. The SharePoint Embedded Role is available in Microsoft Entra ID and Microsoft 365 Admin Center. +Microsoft 365 SharePoint Embedded Administrator serves as the consuming tenant admin. Global Administrators in Microsoft 365 can assign users the SharePoint Embedded Administrator role. The Global Administrator role already has all the permissions of the SharePoint Embedded Administrator role. The SharePoint Embedded Role is available in Microsoft Entra ID and Microsoft 365 Admin Center. For information on the SharePoint Embedded Administrator role, see [Admin overview](admin-overview.md). ## Administration Tools @@ -87,7 +95,7 @@ SharePoint Embedded has three billing meters, as shown. Refer to the [product pa 1. A valid Azure subscription is required. You can create one by following the steps here to [create an Azure subscription](/azure/cloud-adoption-framework/ready/azure-best-practices/initial-subscriptions). 1. A valid Azure resource group is required. You can create one by following the steps here to [create a resource group](/azure/azure-resource-manager/management/manage-resource-groups-portal). -1. In [Microsoft 365 admin center](https://admin.microsoft.com/), select **Setup**, and the view the **Files and Content** section. Select **Automate Content with Microsoft Syntex.** +1. In [Microsoft 365 admin center](https://admin.microsoft.com/), select **Setup**, and then view the **Files and Content** section. Select **Automate Content with Microsoft Syntex.** ![Microsoft 365 admin center Files and Content](../images/DTCBilling1.png) diff --git a/docs/embedded/admin/create-apps-powershell.md b/docs/embedded/admin/create-apps-powershell.md index 2313283c6b..91603f8cd5 100644 --- a/docs/embedded/admin/create-apps-powershell.md +++ b/docs/embedded/admin/create-apps-powershell.md @@ -1,7 +1,8 @@ --- title: Create apps with PowerShell description: Create and configure SharePoint Embedded apps with SharePoint PowerShell. -ms.date: 07/10/2026 +ms.date: 07/13/2026 +ms.reviewer: shsaravanan ms.localizationpriority: high --- @@ -16,7 +17,7 @@ outcome: Create SharePoint Embedded apps and configure standard billing with Sha next: install-sharepoint-embedded-app.md --> -Use SharePoint PowerShell to create SharePoint Embedded apps, which are also called container types. Each container type is associated with one Microsoft Entra application. +Use SharePoint PowerShell to create SharePoint Embedded container types for apps. Each container type is associated with one Microsoft Entra application. ## Before you begin diff --git a/docs/embedded/admin/create-apps-sharepoint-admin-center.md b/docs/embedded/admin/create-apps-sharepoint-admin-center.md index f8462e1333..1327023a68 100644 --- a/docs/embedded/admin/create-apps-sharepoint-admin-center.md +++ b/docs/embedded/admin/create-apps-sharepoint-admin-center.md @@ -1,12 +1,12 @@ --- title: Create Apps in SharePoint Admin Center description: Create a SharePoint Embedded app from the SharePoint admin center and validate the new app registration. -ms.date: 07/10/2026 +ms.date: 07/13/2026 ms.reviewer: shsaravanan ms.localizationpriority: high --- -# Create Apps in SharePoint Admin Center +# Create apps in SharePoint admin center **Applies to:** Owning tenant administrator — SharePoint Embedded admin / Global admin diff --git a/docs/embedded/admin/grant-admin-consent-permissions.md b/docs/embedded/admin/grant-admin-consent-permissions.md index e8b9f661f4..0814ae881f 100644 --- a/docs/embedded/admin/grant-admin-consent-permissions.md +++ b/docs/embedded/admin/grant-admin-consent-permissions.md @@ -1,12 +1,12 @@ --- title: Grant Admin Consent and Permissions description: Review SharePoint Embedded permissions, grant admin consent, and verify the consent state in a consuming tenant. -ms.date: 07/10/2026 +ms.date: 07/13/2026 ms.reviewer: dilucesr ms.localizationpriority: high --- -# Grant Admin Consent and Permissions +# Grant admin consent and permissions **Applies to:** Consuming tenant admin — Global admin diff --git a/docs/embedded/admin/install-sharepoint-embedded-app.md b/docs/embedded/admin/install-sharepoint-embedded-app.md index 3c9ebf0081..051ca5210e 100644 --- a/docs/embedded/admin/install-sharepoint-embedded-app.md +++ b/docs/embedded/admin/install-sharepoint-embedded-app.md @@ -1,12 +1,12 @@ --- title: Install a SharePoint Embedded App description: Install or register a SharePoint Embedded app in a consuming tenant and validate the tenant setup. -ms.date: 07/10/2026 +ms.date: 07/13/2026 ms.reviewer: shsaravanan ms.localizationpriority: high --- -# Install a SharePoint Embedded App +# Install a SharePoint Embedded app **Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin diff --git a/docs/embedded/admin/manage-containers-powershell.md b/docs/embedded/admin/manage-containers-powershell.md index bc93898d51..edf5105006 100644 --- a/docs/embedded/admin/manage-containers-powershell.md +++ b/docs/embedded/admin/manage-containers-powershell.md @@ -1,12 +1,12 @@ --- title: Manage Containers with PowerShell description: Use SharePoint Online Management Shell to inventory and manage SharePoint Embedded apps and containers. -ms.date: 07/10/2026 +ms.date: 07/13/2026 ms.reviewer: shsaravanan ms.localizationpriority: high --- -# Manage Containers with PowerShell +# Manage containers with PowerShell **Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin diff --git a/docs/embedded/admin/manage-containers-sharepoint-admin-center.md b/docs/embedded/admin/manage-containers-sharepoint-admin-center.md index a791ce5269..76d5ee8b09 100644 --- a/docs/embedded/admin/manage-containers-sharepoint-admin-center.md +++ b/docs/embedded/admin/manage-containers-sharepoint-admin-center.md @@ -1,12 +1,12 @@ --- title: Manage Containers in SharePoint Admin Center description: View, inspect, delete, restore, and manage SharePoint Embedded containers in the SharePoint admin center. -ms.date: 07/10/2026 +ms.date: 07/13/2026 ms.reviewer: shsaravanan ms.localizationpriority: high --- -# Manage Containers in SharePoint Admin Center +# Manage containers in SharePoint admin center **Applies to:** Consuming tenant admin — SharePoint Embedded admin / Global admin diff --git a/docs/embedded/admin/monitor-usage-billing-cost.md b/docs/embedded/admin/monitor-usage-billing-cost.md index 62f71a35f5..fc98129a44 100644 --- a/docs/embedded/admin/monitor-usage-billing-cost.md +++ b/docs/embedded/admin/monitor-usage-billing-cost.md @@ -1,12 +1,12 @@ --- title: Monitor Usage, Billing, and Cost description: Monitor SharePoint Embedded usage and pay-as-you-go costs with billing meters and Azure Cost Management. -ms.date: 07/10/2026 +ms.date: 07/13/2026 ms.reviewer: shsaravanan ms.localizationpriority: high --- -# Monitor Usage, Billing, and Cost +# Monitor usage, billing, and cost **Applies to:** Billing administrator diff --git a/docs/embedded/admin/review-audit-events.md b/docs/embedded/admin/review-audit-events.md index 5c9de00171..ba62ccb947 100644 --- a/docs/embedded/admin/review-audit-events.md +++ b/docs/embedded/admin/review-audit-events.md @@ -1,12 +1,12 @@ --- title: Review Audit Events description: Find and interpret SharePoint Embedded audit activity in Microsoft Purview audit. -ms.date: 07/10/2026 +ms.date: 07/13/2026 ms.reviewer: dilucesr ms.localizationpriority: high --- -# Review Audit Events +# Review audit events **Applies to:** Consuming tenant admin — Compliance admin / Security admin / Audit reader diff --git a/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md b/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md index 9f1f99c0db..60b945a6f1 100644 --- a/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md +++ b/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md @@ -1,12 +1,12 @@ --- title: Set Up Billing in Microsoft 365 Admin Center description: Configure SharePoint Embedded pass-through billing in the Microsoft 365 admin center for a consuming tenant. -ms.date: 07/10/2026 +ms.date: 07/13/2026 ms.reviewer: shsaravanan ms.localizationpriority: high --- -# Set Up Billing in Microsoft 365 Admin Center +# Set up billing in Microsoft 365 admin center **Applies to:** Consuming tenant admin — Billing admin / Global admin diff --git a/docs/embedded/build/archive-restore-containers.md b/docs/embedded/build/archive-restore-containers.md index 43573edc43..fb0554d1dc 100644 --- a/docs/embedded/build/archive-restore-containers.md +++ b/docs/embedded/build/archive-restore-containers.md @@ -1,11 +1,11 @@ --- title: Archive and Restore Containers description: Archive inactive SharePoint Embedded containers and reactivate them with Microsoft Graph beta APIs. -ms.date: 06/25/2026 +ms.date: 07/13/2026 ms.reviewer: jaeccles ms.localizationpriority: high --- -# Archive and Restore Containers +# Archive and restore containers **Applies to:** Developer + > [!NOTE] > This article isn't an exhaustive list of SharePoint Embedded features and scenarios. Each scenario shows one way to combine features in context. diff --git a/docs/embedded/sharepoint-embedded-documentation.md b/docs/embedded/sharepoint-embedded-documentation.md index af447a4d79..76dccd8ac2 100644 --- a/docs/embedded/sharepoint-embedded-documentation.md +++ b/docs/embedded/sharepoint-embedded-documentation.md @@ -1,12 +1,15 @@ --- title: SharePoint Embedded documentation description: Task-based index for SharePoint Embedded. Find the right page by what you're trying to do, whether you build apps or administer them. -ms.date: 06/25/2026 +ms.date: 07/13/2026 +ms.reviewer: dilucesr ms.localizationpriority: high --- # SharePoint Embedded documentation +**Applies to:** All + SharePoint Embedded is a cloud-based, API-only file and document management platform built on Microsoft 365. Developers embed Office collaboration, Microsoft Purview compliance, and Copilot into their own apps — while documents stay inside each customer's Microsoft 365 tenant. This page is organized by **task**. Find what you're trying to do and go straight to the page that does it. A machine-readable index is available in this folder as `llms.txt`. diff --git a/docs/embedded/whats-new.md b/docs/embedded/whats-new.md index 404385306b..907c4b6f7c 100644 --- a/docs/embedded/whats-new.md +++ b/docs/embedded/whats-new.md @@ -1,13 +1,22 @@ --- title: What's new in SharePoint Embedded? description: Updates about Microsoft SharePoint Embedded. -ms.date: 07/09/2026 +ms.date: 07/13/2026 ms.reviewer: dilucesr -ms.localizationpriority: medium +ms.localizationpriority: high --- # What's new in SharePoint Embedded +**Applies to:** All + + + ## June 2026 - [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) has a new `urlTemplate` [setting](/graph/api/resources/filestoragecontainertypesettings). For more information on what the `urlTemplate` setting does, see [Create and configure a container type](./build/create-container-type.md#configure-container-type-behavior). @@ -24,7 +33,7 @@ ms.localizationpriority: medium - [SharePoint Embedded agent SDK](./build/agent-experiences.md) has been deprecated in favor of the new [SharePoint Embedded knowledge source in Microsoft Foundry](./build/sharepoint-embedded-knowledge-source.md). - [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource has a new **permissions** relationship that allows management of the container type's owners. This is available in the beta Microsoft Graph endpoint. For more information, see [Manage container type owners](./build/configure-authentication-authorization.md#manage-container-type-owners). - [fileStorageContainer](/graph/api/resources/filestoragecontainer) resource has a new **informationBarrier** property that allows management of the container's information barrier. This is available in the beta Microsoft Graph endpoint. For more information, see [Information Barriers](/purview/information-barriers-sharepoint). -- The SharePoint Embedded native PDF viewing experience now supports searching within the file, viewing comments and sticky notes embedded on the file, and printing. The new features are now available via the [driveItem: preview](/graph/api/driveitem-preview) API in both the beta and v1.0 Microsoft Graph endpoints. +- The SharePoint Embedded native PDF viewing experience now supports searching within the file, viewing comments and sticky notes embedded on the file, and printing. The new features are now available through the [driveItem: preview](/graph/api/driveitem-preview) API in both the beta and v1.0 Microsoft Graph endpoints. ## February 2026 @@ -54,7 +63,7 @@ ms.localizationpriority: medium ## September 2025 - [SharePoint Embedded migration](/graph/api/resources/sharepointmigration-api-overview) APIs are now available in the beta Microsoft Graph endpoint. -- [driveItem: invite](/graph/api/driveitem-invite) has clearer documentation on restrictions for the root item of drives in OneDrive for home, and inviting _new_ guests via app-only access. +- [driveItem: invite](/graph/api/driveitem-invite) has clearer documentation on restrictions for the root item of drives in OneDrive for home, and inviting _new_ guests by using app-only access. - [driveItem: copy](/graph/api/driveitem-copy) has clearer documentation on behaviors around metadata, versions, cross-geo operations, and known issues. - New cmdlets for consuming tenant administrators to [add](/powershell/module/microsoft.online.sharepoint.powershell/add-spocontaineruser), [remove](/powershell/module/microsoft.online.sharepoint.powershell/remove-spocontaineruser), or [change](/powershell/module/microsoft.online.sharepoint.powershell/set-spocontaineruser) container membership were added to the [SharePoint Embedded Containers Management Shell](/powershell/sharepoint/sharepoint-online/introduction-sharepoint-online-management-shell). From 9f5f335661f055011a7dbb107be7faf1c0382c50 Mon Sep 17 00:00:00 2001 From: Andrew Connell Date: Tue, 14 Jul 2026 06:51:53 -0400 Subject: [PATCH 09/15] docs: add ai-usage and ms.author metadata - add ai-usage: ai-assisted to all embedded pages - add ms.author: mawin to new embedded articles - reflow body paragraphs to one sentence per block --- docs/embedded/admin/admin-overview.md | 30 ++++++++ .../apply-security-compliance-controls.md | 11 +++ docs/embedded/admin/consuming-tenant-admin.md | 2 + docs/embedded/admin/create-apps-powershell.md | 2 + .../create-apps-sharepoint-admin-center.md | 16 +++++ .../admin/grant-admin-consent-permissions.md | 5 ++ .../admin/install-sharepoint-embedded-app.md | 19 +++++ .../admin/manage-containers-powershell.md | 9 +++ ...nage-containers-sharepoint-admin-center.md | 12 ++++ .../admin/monitor-usage-billing-cost.md | 12 ++++ docs/embedded/admin/review-audit-events.md | 17 +++++ ...etup-billing-microsoft-365-admin-center.md | 9 +++ docs/embedded/build/agent-experiences.md | 7 ++ .../build/archive-restore-containers.md | 11 +++ .../configure-authentication-authorization.md | 53 ++++++++++++++ docs/embedded/build/container-metadata.md | 13 ++++ docs/embedded/build/create-container-type.md | 49 +++++++++++++ .../build/create-manage-containers.md | 68 ++++++++++++++++++ docs/embedded/build/fluid-framework.md | 11 +++ docs/embedded/build/manage-files.md | 66 +++++++++++++++++ .../build/migrate-azure-blob-storage.md | 12 ++++ docs/embedded/build/open-office-files.md | 32 +++++++++ docs/embedded/build/preview-files.md | 70 +++++++++++++++++++ docs/embedded/build/quickstart-vscode.md | 45 ++++++++++++ .../build/register-application-permissions.md | 60 ++++++++++++++++ .../build/respond-to-changes-webhooks.md | 11 +++ .../embedded/build/search-containers-files.md | 12 ++++ .../build/share-files-manage-permissions.md | 11 +++ .../sharepoint-embedded-knowledge-source.md | 2 + docs/embedded/overview.md | 1 + docs/embedded/plan/app-tenant-architecture.md | 3 + .../plan/authentication-permissions.md | 3 + docs/embedded/plan/choose-app-model.md | 3 + docs/embedded/plan/choose-billing-model.md | 3 + .../plan/container-types-containers.md | 3 + docs/embedded/plan/limits-calling-patterns.md | 2 + .../plan/security-compliance-governance.md | 3 + .../publish/choose-app-billing-model.md | 2 + .../publish/customer-tenant-setup-guide.md | 3 +- .../publish/prepare-customer-installation.md | 3 + .../publish/validate-customer-installation.md | 2 + docs/embedded/reference/audit-events.md | 2 + docs/embedded/reference/billing-meters.md | 4 +- docs/embedded/reference/glossary.md | 2 + docs/embedded/reference/graph-api-links.md | 2 + docs/embedded/reference/powershell.md | 2 + docs/embedded/reference/troubleshooting.md | 2 + docs/embedded/scenarios-and-use-cases.md | 1 + .../sharepoint-embedded-documentation.md | 2 + docs/embedded/whats-new.md | 9 +-- 50 files changed, 727 insertions(+), 7 deletions(-) diff --git a/docs/embedded/admin/admin-overview.md b/docs/embedded/admin/admin-overview.md index 6e4a1fa582..d12c433b43 100644 --- a/docs/embedded/admin/admin-overview.md +++ b/docs/embedded/admin/admin-overview.md @@ -3,7 +3,9 @@ title: Admin Overview description: Learn how administrators manage SharePoint Embedded apps, containers, billing, and compliance in Microsoft 365. ms.date: 07/13/2026 ms.reviewer: shsaravanan +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Admin overview @@ -18,14 +20,18 @@ next: create-apps-sharepoint-admin-center.md --> SharePoint Embedded is an API-only document platform built on Microsoft 365. + Organizations use SharePoint Embedded apps to store files and documents in containers that inherit Microsoft 365 security, compliance, and administration controls. + Administrators manage those apps and containers through the SharePoint admin center and SharePoint Online Management Shell. Use this overview to decide which administrator role and management surface to use. + Then follow the linked how-to articles for app creation, installation, billing, container lifecycle, and compliance operations. > [!IMPORTANT] > Assign the **SharePoint Embedded Administrator** role before delegating SharePoint Embedded administration. +> > Global Administrators already have the permissions of this role, but should use least-privileged delegation for daily operations. ## Admin roles @@ -41,9 +47,13 @@ SharePoint Embedded administration commonly involves the following roles. | Security administrator | Configure security policies and investigate security events that apply to SharePoint Embedded content. | The SharePoint Embedded Administrator role is available in Microsoft Entra and the Microsoft 365 admin center. + It is dedicated to SharePoint Embedded administration. + It doesn't grant regular SharePoint site management access. + For example, a SharePoint Embedded Administrator doesn't see the **Active sites** or **Deleted sites** pages in the SharePoint admin center and cannot run site-specific SharePoint PowerShell cmdlets. + Likewise, the SharePoint administrator role doesn't administer SharePoint Embedded apps or containers. ### Assign the SharePoint Embedded Administrator role @@ -73,9 +83,11 @@ A Global Administrator assigns the SharePoint Embedded Administrator role in eit SharePoint Embedded administration differs depending on whether the tenant owns the app or consumes the app. A developer tenant owns or builds the SharePoint Embedded application. + Developer tenant admins can create container types, configure billing for standard billing scenarios, and manage container type properties. A consuming tenant uses a SharePoint Embedded application in its Microsoft 365 tenant. + Consuming tenant admins manage installed applications, containers, sharing settings, sensitivity labels, deleted containers, and compliance controls. A Global Administrator sets up billing for pass-through apps. For the consuming tenant admin model, see [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md). @@ -94,11 +106,13 @@ Administrators can perform these SharePoint Embedded management tasks. - Create apps from the SharePoint admin center when the tenant owns the app. Start with [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md) for owned apps. + Use [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) for consuming tenant installation. ### Permission and consent administration Admin consent installs the application service principal in the consuming tenant and grants the requested permissions. + For container type registration, the owning application must have admin consent and the required SharePoint application permission before it can register permissions in the consuming tenant. Review consent guidance in [Grant admin consent and permissions](grant-admin-consent-permissions.md). @@ -106,26 +120,35 @@ Review consent guidance in [Grant admin consent and permissions](grant-admin-con ### Billing administration SharePoint Embedded uses pay-as-you-go billing through Azure. + Cost is driven by storage, API transactions, and egress. + Developer tenants configure billing for standard billing container types. + Consuming tenants configure billing for pass-through apps before users can access those apps. + Only a Global Administrator can set up billing in the Microsoft 365 admin center. The SharePoint Embedded Administrator role can't configure billing. Set up pass-through billing with [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md). + Monitor usage with [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). ### Container administration Containers hold the content used by SharePoint Embedded apps. + Admins can view active containers, archive containers, reactivate archived containers, inspect metadata, set sensitivity labels, manage membership in the admin center, delete containers, restore deleted containers, and permanently delete deleted containers. Use the graphical experience in [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md). + Use cmdlets and scripting in [Manage containers with PowerShell](manage-containers-powershell.md). ### Compliance administration SharePoint Embedded content participates in Microsoft Purview capabilities. + Compliance admins can use audit, retention, DLP, eDiscovery, and sensitivity labels in ways that are similar to SharePoint. + Some scenarios that need end-user interaction depend on the owning app to provide the user experience. Review [Review audit events](review-audit-events.md) and [Apply security and compliance controls](apply-security-compliance-controls.md). @@ -133,6 +156,7 @@ Review [Review audit events](review-audit-events.md) and [Apply security and com ## SharePoint admin center versus PowerShell Use both management surfaces. + They're complementary. | Surface | Best for | @@ -141,10 +165,13 @@ They're complementary. | SharePoint Online Management Shell | Repeatable administration, inventory exports, sorting containers by storage, application permission review, and lifecycle scripts. | The SharePoint admin center exposes SharePoint Embedded-specific pages such as **Apps**, **Active containers**, and **Deleted containers**. + A SharePoint Embedded Administrator sees the SharePoint Embedded administration pages but not general SharePoint site management pages. SharePoint Online Management Shell provides SharePoint Embedded cmdlets for application and container administration. + Use the latest version before running container administration cmdlets. + For command details, see [Manage containers with PowerShell](manage-containers-powershell.md) and the linked cmdlet reference. > [!TIP] @@ -174,7 +201,9 @@ Use this path when your tenant consumes a SharePoint Embedded app: ## Operational guardrails Before making changes, identify the owning application and affected containers. + Container deletion can break links, remove content, and interrupt the app that depends on the container. + Deleted containers can be restored from the deleted container collection within the supported retention period unless they're permanently deleted or retention policies change the behavior. > [!WARNING] @@ -193,4 +222,5 @@ Deleted containers can be restored from the deleted container collection within - [Apply security and compliance controls](apply-security-compliance-controls.md) ## Next steps + Create an owned app in [Create apps in SharePoint admin center](create-apps-sharepoint-admin-center.md). diff --git a/docs/embedded/admin/apply-security-compliance-controls.md b/docs/embedded/admin/apply-security-compliance-controls.md index b9aec7ed9f..b386161aea 100644 --- a/docs/embedded/admin/apply-security-compliance-controls.md +++ b/docs/embedded/admin/apply-security-compliance-controls.md @@ -3,7 +3,9 @@ title: Apply Security and Compliance Controls description: Apply Microsoft Purview and SharePoint controls to protect and govern SharePoint Embedded content. ms.date: 07/13/2026 ms.reviewer: dilucesr +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Apply security and compliance controls @@ -18,6 +20,7 @@ next: ../reference/troubleshooting.md --> Apply security and compliance controls to SharePoint Embedded content by using Microsoft Purview and supported SharePoint administration features. + SharePoint Embedded uses Microsoft 365 compliance and data governance capabilities so organizations can protect, govern, and investigate content stored by embedded applications. Some compliance scenarios require the owning application to provide the end-user experience because SharePoint Embedded is API-only and doesn't have its own user interface. @@ -42,6 +45,7 @@ For supported controls, see [Plan Security, Compliance, and Governance](../plan/ ## Get container details for policy scope Many compliance tasks need a container URL or container identifier. + Use PowerShell to retrieve application and container details. 1. View SharePoint Embedded applications registered in the tenant. @@ -63,6 +67,7 @@ Use PowerShell to retrieve application and container details. ``` Use the container site URL to target policies at specific SharePoint Embedded containers. + For cmdlet details, see [Get-SPOContainer](/powershell/module/sharepoint-online/get-spocontainer). ## Apply audit controls @@ -111,6 +116,7 @@ Use these scoping options: | Selected locations | Applies to specific SharePoint locations, including selected SharePoint Embedded container URLs. | Use broad scope when a policy applies to all SharePoint and SharePoint Embedded content. + Use selected container URLs when a policy applies only to specific data. ![Microsoft Purview retention policy configured for All sites, which enforces it on all SharePoint sites and SharePoint Embedded containers.](../images/sc4.png) @@ -147,6 +153,7 @@ To apply DLP to selected SharePoint Embedded containers: ![Microsoft Purview DLP policy scoped to selected SharePoint Embedded container URLs.](../images/sc7.png) Some DLP scenarios require user interaction, such as business justification for override or policy tips. + Because SharePoint Embedded doesn't provide a native user interface, the client app must implement the required user experience, often by using Microsoft Graph where applicable. For DLP details, see [Learn about data loss prevention](/purview/dlp-learn-about-dlp). @@ -181,6 +188,7 @@ Set-SPOSite -Identity -BlockDownloadPolicy $true ``` A SharePoint Advanced Management license is needed to enforce this policy. + Read the SharePoint documentation before enabling it in production. For more information, see [Block download policy for SharePoint sites and OneDrive](/sharepoint/block-download-from-sites). @@ -188,6 +196,7 @@ For more information, see [Block download policy for SharePoint sites and OneDri ## Apply Conditional Access policy SharePoint Embedded supports basic Conditional Access policy configurations. + The `ConditionalAccessPolicy` parameter supports these values: - `AllowFullAccess` @@ -201,6 +210,7 @@ Set-SPOContainer -Identity -ConditionalAccessPolicy [!CAUTION] > - DON'T grant consent from a copied URL unless you've verified the `client_id` value in the URL. A consent URL grants permissions to the app identified by that client ID. +> > - DON'T grant consent if you don't understand why each permission is being requested. ## Grant admin consent from the consent endpoint @@ -83,6 +86,7 @@ https://login.microsoftonline.com/{your-tenant-id}/v2.0/adminconsent?client_id={ ``` Confirm that in the admin consent URL: + - `{your-tenant-id}` matches your Microsoft Entra tenant ID. - `{owning-app-clientid}` matches the owning application client ID. - `{spe-app-redirect-uri}` points to a URL in the SharePoint Embedded app. @@ -141,4 +145,5 @@ Use these checks when consent succeeds but the app owner reports that API calls - [Admin overview](admin-overview.md) ## Next steps + Configure billing in [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md). diff --git a/docs/embedded/admin/install-sharepoint-embedded-app.md b/docs/embedded/admin/install-sharepoint-embedded-app.md index 051ca5210e..f0df1373d4 100644 --- a/docs/embedded/admin/install-sharepoint-embedded-app.md +++ b/docs/embedded/admin/install-sharepoint-embedded-app.md @@ -3,7 +3,9 @@ title: Install a SharePoint Embedded App description: Install or register a SharePoint Embedded app in a consuming tenant and validate the tenant setup. ms.date: 07/13/2026 ms.reviewer: shsaravanan +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Install a SharePoint Embedded app @@ -18,6 +20,7 @@ next: grant-admin-consent-permissions.md --> Install a SharePoint Embedded app when a consuming Microsoft 365 tenant needs to use the app. + Installation makes the app visible for tenant administration, but the tenant may still need admin consent, container type permission registration, and billing setup before users can access content. This article focuses on the consuming-tenant administrator path in the SharePoint admin center. @@ -27,6 +30,7 @@ This article focuses on the consuming-tenant administrator path in the SharePoin > Global Administrators can also perform SharePoint Embedded administration tasks. Use this article with [Choose an App Model: Single-Tenant or Multitenant](../plan/choose-app-model.md) and the app creation guidance. + The app model determines who owns the app, who installs or onboards it, where containers are created, who pays, and which admins must consent or configure billing. ## Before you begin @@ -47,8 +51,11 @@ For role information, see [Admin overview](admin-overview.md). ## Understand the consuming tenant path A consuming tenant is the Microsoft 365 tenant where users run the SharePoint Embedded app and where the app stores content in containers. + The consuming tenant admin manages the app and containers in that tenant. + For a single-tenant line-of-business app, the owning tenant and consuming tenant are usually the same. + For a multitenant ISV app, each customer tenant is a consuming tenant and customer files remain in the customer Microsoft 365 tenant boundary. Consuming tenant administrators use two administration surfaces. @@ -59,11 +66,13 @@ Consuming tenant administrators use two administration surfaces. | SharePoint Online Management Shell | Enumerate applications, enumerate containers, update labels, configure sharing, and manage lifecycle operations. | Use the SharePoint admin center when you need guided installation and validation. + Use PowerShell for repeatable inventory and operations after installation. ## Install from the SharePoint admin center Use the SharePoint Embedded **Apps** experience in the SharePoint admin center when the app is available to install. + The **Installed apps** tab lists SharePoint Embedded apps built by your organization and by external organizations. It currently doesn't include Microsoft-built SharePoint Embedded apps. 1. Sign in to the [SharePoint admin center](https://admin.microsoft.com/sharepoint). @@ -78,6 +87,7 @@ The **Installed apps** tab lists SharePoint Embedded apps built by your organiza 1. Finish the installation. The exact installation prompts can vary by app ownership and billing model. + Don't continue if the app identity or publisher is unexpected. > [!CAUTION] @@ -87,7 +97,9 @@ Don't continue if the app identity or publisher is unexpected. ## Install an owned app that didn't install A successful create flow installs the app automatically, so you don't usually install an owned app separately. + Only when the install step in the create flow fails is the SharePoint Embedded app created but not installed. + In that case, install the app from the **Owned apps** tab. 1. Go to **SharePoint Embedded** > **Apps**. @@ -117,11 +129,13 @@ Select an app on the **Installed apps** tab to open its details panel. The panel *Figure 1: The app details panel on the Installed apps tab shows identifiers and billing information, and lets you copy the Entra and SharePoint Embedded app IDs.* If the app isn't visible, refresh the page and confirm that installation completed successfully. + If the app remains missing, contact the app owner and verify the app identity. ## Complete admin consent Installation and consent are related but not always the same task. + The owning app must have a service principal installed in the consuming tenant and admin consent before it can register container type application permissions. > [!NOTE] @@ -141,6 +155,7 @@ Don't substitute a different application ID. ## Confirm billing requirements SharePoint Embedded supports standard and pass-through billing models. + For pass-through billing, a Global Administrator in the consuming tenant must set up billing in the Microsoft 365 admin center before users can access the app. Only a Global Administrator can set up billing; the SharePoint Embedded Administrator role can't. If billing is invalid or SharePoint Embedded is turned off, users can no longer create new containers, although existing containers and their content remain accessible. @@ -156,6 +171,7 @@ If billing was skipped during app creation, you can attach it later from the app For a **User org** app, billing isn't attached from this panel. A Global Administrator in the consuming tenant sets up billing in the Microsoft 365 admin center. See [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md). Use [Set up billing in Microsoft 365 admin center](setup-billing-microsoft-365-admin-center.md) to configure billing for consuming-tenant scenarios. + Use [Monitor usage, billing, and cost](monitor-usage-billing-cost.md) to review ongoing cost. ## Verify containers after app use @@ -176,7 +192,9 @@ For detailed steps, see [Manage containers in SharePoint admin center](manage-co ## Validate with PowerShell Use SharePoint Online Management Shell when you need a scripted check. + Install the latest SharePoint Online Management Shell and connect to SharePoint Online. + Then use the supported application inventory cmdlets. ```powershell @@ -227,4 +245,5 @@ Use these checks when installation doesn't complete. - [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) ## Next steps + Grant consent and verify permissions in [Grant admin consent and permissions](grant-admin-consent-permissions.md). diff --git a/docs/embedded/admin/manage-containers-powershell.md b/docs/embedded/admin/manage-containers-powershell.md index edf5105006..8c4a9ff109 100644 --- a/docs/embedded/admin/manage-containers-powershell.md +++ b/docs/embedded/admin/manage-containers-powershell.md @@ -3,7 +3,9 @@ title: Manage Containers with PowerShell description: Use SharePoint Online Management Shell to inventory and manage SharePoint Embedded apps and containers. ms.date: 07/13/2026 ms.reviewer: shsaravanan +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Manage containers with PowerShell @@ -18,6 +20,7 @@ next: monitor-usage-billing-cost.md --> Use SharePoint Online Management Shell to automate SharePoint Embedded application and container administration. + PowerShell is useful for inventory, reporting, lifecycle operations, sensitivity label updates, sharing configuration, and permission review. This article states the supported administrator cmdlets and links to canonical cmdlet references for deeper syntax details. @@ -40,6 +43,7 @@ For role details, see [SharePoint Embedded administrator](admin-overview.md). ## Install SharePoint Online Management Shell Install the [SharePoint Online Management Shell](https://www.microsoft.com/download/details.aspx?id=35588). + Open it from the Start menu or use a supported PowerShell host with the module available. Install the latest shell and connect to SharePoint Online before you run SharePoint Embedded cmdlets. @@ -55,6 +59,7 @@ Connect-SPOService -Url https://-admin.sharepoint.com ``` Replace `` with your tenant name. + Sign in with an account that has the required admin role. > [!TIP] @@ -147,6 +152,7 @@ Get-SPOContainer -Identity ``` The detailed result can include storage, ownership details, site URL, label information, and owner count. + Use the site URL when configuring some compliance controls in Microsoft Purview. ## Set or remove a sensitivity label @@ -164,6 +170,7 @@ Set-SPOContainer -Identity -RemoveLabel ``` Coordinate sensitivity label changes with compliance administrators. + For compliance guidance, see [Apply security and compliance controls](apply-security-compliance-controls.md). ## Manage container membership @@ -187,6 +194,7 @@ Remove-SPOContainer -Identity ``` Deleting a container can cause data loss, broken links, application failures, and permission issues. + Notify container owners and app owners before deleting. > [!WARNING] @@ -263,4 +271,5 @@ Follow these operational practices. - [Apply security and compliance controls](apply-security-compliance-controls.md) ## Next steps + Monitor consumption in [Monitor usage, billing, and cost](monitor-usage-billing-cost.md). diff --git a/docs/embedded/admin/manage-containers-sharepoint-admin-center.md b/docs/embedded/admin/manage-containers-sharepoint-admin-center.md index 76d5ee8b09..ba36214f30 100644 --- a/docs/embedded/admin/manage-containers-sharepoint-admin-center.md +++ b/docs/embedded/admin/manage-containers-sharepoint-admin-center.md @@ -3,7 +3,9 @@ title: Manage Containers in SharePoint Admin Center description: View, inspect, delete, restore, and manage SharePoint Embedded containers in the SharePoint admin center. ms.date: 07/13/2026 ms.reviewer: shsaravanan +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Manage containers in SharePoint admin center @@ -18,6 +20,7 @@ next: manage-containers-powershell.md --> Use the SharePoint admin center to manage SharePoint Embedded containers through a graphical experience. + The SharePoint Embedded container pages help consuming tenant admins view active containers, inspect details, manage membership, apply sensitivity labels, archive and reactivate containers, delete containers, restore deleted containers, and permanently delete containers. > [!IMPORTANT] @@ -52,6 +55,7 @@ The role doesn't expose general SharePoint **Active sites** or **Deleted sites** ## View active containers The **Active containers** page shows active containers in the tenant. + Use it for inventory, compliance review, and lifecycle decisions. The **Active containers** page shows these container properties. @@ -98,6 +102,7 @@ Use the active container page controls to narrow the inventory. ## Inspect container details Open a container details panel when you need more information. + The details view includes two tabs. | Tab | Use it for | @@ -106,6 +111,7 @@ The details view includes two tabs. | Membership | Review and manage user permissions for roles associated with the container. | Review the general tab before lifecycle operations. + Review membership before changing users or owner assignments. ![Container details General tab showing container metadata, usage, and configuration settings.](../images/ctaux4.png) @@ -113,6 +119,7 @@ Review membership before changing users or owner assignments. ## Manage membership The SharePoint Embedded platform supports four roles: Owner, Manager, Writer, and Reader. + An individual SharePoint Embedded application may not use all four roles and may display different role names in its own user experience. In the SharePoint admin center membership panel, administrators can: @@ -135,6 +142,7 @@ Coordinate with app owners when the app has its own membership workflow. ## Set a sensitivity label Admins can set a sensitivity label on a container from the Active containers page. + Open the container details panel and use the settings area. Before applying a label, confirm: @@ -215,6 +223,7 @@ The request displays as "Reactivating" on the Archived containers page. After 24 ## Delete an active or archived container Delete a container only when there's a clear business reason. + Container deletion can affect the SharePoint Embedded app that owns the container. Potential impacts include: @@ -238,6 +247,7 @@ The container moves to the deleted container collection. > [!WARNING] > Deleting a container may interrupt the associated SharePoint Embedded application. +> > Notify app owners before deleting containers. ## View deleted containers @@ -295,6 +305,7 @@ After permanent deletion, the container is removed from the deleted container co ## When to use PowerShell instead Use PowerShell when you need automation or repeatable reporting. + For example, use PowerShell to enumerate applications, list containers for an owning application, sort containers by storage, set sensitivity labels, delete containers, restore deleted containers, or permanently delete deleted containers. Continue with [Manage containers with PowerShell](manage-containers-powershell.md). @@ -307,4 +318,5 @@ Continue with [Manage containers with PowerShell](manage-containers-powershell.m - [Apply security and compliance controls](apply-security-compliance-controls.md) ## Next steps + Automate container management in [Manage containers with PowerShell](manage-containers-powershell.md). diff --git a/docs/embedded/admin/monitor-usage-billing-cost.md b/docs/embedded/admin/monitor-usage-billing-cost.md index fc98129a44..5ef412ba43 100644 --- a/docs/embedded/admin/monitor-usage-billing-cost.md +++ b/docs/embedded/admin/monitor-usage-billing-cost.md @@ -3,7 +3,9 @@ title: Monitor Usage, Billing, and Cost description: Monitor SharePoint Embedded usage and pay-as-you-go costs with billing meters and Azure Cost Management. ms.date: 07/13/2026 ms.reviewer: shsaravanan +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Monitor usage, billing, and cost @@ -18,7 +20,9 @@ next: review-audit-events.md --> Monitor SharePoint Embedded usage and cost after billing is configured. + SharePoint Embedded uses pay-as-you-go billing through an Azure subscription. + Cost is based on usage meters, so administrators should review storage, archived storage, API transactions, and egress regularly. Use this article to understand cost drivers, review billing in Azure Cost Management, and establish operational controls. @@ -41,6 +45,7 @@ For billing setup, see [Set up billing in Microsoft 365 admin center](setup-bill ## Understand SharePoint Embedded meters SharePoint Embedded uses these billing meters. + Both standard billing and pass-through billing container types use the same meters. | Meter | Unit concept | Cost driver | @@ -55,6 +60,7 @@ For related details, see [SharePoint Embedded Billing Meters](../reference/billi ## Monitor storage Storage consumption includes more than current visible files. + Storage includes files, documents, metadata, versions, recycle bin content, and deleted container collection content. Use these actions to manage storage. @@ -71,6 +77,7 @@ To sort containers by storage with PowerShell, see [Manage containers with Power ## Monitor API transactions Each Microsoft Graph call made explicitly by the SharePoint Embedded application counts as one transaction. + Calls made by internal services to containers aren't charged when the application has no control over those calls. Nonchargeable transactions include: @@ -79,6 +86,7 @@ Nonchargeable transactions include: - Admin actions taken by SharePoint Embedded Admins or Global Admins through SharePoint admin center or SharePoint PowerShell. Use app telemetry from the owning application to correlate app releases, user activity, and transaction growth. + Work with app owners when transaction growth is unexpected. ## Monitor egress @@ -91,6 +99,7 @@ Exempt transfers include: - File downloads from the SharePoint Embedded application server to the Web Application Companion (WAC). Review app download behavior when egress grows. + Large exports, sync-like patterns, or repeated downloads can increase egress. ## Open Azure Cost Management @@ -115,11 +124,13 @@ Large exports, sync-like patterns, or repeated downloads can increase egress. ![Azure Cost analysis view with filters to break down cost by meter, app ID, tenant ID, or container type ID.](../images/billmanag2.png) Compare cost trends to app deployment dates and usage campaigns. + If cost increases suddenly, review storage, transaction volume, and egress separately. ## Download invoices Use the **Invoices** area under Billing to view and download billing invoices for the billing period. + Store invoices according to your organization's finance and procurement processes. If invoice values don't match expected usage, compare invoice periods with Cost analysis date ranges. @@ -185,4 +196,5 @@ Establish a recurring review process. - [SharePoint Embedded Billing Meters](../reference/billing-meters.md) ## Next steps + Review compliance activity in [Review audit events](review-audit-events.md). diff --git a/docs/embedded/admin/review-audit-events.md b/docs/embedded/admin/review-audit-events.md index ba62ccb947..a6cfaa9062 100644 --- a/docs/embedded/admin/review-audit-events.md +++ b/docs/embedded/admin/review-audit-events.md @@ -3,7 +3,9 @@ title: Review Audit Events description: Find and interpret SharePoint Embedded audit activity in Microsoft Purview audit. ms.date: 07/13/2026 ms.reviewer: dilucesr +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Review audit events @@ -18,6 +20,7 @@ next: apply-security-compliance-controls.md --> Review SharePoint Embedded audit activity in Microsoft Purview audit when investigating user, admin, file, or container activity. + SharePoint Embedded audit capabilities mirror existing SharePoint audit capabilities, and user and admin operations performed in SharePoint Embedded applications are captured in the organization's unified audit log. > [!IMPORTANT] @@ -39,6 +42,7 @@ For supported SharePoint Embedded compliance capabilities, see [Security and Com ## Understand SharePoint Embedded audit coverage Audit capabilities in SharePoint Embedded mirror existing SharePoint audit capabilities. + User and admin operations performed in applications hosted in SharePoint Embedded are captured, recorded, and retained in the unified audit log. Audit can help answer questions such as: @@ -51,11 +55,13 @@ Audit can help answer questions such as: - Which container type was involved in an event? Retention and availability depend on your Microsoft Purview audit licensing and configuration. + For audit platform details, see [Auditing solutions in Microsoft Purview](/purview/audit-solutions-overview). ## Identify SharePoint Embedded fields In addition to existing SharePoint file properties, SharePoint Embedded audit events include extra data that helps isolate SharePoint Embedded content. + SharePoint Embedded audit events include these fields: | Field | Use it for | @@ -64,6 +70,7 @@ SharePoint Embedded audit events include these fields: | `ContainerTypeId` | Identify the SharePoint Embedded container type involved in the event. | Use these fields with app and user context to scope an investigation. + If a result set includes regular SharePoint and SharePoint Embedded activity, filter or inspect these fields to isolate embedded content. ## SharePoint Embedded audit activities @@ -91,6 +98,7 @@ Before searching audit, collect the context you have. 1. Identify the suspected operation, such as read, update, delete, restore, sharing, or label change. Use [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md) to inspect container details. + Use [Manage containers with PowerShell](manage-containers-powershell.md) to retrieve container IDs and URLs for repeatable investigations. ## Search in Microsoft Purview audit @@ -109,6 +117,7 @@ Use Microsoft Purview audit to search activity. 1. Inspect event details for SharePoint Embedded fields such as `ContainerInstanceId` and `ContainerTypeId`. Use the most restrictive filters that still capture the incident. + Then widen the search if results are incomplete. > [!TIP] @@ -139,31 +148,37 @@ Use audit records for common SharePoint Embedded investigations. ### Content access review Search for file access or read activity by user, date range, and container context. + Use `ContainerInstanceId` to confirm the activity occurred in the expected SharePoint Embedded container. ### Content change review Search for create, modify, rename, move, or delete activity. + Review the sequence of operations to identify whether content was changed by a user, app, or admin process. ### Container lifecycle review Search for admin operations related to deletion, restore, or permanent deletion. + Correlate audit records with SharePoint admin center or PowerShell change records. ### Sensitivity label review Search for label-related activity when investigating data classification changes. + Correlate audit records with the container's current sensitivity label and any policy changes in Microsoft Purview. ### External sharing review Search for sharing-related SharePoint activities when investigating access outside the organization. + Also review application-level sharing settings when the app supports external sharing. ## Correlate with eDiscovery and DLP Audit shows activity. + Other Microsoft Purview tools help with content investigation and policy enforcement. - Use eDiscovery to search, hold, and export content in SharePoint Embedded containers. @@ -188,6 +203,7 @@ Use these checks when expected results are missing. > [!NOTE] > Audit records can take time to appear. +> > If an event is recent, retry after the normal audit ingestion delay for your environment. ## Preserve investigation context @@ -213,4 +229,5 @@ Keep records according to your compliance and legal process. - [Auditing solutions in Microsoft Purview](/purview/audit-solutions-overview) ## Next steps + Apply broader controls in [Apply security and compliance controls](apply-security-compliance-controls.md). diff --git a/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md b/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md index 60b945a6f1..c135fcf7e7 100644 --- a/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md +++ b/docs/embedded/admin/setup-billing-microsoft-365-admin-center.md @@ -3,7 +3,9 @@ title: Set Up Billing in Microsoft 365 Admin Center description: Configure SharePoint Embedded pass-through billing in the Microsoft 365 admin center for a consuming tenant. ms.date: 07/13/2026 ms.reviewer: shsaravanan +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Set up billing in Microsoft 365 admin center @@ -18,12 +20,14 @@ next: manage-containers-sharepoint-admin-center.md --> Set up SharePoint Embedded billing in the Microsoft 365 admin center when your tenant uses an app with pass-through or user organization billing. + No user can access a pass-through SharePoint Embedded app before valid billing is configured for the SharePoint Embedded platform in the consuming tenant. > [!IMPORTANT] > Only a Global Administrator can set up SharePoint Embedded billing in the Microsoft 365 admin center. The SharePoint Embedded Administrator role can't configure billing. SharePoint Embedded billing is pay-as-you-go through Azure. + Charges are based on supported meters such as storage, archived storage, API transactions, and egress. > [!IMPORTANT] @@ -42,6 +46,7 @@ Confirm these prerequisites. - You understand whether the app uses pass-through billing. For tenant role context, see [Admin overview](admin-overview.md). + For billing models, see [Choose a Billing Model](../plan/choose-billing-model.md). ## Understand billing models @@ -65,6 +70,7 @@ The following diagram shows pass-through billing, where consumption charges are ![Pass-through billing model, where the consuming tenant is billed for all consumption.](../images/2bill521.png) For standard billing, a Global Administrator in the developer tenant sets up billing for the container type. + For pass-through billing, a Global Administrator in the consuming tenant sets up billing in the Microsoft 365 admin center. This article focuses on the consuming tenant pass-through path. @@ -72,6 +78,7 @@ This article focuses on the consuming tenant pass-through path. ## Understand cost meters SharePoint Embedded uses a consumption-based model. + SharePoint Embedded uses four primary meters. | Meter | What it measures | @@ -162,6 +169,7 @@ Use these checks when setup fails. ## Common access symptoms Users may report access failures when billing isn't valid. + Look for these symptoms. - The SharePoint Embedded app is installed but inactive. @@ -195,4 +203,5 @@ After setup, establish a billing operations process. - [Install a SharePoint Embedded app](install-sharepoint-embedded-app.md) ## Next steps + Manage containers in [Manage containers in SharePoint admin center](manage-containers-sharepoint-admin-center.md). diff --git a/docs/embedded/build/agent-experiences.md b/docs/embedded/build/agent-experiences.md index a7b7cb7e66..c8f15bce2c 100644 --- a/docs/embedded/build/agent-experiences.md +++ b/docs/embedded/build/agent-experiences.md @@ -3,22 +3,29 @@ title: Add Microsoft 365 Copilot and agent experiences description: Ground Copilot-style agents in SharePoint Embedded content and expose SharePoint Embedded to Microsoft Foundry. ms.date: 07/10/2026 ms.reviewer: pemtaira +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Add Microsoft 365 Copilot and agent experiences + **Applies to:** Developer + + SharePoint Embedded agent experiences let your app answer questions over files stored in SharePoint Embedded containers. The recommended path is to use **Microsoft Foundry Agent Service** with a **SharePoint knowledge source** configured for SharePoint Embedded. For setup steps, see [Set up SharePoint Embedded as a Foundry knowledge source](sharepoint-embedded-knowledge-source.md). > [!CAUTION] > The earlier **SharePoint Embedded agent SDK** (the React `ChatEmbedded` control) was **deprecated in March 2026** and replaced by [Microsoft Foundry Agent Service](/azure/foundry/agents/overview) with a [SharePoint knowledge source (preview)](/azure/search/agentic-knowledge-source-how-to-sharepoint-remote) configured for SharePoint Embedded. Use the Foundry knowledge source for new work. ## Test user experience + Sign in with a user who has a Microsoft 365 Copilot license when required. Upload supported files to a container, wait for indexing, open the chat, and ask questions the file content can answer. If answers omit expected files, check discoverability, supported file formats, app access, user access, scope selection, and indexing delay. ## Next steps diff --git a/docs/embedded/build/archive-restore-containers.md b/docs/embedded/build/archive-restore-containers.md index fb0554d1dc..808d07350a 100644 --- a/docs/embedded/build/archive-restore-containers.md +++ b/docs/embedded/build/archive-restore-containers.md @@ -3,22 +3,29 @@ title: Archive and Restore Containers description: Archive inactive SharePoint Embedded containers and reactivate them with Microsoft Graph beta APIs. ms.date: 07/13/2026 ms.reviewer: jaeccles +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Archive and restore containers + **Applies to:** Developer + + Use SharePoint Embedded container archival when a container must be retained but no longer needs to be active accessed or used for collaboration. Archival uses Microsoft 365 Archive, a cold-storage tier that reduces storage cost while keeping the same security, compliance, and search standards. For the Microsoft 365 Archive overview, see [Microsoft 365 Archive](/microsoft-365/archive/archive-overview). > [!IMPORTANT] > Microsoft 365 Archive is in Preview for SharePoint Embedded. Validate tenant availability, billing, and API behavior before you expose archive actions to users. ## Enable archival on a container type + Archival must be enabled on the container type. Use SharePoint Embedded admin PowerShell for an existing container type. ```powershell @@ -34,6 +41,7 @@ New-SPOContainerType -ContainerTypeName -OwningApplicationId -IsArch Only show archive commands in your app after the owning application and consuming tenant are configured for the container type. ## Archive a container + Call the Microsoft Graph beta archive action for the target container. ```http @@ -45,6 +53,7 @@ The caller must have the `Owner` or `PrincipalOwner` role on the container. Glob An archived container is inaccessible until it's reactivated. Stop uploads, background processors, webhook-dependent workflows, and interactive edits before submitting the archive request. ## Get archived containers + Read one archived container with the normal container get operation. ```http @@ -60,6 +69,7 @@ GET https://graph.microsoft.com/beta/storage/fileStorage/containers?$filter=cont Use this list for lifecycle views, admin reports, or reactivation flows. Make the archived state visible in your UI so users understand why files can't be opened. ## Reactivate a container + Call the Microsoft Graph beta unarchive action to reactivate an archived container. ```http @@ -69,6 +79,7 @@ POST https://graph.microsoft.com/beta/storage/fileStorage/containers/{containerI Reactivation is instantaneous during the first seven days after archival. After seven days, reactivation can take up to 24 hours. Keep the container read and write actions disabled until the service reports that the container is active again. ## Design lifecycle controls + Require explicit user intent before archive and unarchive requests. Record the container ID, actor, timestamp, and Graph request correlation data in your application logs. Don't treat archive as deletion; retention, eDiscovery, audit, and compliance requirements still apply to archived data. If a lifecycle operation fails, check the caller role, app write permission, container type archival setting, and whether the target container is already in the requested state. diff --git a/docs/embedded/build/configure-authentication-authorization.md b/docs/embedded/build/configure-authentication-authorization.md index 19c2636ad7..3a0745a5de 100644 --- a/docs/embedded/build/configure-authentication-authorization.md +++ b/docs/embedded/build/configure-authentication-authorization.md @@ -3,49 +3,73 @@ title: Configure Authentication and Authorization description: Configure Microsoft Entra ID authentication and SharePoint Embedded authorization for your application. ms.date: 07/13/2026 ms.reviewer: cindylay +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Configure authentication and authorization + **Applies to:** Developer + + Configure authentication and authorization before your SharePoint Embedded application calls Microsoft Graph or SharePoint Embedded APIs. + Complete [Register application permissions](register-application-permissions.md) first so the container type is registered in the consuming tenant. ## Understand the access model + SharePoint Embedded uses two permission layers. + Microsoft Graph permissions allow the app to call SharePoint Embedded endpoints. + Container type application permissions allow the app to access containers of a specific container type. + Both layers are required. + > [!IMPORTANT] > Microsoft Graph consent alone doesn't grant access to containers. The app must also be granted permission to the container type. ## Configure the Microsoft Entra ID app + Start with a Microsoft Entra ID app registration. + Configure it for your application type: + 1. Register or identify the owning application. 1. Add redirect URIs for development and production clients. 1. Add credentials for app-only flows when needed. 1. Add Microsoft Graph permissions for SharePoint Embedded access. 1. Add the Microsoft Graph permission required for registration scenarios. 1. Ask an administrator to grant consent where required. + For general steps, see [Register an application with the Microsoft identity platform](/graph/auth-register-app-v2). ## Request Microsoft Graph permissions + SharePoint Embedded operations through Microsoft Graph require `FileStorageContainer.Selected`. + Use delegated `FileStorageContainer.Selected` for access on behalf of a user. + Use application `FileStorageContainer.Selected` for app-only access. + Application `FileStorageContainer.Selected` requires admin consent in the consuming tenant. Delegated `FileStorageContainer.Selected` does not require admin consent. + For administrative capabilities on behalf of an administrator user — such as enumerating, deleting, restoring, purging, and updating containers and managing their permissions across all governable container types in the consuming tenant — request `FileStorageContainer.Manage.All`. + > [!NOTE] > The combination of Microsoft Graph permissions and container type application permissions determines what the application can actually do. ## Request the permission for registration + Container type registration uses the Microsoft Graph container type registration API in v1.0. + For registration, request the `FileStorageContainerTypeReg.Selected` Microsoft Graph permission (delegated or app-only). | Scope name | Type | Use | @@ -53,58 +77,79 @@ For registration, request the `FileStorageContainerTypeReg.Selected` Microsoft G | `FileStorageContainerTypeReg.Selected` | Delegated or Application | Enables container type registration on a consuming tenant. | For delegated registration calls, the signed-in user must have the SharePoint Embedded Administrator or Global Administrator role. + Use this permission with [Register application permissions](register-application-permissions.md). ## Prefer delegated access when possible + Use access on behalf of a user whenever possible. + Delegated access improves security, accountability, auditability, and alignment with the user's container membership. + When using delegated access, effective permissions are the intersection of application permissions and user container permissions. + The user must be a member of the container. + Use a confidential client application to keep your app in control of actions taken on behalf of a user. A public client application can expose user tokens to the end user, which can lead to actions taken outside your app's control. For more information, see [Public client and confidential client applications](/entra/identity-platform/msal-client-applications). ## Configure delegated token acquisition + For delegated calls: + 1. Sign in the user with Microsoft identity platform. 1. Request delegated `FileStorageContainer.Selected`. 1. Confirm delegated consent is granted according to the consuming tenant's user consent policies. 1. Acquire an access token for Microsoft Graph. 1. Call Microsoft Graph SharePoint Embedded endpoints. 1. Verify the user is a member of the target container. + If the user isn't a container member, the app can't access that container on the user's behalf. ## Configure app-only token acquisition + Use app-only access for service workloads that don't run as a user. + For app-only calls: + 1. Configure an application credential, such as a certificate. 1. Request application `FileStorageContainer.Selected`. 1. Have a consuming tenant administrator grant admin consent. 1. Acquire a token using the client credentials flow. 1. Call Microsoft Graph SharePoint Embedded endpoints. 1. Limit container type permissions to the workload's needs. + > [!CAUTION] > An app-only token can access all containers enabled by its container type application permissions. Use least privilege. ## Call Microsoft Graph APIs + After token acquisition, call SharePoint Embedded operations through Microsoft Graph. Useful references include: + - [File storage container resource type](/graph/api/resources/filestoragecontainer) - [Create fileStorageContainer](/graph/api/filestoragecontainer-post) - [Microsoft Graph authentication and authorization basics](/graph/auth/auth-concepts) + Continue with [Create and manage containers](create-manage-containers.md) for lifecycle operations. ## Handle operations not exposed through Graph + Some operations have exceptional access patterns. + These operations use exceptional access patterns: + - Container type management in the owning tenant through the Microsoft Graph container type API (`FileStorageContainerType.Manage.All` delegated permission). - Container type registration in the consuming tenant through the Microsoft Graph container type registration API (`FileStorageContainerTypeReg.Selected`). - SharePoint Embedded agent experiences through their own permission requirements. - **Search**: Microsoft Search on SharePoint Embedded content requires the delegated `Files.Read.All` permission in addition to `FileStorageContainer.Selected`. - **Operations that require a user license**: [List containers](/graph/api/filestorage-list-containers) returns `403 Forbidden` for a delegated user who doesn't have a OneDrive (app-only calls aren't affected), and users need a Microsoft 365 license to appear in the Office @mentions people picker. - **Administrative actions on containers**: `FileStorageContainer.Manage.All` requires the signed-in user to be a SharePoint Embedded Administrator or Global Administrator. For a non-admin user it grants nothing — if only `Manage.All` is granted, the app gets access denied; if both `Manage.All` and `FileStorageContainer.Selected` are granted, `Manage.All` is ignored. + > [!IMPORTANT] > Don't assume every operation uses the same token or permission resource. Check exceptional access patterns before implementing a flow. ## Grant container type application permissions + The owning application grants container type application permissions through [container type registration](register-application-permissions.md) in a consuming tenant. These permissions determine what an application can do with containers of the container type. | Permission | Description | @@ -126,17 +171,22 @@ The owning application grants container type application permissions through [co | Full | All permissions for containers of this container type. | ## Manage container type owners + Any Microsoft Entra user that isn't an external identity can be a container type owner. Owners are managed through the [permissions](/graph/api/filestoragecontainertype-post-permissions) navigation property on the [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource. Each entry has the `owner` role and identifies the user through `grantedToV2`. + - **Automatic assignment**: The user who [creates a container type](/graph/api/filestorage-post-containertypes) is automatically assigned as an owner. - **Add owners**: Use [`POST /containerTypes/{id}/permissions`](/graph/api/filestoragecontainertype-post-permissions) to add up to three owners per container type. - **Remove owners**: Use [`DELETE /containerTypes/{id}/permissions/{id}`](/graph/api/filestoragecontainertype-delete-permissions) to remove an owner. - **Read owners**: Use [`GET /containerTypes/{id}?$expand=permissions`](/graph/api/filestoragecontainertype-get) or [`GET /containerTypes/{id}/permissions`](/graph/api/filestoragecontainertype-list-permissions) to retrieve owners. SharePoint Embedded Administrators can manage all applications created in the owning tenant and installed in the consuming tenant. Assign the least privileged role necessary; the SharePoint Embedded Administrator role is recommended over Global Administrator for these tasks. + ## Understand container permissions + Container permissions apply only to delegated access. An app that accesses containers without a user gets the full access defined by its container type application permissions instead. Users get container membership in two ways: + - **Direct membership** — the user is added directly to a container with specific permissions. - **Transitive membership** — the user belongs to a [Microsoft 365 group](/microsoft-365/admin/create-groups/office-365-groups) that's a member of the container. @@ -154,7 +204,9 @@ When a user creates a container through delegated calls, that user is automatica To share individual items without granting container access, use the [driveItem invite](/graph/api/driveitem-invite) or [permission create](/graph/api/driveitem-post-permissions) endpoints. Sharing an item doesn't grant access to the container or to any other item in it. ## Validate authentication + Validate the flow before feature code: + 1. Confirm admin consent completed successfully. 1. Acquire a delegated token. 1. Acquire an app-only token. @@ -175,4 +227,5 @@ Validate the flow before feature code: | Search call fails | Review search-specific exceptional access patterns. | ## Next steps + Use your configured flow to [Create and manage containers](create-manage-containers.md). diff --git a/docs/embedded/build/container-metadata.md b/docs/embedded/build/container-metadata.md index 6978e4c05c..7e6b3de49a 100644 --- a/docs/embedded/build/container-metadata.md +++ b/docs/embedded/build/container-metadata.md @@ -3,29 +3,38 @@ title: Store and Query Container Metadata description: Define SharePoint Embedded metadata columns and query drive items by field values. ms.date: 07/13/2026 ms.reviewer: cindylay +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Store and query container metadata + **Applies to:** Developer + + Use metadata when your app needs structured fields on files in a SharePoint Embedded container. Metadata is stored as columns on a `fileStorageContainer` and as field values on the container drive's items. Your application is responsible for creating and managing the column schema for each container instance. For the complete list of container resource properties, see [fileStorageContainer resource type](/graph/api/resources/filestoragecontainer). ## Permissions and supported callers + Call the metadata APIs with an app-only or delegated bearer token. Use `FileStorageContainer.Selected` for application and delegated calls. Container owners can create, update, and delete columns. Container members can read and list columns. ## Choose column types + SharePoint Embedded metadata supports these column type properties : `boolean`, `choice`, `currency`, `dateTime`, `hyperlinkOrPicture`, `number`, `personOrGroup`, and `text`. It also supports column settings such as `indexed`, `isDeletable`, `isSealed`, `name`, `readOnly`, and `type`. Column names must follow SharePoint rules. Don't use names that contain `!`, start with a digit or punctuation, contain spaces, look like spreadsheet cell references, represent localized true or false values, or use reserved names such as `Author`, `Created`, or `Description`. ## Create a column + Create a column on the container before writing field values on files. ```http @@ -56,6 +65,7 @@ The create request doesn't support `type`, and text `maxLength` must be less tha > As of January 2026, the container column APIs (list, create, update, delete columns) are also generally available on the **v1.0** Microsoft Graph endpoint. You can replace `/beta/` with `/v1.0/` in the column requests below. The beta endpoint remains available. ## Manage columns + Use the column ID returned by the create or list operation. ```http @@ -76,6 +86,7 @@ Patch supported properties when the schema changes. You can update any property ``` ## Read and write file metadata + Field values are stored on the drive item's list item fields. Read all fields or select the ones your UI needs. ```http @@ -104,6 +115,7 @@ Content-Type: application/json ``` ## Query files by metadata + Use OData query options on custom columns when you need structured filtering or ordering inside a container drive. ```http @@ -115,6 +127,7 @@ Use `$expand=listitem($expand=fields)` when the result needs field values in the For full-text search across containers and custom metadata (using the `OWSTEXT` property suffix), see [Search containers and files](search-containers-files.md). Use OData `$filter` for structured queries inside a single container drive; use search for free-text queries across many containers. ## Keep schema consistent + Create required columns during container provisioning. Store the expected schema version in your app data, and run migrations when new columns are introduced. Avoid deleting columns until you know no workflows, queries, exports, or search experiences depend on their values. ## Next steps diff --git a/docs/embedded/build/create-container-type.md b/docs/embedded/build/create-container-type.md index e8d55d112c..6a521785d6 100644 --- a/docs/embedded/build/create-container-type.md +++ b/docs/embedded/build/create-container-type.md @@ -3,31 +3,46 @@ title: Create and configure a container type description: Create a trial or production SharePoint Embedded container type and configure its owning app and billing model. ms.date: 07/13/2026 ms.reviewer: stpuceli +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Create and configure a container type + **Applies to:** Developer + + Create a SharePoint Embedded container type for your application to create containers or store files. A container type defines access, billing accountability, and selected behaviors for containers created by your app. + If you're just starting, complete [Quickstart: Build your first app with VS Code](quickstart-vscode.md). Then use this article for trial, standard, and pass-through decisions. + To decide between single-tenant and multitenant models first, see [Choose an app model](../plan/choose-app-model.md). + ## Understand the container type relationship + A container type is strongly coupled with one Microsoft Entra ID application, called the owning application. + SharePoint Embedded requires a one-to-one relationship between one owning application and one container type. + The container type ID is stored on each container as an immutable property. + The ID is used for access authorization, trial exploration, billing, and configurable behaviors. > [!NOTE] > The Microsoft Graph API — [Create fileStorageContainerType](/graph/api/filestorage-post-containertypes) — is delegated-only and can be called by any non-guest owning-tenant user. The caller doesn't need an administrator role and is automatically assigned as an owner of the new container type. ## Choose trial or production + Choose the container type purpose when you create it. + You can't convert a trial container type to production later. + You can't convert a standard billing type to pass-through billing later. | Use case | Container type | @@ -40,7 +55,9 @@ You can't convert a standard billing type to pass-through billing later. > If you choose the wrong purpose or billing model, you must recreate the container type. ## Prerequisites + Before you create a container type, make sure you have: + - A Microsoft 365 tenant with SharePoint available. - A Microsoft Entra ID app registration for the owning app. - A non-guest member account in the owning tenant. @@ -49,13 +66,19 @@ Before you create a container type, make sure you have: > [!NOTE] > - Creating a container type through Microsoft Graph requires only the `FileStorageContainerType.Manage.All` delegated permission. Any non-guest user in the owning tenant can create one and is automatically assigned as an [owner of that container type](../plan/authentication-permissions.md#container-type-owners). For tenant-wide administrative operations, see [Create apps with PowerShell](../admin/create-apps-powershell.md). +> > - Users who authenticate into containers must exist in Microsoft Entra ID as members or guests. An Office license isn't required to collaborate on Office documents stored in a container, except for documented exceptional experiences such as mentions. ## Create a trial container type + Use a trial container type for evaluation. + You can create one with the SharePoint Embedded Visual Studio Code extension or Microsoft Graph. + The Visual Studio Code path is fastest for a first app. See [Quickstart: Build your first app with VS Code](quickstart-vscode.md). + For Microsoft Graph, create the container type with the `trial` billing classification. + The following restrictions are applied to trial container types: - The tenant can have up to five containers of the container type. This includes active containers and those in the recycle bin. @@ -65,7 +88,9 @@ The following restrictions are applied to trial container types: - The container type is restricted to work in the developer tenant. It can't be deployed in other consuming tenants. ## Create a standard container type with app-owner billing + Use standard billing when the developer or app owner tenant pays for consumption. + Each tenant can have up to 25 standard container types at a time. 1. Create or identify the owning Microsoft Entra ID application. @@ -78,6 +103,7 @@ Each tenant can have up to 25 standard container types at a time. > If billing setup fails with `SubscriptionNotRegistered`, wait several minutes and retry. The `Microsoft.Syntex` resource provider registration can take time. ## Create a pass-through billing container type + Use pass-through billing when the consuming tenant pays for consumption. 1. Create or identify the owning Microsoft Entra ID application. @@ -95,13 +121,21 @@ The consuming tenant admin activates pay-as-you-go services in the Microsoft 365 Under **Syntex services for**, select **Apps**, then select **SharePoint Embedded** to enable billing for the app. ![Microsoft 365 admin center Apps panel with SharePoint Embedded selected to activate pay-as-you-go billing.](../images/SyntexPAYGActivateSPE.png) + ## Configure the owning Entra app + Configure the app so it can own exactly one container type. + Request Microsoft Graph permissions for SharePoint Embedded access. + Request Microsoft Graph `FileStorageContainerTypeReg.Selected` application permission for container type registration on consuming tenants. + Use redirect URIs that match your development and production clients. + Use credentials appropriate for delegated or app-only flows. + For auth details, see [Configure authentication and authorization](configure-authentication-authorization.md). + ## Set basic properties | Property | Guidance | @@ -115,7 +149,9 @@ For auth details, see [Configure authentication and authorization](configure-aut > The container type ID and owning application ID can't be updated later. ## Configure container type behavior + Developers can configure selected behaviors after creation. + Available settings include: - `ApplicationRedirectUrl` @@ -128,8 +164,11 @@ Use the Microsoft Graph [Update fileStorageContainerType](/graph/api/filestorage > Updating settings on a container type can take up to **24 hours** to replicate to all consuming tenants. If a consuming tenant applied setting overrides, those overrides remain in place. Some settings apply only to new content, not to existing content. ## View and update container types + Use Microsoft Graph to list and update container types. + A non-administrator container type owner can update the container types they own. + You need owner or contributor access to billing subscriptions for billing changes. ### Manage container types with Microsoft Graph @@ -146,17 +185,27 @@ You can also manage container types with the `fileStorageContainerType` Microsof List results are filtered by ownership. Non-administrator users see only the container types they've been granted permission on, while SharePoint Embedded Administrators and Global Administrators see every container type in the tenant. For the settings you can configure, see [fileStorageContainerTypeSettings](/graph/api/resources/filestoragecontainertypesettings). You can delete only trial container types; deletion of standard container types isn't yet supported. Before you delete a container type, remove every container of that type, including containers in the deleted container collection. + ## Understand billing dependency + For app-owner billing, the developer tenant attaches an Azure subscription and resource group. + For pass-through billing, the consuming tenant activates pay-as-you-go services. + For details, see [SharePoint Embedded meters](../reference/billing-meters.md) and [SharePoint Embedded billing management](../admin/monitor-usage-billing-cost.md). + ## Link to multitenant onboarding + A multitenant app usually has an owning tenant and one or more consuming tenants. + Use this sequence for each consuming tenant: + 1. Create the container type in the owning tenant. 1. Ask the consuming tenant admin to grant admin consent. 1. Register container type application permissions. 1. Configure pass-through billing when the consuming tenant pays. 1. Validate container creation and access. + ## Next steps + Register permissions in [Register application permissions](register-application-permissions.md). diff --git a/docs/embedded/build/create-manage-containers.md b/docs/embedded/build/create-manage-containers.md index 75265e5e68..9c35aecfac 100644 --- a/docs/embedded/build/create-manage-containers.md +++ b/docs/embedded/build/create-manage-containers.md @@ -3,29 +3,44 @@ title: Create and Manage Containers description: Create, list, update, recycle, restore, and delete SharePoint Embedded containers in your app. ms.date: 07/13/2026 ms.reviewer: jaeccles +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Create and manage containers + **Applies to:** Developer + + Create and manage containers after your container type is created, registered, and authorized. Containers are the basic storage unit in SharePoint Embedded. + Complete [Configure authentication and authorization](configure-authentication-authorization.md) before you call container APIs. + ## Understand containers + All SharePoint Embedded files and documents are stored in containers. + A container: + - Belongs to a consuming Microsoft 365 tenant. - Has an immutable container type ID. - Stores content for your application. - Defines a boundary for membership and permissions. - Is accessed through Microsoft Graph. + For the architecture overview, see [SharePoint Embedded app architecture](../plan/app-tenant-architecture.md). + ## Know the lifecycle + A typical container lifecycle includes: + 1. Create a container. 1. Add or confirm members. 1. Upload and manage files. @@ -33,90 +48,139 @@ A typical container lifecycle includes: 1. Recycle a container when it's no longer active. 1. Restore a recycled container when needed. 1. Permanently delete containers during cleanup. + Continue to [Upload, download, and manage files](manage-files.md) for content operations. + ## Prerequisites + Before creating containers, make sure: + - The container type exists. - The container type is registered in the consuming tenant. - The app has Microsoft Graph `FileStorageContainer.Selected` consent. - The app has container type permissions for the operation. - For delegated calls, the signed-in user can receive the needed container role. - For trial container types, you're within trial limits. + > [!IMPORTANT] > Trial container types can create up to five containers, including active containers and containers in the recycle bin. + ## Choose delegated or app-only creation + Use delegated access when a user initiates creation, the user should be accountable, or the creating user should become container Owner. + Use app-only access when a service provisions containers, no user is present, and the app has permission to create containers. + > [!NOTE] > A user creating a new container through delegated calls is automatically assigned the Owner role. + ## Create a container + Use Microsoft Graph to create a file storage container for your registered container type. + For the canonical API shape, see [Create fileStorageContainer](/graph/api/filestoragecontainer-post). + Implementation steps: + 1. Acquire a valid Microsoft Graph token. 1. Include the target container type information required by the API. 1. Send the create request. 1. Store the returned container ID. 1. Store display metadata your app needs. 1. Assign or confirm membership for delegated scenarios. + > [!TIP] > Store the container ID in your application database as the durable link between your business object and the SharePoint Embedded container. + ## Create a container in Visual Studio Code + For trial development, the Visual Studio Code extension can create containers. + 1. Open the SharePoint Embedded view. 1. Expand the registered trial container type. 1. Right-click **Containers**. 1. Select **Create container**. 1. Enter a name. + 1. Confirm the container appears under the container type. + See [Quickstart: Build your first app with VS Code](quickstart-vscode.md) for the extension flow. + ## List containers + List containers to show available containers, validate provisioning, or run maintenance. + For the canonical API shape, see [List containers](/graph/api/filestorage-list-containers?tabs=http). + When listing containers: + - Use app-only access for service inventory scenarios. - Use delegated access only when the user context is appropriate. - Handle paging. - Map results to your application data. + > [!NOTE] > Delegated list containers currently returns `403 Forbidden` if the user doesn't have a OneDrive. This dependency doesn't apply to app-only list calls. + ## Get a container + Get a container when you need the latest metadata before acting. + Use this operation to confirm the container exists, read display properties, verify the container type, check state before file operations, and confirm restoration. + Link implementations to [fileStorageContainer resource type](/graph/api/resources/filestoragecontainer). + ## Update container metadata + Update metadata when supported properties change. + Before updating: + 1. Confirm the app has container type `Write` permission. 1. Confirm the delegated user has an appropriate role. 1. Read the current container state. 1. Apply only intended changes. 1. Validate the response. + ## Delete or recycle a container + Use delete behavior when a container is no longer active. + Before deletion: + - Confirm the caller has permission. - Confirm your app has archived business references. - Decide whether the container should be recycled first. - Explain restore options. The Visual Studio Code extension includes recycle and recovery capabilities for trial development. + ## Restore a recycled container + A restore flow should: + 1. Identify the recycled container. 1. Confirm the caller has permission. 1. Restore the container. 1. Refresh application state. 1. Confirm files and metadata are available. 1. Notify the user. + > [!IMPORTANT] > For trial container types, containers in the recycle bin still count toward the five-container limit. + ## Permanently delete containers + Permanently delete only when you're sure the container is no longer needed. + You must remove all containers of a container type, including deleted containers, before deleting the container type itself. + Use permanent deletion for trial cleanup, test data removal, retiring a container type, or meeting lifecycle requirements. + ## Validate lifecycle operations + Create a smoke test: + 1. Create a test container. 1. Retrieve it by ID. 1. List containers and confirm it appears. @@ -125,7 +189,9 @@ Create a smoke test: 1. Recycle or delete the container. 1. Restore it if supported. 1. Permanently delete it during cleanup. + ## Troubleshoot lifecycle issues + | Symptom | Check | |---|---| | Create fails | Registration and `Create` permission. | @@ -134,5 +200,7 @@ Create a smoke test: | Delete fails | `Delete` permission and user Owner role. | | Trial create fails | Active plus recycled containers may have reached the limit. | | Container type delete fails | All active and deleted containers must be removed first. | + ## Next steps + Add file operations in [Upload, download, and manage files](manage-files.md). diff --git a/docs/embedded/build/fluid-framework.md b/docs/embedded/build/fluid-framework.md index d9ebaaafe2..cc71c42a27 100644 --- a/docs/embedded/build/fluid-framework.md +++ b/docs/embedded/build/fluid-framework.md @@ -3,19 +3,26 @@ title: Add real-time collaboration with Fluid Framework description: Use Fluid Framework with SharePoint Embedded for synchronized collaborative application state. ms.date: 07/13/2026 ms.reviewer: jaeccles +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Add real-time collaboration with Fluid Framework + **Applies to:** Developer + + Use Fluid Framework when your SharePoint Embedded app needs real-time shared state, such as collaborative controls, live counters, cursors, annotations, or multi-user form state. Fluid provides client libraries for distributing, synchronizing, and saving shared data. ## Prepare SharePoint Embedded + Create or identify a SharePoint Embedded application before you run the Fluid sample. You need admin credentials for a Microsoft 365 tenant, the application client ID, the container type ID, and at least one container created for that container type. If you used the SharePoint Embedded Visual Studio Code extension, use the generated sample configuration to find `ContainerTypeId` and `ClientID`. You can also find the client ID in Microsoft Entra ID under **App registrations**. @@ -23,6 +30,7 @@ If you used the SharePoint Embedded Visual Studio Code extension, use the genera To try SharePoint Embedded at no cost, create a trial container type. See [Create and configure a container type](create-container-type.md). ## Run the item counter sample + The `item-counter-spe` sample lives in the Fluid Examples repository. ```console @@ -49,14 +57,17 @@ After Webpack completes, open `https://localhost:8080`, sign in with tenant cred ![Item Counter sample app running in the browser, showing a shared counter that synchronizes across connected clients.](../images/itemcount.png) ## Decide what belongs in Fluid + Use Fluid for collaborative application state that benefits from low-latency synchronization. Store durable documents and files in SharePoint Embedded containers. Persist final business output to your own durable model or to SharePoint Embedded files when your scenario needs audit, retention, search, or reporting. Treat Fluid shared objects as user-visible collaboration state. Don't place secrets, access tokens, SAS URLs, or privileged Graph responses in shared data structures. ## Handle identity and access + Your app still needs the SharePoint Embedded client ID and container type ID to acquire the correct tokens and access containers. Test the sample with one tab, two tabs for the same user, and two different users from the tenant. Verify behavior for users who can view the container but shouldn't edit the collaborative state. ## Move from sample to app design + Use the item counter sample to prove tenant setup, consent, and client connectivity. In your own app, plan reconnect behavior, token refresh, offline transitions, container switching, and cleanup for collaborative sessions that users abandon. ## Next steps diff --git a/docs/embedded/build/manage-files.md b/docs/embedded/build/manage-files.md index 8246816b8b..ea2d056a06 100644 --- a/docs/embedded/build/manage-files.md +++ b/docs/embedded/build/manage-files.md @@ -3,109 +3,171 @@ title: Upload, Download, and Manage Files description: Use Microsoft Graph DriveItem APIs to upload, download, organize, update, delete, and restore SharePoint Embedded files. ms.date: 07/13/2026 ms.reviewer: cindylay +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Upload, download, and manage files + **Applies to:** Developer + + Use Microsoft Graph file and DriveItem APIs to manage files inside SharePoint Embedded containers. + Complete [Create and manage containers](create-manage-containers.md) first so you have a container ID. + ## Understand file storage + A SharePoint Embedded container is the storage boundary for your application content. + Each container exposes file content through Microsoft Graph file storage and DriveItem APIs. + Use your application data model to decide which business object owns each container, which folders your app creates, which users or services can read and write, and which file IDs your app stores. + For architecture, see [SharePoint Embedded app architecture](../plan/app-tenant-architecture.md). + ## Use Microsoft Graph file storage APIs + Start with these Microsoft Graph references: + - [fileStorageContainer resource type](/graph/api/resources/filestoragecontainer) - [DriveItem resource type](/graph/api/resources/driveitem) - [Microsoft Graph file storage overview](/graph/api/resources/onedrive) + > [!IMPORTANT] > Use documented Microsoft Graph DriveItem and file storage APIs. Don't invent SharePoint Embedded-specific file API names. + ## Prerequisites + Before managing files, make sure: + - Your app can acquire Microsoft Graph tokens. - The app has `FileStorageContainer.Selected` consent. - The app has container type permissions for intended operations. - The target container exists. - For delegated calls, the user is a member of the container. - Your app stores the container ID and DriveItem IDs it needs. + ## Map container IDs to drives + The preview source notes that the Graph preview endpoint uses a `driveId`, and for SharePoint Embedded the drive ID is the container ID that starts with `b!`. + In your app: + 1. Store the container ID returned when the container is created. 1. Use the container ID when calling DriveItem APIs that require a drive identifier. 1. Store item IDs returned by upload or folder creation operations. + 1. Avoid reconstructing IDs from URLs. + ## Upload files + Use Microsoft Graph upload patterns for DriveItems. + For small files (up to 250 MB), use the simple upload API documented for DriveItems with a single `PUT` to the item's content. + For larger files (over 250 MB), use an upload session as documented by Microsoft Graph and send the file in byte-range chunks (for example, 320 KB multiples) until the upload completes. + In your upload flow: + 1. Validate write access. 1. Choose a destination folder in the container. 1. Create folders first if the path doesn't exist. 1. Upload file bytes with the appropriate Graph method. 1. Store the returned DriveItem ID. 1. Display file name, size, and status. + > [!TIP] > Keep business metadata in your application database, and keep file content in SharePoint Embedded. + ## Download files + Use Microsoft Graph DriveItem download capabilities for file content. + In your download flow: + 1. Validate read access. 1. Resolve the container ID and DriveItem ID. 1. Request the file content or download URL using DriveItem APIs. 1. Stream the content to the user or service. 1. Handle expiration for short-lived download URLs. 1. Log according to your audit requirements. + ## Create folders + Use DriveItem folder creation APIs to organize content. + Create folders for predictable content structure, workflow stages, related uploads, and stable parent items for Office launch URLs. + When creating folders: + 1. Check whether the folder exists. 1. Create only the missing path segment. 1. Store the folder DriveItem ID if needed. 1. Apply naming rules consistently. + ## Update file content + Use Microsoft Graph DriveItem update or upload session patterns to replace content. + Before replacing content: + - Confirm write permission. - Read current metadata if concurrency checks are needed. - Preserve the DriveItem ID where supported. - Update your app metadata after Graph succeeds. + Office files stored in SharePoint Embedded have versioning enabled automatically for Word, Excel, and PowerPoint files. + See [Open Office files from your app](open-office-files.md) for Office behavior. + ## Rename or move items + Use documented DriveItem update and move operations where supported. + A safe flow should read the current DriveItem, confirm the destination folder, apply the operation, refresh stored path or display name, and keep the DriveItem ID as the durable reference when possible. + ## Delete files + Use delete operations when a file should no longer appear in the active content experience. + Before deleting: + - Confirm user intent. - Confirm write or delete permission. - Decide whether your app needs soft delete. - Update app state only after Graph returns success. + ## Restore files + Use Microsoft Graph and SharePoint file restore capabilities documented for DriveItems and the service experience. + A restore flow should identify the deleted item or version, confirm permission, perform the restore, refresh the item list, and communicate the restored location. > [!NOTE] > [recycleBinItem: restore](/graph/api/filestoragecontainer-restore-recyclebinitem) supports `driveItemId` as an alternate key (October 2025). If you know the ID of the original **driveItem**, you can restore the corresponding **recycleBinItem** directly without first enumerating the recycle bin. > [!NOTE] > For exact file operation request and response details, use Microsoft Graph DriveItem documentation. + ## Connect to Office and preview experiences + After upload, add richer experiences: + - [Open Office files from your app](open-office-files.md) for Word, Excel, and PowerPoint launch behavior. - [Preview files in your app](preview-files.md) for browser previews. - [Search containers and files](../build/search-containers-files.md) for discovery. + ## Validate file operations + Create a smoke test: + 1. Create a test container. 1. Create a folder. 1. Upload a file. @@ -116,7 +178,9 @@ Create a smoke test: 1. Delete the file. 1. Restore it if supported. 1. Clean up the test container. + ## Troubleshoot file operations + | Symptom | Check | |---|---| | Upload fails | `WriteContent` permission and user Writer role. | @@ -125,5 +189,7 @@ Create a smoke test: | Preview fails | File type support and preview URL generation. | | Office launch opens wrong mode | Launch URL `action` parameter or Office URI scheme. | | Access differs by user | Delegated access intersects app permissions with membership. | + ## Next steps + Enable Office launch experiences in [Open Office files from your app](open-office-files.md). diff --git a/docs/embedded/build/migrate-azure-blob-storage.md b/docs/embedded/build/migrate-azure-blob-storage.md index 74e346319b..7ac1eeb23c 100644 --- a/docs/embedded/build/migrate-azure-blob-storage.md +++ b/docs/embedded/build/migrate-azure-blob-storage.md @@ -3,22 +3,29 @@ title: Migrate from Azure Blob Storage description: Move files from Azure Blob Storage into SharePoint Embedded containers with Microsoft Graph. ms.date: 07/10/2026 ms.reviewer: stpuceli +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Migrate from Azure Blob Storage + **Applies to:** Developer + + Use this guide when you move content from Azure Blob Storage to SharePoint Embedded. A C# migration app reads blobs with the Azure Storage SDK and uploads them to a SharePoint Embedded container with Microsoft Graph. > [!TIP] > For migrating from SharePoint or OneDrive sources, SharePoint Embedded also provides dedicated [migration APIs](/graph/api/resources/sharepointmigration-api-overview) that are generally available on the **v1.0** Microsoft Graph endpoint (November 2025) and support migrating **file version history** (February 2026). The manual sample in this article is best when copying from Azure Blob Storage specifically. ## Prepare authentication + For Azure Blob Storage, the sample uses a container-level SAS URL with `Read` and `List` permissions. ```csharp @@ -47,6 +54,7 @@ Because the sample uses `InteractiveBrowserCredential` with a `http://localhost` The consuming tenant must have the application and container type registered. The sample also requires a SharePoint Embedded container ID for the destination. ## Enumerate source blobs + List blob names from the Azure Blob Storage container before queuing migration work. ```csharp @@ -61,6 +69,7 @@ return blobs; Azure Blob Storage uses a flat namespace. If blob names include `/`, parse those segments into SharePoint Embedded folders or decide to upload all files to the container root. ## Create destination folders + The sample creates a top-level folder named after the Azure Blob Storage container, then creates nested folders as it traverses each blob name. Check for an existing item before creating a folder. ```csharp @@ -83,6 +92,7 @@ var createdFolder = await _graphClient.Drives[_containerId].Items[parentFolderId ``` ## Upload files with Graph sessions + Download each blob to a stream, reset the stream position, create an upload session, and upload with `LargeFileUploadTask`. ```csharp @@ -116,6 +126,7 @@ var uploadResult = await fileUploadTask.UploadAsync(progress); Use `fail` when duplicate files shouldn't be overwritten. Change the conflict behavior only after you define replacement, rename, and audit rules. ## Run the sample + The sample uses Microsoft Graph SDK 5.56.0, Azure.Identity 1.12.0, Azure.Storage.Blobs 12.21.0, CommandLineParser 2.9.1, and Newtonsoft.Json 13.0.3. ```console @@ -125,6 +136,7 @@ dotnet run Program.cs -- --sasurl "" --tenantid "" --clienti Use the optional blob list file for controlled batches and the optional output file to capture failed blobs for reruns. ## Validate migrated content + Compare source blob counts with destination drive item counts. Check folder paths, file sizes, upload failures, duplicate handling, and required metadata. Open representative files through your SharePoint Embedded app, then validate search and metadata queries after indexing has had time to complete. Don't delete source blobs until business owners approve the migration result and retention requirements are satisfied. diff --git a/docs/embedded/build/open-office-files.md b/docs/embedded/build/open-office-files.md index f7036042dd..5b4c5072a5 100644 --- a/docs/embedded/build/open-office-files.md +++ b/docs/embedded/build/open-office-files.md @@ -3,20 +3,28 @@ title: Open Office Files From Your App description: Launch Word, Excel, and PowerPoint files from SharePoint Embedded in Office web or desktop clients. ms.date: 07/13/2026 ms.reviewer: cindylay +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Open Office files from your app + **Applies to:** Developer + + Open Office files from your SharePoint Embedded app by using Microsoft Graph DriveItem metadata and Office launch patterns supported by Microsoft 365. + Complete [Upload, download, and manage files](manage-files.md) first so your app has files to launch. ## Understand Office experiences + SharePoint Embedded Office file experiences work similarly to Microsoft 365 file experiences. Supported experiences include: @@ -34,6 +42,7 @@ Supported experiences include: > Documents stored in an archived container can't be viewed or accessed. Your app must handle the archived state by showing an appropriate error and guiding users on next steps, such as reactivating the container. ## Prerequisites + Before launching Office files, make sure: - The file is stored in a SharePoint Embedded container. @@ -43,8 +52,11 @@ Before launching Office files, make sure: - Your app handles browser redirects or new-window behavior. ## Get the DriveItem web URL + When your app retrieves a DriveItem from Microsoft Graph, the response can include `webUrl`. + For supported Office file types, `webUrl` points to a URL that opens the document in Office for the web. + A supported Office web URL has this shape: ```http @@ -54,6 +66,7 @@ https://host/:w:r/contentstorage/sitecollection/_layouts/15/doc2.aspx?sourcedoc= For request details, see [Get a DriveItem resource](/graph/api/driveitem-get). ## Launch Office for the web + Use the DriveItem `webUrl` when your app should open Office in the browser. 1. Read the DriveItem for the selected file. @@ -66,7 +79,9 @@ Use the DriveItem `webUrl` when your app should open Office in the browser. > Office files use AutoSave when users edit Word, Excel, and PowerPoint files stored in SharePoint Embedded. ## Configure the default launch experience + By default, the Office URL includes `action=default`. + To force a mode, update the query parameter with this pattern: ```csharp @@ -84,8 +99,11 @@ Use: - `action=default` when Office should choose the default behavior. For supported `action` values, see [Web Application Open Platform Interface actions](/microsoft-365/cloud-storage-partner-program/online/discovery#wopi-actions). + ## Open files in Office desktop clients + Use Office URI schemes when your app should open desktop clients directly. + The format is: ```text @@ -112,6 +130,7 @@ ms-powerpoint:ofe|u|https://contoso.com/presentation.pptx > The URI must be opened in a blank window or new tab. ## Build a desktop client URL + Because `webUrl` points to Office Online for Office documents, build the desktop URI in two steps: 1. Get the `webUrl` of the parent folder. @@ -132,6 +151,7 @@ ms-word:ofe|u|https://contoso.sharepoint.com/contentstorage/CSP_1234765465/Docum For scheme details, see [Office URI Schemes](/office/client-developer/office-uri-schemes). ## Configure redirect behavior + Use redirect settings to route users back to your app when Microsoft 365 can't open a file in a supported viewer. `ApplicationRedirectUrl` configures the application redirect URL on the container type. Use it for the app route that handles file-return scenarios for your workload. @@ -165,7 +185,9 @@ When you design redirects: - Verify `urlTemplate` after updates because invalid values are stored as `null`. ## Support sharing and coauthoring + Office experiences include collaboration features. + Users can share documents, create shareable links, coauthor in real time, see presence indicators, use comments, and use mentions where supported. When a user creates a sharing link, they choose who it grants access to: @@ -181,14 +203,23 @@ When a user creates a sharing link, they choose who it grants access to: > Mentions require target users to have a Microsoft 365 license assigned. Mentions are restricted to people inside the consuming tenant's organization and exclude guests and users from other tenants in multitenant settings. ## Use version history + Versioning is automatically enabled for Word, Excel, and PowerPoint files stored in SharePoint Embedded apps. + Users can see changes, compare versions, restore previous versions, recover from mistakes, and review changes from coauthoring sessions. + ## Use breadcrumb properties + Office clients can display breadcrumb-style elements that associate Office files with your application. + Breadcrumb patterns are constructed from container properties configured for your app. + Use Current Channel to get breadcrumb patterns and future Office app enhancements. + For Office update channel information, see [Overview of update channels for Microsoft 365 Apps](/deployoffice/updates/overview-update-channels). + ## Validate Office launch + Test each launch path: 1. Upload a Word document to a container. @@ -213,4 +244,5 @@ Test each launch path: | Redirect returns to wrong route | `ApplicationRedirectUrl` and app route handling. | ## Next steps + Add embedded previews in [Preview files in your app](preview-files.md). diff --git a/docs/embedded/build/preview-files.md b/docs/embedded/build/preview-files.md index 96311802bb..989674ddc4 100644 --- a/docs/embedded/build/preview-files.md +++ b/docs/embedded/build/preview-files.md @@ -3,46 +3,69 @@ title: Preview Files in Your App description: Create Microsoft Graph preview links and embed supported SharePoint Embedded file previews in your app. ms.date: 07/13/2026 ms.reviewer: cindylay +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Preview files in your app + **Applies to:** Developer + + Add file preview UX so users can inspect SharePoint Embedded content without downloading files or opening a full Office editing experience. + Complete [Open Office files from your app](open-office-files.md) when you need Office editing. Use this article for lightweight previews. + ## Understand preview flow + The preview flow has two steps: + 1. Call the Microsoft Graph DriveItem preview endpoint. 1. Use the returned URL in an iframe or new browser page. + The Graph endpoint is: + ```http POST https://graph.microsoft.com/{version}/drives/{driveId}/items/{itemId}/preview ``` + Where: + - `{version}` is the Microsoft Graph version, such as `v1.0`. - `{driveId}` is the container ID that starts with `b!`. - `{itemId}` is the DriveItem ID. + For the canonical API reference, see [Preview a DriveItem](/graph/api/driveitem-preview). + ## Know supported file types + Microsoft 365 supports previews for many file types, including common document, image, video, and PDF formats. + Examples include: + - PDF files. - JPG and other image files. - MP4 and other supported media files. - Office files supported by Microsoft 365 preview experiences. + For the current list, see [File types supported for previewing files in OneDrive, SharePoint, and Teams](https://support.microsoft.com/office/file-types-supported-for-previewing-files-in-onedrive-sharepoint-and-teams-e054cd0f-8ef2-4ccb-937e-26e37419c5e4). + > [!NOTE] > File type support can vary by service capability, tenant policy, and client experience. Always handle preview failures gracefully. ## Native PDF viewing + The SharePoint Embedded native PDF viewing experience supports **searching within the file**, **viewing comments and sticky notes** embedded on the file, and **printing** (added March 2026). These capabilities are available through the [driveItem: preview](/graph/api/driveitem-preview) API in **both the beta and v1.0** Microsoft Graph endpoints. ### Enhance the PDF previewer with query parameters + Enhance the SharePoint Embedded PDF previewer by appending query parameters to the driveItem's `webUrl` property. To get `webUrl`, call the [driveItem GET API](/graph/api/driveitem-get), for example `GET /drives/{drive-id}/items/{item-id}?$select=webUrl`. Pass parameters as a JSON-encoded `embed` query string. You can include one or more parameters in the same object. @@ -55,24 +78,33 @@ Pass parameters as a JSON-encoded `embed` query string. You can include one or m |---|---| | `mpp` | Enables the print icon and Ctrl+P printing. For example, `?&embed={"mpp":true}`. | | `mpsn` | Shows sticky note content when the PDF contains sticky notes. For example, `?&embed={"mpsn":true}`. | + ## Prerequisites + Before creating previews, make sure: + - The file is stored in a SharePoint Embedded container. - Your app knows the container ID and DriveItem ID. - Your app can acquire a Microsoft Graph token. - The caller has permission to read the file. - The file type is supported for preview. - Your UI can host an iframe or open a new page. + ## Create a preview link + Call the preview endpoint from your service layer. + Use this C# SDK pattern: + ```csharp ItemPreviewInfo preview = await graphServiceClient.Drives[driveId].Items[itemId] .Preview() .Request() .PostAsync(); ``` + The response includes preview URL information: + ```json { "getUrl": "https://www.onedrive.com/embed?foo=bar&bar=baz", @@ -80,19 +112,30 @@ The response includes preview URL information: "postUrl": "https://www.onedrive.com/embed_by_post" } ``` + Use `getUrl` when available. + > [!CAUTION] > `getUrl` currently contains an encrypted token that can only be used with your application. This behavior may change. + ## Remove the preview banner + Add `nb=true` to the obtained URL to remove the banner at the top. + Example: + ```http https://contoso.sharepoint.com/restOfUrl/embed.aspx?param1=value&nb=true ``` + Use this only when it fits your user experience and compliance requirements. + ## Embed the preview in an iframe + Create an app page that hosts the preview URL. + Example shape: + ```html @@ -103,21 +146,30 @@ Example shape: ``` + In production, also provide: + - A descriptive iframe title. - Responsive sizing. - Loading states. - Error states. + - A fallback download or open action. + ## Load previews dynamically + Don't call Microsoft Graph directly from a browser script if that creates CORS issues or exposes tokens. + Use a server-side endpoint that: + 1. Authenticates the user. 1. Validates access to the requested file. 1. Acquires a Graph token. 1. Calls the DriveItem preview endpoint. 1. Returns the preview URL to the client. + Use this server-side pattern: + ```csharp [HttpGet] [AuthorizeForScopes(Scopes = new string[] { "Files.Read.All" })] @@ -126,7 +178,9 @@ public async Task> GetPreviewUrl(string driveId, string ite return url + "&nb=true"; } ``` + Then the client can request the URL and set the iframe source. + ```javascript async function preview(driveId, itemId) { const url = `/GetPreviewUrl?driveId=${driveId}&itemId=${itemId}`; @@ -136,8 +190,11 @@ async function preview(driveId, itemId) { document.getElementById('preview').src = response + "&nb=true"; } ``` + ## Design preview UX + A good preview UX should: + - Show the file name. - Show a loading indicator. - Reserve enough space for the iframe. @@ -146,7 +203,9 @@ A good preview UX should: - Preserve keyboard accessibility. - Avoid trapping focus inside the preview frame. - Explain errors in user-friendly language. + ## Handle preview errors + | Failure | Handling | |---|---| | Unsupported file type | Show a download or open action instead. | @@ -155,19 +214,27 @@ A good preview UX should: | CORS error | Move the Graph call to your server-side endpoint. | | File deleted | Refresh the file list and remove stale selections. | | Service error | Retry once, then show a stable fallback. | + > [!IMPORTANT] > Don't cache preview URLs as durable identifiers. Store the container ID and DriveItem ID, then create a fresh preview URL when needed. + ## Secure preview requests + Treat preview as a read operation on protected content. + Your service should: + 1. Validate the signed-in user or service context. 1. Confirm the caller can read the container content. 1. Confirm the requested item belongs to the expected container. 1. Avoid exposing Graph tokens to the browser. 1. Avoid logging preview URLs that include sensitive tokens. 1. Expire app-side preview sessions when the user signs out. + ## Validate the preview experience + Test with multiple file types and users: + 1. Upload a PDF file. 1. Upload an image file. 1. Upload an Office file. @@ -178,8 +245,11 @@ Test with multiple file types and users: 1. Delete a file and confirm the error is handled. 1. Refresh an expired preview URL. 1. Confirm the fallback action works. + ## Connect to the next build task + After preview is working, add discovery experiences so users can find content across containers and files. + Continue to [Search containers and files](../build/search-containers-files.md). ## Next steps diff --git a/docs/embedded/build/quickstart-vscode.md b/docs/embedded/build/quickstart-vscode.md index 028e78270e..759b0ea7ee 100644 --- a/docs/embedded/build/quickstart-vscode.md +++ b/docs/embedded/build/quickstart-vscode.md @@ -3,20 +3,30 @@ title: "Quickstart: Build your first app with VS Code" description: Create a standard SharePoint Embedded container type in Visual Studio Code and run the sample application locally. ms.date: 07/13/2026 ms.reviewer: mawin +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Quickstart: build your first app with VS Code + **Applies to:** Developer + + Use the [SharePoint Embedded Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=SharepointEmbedded.ms-sharepoint-embedded-vscode-extension) to create a standard container type for your first app. The extension also configures the owning app, attaches Azure billing, and registers the container type. Then you create a container and run a local sample app. + This article starts the build journey. For more billing guidance, see [Create and configure a container type](create-container-type.md). + ## Prerequisites + Before you start, make sure you have: + - [Visual Studio Code](https://code.visualstudio.com/) installed. - Administrative access to a Microsoft 365 tenant. - A tenant with SharePoint available. @@ -24,9 +34,13 @@ Before you start, make sure you have: - Owner or Contributor permissions on the Azure subscription. - Node.js and npm installed for the sample app. - Permission to grant admin consent in Microsoft Entra ID. + > [!IMPORTANT] + > You need administrative access to a Microsoft 365 tenant. If you don't have a tenant, use the Microsoft 365 Developer Program, Microsoft Customer Digital Experience, or a Microsoft 365 E3 trial. + ## Install the extension + 1. Open Visual Studio Code. 1. Open **Extensions** from the activity bar. 1. Search for **SharePoint Embedded**. @@ -35,12 +49,14 @@ Before you start, make sure you have: 1. Select the SharePoint Embedded icon in the activity bar. ## Sign in + 1. In the SharePoint Embedded view, select the sign-in action. 1. Use a Microsoft 365 administrator account. 1. Complete authentication in the browser. 1. Review the requested permissions. 1. Select **Accept** to grant admin consent. 1. Return to Visual Studio Code when redirected. + > [!IMPORTANT] > Review the consent prompt carefully. The extension needs tenant permissions to configure development resources. @@ -51,7 +67,9 @@ After you sign in, the extension shows the SharePoint Embedded home view. ![Screenshot of the SharePoint Embedded home view in Visual Studio Code after sign-in. The view lists actions to create a container type and load a sample app.](../images/vsx-images/n4vsx-home-screen.png) ## Create a standard container type + A container type defines the relationship, access privileges, billing accountability, and selected behaviors for a set of SharePoint Embedded containers. + 1. Select **Create Container Type**. 1. For the billing method, select **standard**. 1. Enter a container type name. @@ -63,7 +81,9 @@ Use a standard container type when the organization that owns the app pays for S For evaluation, choose **trial**. For customer-tenant billing, choose the pass-through option, which uses the `directToCustomer` billing classification. ## Create or select the owning app + Every container type has one owning Microsoft Entra ID application. + 1. Create a new Microsoft Entra ID application or select an existing application ID. 1. If you create a new application, enter its name. 1. Let the extension configure development settings. @@ -73,8 +93,11 @@ Every container type has one owning Microsoft Entra ID application. > [!CAUTION] > If you select an existing application, the extension updates that app's configuration. Don't use a production app for this quickstart. For the model, see [SharePoint Embedded app architecture](../plan/app-tenant-architecture.md). + ## Configure standard billing + Standard container types require Azure billing. The extension attaches billing by using an Azure subscription and resource group that your account can access. + 1. Select an Azure subscription. 1. Select a resource group. 1. Wait for the extension to register the **Microsoft.Syntex** resource provider and attach billing. @@ -82,7 +105,9 @@ Standard container types require Azure billing. The extension attaches billing b If you skip billing setup or don't have the required Azure permissions, the tree shows **Billing not set up**. To finish setup later, right-click the container type. Then select **Attach billing**. ## Register the container type locally + You must register the container type in the consuming tenant before your app can create containers or access content. + 1. After creation, follow the prompt to register the container type in the local tenant. 1. If the prompt isn't visible, right-click the container type and select **Register**. 1. Review the permissions. @@ -93,11 +118,13 @@ Registration configures the permissions the owning app can use against container ![Screenshot of the SharePoint Embedded extension prompting to register the container type on the local tenant, with the registration action highlighted.](../images/vsx-images/n7aregister-ct.png) ## Create your first container + 1. In the SharePoint Embedded tree, expand your container type. 1. Right-click **Containers**. 1. Select **Create container**. 1. Enter a container name. 1. Confirm the container appears in the tree. + A container is the basic storage unit and security boundary in SharePoint Embedded. ![Screenshot of the SharePoint Embedded tree in Visual Studio Code. A container type is expanded, the Containers node is right-clicked, and the Create container command is selected.](../images/vsx-images/n10acreate-container.png) @@ -105,6 +132,7 @@ A container is the basic storage unit and security boundary in SharePoint Embedd ![Screenshot of the Visual Studio Code input box prompting for a container name.](../images/vsx-images/n11aname-first-cont.png) ## Load a sample app + 1. In the SharePoint Embedded view, select **Load Sample App**. 1. Choose a SharePoint Embedded sample. @@ -112,20 +140,30 @@ A container is the basic storage unit and security boundary in SharePoint Embedd 1. Review the warning about local plain text secrets. 1. If prompted to create a client secret, select **OK** for local development. + 1. Let the extension populate the runtime configuration file. + > [!IMPORTANT] > The sample configuration is for development only. It stores authentication secrets in plain text on your local machine. + ## Run the sample app + Open a terminal and run the sample app from the generated sample directory. + ```console cd [your-path]\SharePoint-Embedded-Samples\Custom Apps\boilerplate-typescript-react npm run start ``` + The sample starts: + - A React client application. - An Azure Functions application server. + Wait for both console outputs to appear. + Then: + 1. Open `http://localhost:8080`. 1. Sign in with the same Microsoft 365 administrator account. 1. Select **Containers** on the home page. @@ -133,7 +171,9 @@ Then: > [!NOTE] > Initial startup can take several minutes while dependencies install and both applications build. + ## Troubleshoot startup + | Symptom | Check | |---|---| | Port conflict | The app tries the next available port when port 8080 is in use. | @@ -141,10 +181,15 @@ Then: | Authentication error | Confirm the Microsoft Entra ID app has the expected redirect URIs. | | Access denied | Confirm registration and admin consent succeeded. | | Billing not set up | Confirm you have Owner or Contributor permissions on the selected Azure subscription, then use **Attach billing**. | + ## Clean up + When you're finished testing: + 1. Remove test containers that you no longer need. 1. Review Azure billing resources that you created for this quickstart. 1. Remove local sample secrets that are no longer needed. + ## Next steps + Learn more about container type options in [Create and configure a container type](create-container-type.md). diff --git a/docs/embedded/build/register-application-permissions.md b/docs/embedded/build/register-application-permissions.md index 748c1f3495..49730e7442 100644 --- a/docs/embedded/build/register-application-permissions.md +++ b/docs/embedded/build/register-application-permissions.md @@ -3,59 +3,94 @@ title: Register Application Permissions description: Register SharePoint Embedded container type application permissions in a consuming tenant. ms.date: 07/13/2026 ms.reviewer: stpuceli +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Register application permissions + **Applies to:** Developer + + Register container type application permissions before your SharePoint Embedded app creates containers or accesses content in a consuming tenant. + Complete [Create and configure a container type](create-container-type.md) first so you have a container type ID and owning application. + ## Why registration is required + A SharePoint Embedded application can't interact with containers in a consuming tenant until the container type is registered in that tenant. + Registration controls: + - Which application IDs can access the container type. - Which delegated permissions each application has. - Which app-only permissions each application has. - Whether guest applications can interact with the owning application's containers. + If registration is missing or incomplete, later calls can fail with access denied errors. + ## Understand who can register + Only the owning application of the container type can invoke the registration API in the consuming tenant. + The owning application must have: + - A service principal installed on the consuming tenant. - Admin consent to perform registration in the consuming tenant. - The `FileStorageContainerTypeReg.Selected` Microsoft Graph permission (user-delegated or app-only). - A valid token for the Microsoft Graph resource. + > [!NOTE] > The container type registration API is available in Microsoft Graph v1.0. When the owning application calls the registration API on behalf of a user (delegated), that user must be assigned the [SharePoint Embedded Administrator](/entra/identity/role-based-access-control/permissions-reference#sharepoint-embedded-administrator) or [Global Administrator](/entra/identity/role-based-access-control/permissions-reference#global-administrator) role. When it calls without a user context (app-only), it uses the client credentials grant flow. + ## Grant admin consent + Ask a consuming tenant administrator to grant admin consent to the owning application. + Use the Microsoft identity platform admin consent endpoint: + ```http https://login.microsoftonline.com/{consuming-tenant-id}/v2.0/adminconsent?client_id={owning-app-clientid}&scope=https://graph.microsoft.com/.default&redirect_uri={spe-app-redirect-uri} ``` + Configure success and error handling for your onboarding flow. + For national cloud endpoints, see [Microsoft identity platform endpoints on national clouds](/entra/identity-platform/authentication-national-cloud#microsoft-entra-authentication-endpoints). + ## Acquire a token for registration + Use either delegated or app-only authentication for registration. + Registration requires: + - The `FileStorageContainerTypeReg.Selected` Microsoft Graph permission. - For app-only calls, the [client credentials grant flow](/entra/identity-platform/v2-oauth2-client-creds-grant-flow). - For delegated calls, a signed-in user with the SharePoint Embedded Administrator or Global Administrator role. + ## Register container type permissions + Call the registration endpoint in the consuming tenant. + ```http PUT https://graph.microsoft.com/v1.0/storage/fileStorage/containerTypeRegistrations/{containerTypeId} ``` + `{containerTypeId}` is the container type ID created in the owning tenant. + In the request body, provide the application permission grants for the container type. + ## Grant permissions to the owning app + A common first registration grants the owning app full permissions for delegated and app-only calls. + ```json { "applicationPermissionGrants": [ @@ -67,12 +102,18 @@ A common first registration grants the owning app full permissions for delegated ] } ``` + Replace the sample app ID with your owning application ID. + > [!CAUTION] > Use least privilege for production. Grant `full` only when the application needs full container type access. + ## Grant permissions to a guest app + The owning app can also register permissions for another application. + Use this pattern when a guest app needs a defined workload, such as backup or processing. + ```json { "applicationPermissionGrants": [ @@ -89,8 +130,11 @@ Use this pattern when a guest app needs a defined workload, such as backup or pr ] } ``` + Replace both app IDs with your applications. + ## Permission values + | Permission | Use | |---|---| | `None` | Grant no permissions. | @@ -108,17 +152,25 @@ Replace both app IDs with your applications. | `ManagePermissions` | Manage container role assignments. | | `ManageContent` | Manage the content of containers of this type. | | `Full` | Grant all permissions. | + > [!NOTE] + > `WriteContent` can't be granted without `ReadContent`. + ## Validate registration + A successful registration returns `201 Created` and the configured permissions in the response body. + After registration succeeds: + 1. Confirm the response includes expected app IDs. 1. Confirm delegated and app-only arrays match your intended grants. 1. Acquire a Microsoft Graph token with SharePoint Embedded permissions. 1. Try a low-risk operation that matches the registered permission. 1. Continue to [Configure authentication and authorization](configure-authentication-authorization.md). + ## Troubleshoot consent issues + | Symptom | Likely cause | Action | |---|---|---| | `401 Unauthorized` | Missing or invalid token | Request a valid app-only token. | @@ -126,16 +178,24 @@ After registration succeeds: | `404 Not Found` | Container type doesn't exist | Verify ID and tenant. | | Access denied on Graph calls | Registration missing or insufficient | Re-register with needed permissions. | | Admin can't find hidden permission | Portal doesn't expose it | Use an admin consent URL. | + ## Re-register safely + There's no restriction on how many times the registration API can be invoked. + The last successful registration call determines the settings used in the consuming tenant. + Use a safe update process: + 1. Build a complete registration payload. 1. Include all apps that should retain access. 1. Submit the registration call. 1. Validate the response. 1. Run smoke tests for each app role. + > [!IMPORTANT] > Don't send a partial payload unless you intend the resulting registration to contain only that set of applications and permissions. + ## Next steps + Configure tokens and authorization flows in [Configure authentication and authorization](configure-authentication-authorization.md). diff --git a/docs/embedded/build/respond-to-changes-webhooks.md b/docs/embedded/build/respond-to-changes-webhooks.md index dea167a08b..4ba02f20ce 100644 --- a/docs/embedded/build/respond-to-changes-webhooks.md +++ b/docs/embedded/build/respond-to-changes-webhooks.md @@ -3,21 +3,28 @@ title: Respond to file and container changes with webhooks description: Subscribe to SharePoint Embedded drive changes and handle Microsoft Graph webhook notifications. ms.date: 07/10/2026 ms.reviewer: jaeccles +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Respond to file and container changes with webhooks + **Applies to:** Developer + + Use Microsoft Graph webhooks when your app must react to file changes in a SharePoint Embedded container. A subscription tells Microsoft Graph to call your HTTPS endpoint when the subscribed resource changes. ![Diagram of the SharePoint Embedded webhook flow: the app creates a Microsoft Graph subscription for a container drive, and Microsoft Graph sends change notifications to the app's HTTPS endpoint.](../images/Using-Webhooks.png) ## Create a notification endpoint + Expose an HTTPS endpoint that accepts `POST` requests. During local development, use ngrok to tunnel requests to a local server. ```console @@ -63,6 +70,7 @@ server.post('/api/onReceiptAdded', async (req, res, next) => { ``` ## Subscribe to a container drive + Create the subscription with Microsoft Graph. In this pattern, the SharePoint Embedded container ID is the drive ID. ```http @@ -83,6 +91,7 @@ Content-Type: application/json Subscribe to changes under `drives/{container-id}/root` and append `driveId={container-id}` to the notification URL so the handler can identify the container. ## Calculate expiration + Drive item subscriptions have a maximum lifetime of 4,230 minutes. Use a pre-request script or backend scheduler to set the expiration time before creating the subscription. ```javascript @@ -95,11 +104,13 @@ pm.environment.set("ContainerSubscriptionExpiry", expiry.toISOString()); Store the subscription ID, resource, container ID, and expiration time. Renew each subscription before it expires. ## Process notifications safely + Return quickly from the webhook request. Queue background work, fetch the current file or container state with Microsoft Graph, and make processing idempotent because notifications can be duplicated or delayed. Use webhooks for actions such as document processing, index refresh, user notifications, or workflow triggers. Keep a periodic reconciliation job for missed notifications or expired subscriptions. ## Verify the flow + Create a subscription, upload or update a file in the container, and confirm your endpoint logs the expected drive ID. If validation fails, check the public HTTPS URL, the `validationToken` response content type, and whether your server parses query parameters before route execution. ## Next steps diff --git a/docs/embedded/build/search-containers-files.md b/docs/embedded/build/search-containers-files.md index db571d8862..59982e1d20 100644 --- a/docs/embedded/build/search-containers-files.md +++ b/docs/embedded/build/search-containers-files.md @@ -3,22 +3,29 @@ title: Search Containers and Files description: Search SharePoint Embedded containers and files with Microsoft Search in Microsoft Graph. ms.date: 07/13/2026 ms.reviewer: cindylay +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Search containers and files + **Applies to:** Developer + + Use Microsoft Search in Microsoft Graph when your app needs keyword search across SharePoint Embedded containers or content. The search API ranks matching results and returns `drive` resources for containers or `driveItem` resources for files and folders. > [!NOTE] > SharePoint Embedded search is in preview and is available only on the Microsoft Graph **`/beta`** endpoint — there's no `v1.0` search API for containers. Search supports delegated permissions only and follows the [exceptional access pattern](configure-authentication-authorization.md#handle-operations-not-exposed-through-graph). ## Choose the search scope + Scope every request to the container type or container that belongs to your app. Search runs in the context of the signed-in user, so the service trims results to content the user can access. Your app must also have access to the corresponding container type before it can open returned containers or files. Use these managed properties in the `queryString`: @@ -34,6 +41,7 @@ Use these managed properties in the `queryString`: If your application opted out of Microsoft 365 content discoverability, set `sharePointOneDriveOptions.includeHiddenContent` to `true` in the request body. ## Search containers + Send a `POST` request to Microsoft Graph search and request `drive` resources. ```http @@ -62,6 +70,7 @@ Content-Type: application/json The response includes `hitsContainers`. Each hit contains a `hitId`, `rank`, `summary`, and a `resource` whose `@odata.type` is `#microsoft.graph.drive`. ## Search files and folders + Request `driveItem` resources when the user searches file names or file content. Scope to a specific container with `ContainerId` when the user is already inside a workspace. ```json @@ -85,6 +94,7 @@ Request `driveItem` resources when the user searches file names or file content. A `driveItem` result can include file metadata such as `id`, `name`, `size`, `createdDateTime`, `lastModifiedDateTime`, `parentReference`, `createdBy`, `lastModifiedBy`, and `webUrl`. ## Return selected fields and sort results + Use the `fields` collection to request specific managed properties in the response. Use `sortProperties` only with sortable properties. ```json @@ -106,6 +116,7 @@ Use the `fields` collection to request specific managed properties in the respon Use `from` and `size` to page through ranked results. Read `hitsContainers[].total` and `hitsContainers[].moreResultsAvailable` to decide whether to request another page. ## Search custom properties + For container custom properties, append `OWSTEXT` to the custom property name in the query string. ```text @@ -121,6 +132,7 @@ GET https://graph.microsoft.com/v1.0/drives/{container-id}/items?$filter=startsw When a container has more than 5,000 items and you enumerate with `$orderby`, include the `Prefer: HonorNonIndexedQueriesWarningMayFailRandomly` header required for large ordered enumerations. ## Known limitations + Search enforces the signed-in user's access, not your app's authorization. Results include every container and item the user can access that matches the query — even containers whose container type your app isn't authorized to use. Always include `ContainerTypeId` in the `queryString` to scope results to your app. To open a container or file returned by search, your app must have access permissions to the corresponding container type. diff --git a/docs/embedded/build/share-files-manage-permissions.md b/docs/embedded/build/share-files-manage-permissions.md index 4c28bb2bd7..362b886f5e 100644 --- a/docs/embedded/build/share-files-manage-permissions.md +++ b/docs/embedded/build/share-files-manage-permissions.md @@ -3,19 +3,26 @@ title: Share files and manage permissions description: Grant targeted SharePoint Embedded file access with additive permissions and role-based sharing. ms.date: 07/10/2026 ms.reviewer: cindylay +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- + # Share files and manage permissions + **Applies to:** Developer + + SharePoint Embedded content inherits permissions from its container hierarchy. You can't break inheritance on arbitrary files or folders. Use additive permissions to extend access to a specific drive item without changing the baseline container membership. ## Understand container roles + Container roles provide the inherited baseline access for a container. These roles are defined in [container permissions](configure-authentication-authorization.md#understand-container-permissions): | Role | Access summary | @@ -28,6 +35,7 @@ Container roles provide the inherited baseline access for a container. These rol A user with inherited `Reader` access can receive additive edit access on one document. Removing that added permission doesn't remove the user's inherited container role. ## Grant additive access + Grant additive access with Microsoft Graph drive item invite. Set `sendInvitation` to `false`. App-only permissions aren't supported for this operation. ```http @@ -50,6 +58,7 @@ Content-Type: application/json Use `roles: ["read"]` for view access and `roles: ["write"]` for edit access. Don't grant additive permissions to the root folder of a container; add the user to an appropriate container role instead. ## Retrieve and delete permissions + List permissions when you need to show direct sharing state on a file or folder. ```http @@ -66,11 +75,13 @@ DELETE https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/permis If the user still has access after deletion, inspect inherited container roles, Microsoft Entra groups, and any other additive permission on parent folders. ## Configure who can share + SharePoint Embedded supports a role-based sharing model on the container type. The restrictive model allows only `Owner` and `Manager` members to add new permissions to files. The open model allows container members and guests with edit permissions to add new file permissions. By default, a container type uses the open model. Application owner developers control this container type setting. Design your UI so the share action is disabled or hidden when the current user's role can't add permissions. For administrative configuration, see [Create apps with PowerShell](../admin/create-apps-powershell.md). ## Respect tenant sharing policy + By default, SharePoint Embedded application sharing follows the consuming tenant's sharing configuration. If the tenant disables guest sharing, your app can't add guests to container roles or grant guest additive permissions. A consuming tenant SharePoint Embedded Administrator can configure application-level sharing in administrative tools. diff --git a/docs/embedded/build/sharepoint-embedded-knowledge-source.md b/docs/embedded/build/sharepoint-embedded-knowledge-source.md index bd9eeaf7c4..8ac9593aac 100644 --- a/docs/embedded/build/sharepoint-embedded-knowledge-source.md +++ b/docs/embedded/build/sharepoint-embedded-knowledge-source.md @@ -3,7 +3,9 @@ title: Set up SharePoint Embedded as a Foundry knowledge source description: Configure Microsoft Foundry Agent Service to use SharePoint Embedded content as a SharePoint knowledge source. ms.date: 07/13/2026 ms.reviewer: dilucesr +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Set up SharePoint Embedded as a Foundry knowledge source diff --git a/docs/embedded/overview.md b/docs/embedded/overview.md index 6b91eb5eff..defb1b4a9e 100644 --- a/docs/embedded/overview.md +++ b/docs/embedded/overview.md @@ -4,6 +4,7 @@ description: Microsoft SharePoint Embedded is an API-only file and document mana ms.date: 07/13/2026 ms.reviewer: shsaravanan ms.localizationpriority: high +ai-usage: ai-assisted --- # What is SharePoint Embedded? diff --git a/docs/embedded/plan/app-tenant-architecture.md b/docs/embedded/plan/app-tenant-architecture.md index cfdbc89dc7..79857149b5 100644 --- a/docs/embedded/plan/app-tenant-architecture.md +++ b/docs/embedded/plan/app-tenant-architecture.md @@ -3,7 +3,9 @@ title: Understand App and Tenant Architecture description: Plan how SharePoint Embedded apps, tenants, container types, and containers relate across owning and consuming tenants. ms.date: 07/13/2026 ms.reviewer: dilucesr +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Understand app and tenant architecture @@ -218,4 +220,5 @@ For model selection, see [Choose an app model: single-tenant or multitenant](../ - Plan security and compliance responsibilities. ## Next steps + Choose the app model that matches your tenant and customer relationship: [Choose an app model: single-tenant or multitenant](../plan/choose-app-model.md). diff --git a/docs/embedded/plan/authentication-permissions.md b/docs/embedded/plan/authentication-permissions.md index 832c3ba7be..3ea81c49e0 100644 --- a/docs/embedded/plan/authentication-permissions.md +++ b/docs/embedded/plan/authentication-permissions.md @@ -3,7 +3,9 @@ title: Plan Authentication and Permissions description: Plan SharePoint Embedded authentication, admin consent, delegated access, app-only access, and container permissions. ms.date: 07/13/2026 ms.reviewer: mawin +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Plan authentication and permissions @@ -224,4 +226,5 @@ Review these before designing privileged or search-heavy features. - Review exceptional access patterns. ## Next steps + Review scale and performance constraints: [Understand limits and calling patterns](../plan/limits-calling-patterns.md). diff --git a/docs/embedded/plan/choose-app-model.md b/docs/embedded/plan/choose-app-model.md index 2018e0f811..ab60809b8d 100644 --- a/docs/embedded/plan/choose-app-model.md +++ b/docs/embedded/plan/choose-app-model.md @@ -3,7 +3,9 @@ title: "Choose an App Model: Single-Tenant or Multitenant" description: Compare single-tenant and multitenant SharePoint Embedded app models before you create container types and containers. ms.date: 07/13/2026 ms.reviewer: mawin +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Choose an app model: single-tenant or multitenant @@ -190,4 +192,5 @@ If you're building an ISV app: - Identify who manages compliance policies. ## Next steps + Review the storage model: [Understand container types and containers](../plan/container-types-containers.md). diff --git a/docs/embedded/plan/choose-billing-model.md b/docs/embedded/plan/choose-billing-model.md index 94c5bf5720..9d3131a080 100644 --- a/docs/embedded/plan/choose-billing-model.md +++ b/docs/embedded/plan/choose-billing-model.md @@ -3,7 +3,9 @@ title: Choose a Billing Model description: Compare standard and pass-through SharePoint Embedded billing models before you create production container types. ms.date: 07/13/2026 ms.reviewer: shsaravanan +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Choose a billing model @@ -193,4 +195,5 @@ Use these setup references after you choose a model: - Plan calling patterns to manage API transaction cost. ## Next steps + Plan governance responsibilities for tenant content: [Plan security, compliance, and governance](../plan/security-compliance-governance.md). diff --git a/docs/embedded/plan/container-types-containers.md b/docs/embedded/plan/container-types-containers.md index cb1ac748fa..1f49d67b1f 100644 --- a/docs/embedded/plan/container-types-containers.md +++ b/docs/embedded/plan/container-types-containers.md @@ -3,7 +3,9 @@ title: Understand container types and containers description: Learn how SharePoint Embedded container types define app access and how containers store files in consuming tenants. ms.date: 07/10/2026 ms.reviewer: shsaravanan +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Understand container types and containers @@ -192,4 +194,5 @@ For full details, see [Register file storage container type application permissi - Plan container lifecycle and deletion. ## Next steps + Plan authentication and authorization: [Plan authentication and permissions](../plan/authentication-permissions.md). diff --git a/docs/embedded/plan/limits-calling-patterns.md b/docs/embedded/plan/limits-calling-patterns.md index d78f4fec62..d5ef290b15 100644 --- a/docs/embedded/plan/limits-calling-patterns.md +++ b/docs/embedded/plan/limits-calling-patterns.md @@ -3,7 +3,9 @@ title: Understand Limits and Calling Patterns description: Plan SharePoint Embedded service limits, throttling behavior, retry handling, and performance-sensitive calling patterns. ms.date: 07/13/2026 ms.reviewer: mawin +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Understand limits and calling patterns diff --git a/docs/embedded/plan/security-compliance-governance.md b/docs/embedded/plan/security-compliance-governance.md index f555c7bc3d..1a70f53c57 100644 --- a/docs/embedded/plan/security-compliance-governance.md +++ b/docs/embedded/plan/security-compliance-governance.md @@ -3,7 +3,9 @@ title: Plan Security, Compliance, and Governance description: Plan how Microsoft Purview, audit, DLP, retention, labels, and access policies apply to SharePoint Embedded content. ms.date: 07/13/2026 ms.reviewer: mawin +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Plan security, compliance, and governance @@ -226,4 +228,5 @@ Design for policy enforcement results, blocked operations, and user-facing messa - Validate licensing requirements for advanced policies. ## Next steps + Review scale, throttling, and retry behavior: [Understand limits and calling patterns](../plan/limits-calling-patterns.md). diff --git a/docs/embedded/publish/choose-app-billing-model.md b/docs/embedded/publish/choose-app-billing-model.md index 435e18f857..e97edf8e07 100644 --- a/docs/embedded/publish/choose-app-billing-model.md +++ b/docs/embedded/publish/choose-app-billing-model.md @@ -3,7 +3,9 @@ title: Choose a billing model for your app description: Compare standard and pass-through billing for SharePoint Embedded apps before onboarding customer tenants. ms.date: 07/10/2026 ms.reviewer: cindylay +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Choose a billing model for your app diff --git a/docs/embedded/publish/customer-tenant-setup-guide.md b/docs/embedded/publish/customer-tenant-setup-guide.md index 60415b504b..89ce708c37 100644 --- a/docs/embedded/publish/customer-tenant-setup-guide.md +++ b/docs/embedded/publish/customer-tenant-setup-guide.md @@ -3,7 +3,9 @@ title: Guide customers through tenant setup description: Give customer admins the SharePoint Embedded setup, consent, billing, and validation steps needed to install an ISV app. ms.date: 07/13/2026 ms.reviewer: pemtaira +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Guide customers through tenant setup @@ -70,7 +72,6 @@ Tell customers exactly which Microsoft Graph permissions your app needs and why. | `FileStorageContainerTypeReg.Selected` | Register your container type in the consuming tenant. | The application permission requires admin consent. The delegated permission doesn't require admin consent, but the user who registers the container type must be a SharePoint Embedded Administrator or Global Administrator. | | `FileStorageContainer.Selected` | Read and write SharePoint Embedded container content for the container type. | The application permission requires admin consent. The delegated permission does not require admin consent. | - ## Setup overview for customers Use this high-level sequence in your customer guide: diff --git a/docs/embedded/publish/prepare-customer-installation.md b/docs/embedded/publish/prepare-customer-installation.md index 8299a9a278..6e2d0b330d 100644 --- a/docs/embedded/publish/prepare-customer-installation.md +++ b/docs/embedded/publish/prepare-customer-installation.md @@ -3,7 +3,9 @@ title: Prepare Your App for Customer Installation description: Prepare a multitenant SharePoint Embedded app, container type, permissions, billing choice, and admin handoff for customer tenants. ms.date: 07/13/2026 ms.reviewer: stpuceli +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Prepare your app for customer installation @@ -215,4 +217,5 @@ Include a checklist the customer can complete with you after installation: For detailed validation, see [Validate customer app installation](validate-customer-installation.md). ## Next steps + Choose the correct billing option before you send installation instructions to a customer: [Choose a billing model for your app](choose-app-billing-model.md). diff --git a/docs/embedded/publish/validate-customer-installation.md b/docs/embedded/publish/validate-customer-installation.md index 21081646f8..cc13219e21 100644 --- a/docs/embedded/publish/validate-customer-installation.md +++ b/docs/embedded/publish/validate-customer-installation.md @@ -3,7 +3,9 @@ title: Validate customer app installation description: Validate SharePoint Embedded container type registration, permissions, containers, and billing after a customer installs an ISV app. ms.date: 07/13/2026 ms.reviewer: dilucesr +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Validate customer app installation diff --git a/docs/embedded/reference/audit-events.md b/docs/embedded/reference/audit-events.md index 18c521f896..6c5fabc149 100644 --- a/docs/embedded/reference/audit-events.md +++ b/docs/embedded/reference/audit-events.md @@ -3,7 +3,9 @@ title: Audit events description: Reference for SharePoint Embedded container type audit events in the Microsoft Purview unified audit log. ms.date: 07/10/2026 ms.reviewer: pemtaira +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Audit events diff --git a/docs/embedded/reference/billing-meters.md b/docs/embedded/reference/billing-meters.md index 2c27c49cf2..a248ab22d2 100644 --- a/docs/embedded/reference/billing-meters.md +++ b/docs/embedded/reference/billing-meters.md @@ -3,7 +3,9 @@ title: Billing Meters description: Reference for SharePoint Embedded pay-as-you-go billing meters and pricing resources. ms.date: 07/13/2026 ms.reviewer: pemtaira +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Billing meters @@ -21,8 +23,6 @@ SharePoint Embedded uses pay-as-you-go (PAYG) billing through an Azure subscript For setup guidance, see [choose a billing model](../plan/choose-billing-model.md). For monitoring, see [monitor usage, billing, and cost](../admin/monitor-usage-billing-cost.md). -## Billing meters - | Meter | Unit | What is metered | Notes | | --- | --- | --- | --- | | Storage | $/GB | Files, documents, metadata, versions, recycle bin content, and deleted container collection content, in both active and archived states. | Storage is based on data stored in SharePoint Embedded. | diff --git a/docs/embedded/reference/glossary.md b/docs/embedded/reference/glossary.md index 688772c849..7b0a6ab423 100644 --- a/docs/embedded/reference/glossary.md +++ b/docs/embedded/reference/glossary.md @@ -3,7 +3,9 @@ title: Glossary description: Concise definitions of common SharePoint Embedded terms and concepts. ms.date: 06/25/2026 ms.reviewer: pemtaira +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Glossary diff --git a/docs/embedded/reference/graph-api-links.md b/docs/embedded/reference/graph-api-links.md index 1d0246ce97..43564bf894 100644 --- a/docs/embedded/reference/graph-api-links.md +++ b/docs/embedded/reference/graph-api-links.md @@ -3,7 +3,9 @@ title: Microsoft Graph API reference links description: Curated Microsoft Graph v1.0 reference links for SharePoint Embedded containers, container types, and files. ms.date: 07/08/2026 ms.reviewer: pemtaira +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Microsoft Graph API reference links diff --git a/docs/embedded/reference/powershell.md b/docs/embedded/reference/powershell.md index b4f0649d1d..5d7db0df07 100644 --- a/docs/embedded/reference/powershell.md +++ b/docs/embedded/reference/powershell.md @@ -3,7 +3,9 @@ title: PowerShell Reference description: Reference for SharePoint Online PowerShell cmdlets used to administer SharePoint Embedded. ms.date: 07/13/2026 ms.reviewer: dilucesr +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # PowerShell reference diff --git a/docs/embedded/reference/troubleshooting.md b/docs/embedded/reference/troubleshooting.md index 9c0eb11039..ed866d5a68 100644 --- a/docs/embedded/reference/troubleshooting.md +++ b/docs/embedded/reference/troubleshooting.md @@ -3,7 +3,9 @@ title: Troubleshooting description: Common SharePoint Embedded setup, auth, billing, Office, search, webhook, and admin issues. ms.date: 07/09/2026 ms.reviewer: pemtaira +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # Troubleshooting diff --git a/docs/embedded/scenarios-and-use-cases.md b/docs/embedded/scenarios-and-use-cases.md index 6d68b0ea33..c4ccc9571b 100644 --- a/docs/embedded/scenarios-and-use-cases.md +++ b/docs/embedded/scenarios-and-use-cases.md @@ -4,6 +4,7 @@ description: Explore scenarios and use cases for SharePoint Embedded. ms.date: 07/13/2026 ms.reviewer: stpuceli ms.localizationpriority: high +ai-usage: ai-assisted --- # Scenarios and use cases for SharePoint Embedded diff --git a/docs/embedded/sharepoint-embedded-documentation.md b/docs/embedded/sharepoint-embedded-documentation.md index 76dccd8ac2..fc078831fd 100644 --- a/docs/embedded/sharepoint-embedded-documentation.md +++ b/docs/embedded/sharepoint-embedded-documentation.md @@ -3,7 +3,9 @@ title: SharePoint Embedded documentation description: Task-based index for SharePoint Embedded. Find the right page by what you're trying to do, whether you build apps or administer them. ms.date: 07/13/2026 ms.reviewer: dilucesr +ms.author: mawin ms.localizationpriority: high +ai-usage: ai-assisted --- # SharePoint Embedded documentation diff --git a/docs/embedded/whats-new.md b/docs/embedded/whats-new.md index 907c4b6f7c..768e28041b 100644 --- a/docs/embedded/whats-new.md +++ b/docs/embedded/whats-new.md @@ -1,9 +1,10 @@ --- title: What's new in SharePoint Embedded? description: Updates about Microsoft SharePoint Embedded. -ms.date: 07/13/2026 +ms.date: 06/04/2025 ms.reviewer: dilucesr ms.localizationpriority: high +ai-usage: ai-assisted --- # What's new in SharePoint Embedded @@ -31,8 +32,8 @@ next: overview.md ## March 2026 - [SharePoint Embedded agent SDK](./build/agent-experiences.md) has been deprecated in favor of the new [SharePoint Embedded knowledge source in Microsoft Foundry](./build/sharepoint-embedded-knowledge-source.md). -- [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource has a new **permissions** relationship that allows management of the container type's owners. This is available in the beta Microsoft Graph endpoint. For more information, see [Manage container type owners](./build/configure-authentication-authorization.md#manage-container-type-owners). -- [fileStorageContainer](/graph/api/resources/filestoragecontainer) resource has a new **informationBarrier** property that allows management of the container's information barrier. This is available in the beta Microsoft Graph endpoint. For more information, see [Information Barriers](/purview/information-barriers-sharepoint). +- [fileStorageContainerType](/graph/api/resources/filestoragecontainertype) resource has a new `permissions` relationship that allows management of the container type's owners. This is available in the beta Microsoft Graph endpoint. For more information, see [Manage container type owners](./build/configure-authentication-authorization.md#manage-container-type-owners). +- [fileStorageContainer](/graph/api/resources/filestoragecontainer) resource has a new `informationBarrier` property that allows management of the container's information barrier. This is available in the beta Microsoft Graph endpoint. For more information, see [Information Barriers](/purview/information-barriers-sharepoint). - The SharePoint Embedded native PDF viewing experience now supports searching within the file, viewing comments and sticky notes embedded on the file, and printing. The new features are now available through the [driveItem: preview](/graph/api/driveitem-preview) API in both the beta and v1.0 Microsoft Graph endpoints. ## February 2026 @@ -57,7 +58,7 @@ next: overview.md ## October 2025 -- [recycleBinItem: restore](/graph/api/filestoragecontainer-restore-recyclebinitem) supports `driveItemId` as an alternate key to enable restoring a **recycleBinItem** if the ID of the original **driveItem** is known. +- [recycleBinItem: restore](/graph/api/filestoragecontainer-restore-recyclebinitem) supports `driveItemId` as an alternate key to enable restoring a `recycleBinItem` if the ID of the original `driveItem` is known. - [Microsoft 365 Archive](/microsoft-365/archive/archive-overview) is previewing support for [SharePoint Embedded](./overview.md) to a limited number of customers. You can [sign up for the private preview](https://forms.office.com/r/98Z4iqSKya) today. ## September 2025 From 00e28444132c3875d6296106db0f884e9d383e69 Mon Sep 17 00:00:00 2001 From: dilucesr Date: Tue, 14 Jul 2026 10:04:34 -0700 Subject: [PATCH 10/15] Fix SPE MCP server docs --- .../sharepoint-embedded-mcp-server.md | 11 ++++++----- docs/embedded/whats-new.md | 2 +- docs/toc.yml | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) rename docs/embedded/{getting-started => build}/sharepoint-embedded-mcp-server.md (91%) diff --git a/docs/embedded/getting-started/sharepoint-embedded-mcp-server.md b/docs/embedded/build/sharepoint-embedded-mcp-server.md similarity index 91% rename from docs/embedded/getting-started/sharepoint-embedded-mcp-server.md rename to docs/embedded/build/sharepoint-embedded-mcp-server.md index a442d3a373..85bc3a3d4d 100644 --- a/docs/embedded/getting-started/sharepoint-embedded-mcp-server.md +++ b/docs/embedded/build/sharepoint-embedded-mcp-server.md @@ -1,14 +1,15 @@ --- title: SharePoint Embedded Model Context Protocol (MCP) server -description: Use the open-source SharePoint Embedded MCP server to provision and manage SharePoint Embedded from any MCP-compatible AI client through natural language. +description: Use the open-source SharePoint Embedded MCP server to provision and manage SharePoint Embedded applications from any MCP-compatible AI client through natural language. ms.date: 07/10/2026 ms.localizationpriority: high ms.author: grjoseph +ai-usage: ai-assisted --- # SharePoint Embedded Model Context Protocol (MCP) server -The SharePoint Embedded MCP server is an open-source [Model Context Protocol](https://modelcontextprotocol.io/) server that lets any MCP-compatible AI client—such as GitHub Copilot in Visual Studio Code, Claude Desktop, Cursor, or Azure AI Foundry—set up and manage SharePoint Embedded through natural language. It's distributed as the [`@microsoft/spe-mcp`](https://github.com/microsoft/SharePoint-Embedded-MCP-Server) npm package and runs locally on your machine as a developer tool. +The SharePoint Embedded MCP server is an open-source [Model Context Protocol](https://modelcontextprotocol.io/) server that lets any MCP-compatible AI client—such as GitHub Copilot in Visual Studio Code or CLI, Claude Desktop, Cursor, or Azure AI Foundry—set up and manage SharePoint Embedded applications through natural language. It's distributed as the [`@microsoft/spe-mcp`](https://github.com/microsoft/SharePoint-Embedded-MCP-Server) npm package and runs locally on your machine as a developer tool. Instead of clicking through portals and stitching together Microsoft Graph and Azure CLI commands by hand, you describe what you want—"create a trial container type for my app"—and the AI client calls the server's tools to do it. @@ -34,9 +35,9 @@ For the complete, versioned list of tools, CLI flags, and environment variables, ## Prerequisites -- **Node.js** version 18 or later. +- **Node.js** version 22 or later. - **[Azure CLI](/cli/azure/install-azure-cli)**, signed in with `az login --allow-no-subscriptions`. The `--allow-no-subscriptions` flag is required for Microsoft 365–only tenants that have no Azure subscription. -- A Microsoft 365 tenant with **SharePoint Embedded** enabled and tenant-admin access (Global Administrator or Application Administrator). +- A Microsoft 365 tenant and tenant-admin access (Global Administrator or Application Administrator). - An **MCP-compatible client**, such as [Visual Studio Code](https://code.visualstudio.com/) with GitHub Copilot, Claude Desktop, or Cursor. ## Install and configure @@ -90,7 +91,7 @@ The server supports two running modes. az login --allow-no-subscriptions ``` -- **Pre-provisioned-app mode**: Pass an existing public-client Microsoft Entra ID application that already has admin-consented delegated permissions for `FileStorageContainer.Selected`, `FileStorageContainerType.Manage.All`, and `FileStorageContainerTypeReg.Manage.All`. Provide the app and tenant IDs through the `SPE_CLIENT_ID` and `SPE_TENANT_ID` environment variables (or the `--client-id` and `--tenant-id` flags): +- **Pre-provisioned-app mode**: Pass an existing public-client Microsoft Entra ID application that already has admin-consented delegated permissions for `FileStorageContainer.Selected`, `FileStorageContainerType.Manage.All`, and `FileStorageContainerTypeReg.Manage.All`. Provide the app ID and tenant ID through the `SPE_CLIENT_ID` and `SPE_TENANT_ID` environment variables (or the `--client-id` and `--tenant-id` flags): ```json { diff --git a/docs/embedded/whats-new.md b/docs/embedded/whats-new.md index 3f2073e96c..ede51d7112 100644 --- a/docs/embedded/whats-new.md +++ b/docs/embedded/whats-new.md @@ -20,7 +20,7 @@ next: overview.md ## July 2026 -- The [SharePoint Embedded Model Context Protocol (MCP) server](./getting-started/sharepoint-embedded-mcp-server.md) is available in preview as an open-source npm package ([`@microsoft/spe-mcp`](https://github.com/microsoft/SharePoint-Embedded-MCP-Server)). MCP-compatible AI clients—such as GitHub Copilot in Visual Studio Code or the CLI, Claude, or Cursor—provision and manage SharePoint Embedded applications through natural language. +- The [SharePoint Embedded Model Context Protocol (MCP) server](./build/sharepoint-embedded-mcp-server.md) is available in preview as an open-source npm package ([`@microsoft/spe-mcp`](https://github.com/microsoft/SharePoint-Embedded-MCP-Server)). MCP-compatible AI clients—such as GitHub Copilot in Visual Studio Code or the CLI, Claude, or Cursor—provision and manage SharePoint Embedded applications through natural language. ## June 2026 diff --git a/docs/toc.yml b/docs/toc.yml index b3ba41deb0..03cc89f2e2 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -633,7 +633,7 @@ - name: 'Quickstart: Build your first app with VS Code' href: embedded/build/quickstart-vscode.md - name: SharePoint Embedded Model Context Protocol (MCP) Server - href: embedded/getting-started/sharepoint-embedded-mcp-server.md + href: embedded/build/sharepoint-embedded-mcp-server.md - name: Create and configure a container type href: embedded/build/create-container-type.md - name: Register application permissions From 664ec9d9b747fca85720966779e913a51f192ba5 Mon Sep 17 00:00:00 2001 From: Marc Windle Date: Tue, 14 Jul 2026 10:55:27 -0700 Subject: [PATCH 11/15] Rename SharePoint Embedded MCP article Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/embedded/build/sharepoint-embedded-mcp-server.md | 6 +++--- docs/embedded/whats-new.md | 2 +- docs/toc.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/embedded/build/sharepoint-embedded-mcp-server.md b/docs/embedded/build/sharepoint-embedded-mcp-server.md index 85bc3a3d4d..59027746c9 100644 --- a/docs/embedded/build/sharepoint-embedded-mcp-server.md +++ b/docs/embedded/build/sharepoint-embedded-mcp-server.md @@ -1,13 +1,13 @@ --- -title: SharePoint Embedded Model Context Protocol (MCP) server -description: Use the open-source SharePoint Embedded MCP server to provision and manage SharePoint Embedded applications from any MCP-compatible AI client through natural language. +title: Use the MCP server to build apps with a coding agent +description: Use the open-source SharePoint Embedded MCP server with a coding agent to provision, configure, scaffold, and manage SharePoint Embedded applications through natural language. ms.date: 07/10/2026 ms.localizationpriority: high ms.author: grjoseph ai-usage: ai-assisted --- -# SharePoint Embedded Model Context Protocol (MCP) server +# Use the MCP server to build apps with a coding agent The SharePoint Embedded MCP server is an open-source [Model Context Protocol](https://modelcontextprotocol.io/) server that lets any MCP-compatible AI client—such as GitHub Copilot in Visual Studio Code or CLI, Claude Desktop, Cursor, or Azure AI Foundry—set up and manage SharePoint Embedded applications through natural language. It's distributed as the [`@microsoft/spe-mcp`](https://github.com/microsoft/SharePoint-Embedded-MCP-Server) npm package and runs locally on your machine as a developer tool. diff --git a/docs/embedded/whats-new.md b/docs/embedded/whats-new.md index ede51d7112..88ee098e40 100644 --- a/docs/embedded/whats-new.md +++ b/docs/embedded/whats-new.md @@ -20,7 +20,7 @@ next: overview.md ## July 2026 -- The [SharePoint Embedded Model Context Protocol (MCP) server](./build/sharepoint-embedded-mcp-server.md) is available in preview as an open-source npm package ([`@microsoft/spe-mcp`](https://github.com/microsoft/SharePoint-Embedded-MCP-Server)). MCP-compatible AI clients—such as GitHub Copilot in Visual Studio Code or the CLI, Claude, or Cursor—provision and manage SharePoint Embedded applications through natural language. +- The [Use the MCP server to build apps with a coding agent](./build/sharepoint-embedded-mcp-server.md) article is available in preview for the open-source SharePoint Embedded MCP server npm package ([`@microsoft/spe-mcp`](https://github.com/microsoft/SharePoint-Embedded-MCP-Server)). MCP-compatible AI clients—such as GitHub Copilot in Visual Studio Code or the CLI, Claude, or Cursor—provision and manage SharePoint Embedded applications through natural language. ## June 2026 diff --git a/docs/toc.yml b/docs/toc.yml index 03cc89f2e2..9251fb8bad 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -632,7 +632,7 @@ items: - name: 'Quickstart: Build your first app with VS Code' href: embedded/build/quickstart-vscode.md - - name: SharePoint Embedded Model Context Protocol (MCP) Server + - name: Use the MCP server to build apps with a coding agent href: embedded/build/sharepoint-embedded-mcp-server.md - name: Create and configure a container type href: embedded/build/create-container-type.md From 5f501bbbbd00599a3f07c941233e3ee66479fe96 Mon Sep 17 00:00:00 2001 From: Marc Windle Date: Tue, 14 Jul 2026 11:12:21 -0700 Subject: [PATCH 12/15] Refine SharePoint Embedded MCP pointer Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/embedded/whats-new.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/embedded/whats-new.md b/docs/embedded/whats-new.md index 88ee098e40..e2a5404f00 100644 --- a/docs/embedded/whats-new.md +++ b/docs/embedded/whats-new.md @@ -20,7 +20,7 @@ next: overview.md ## July 2026 -- The [Use the MCP server to build apps with a coding agent](./build/sharepoint-embedded-mcp-server.md) article is available in preview for the open-source SharePoint Embedded MCP server npm package ([`@microsoft/spe-mcp`](https://github.com/microsoft/SharePoint-Embedded-MCP-Server)). MCP-compatible AI clients—such as GitHub Copilot in Visual Studio Code or the CLI, Claude, or Cursor—provision and manage SharePoint Embedded applications through natural language. +- You can [use the MCP server to build apps with a coding agent](./build/sharepoint-embedded-mcp-server.md). The open-source SharePoint Embedded MCP server npm package ([`@microsoft/spe-mcp`](https://github.com/microsoft/SharePoint-Embedded-MCP-Server)) lets MCP-compatible AI clients—such as GitHub Copilot in Visual Studio Code or the CLI, Claude, or Cursor—provision and manage SharePoint Embedded applications through natural language. ## June 2026 From c08572db5d60734830d4f75031b783a3cda11128 Mon Sep 17 00:00:00 2001 From: Marc Windle Date: Tue, 14 Jul 2026 11:51:28 -0700 Subject: [PATCH 13/15] Fix SharePoint Embedded MCP article links Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/embedded/build/sharepoint-embedded-mcp-server.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/embedded/build/sharepoint-embedded-mcp-server.md b/docs/embedded/build/sharepoint-embedded-mcp-server.md index 59027746c9..831e130c71 100644 --- a/docs/embedded/build/sharepoint-embedded-mcp-server.md +++ b/docs/embedded/build/sharepoint-embedded-mcp-server.md @@ -25,7 +25,7 @@ Instead of clicking through portals and stitching together Microsoft Graph and A The server exposes tools that an AI client can call on your behalf, grouped by task: -- **Provisioning and status**: Check your signed-in identity and provisioning readiness, create the owning Microsoft Entra ID application, and create, register, list, update, or delete [container types](containertypes.md) and containers. A single `project_provision` tool can run the whole sequence—app → container type → billing → registration → container—in one call. +- **Provisioning and status**: Check your signed-in identity and provisioning readiness, create the owning Microsoft Entra ID application, and create, register, list, update, or delete [container types](../plan/container-types-containers.md) and containers. A single `project_provision` tool can run the whole sequence—app → container type → billing → registration → container—in one call. - **Billing**: Pick an Azure subscription and resource group, register the `Microsoft.Syntex` resource provider, link a container type to [standard billing](../administration/billing/billing.md), and inspect billing classification or trial expiry. - **Scaffold, run, and deploy**: Generate a runnable reference application (a React single-page app with Azure Functions, or a C# web app), write its runtime configuration from your provisioning state, seed sample content, run it locally, and deploy it to Azure. - **Content operations (opt-in)**: After a separate, explicit consent, upload files, create folders, search, preview, manage sharing and permissions, and archive or restore containers. @@ -133,8 +133,8 @@ The **content operations** tools are also gated behind a separate, explicit cons ## Related content - [SharePoint Embedded MCP server on GitHub](https://github.com/microsoft/SharePoint-Embedded-MCP-Server) – source code, full tool reference, and issues. -- [SharePoint Embedded for Visual Studio Code](spembedded-for-vscode.md) – a guided extension for getting started for free. -- [SharePoint Embedded container types](containertypes.md) +- [Quickstart: Build your first app with VS Code](quickstart-vscode.md) – a guided extension for getting started for free. +- [SharePoint Embedded container types](../plan/container-types-containers.md) - [SharePoint Embedded app architecture](../development/app-architecture.md) - [Authentication and authorization](../development/auth.md) - [Model Context Protocol](https://modelcontextprotocol.io/) From 7db5b02fbf46cd3ffe7aa10d51001bf768654900 Mon Sep 17 00:00:00 2001 From: Marc Windle Date: Tue, 14 Jul 2026 15:04:15 -0700 Subject: [PATCH 14/15] Fix Set-SPOContainerType syntax Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/embedded/admin/create-apps-powershell.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/embedded/admin/create-apps-powershell.md b/docs/embedded/admin/create-apps-powershell.md index cb89873090..b0d6edf082 100644 --- a/docs/embedded/admin/create-apps-powershell.md +++ b/docs/embedded/admin/create-apps-powershell.md @@ -82,7 +82,6 @@ Update supported container type properties. ```powershell Set-SPOContainerType -ContainerTypeId - [-OwningApplicationId ] [-ContainerTypeName ] [-WhatIf] [-Confirm] ``` From c82c298b56237e7615be5e4bffbd2affeed2cf32 Mon Sep 17 00:00:00 2001 From: Marc Windle Date: Tue, 14 Jul 2026 15:06:52 -0700 Subject: [PATCH 15/15] Address SharePoint Embedded PowerShell feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/embedded/admin/manage-containers-powershell.md | 8 ++++---- docs/embedded/reference/powershell.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/embedded/admin/manage-containers-powershell.md b/docs/embedded/admin/manage-containers-powershell.md index 8c4a9ff109..5509aa1038 100644 --- a/docs/embedded/admin/manage-containers-powershell.md +++ b/docs/embedded/admin/manage-containers-powershell.md @@ -178,9 +178,9 @@ For compliance guidance, see [Apply security and compliance controls](apply-secu Consuming-tenant administrators can add, remove, or change a user's role on a container directly (September 2025): ```powershell -Add-SPOContainerUser -ContainerId -User -Role -Set-SPOContainerUser -ContainerId -User -Role -Remove-SPOContainerUser -ContainerId -User +Add-SPOContainerUser -ContainerId -LoginName -Role +Set-SPOContainerUser -ContainerId -LoginName -Role +Remove-SPOContainerUser -ContainerId -LoginName ``` For command details, see [Add-SPOContainerUser](/powershell/module/microsoft.online.sharepoint.powershell/add-spocontaineruser), [Set-SPOContainerUser](/powershell/module/microsoft.online.sharepoint.powershell/set-spocontaineruser), and [Remove-SPOContainerUser](/powershell/module/microsoft.online.sharepoint.powershell/remove-spocontaineruser). @@ -244,7 +244,7 @@ Use `Set-SPOApplicationPermission` for this scenario. ```powershell Set-SPOApplicationPermission [[-OwningApplicationId] ] - [[-ApplicationId] ] + [[-GuestApplicationId] ] [[-PermissionAppOnly] ] [[-PermissionDelegated] ] ``` diff --git a/docs/embedded/reference/powershell.md b/docs/embedded/reference/powershell.md index 5d7db0df07..34c8f61052 100644 --- a/docs/embedded/reference/powershell.md +++ b/docs/embedded/reference/powershell.md @@ -31,7 +31,7 @@ For task guidance, see [manage containers with PowerShell](../admin/manage-conta | Get a specific owning application | [Get-SPOApplication](/powershell/module/sharepoint-online/get-spoapplication) | `-OwningApplicationId` | `Get-SPOApplication -OwningApplicationId ` | | View guest application permissions | [Get-SPOApplication](/powershell/module/sharepoint-online/get-spoapplication) | `-OwningApplicationId`, `-ApplicationId` | `Get-SPOApplication -OwningApplicationId -ApplicationId ` | | Set application sharing capability | Set-SPOApplication | `-OwningApplicationId`, `-SharingCapability`, `-OverrideTenantSharingCapability` | `Set-SPOApplication -OwningApplicationId -SharingCapability -OverrideTenantSharingCapability <$OverrideTenantSharingCapability>` | -| Manage guest application permission | [Set-SPOApplicationPermission](/powershell/module/sharepoint-online/set-spoapplicationpermission) | `-OwningApplicationId`, `-ApplicationId`, `-PermissionAppOnly`, `-PermissionDelegated` | `Set-SPOApplicationPermission -OwningApplicationId -ApplicationId -PermissionAppOnly -PermissionDelegated ` | +| Manage guest application permission | [Set-SPOApplicationPermission](/powershell/module/sharepoint-online/set-spoapplicationpermission) | `-OwningApplicationId`, `-GuestApplicationId`, `-PermissionAppOnly`, `-PermissionDelegated` | `Set-SPOApplicationPermission -OwningApplicationId -GuestApplicationId -PermissionAppOnly -PermissionDelegated ` | `SharingCapability` accepts `Disabled`, `ExistingExternalUserSharingOnly`, `ExternalUserSharingOnly`, and `ExternalUserAndGuestSharing`. `OverrideTenantSharingCapability` can be `$true` or `$false`.