From 63eb5252bf49f6d7202057bcf3c22b3f4e18cdf9 Mon Sep 17 00:00:00 2001 From: Paris Mitton Date: Sun, 22 Mar 2026 16:43:35 -0400 Subject: [PATCH 1/2] unify google drive plugin --- .agents/plugins/marketplace.json | 36 ----------- README.md | 2 +- plugins/google-docs/.app.json | 7 --- plugins/google-docs/.codex-plugin/plugin.json | 41 ------------- .../skills/google-docs/agents/openai.yaml | 7 --- .../google-drive/.codex-plugin/plugin.json | 35 ++++++++--- plugins/google-drive/assets/google-drive.svg | 32 ++++++++++ .../google-docs/google-docs-skill-small.svg} | 0 .../legacy/google-docs}/google-docs-small.svg | 0 .../legacy/google-docs}/google-docs.png | Bin .../legacy/google-docs}/google-docs.svg | 0 .../google-sheets-skill-small.svg} | 0 .../google-sheets}/google-sheets-small.svg | 0 .../legacy/google-sheets}/google-sheets.png | Bin .../legacy/google-sheets}/google-sheets.svg | 0 .../assets/legacy/google-slides}/app-icon.png | Bin .../google-slides/google-slides-small.svg | 8 +++ .../legacy/google-slides/google-slides.svg | 9 +++ .../google-drive/skills/google-drive/SKILL.md | 57 ++++++++++++++++++ .../skills/google-drive/agents/openai.yaml | 5 ++ .../references/docs/workflows.md} | 7 +-- .../sheets}/batch-update-recipes.md | 0 .../references/sheets}/chart-recipes.md | 0 .../google-drive/references/sheets/charts.md} | 11 +--- .../references/sheets}/formula-patterns.md | 0 .../references/sheets/formulas.md} | 11 +--- .../references/sheets/workflows.md} | 11 +--- .../slides}/batch-update-recipes.md | 0 .../references/slides/import-presentation.md} | 15 ++--- .../references/slides}/migration-playbook.md | 0 .../slides}/slide-archetype-mapping.md | 0 .../references/slides/template-migration.md} | 13 ++-- .../slides}/template-surgery-playbook.md | 0 .../references/slides/template-surgery.md} | 13 ++-- .../references/slides/visual-iteration.md} | 27 ++++----- .../references/slides/workflows.md} | 31 ++++------ plugins/google-sheets/.app.json | 7 --- .../google-sheets/.codex-plugin/plugin.json | 41 ------------- .../agents/openai.yaml | 4 -- .../agents/openai.yaml | 4 -- .../skills/google-sheets/agents/openai.yaml | 7 --- plugins/google-slides/.app.json | 7 --- .../google-slides/.codex-plugin/plugin.json | 45 -------------- .../agents/openai.yaml | 5 -- .../agents/openai.yaml | 4 -- .../agents/openai.yaml | 4 -- .../agents/openai.yaml | 4 -- .../skills/google-slides/agents/openai.yaml | 5 -- 48 files changed, 184 insertions(+), 331 deletions(-) delete mode 100644 plugins/google-docs/.app.json delete mode 100644 plugins/google-docs/.codex-plugin/plugin.json delete mode 100644 plugins/google-docs/skills/google-docs/agents/openai.yaml create mode 100644 plugins/google-drive/assets/google-drive.svg rename plugins/{google-docs/skills/google-docs/assets/google-docs-small.svg => google-drive/assets/legacy/google-docs/google-docs-skill-small.svg} (100%) rename plugins/{google-docs/assets => google-drive/assets/legacy/google-docs}/google-docs-small.svg (100%) rename plugins/{google-docs/assets => google-drive/assets/legacy/google-docs}/google-docs.png (100%) rename plugins/{google-docs/skills/google-docs/assets => google-drive/assets/legacy/google-docs}/google-docs.svg (100%) rename plugins/{google-sheets/skills/google-sheets/assets/google-sheets-small.svg => google-drive/assets/legacy/google-sheets/google-sheets-skill-small.svg} (100%) rename plugins/{google-sheets/assets => google-drive/assets/legacy/google-sheets}/google-sheets-small.svg (100%) rename plugins/{google-sheets/assets => google-drive/assets/legacy/google-sheets}/google-sheets.png (100%) rename plugins/{google-sheets/skills/google-sheets/assets => google-drive/assets/legacy/google-sheets}/google-sheets.svg (100%) rename plugins/{google-slides/assets => google-drive/assets/legacy/google-slides}/app-icon.png (100%) create mode 100644 plugins/google-drive/assets/legacy/google-slides/google-slides-small.svg create mode 100644 plugins/google-drive/assets/legacy/google-slides/google-slides.svg create mode 100644 plugins/google-drive/skills/google-drive/SKILL.md create mode 100644 plugins/google-drive/skills/google-drive/agents/openai.yaml rename plugins/{google-docs/skills/google-docs/SKILL.md => google-drive/skills/google-drive/references/docs/workflows.md} (84%) rename plugins/{google-sheets/skills/google-sheets/references => google-drive/skills/google-drive/references/sheets}/batch-update-recipes.md (100%) rename plugins/{google-sheets/skills/google-sheets-chart-builder/references => google-drive/skills/google-drive/references/sheets}/chart-recipes.md (100%) rename plugins/{google-sheets/skills/google-sheets-chart-builder/SKILL.md => google-drive/skills/google-drive/references/sheets/charts.md} (57%) rename plugins/{google-sheets/skills/google-sheets-formula-builder/references => google-drive/skills/google-drive/references/sheets}/formula-patterns.md (100%) rename plugins/{google-sheets/skills/google-sheets-formula-builder/SKILL.md => google-drive/skills/google-drive/references/sheets/formulas.md} (62%) rename plugins/{google-sheets/skills/google-sheets/SKILL.md => google-drive/skills/google-drive/references/sheets/workflows.md} (61%) rename plugins/{google-slides/skills/google-slides-template-surgery/references => google-drive/skills/google-drive/references/slides}/batch-update-recipes.md (100%) rename plugins/{google-slides/skills/google-slides-import-presentation/SKILL.md => google-drive/skills/google-drive/references/slides/import-presentation.md} (71%) rename plugins/{google-slides/skills/google-slides-template-migration/references => google-drive/skills/google-drive/references/slides}/migration-playbook.md (100%) rename plugins/{google-slides/skills/google-slides-template-migration/references => google-drive/skills/google-drive/references/slides}/slide-archetype-mapping.md (100%) rename plugins/{google-slides/skills/google-slides-template-migration/SKILL.md => google-drive/skills/google-drive/references/slides/template-migration.md} (90%) rename plugins/{google-slides/skills/google-slides-template-surgery/references => google-drive/skills/google-drive/references/slides}/template-surgery-playbook.md (100%) rename plugins/{google-slides/skills/google-slides-template-surgery/SKILL.md => google-drive/skills/google-drive/references/slides/template-surgery.md} (86%) rename plugins/{google-slides/skills/google-slides-visual-iteration/SKILL.md => google-drive/skills/google-drive/references/slides/visual-iteration.md} (87%) rename plugins/{google-slides/skills/google-slides/SKILL.md => google-drive/skills/google-drive/references/slides/workflows.md} (76%) delete mode 100644 plugins/google-sheets/.app.json delete mode 100644 plugins/google-sheets/.codex-plugin/plugin.json delete mode 100644 plugins/google-sheets/skills/google-sheets-chart-builder/agents/openai.yaml delete mode 100644 plugins/google-sheets/skills/google-sheets-formula-builder/agents/openai.yaml delete mode 100644 plugins/google-sheets/skills/google-sheets/agents/openai.yaml delete mode 100644 plugins/google-slides/.app.json delete mode 100644 plugins/google-slides/.codex-plugin/plugin.json delete mode 100644 plugins/google-slides/skills/google-slides-import-presentation/agents/openai.yaml delete mode 100644 plugins/google-slides/skills/google-slides-template-migration/agents/openai.yaml delete mode 100644 plugins/google-slides/skills/google-slides-template-surgery/agents/openai.yaml delete mode 100644 plugins/google-slides/skills/google-slides-visual-iteration/agents/openai.yaml delete mode 100644 plugins/google-slides/skills/google-slides/agents/openai.yaml diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 73ba1a7d..d864e52c 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -40,30 +40,6 @@ }, "category": "Productivity" }, - { - "name": "google-docs", - "source": { - "source": "local", - "path": "./plugins/google-docs" - }, - "policy": { - "installation": "AVAILABLE", - "authentication": "ON_INSTALL" - }, - "category": "Productivity" - }, - { - "name": "google-sheets", - "source": { - "source": "local", - "path": "./plugins/google-sheets" - }, - "policy": { - "installation": "AVAILABLE", - "authentication": "ON_INSTALL" - }, - "category": "Productivity" - }, { "name": "slack", "source": { @@ -2573,18 +2549,6 @@ }, "category": "Lifestyle" }, - { - "name": "google-slides", - "source": { - "source": "local", - "path": "./plugins/google-slides" - }, - "policy": { - "installation": "AVAILABLE", - "authentication": "ON_INSTALL" - }, - "category": "Productivity" - }, { "name": "game-studio", "source": { diff --git a/README.md b/README.md index e9f3064a..af5b3fe4 100644 --- a/README.md +++ b/README.md @@ -13,4 +13,4 @@ Highlighted richer examples in this repo include: - `plugins/notion` for planning, research, meetings, and knowledge capture - `plugins/ios-design` for SwiftUI implementation, refactors, performance, and debugging - `plugins/vibe-builder` for deployment, UI, payments, and database workflows -- `plugins/netlify`, `plugins/render`, and `plugins/google-slides` for additional public skill- and MCP-backed plugin bundles +- `plugins/netlify`, `plugins/render`, and `plugins/google-drive` for additional public skill- and MCP-backed plugin bundles diff --git a/plugins/google-docs/.app.json b/plugins/google-docs/.app.json deleted file mode 100644 index 92885b0e..00000000 --- a/plugins/google-docs/.app.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "apps": { - "google-docs": { - "id": "connector_4964e3b22e3e427e9b4ae1acf2c1fa34" - } - } -} diff --git a/plugins/google-docs/.codex-plugin/plugin.json b/plugins/google-docs/.codex-plugin/plugin.json deleted file mode 100644 index 9bc14d44..00000000 --- a/plugins/google-docs/.codex-plugin/plugin.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "google-docs", - "version": "0.1.0", - "description": "Work with Google Docs using the configured Google Docs app connector.", - "author": { - "name": "OpenAI", - "email": "support@openai.com", - "url": "https://openai.com/" - }, - "homepage": "https://workspace.google.com/products/docs/", - "repository": "https://github.com/openai/plugins", - "license": "MIT", - "keywords": [ - "google-docs", - "documents", - "google" - ], - "skills": "./skills/", - "apps": "./.app.json", - "interface": { - "displayName": "Google Docs", - "shortDescription": "Work with Google Docs", - "longDescription": "Use Google Docs to summarize documents, draft edits, and organize written work through the connected Google Docs app.", - "developerName": "OpenAI", - "category": "Productivity", - "capabilities": [ - "Interactive", - "Write" - ], - "websiteURL": "https://workspace.google.com/products/docs/", - "privacyPolicyURL": "https://policies.google.com/privacy", - "termsOfServiceURL": "https://policies.google.com/terms", - "defaultPrompt": [ - "Summarize document, draft revisions, or organize written" - ], - "brandColor": "#1A73E8", - "composerIcon": "./assets/google-docs-small.svg", - "logo": "./assets/google-docs.png", - "screenshots": [] - } -} diff --git a/plugins/google-docs/skills/google-docs/agents/openai.yaml b/plugins/google-docs/skills/google-docs/agents/openai.yaml deleted file mode 100644 index 95b437ef..00000000 --- a/plugins/google-docs/skills/google-docs/agents/openai.yaml +++ /dev/null @@ -1,7 +0,0 @@ -interface: - display_name: "Google Docs" - short_description: "Summarize docs and plan revisions" - icon_small: "./assets/google-docs-small.svg" - icon_large: "./assets/google-docs.png" - brand_color: "#1A73E8" - default_prompt: "Use $google-docs to summarize a document, outline revisions, or rewrite a section." diff --git a/plugins/google-drive/.codex-plugin/plugin.json b/plugins/google-drive/.codex-plugin/plugin.json index 7c9459ef..240b9c21 100644 --- a/plugins/google-drive/.codex-plugin/plugin.json +++ b/plugins/google-drive/.codex-plugin/plugin.json @@ -1,28 +1,43 @@ { "name": "google-drive", - "description": "Search and reference files from your Drive.", + "version": "0.1.0", + "description": "Use Google Drive as the single entrypoint for Drive, Docs, Sheets, and Slides work.", "author": { "name": "OpenAI", - "url": "https://www.google.com/" + "email": "support@openai.com", + "url": "https://openai.com/" }, - "homepage": "https://www.google.com/", + "homepage": "https://workspace.google.com/products/drive/", "repository": "https://github.com/openai/plugins", "license": "MIT", - "keywords": [], + "keywords": [ + "google-drive", + "google-docs", + "google-sheets", + "google-slides", + "productivity" + ], + "skills": "./skills/", "apps": "./.app.json", "interface": { "displayName": "Google Drive", - "shortDescription": "Search and reference files from your Drive.", + "shortDescription": "Work across Drive, Docs, Sheets, and Slides", + "longDescription": "Use Google Drive as one unified Google file plugin for search, file organization, sharing, and Google Docs, Google Sheets, and Google Slides workflows.", "developerName": "OpenAI", "category": "Productivity", - "capabilities": [], - "websiteURL": "https://www.google.com/", - "privacyPolicyURL": "https://policies.google.com/privacy", - "defaultPrompt": [ - "Find a Drive doc and summarize the key points" + "capabilities": [ + "Interactive", + "Write" ], "composerIcon": "./assets/app-icon.png", "logo": "./assets/app-icon.png", + "websiteURL": "https://workspace.google.com/products/drive/", + "privacyPolicyURL": "https://policies.google.com/privacy", + "termsOfServiceURL": "https://policies.google.com/terms", + "defaultPrompt": [ + "Find a Drive file, then summarize or edit the right Google document" + ], + "brandColor": "#0F9D58", "screenshots": [] } } diff --git a/plugins/google-drive/assets/google-drive.svg b/plugins/google-drive/assets/google-drive.svg new file mode 100644 index 00000000..929ba2ba --- /dev/null +++ b/plugins/google-drive/assets/google-drive.svg @@ -0,0 +1,32 @@ + + + + + + + + diff --git a/plugins/google-docs/skills/google-docs/assets/google-docs-small.svg b/plugins/google-drive/assets/legacy/google-docs/google-docs-skill-small.svg similarity index 100% rename from plugins/google-docs/skills/google-docs/assets/google-docs-small.svg rename to plugins/google-drive/assets/legacy/google-docs/google-docs-skill-small.svg diff --git a/plugins/google-docs/assets/google-docs-small.svg b/plugins/google-drive/assets/legacy/google-docs/google-docs-small.svg similarity index 100% rename from plugins/google-docs/assets/google-docs-small.svg rename to plugins/google-drive/assets/legacy/google-docs/google-docs-small.svg diff --git a/plugins/google-docs/assets/google-docs.png b/plugins/google-drive/assets/legacy/google-docs/google-docs.png similarity index 100% rename from plugins/google-docs/assets/google-docs.png rename to plugins/google-drive/assets/legacy/google-docs/google-docs.png diff --git a/plugins/google-docs/skills/google-docs/assets/google-docs.svg b/plugins/google-drive/assets/legacy/google-docs/google-docs.svg similarity index 100% rename from plugins/google-docs/skills/google-docs/assets/google-docs.svg rename to plugins/google-drive/assets/legacy/google-docs/google-docs.svg diff --git a/plugins/google-sheets/skills/google-sheets/assets/google-sheets-small.svg b/plugins/google-drive/assets/legacy/google-sheets/google-sheets-skill-small.svg similarity index 100% rename from plugins/google-sheets/skills/google-sheets/assets/google-sheets-small.svg rename to plugins/google-drive/assets/legacy/google-sheets/google-sheets-skill-small.svg diff --git a/plugins/google-sheets/assets/google-sheets-small.svg b/plugins/google-drive/assets/legacy/google-sheets/google-sheets-small.svg similarity index 100% rename from plugins/google-sheets/assets/google-sheets-small.svg rename to plugins/google-drive/assets/legacy/google-sheets/google-sheets-small.svg diff --git a/plugins/google-sheets/assets/google-sheets.png b/plugins/google-drive/assets/legacy/google-sheets/google-sheets.png similarity index 100% rename from plugins/google-sheets/assets/google-sheets.png rename to plugins/google-drive/assets/legacy/google-sheets/google-sheets.png diff --git a/plugins/google-sheets/skills/google-sheets/assets/google-sheets.svg b/plugins/google-drive/assets/legacy/google-sheets/google-sheets.svg similarity index 100% rename from plugins/google-sheets/skills/google-sheets/assets/google-sheets.svg rename to plugins/google-drive/assets/legacy/google-sheets/google-sheets.svg diff --git a/plugins/google-slides/assets/app-icon.png b/plugins/google-drive/assets/legacy/google-slides/app-icon.png similarity index 100% rename from plugins/google-slides/assets/app-icon.png rename to plugins/google-drive/assets/legacy/google-slides/app-icon.png diff --git a/plugins/google-drive/assets/legacy/google-slides/google-slides-small.svg b/plugins/google-drive/assets/legacy/google-slides/google-slides-small.svg new file mode 100644 index 00000000..01d2c854 --- /dev/null +++ b/plugins/google-drive/assets/legacy/google-slides/google-slides-small.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/plugins/google-drive/assets/legacy/google-slides/google-slides.svg b/plugins/google-drive/assets/legacy/google-slides/google-slides.svg new file mode 100644 index 00000000..e6b59607 --- /dev/null +++ b/plugins/google-drive/assets/legacy/google-slides/google-slides.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plugins/google-drive/skills/google-drive/SKILL.md b/plugins/google-drive/skills/google-drive/SKILL.md new file mode 100644 index 00000000..1aa055a0 --- /dev/null +++ b/plugins/google-drive/skills/google-drive/SKILL.md @@ -0,0 +1,57 @@ +--- +name: google-drive +description: Use connected Google Drive as the single entrypoint for Drive, Docs, Sheets, and Slides work. Use when the user wants to find, fetch, organize, share, export, copy, or delete Drive files, or summarize and edit Google Docs, Google Sheets, and Google Slides through one unified Google Drive plugin. +--- + +# Google Drive + +Use this as the only top-level skill for Google file work. Do not route the user toward separate Google Docs, Google Sheets, or Google Slides plugins. + +Start with Google Drive for file discovery and file lifecycle tasks, then read narrower references only when the task becomes specific to Docs, Sheets, or Slides. + +## Workflow + +1. Ground the target file first. +- If the user did not provide an exact file URL or ID, use Google Drive search, recent files, folder listing, or metadata reads to identify the right file. +- If the request starts as "find X and then update it," do the Drive discovery step first instead of guessing the target. + +2. Stay in the base Google Drive workflow for Drive-native tasks. +- Use the base workflow for search, fetch, recent files, folders, sharing, copying, deleting, exporting, and other file-lifecycle work that is not primarily about editing Docs, Sheets, or Slides content. + +3. Route to the narrowest reference that matches the file type and job. +- Google Docs content summary, revision planning, prose rewriting, or section edits: read [docs/workflows.md](./references/docs/workflows.md). +- Google Sheets range inspection, table cleanup, data restructuring, or batch updates: read [sheets/workflows.md](./references/sheets/workflows.md). +- Google Sheets formula design or repair: read [sheets/formulas.md](./references/sheets/formulas.md). +- Google Sheets chart creation or repair: read [sheets/charts.md](./references/sheets/charts.md). +- Google Slides deck summary, content edits, new deck creation, or import handoff: read [slides/workflows.md](./references/slides/workflows.md). +- Google Slides visual cleanup: read [slides/visual-iteration.md](./references/slides/visual-iteration.md). +- Google Slides PPT/PPTX/ODP import: read [slides/import-presentation.md](./references/slides/import-presentation.md). +- Google Slides repeated-layout repair: read [slides/template-surgery.md](./references/slides/template-surgery.md). +- Google Slides template migration: read [slides/template-migration.md](./references/slides/template-migration.md). + +## Routing Rules + +- If the request is ambiguous between Drive and a file-type surface, use the artifact itself as the tie-breaker: + - Doc -> Docs reference + - Sheet -> Sheets reference + - Deck -> Slides reference +- If the user wants to find a file and then edit it, do both in one flow: Drive for discovery, then the file-type reference for the edit. +- If the user wants a Google Workspace outcome but has not named a file type yet, start with Drive discovery instead of asking them to choose among separate Google plugins. + +## Write Safety + +- Preserve the user's existing file organization, sharing state, and target artifact unless the request clearly asks to change them. +- When a task can be satisfied by a file-level Drive operation alone, do not load heavier Docs, Sheets, or Slides references. +- For write-heavy Sheets or Slides work, read the specialized reference before the first large update so request shapes stay grounded. + +## References + +- Docs workflows: [docs/workflows.md](./references/docs/workflows.md) +- Sheets workflows: [sheets/workflows.md](./references/sheets/workflows.md) +- Sheets formulas: [sheets/formulas.md](./references/sheets/formulas.md) +- Sheets charts: [sheets/charts.md](./references/sheets/charts.md) +- Slides workflows: [slides/workflows.md](./references/slides/workflows.md) +- Slides visual iteration: [slides/visual-iteration.md](./references/slides/visual-iteration.md) +- Slides import: [slides/import-presentation.md](./references/slides/import-presentation.md) +- Slides template surgery: [slides/template-surgery.md](./references/slides/template-surgery.md) +- Slides template migration: [slides/template-migration.md](./references/slides/template-migration.md) diff --git a/plugins/google-drive/skills/google-drive/agents/openai.yaml b/plugins/google-drive/skills/google-drive/agents/openai.yaml new file mode 100644 index 00000000..aad136aa --- /dev/null +++ b/plugins/google-drive/skills/google-drive/agents/openai.yaml @@ -0,0 +1,5 @@ +interface: + display_name: "Google Drive" + short_description: "One entrypoint for Drive, Docs, Sheets, and Slides" + brand_color: "#0F9D58" + default_prompt: "Use $google-drive to find the right Drive file, then summarize a Doc, update a Sheet, or edit a Slides deck through the unified Google Drive workflow." diff --git a/plugins/google-docs/skills/google-docs/SKILL.md b/plugins/google-drive/skills/google-drive/references/docs/workflows.md similarity index 84% rename from plugins/google-docs/skills/google-docs/SKILL.md rename to plugins/google-drive/skills/google-drive/references/docs/workflows.md index f627be7f..fd9b366c 100644 --- a/plugins/google-docs/skills/google-docs/SKILL.md +++ b/plugins/google-drive/skills/google-drive/references/docs/workflows.md @@ -1,13 +1,8 @@ ---- -name: google-docs -description: Summarize and revise connected Google Docs. Use when the user asks to inspect a doc, review structure, convert notes into prose, plan section-level revisions, or apply edits while preserving heading hierarchy. ---- - # Google Docs ## Overview -Use this skill to turn document content into clear summaries, revision plans, and structured edits. Read the document first, preserve its organization, and distinguish between summarizing, rewriting, and directly editing content. +Use this reference to turn document content into clear summaries, revision plans, and structured edits. Read the document first, preserve its organization, and distinguish between summarizing, rewriting, and directly editing content. ## Preferred Deliverables diff --git a/plugins/google-sheets/skills/google-sheets/references/batch-update-recipes.md b/plugins/google-drive/skills/google-drive/references/sheets/batch-update-recipes.md similarity index 100% rename from plugins/google-sheets/skills/google-sheets/references/batch-update-recipes.md rename to plugins/google-drive/skills/google-drive/references/sheets/batch-update-recipes.md diff --git a/plugins/google-sheets/skills/google-sheets-chart-builder/references/chart-recipes.md b/plugins/google-drive/skills/google-drive/references/sheets/chart-recipes.md similarity index 100% rename from plugins/google-sheets/skills/google-sheets-chart-builder/references/chart-recipes.md rename to plugins/google-drive/skills/google-drive/references/sheets/chart-recipes.md diff --git a/plugins/google-sheets/skills/google-sheets-chart-builder/SKILL.md b/plugins/google-drive/skills/google-drive/references/sheets/charts.md similarity index 57% rename from plugins/google-sheets/skills/google-sheets-chart-builder/SKILL.md rename to plugins/google-drive/skills/google-drive/references/sheets/charts.md index 96129950..d9493327 100644 --- a/plugins/google-sheets/skills/google-sheets-chart-builder/SKILL.md +++ b/plugins/google-drive/skills/google-drive/references/sheets/charts.md @@ -1,13 +1,8 @@ ---- -name: google-sheets-chart-builder -description: Design, create, and revise Google Sheets charts with better chart-spec recall and editing discipline. Use when the user wants to add a chart to a sheet, choose the right chart type for existing data, repair a broken chart, update a chart's data series, or reposition or resize a chart after creating it. ---- - # Google Sheets Chart Builder -Use this skill when the chart itself is the task. +Use this reference when the chart itself is the task. -Read `./references/chart-recipes.md` before the first chart write. The point is to refresh chart request shapes and a few non-obvious API constraints before building or editing. +Read `./chart-recipes.md` before the first chart write. The point is to refresh chart request shapes and a few non-obvious API constraints before building or editing. ## Workflow @@ -25,4 +20,4 @@ Read `./references/chart-recipes.md` before the first chart write. The point is ## References -- For chart-type heuristics, request-shape reminders, and official Google Sheets docs links, read `./references/chart-recipes.md`. +- For chart-type heuristics, request-shape reminders, and official Google Sheets docs links, read `./chart-recipes.md`. diff --git a/plugins/google-sheets/skills/google-sheets-formula-builder/references/formula-patterns.md b/plugins/google-drive/skills/google-drive/references/sheets/formula-patterns.md similarity index 100% rename from plugins/google-sheets/skills/google-sheets-formula-builder/references/formula-patterns.md rename to plugins/google-drive/skills/google-drive/references/sheets/formula-patterns.md diff --git a/plugins/google-sheets/skills/google-sheets-formula-builder/SKILL.md b/plugins/google-drive/skills/google-drive/references/sheets/formulas.md similarity index 62% rename from plugins/google-sheets/skills/google-sheets-formula-builder/SKILL.md rename to plugins/google-drive/skills/google-drive/references/sheets/formulas.md index bf0d0432..47674c4f 100644 --- a/plugins/google-sheets/skills/google-sheets-formula-builder/SKILL.md +++ b/plugins/google-drive/skills/google-drive/references/sheets/formulas.md @@ -1,13 +1,8 @@ ---- -name: google-sheets-formula-builder -description: Design, repair, and roll out Google Sheets formulas with better syntax recall and validation discipline. Use when the user wants to add a formula column, fix a broken formula, choose between a row formula and a spill formula, build a lookup or filter formula, or turn repeated logic into a reusable named function. ---- - # Google Sheets Formula Builder -Use this skill when the formula itself is the task. +Use this reference when the formula itself is the task. -Read `./references/formula-patterns.md` before drafting the first formula. The point is not to relearn Sheets from scratch. It is to refresh exact syntax and a few high-value function constraints before writing. +Read `./formula-patterns.md` before drafting the first formula. The point is not to relearn Sheets from scratch. It is to refresh exact syntax and a few high-value function constraints before writing. ## Workflow @@ -30,4 +25,4 @@ Read `./references/formula-patterns.md` before drafting the first formula. The p ## References -- For syntax reminders, formula-shape heuristics, and official Google Sheets docs links, read `./references/formula-patterns.md`. +- For syntax reminders, formula-shape heuristics, and official Google Sheets docs links, read `./formula-patterns.md`. diff --git a/plugins/google-sheets/skills/google-sheets/SKILL.md b/plugins/google-drive/skills/google-drive/references/sheets/workflows.md similarity index 61% rename from plugins/google-sheets/skills/google-sheets/SKILL.md rename to plugins/google-drive/skills/google-drive/references/sheets/workflows.md index ed053ed4..daa32739 100644 --- a/plugins/google-sheets/skills/google-sheets/SKILL.md +++ b/plugins/google-drive/skills/google-drive/references/sheets/workflows.md @@ -1,18 +1,13 @@ ---- -name: google-sheets -description: Analyze and edit connected Google Sheets with range precision. Use when the user wants to find a spreadsheet, inspect tabs or ranges, search rows, plan formulas, clean or restructure tables, write concise summaries, or make explicit cell-range updates. ---- - # Google Sheets -Use this skill to keep spreadsheet work grounded in the exact spreadsheet, sheet, range, headers, and formulas that matter. +Use this reference to keep spreadsheet work grounded in the exact spreadsheet, sheet, range, headers, and formulas that matter. ## Workflow 1. If the spreadsheet or tab is not already grounded, identify it first and read metadata before deeper reads or writes. 2. Prefer narrow reads and row search over dumping large tabs into context. 3. Ground the task in exact sheet, range, header, and formula context before proposing changes. -4. Before the first write-heavy `batch_update`, read `./references/batch-update-recipes.md` for request-shape recall. +4. Before the first write-heavy `batch_update`, read `./batch-update-recipes.md` for request-shape recall. 5. Cluster logically related edits into one `batch_update` so the batch is coherent and atomic. Avoid both mega-batches and one-request micro-batches. 6. If the user asks to clean, normalize, or restructure data, summarize the intended table shape before writing. @@ -23,4 +18,4 @@ Use this skill to keep spreadsheet work grounded in the exact spreadsheet, sheet ## References -- For raw Sheets write shapes and example `batch_update` bodies, read `./references/batch-update-recipes.md`. +- For raw Sheets write shapes and example `batch_update` bodies, read `./batch-update-recipes.md`. diff --git a/plugins/google-slides/skills/google-slides-template-surgery/references/batch-update-recipes.md b/plugins/google-drive/skills/google-drive/references/slides/batch-update-recipes.md similarity index 100% rename from plugins/google-slides/skills/google-slides-template-surgery/references/batch-update-recipes.md rename to plugins/google-drive/skills/google-drive/references/slides/batch-update-recipes.md diff --git a/plugins/google-slides/skills/google-slides-import-presentation/SKILL.md b/plugins/google-drive/skills/google-drive/references/slides/import-presentation.md similarity index 71% rename from plugins/google-slides/skills/google-slides-import-presentation/SKILL.md rename to plugins/google-drive/skills/google-drive/references/slides/import-presentation.md index 57bedd0d..16d556eb 100644 --- a/plugins/google-slides/skills/google-slides-import-presentation/SKILL.md +++ b/plugins/google-drive/skills/google-drive/references/slides/import-presentation.md @@ -1,13 +1,8 @@ ---- -name: google-slides-import-presentation -description: Import a local `.ppt`, `.pptx`, or `.odp` file into Google Slides, verify the resulting native deck, and hand it off to the right follow-on workflow. Use when the user wants to convert a presentation file into a native Google Slides deck before follow-on work. ---- - # Google Slides Import Presentation ## Overview -Use this skill when the source material is a presentation file rather than an existing Google Slides deck. The goal is to create a native Google Slides copy first, then continue work on the imported deck. +Use this reference when the source material is a presentation file rather than an existing Google Slides deck. The goal is to create a native Google Slides copy first, then continue work on the imported deck. ## Required Tooling @@ -36,10 +31,10 @@ If `import_presentation` is unavailable, stop and say the file cannot be convert - Compare the imported slide count to the source file when that information is available. - Use thumbnails for spot checks when layout fidelity matters or the user plans formatting cleanup next. -5. Hand off to the right next skill. -- Use [google-slides](../google-slides/SKILL.md) for general summaries or edits. -- Use [google-slides-visual-iteration](../google-slides-visual-iteration/SKILL.md) for post-import slide formatting cleanup. -- Use [google-slides-template-migration](../google-slides-template-migration/SKILL.md) when the imported deck should move onto a branded template. +5. Hand off to the right next reference. +- Use [google-slides](./workflows.md) for general summaries or edits. +- Use [google-slides-visual-iteration](./visual-iteration.md) for post-import slide formatting cleanup. +- Use [google-slides-template-migration](./template-migration.md) when the imported deck should move onto a branded template. ## Rules diff --git a/plugins/google-slides/skills/google-slides-template-migration/references/migration-playbook.md b/plugins/google-drive/skills/google-drive/references/slides/migration-playbook.md similarity index 100% rename from plugins/google-slides/skills/google-slides-template-migration/references/migration-playbook.md rename to plugins/google-drive/skills/google-drive/references/slides/migration-playbook.md diff --git a/plugins/google-slides/skills/google-slides-template-migration/references/slide-archetype-mapping.md b/plugins/google-drive/skills/google-drive/references/slides/slide-archetype-mapping.md similarity index 100% rename from plugins/google-slides/skills/google-slides-template-migration/references/slide-archetype-mapping.md rename to plugins/google-drive/skills/google-drive/references/slides/slide-archetype-mapping.md diff --git a/plugins/google-slides/skills/google-slides-template-migration/SKILL.md b/plugins/google-drive/skills/google-drive/references/slides/template-migration.md similarity index 90% rename from plugins/google-slides/skills/google-slides-template-migration/SKILL.md rename to plugins/google-drive/skills/google-drive/references/slides/template-migration.md index 00606b92..1f497c28 100644 --- a/plugins/google-slides/skills/google-slides-template-migration/SKILL.md +++ b/plugins/google-drive/skills/google-drive/references/slides/template-migration.md @@ -1,18 +1,13 @@ ---- -name: google-slides-template-migration -description: Migrate a Google Slides deck onto a target template. Use when the user wants to preserve source content while rebuilding slides from a branded template structure instead of making incremental in-place edits. ---- - # Google Slides Template Migration -Use this skill when the user has: +Use this reference when the user has: - a source deck whose content should be kept - a target template deck whose visual system should be adopted This is not the same as cleanup or template surgery. -- For local polish, prefer [google-slides-visual-iteration](../google-slides-visual-iteration/SKILL.md). -- For fixing a broken repeated pattern inside one deck, prefer [google-slides-template-surgery](../google-slides-template-surgery/SKILL.md). -- Use this skill when the right answer is to rebuild slides from the template, not keep nudging the old layout. +- For local polish, prefer [google-slides-visual-iteration](./visual-iteration.md). +- For fixing a broken repeated pattern inside one deck, prefer [google-slides-template-surgery](./template-surgery.md). +- Use this reference when the right answer is to rebuild slides from the template, not keep nudging the old layout. - When the content comes from notes, a changelog, or another generated source, outline what each slide should say before choosing a template slide. ## Required Tooling diff --git a/plugins/google-slides/skills/google-slides-template-surgery/references/template-surgery-playbook.md b/plugins/google-drive/skills/google-drive/references/slides/template-surgery-playbook.md similarity index 100% rename from plugins/google-slides/skills/google-slides-template-surgery/references/template-surgery-playbook.md rename to plugins/google-drive/skills/google-drive/references/slides/template-surgery-playbook.md diff --git a/plugins/google-slides/skills/google-slides-template-surgery/SKILL.md b/plugins/google-drive/skills/google-drive/references/slides/template-surgery.md similarity index 86% rename from plugins/google-slides/skills/google-slides-template-surgery/SKILL.md rename to plugins/google-drive/skills/google-drive/references/slides/template-surgery.md index a95d153f..ab8aff7b 100644 --- a/plugins/google-slides/skills/google-slides-template-surgery/SKILL.md +++ b/plugins/google-drive/skills/google-drive/references/slides/template-surgery.md @@ -1,11 +1,6 @@ ---- -name: google-slides-template-surgery -description: Perform structural rework in connected Google Slides decks. Use when local visual cleanup is not enough and repeated layout defects require batch_update structure edits plus strict verification. ---- - # Google Slides Template Surgery -Use this skill for structural Google Slides cleanup. This is the escalation path after normal visual iteration fails to converge. +Use this reference for structural Google Slides cleanup. This is the escalation path after normal visual iteration fails to converge. Start with local slide fixes first. Escalate to template surgery only when one of these is true: - the same spacing or overlap problem repeats across multiple slides @@ -13,7 +8,7 @@ Start with local slide fixes first. Escalate to template surgery only when one o - the user explicitly asks to rework the template, placeholders, or repeated layout pattern - the deck needs a consistent structural reset, not just cosmetic polish -For simple cleanup, prefer [google-slides-visual-iteration](../google-slides-visual-iteration/SKILL.md). +For simple cleanup, prefer [google-slides-visual-iteration](./visual-iteration.md). ## Required Tooling @@ -60,14 +55,14 @@ If any of those are missing, stop and explain that the deck cannot be safely res ## Common Surgery Cases -Use this skill for: +Use this reference for: - rebuilding crowded title/content slides with a cleaner text-and-image split - replacing a bad placeholder stack with a simpler repeated pattern - deleting duplicate or stale decorative shapes that keep causing overlap - normalizing title position, body width, and image frame placement across a section - duplicating a strong “golden” slide structure and adapting it for sibling slides -Do not use this skill for: +Do not use this reference for: - one-off typo fixes - simple repositioning on a single slide - content generation from scratch diff --git a/plugins/google-slides/skills/google-slides-visual-iteration/SKILL.md b/plugins/google-drive/skills/google-drive/references/slides/visual-iteration.md similarity index 87% rename from plugins/google-slides/skills/google-slides-visual-iteration/SKILL.md rename to plugins/google-drive/skills/google-drive/references/slides/visual-iteration.md index a7c9c3e0..a61ff8c3 100644 --- a/plugins/google-slides/skills/google-slides-visual-iteration/SKILL.md +++ b/plugins/google-drive/skills/google-drive/references/slides/visual-iteration.md @@ -1,15 +1,10 @@ ---- -name: google-slides-visual-iteration -description: Iteratively inspect and polish existing connected Google Slides presentations in Codex using slide thumbnails plus raw Slides edits. Use when a user asks to fix a slide visually, clean up formatting, improve slide quality, make a deck look better, fix alignment, spacing, overlap, overflow, crowding, awkward whitespace, or deck-wide visual consistency in an existing Google Slides deck or shared Slides link, especially when the work should follow a thumbnail -> diagnose -> batch_update -> re-thumbnail verification loop. ---- - # Google Slides Visual Iteration -Use this skill for existing or newly imported Google Slides decks when the user wants visual cleanup, not just content edits. +Use this reference for existing or newly imported Google Slides decks when the user wants visual cleanup, not just content edits. Prefer the connected Google Slides workflow over generic slide-generation skills when the task is about improving a real Slides deck. Treat this as the focused formatting workflow: work one slide at a time, and complete the thumbnail -> diagnose -> batch_update -> re-thumbnail loop before moving to the next slide. -Prefer this skill over [google-slides](../google-slides/SKILL.md) when the request is primarily about visual polish on an existing deck rather than content generation or general deck inspection. +Prefer this reference over [google-slides](./workflows.md) when the request is primarily about visual polish on an existing deck rather than content generation or general deck inspection. ## Use When @@ -74,7 +69,7 @@ If a dedicated visual-iteration tool exists in the runtime, use it. Otherwise, e - Prefer moving, resizing, reflowing, redistributing, or re-aligning existing elements over rewriting the slide. - If multiple boxes or sections are part of a visible group, align their headers, icons, top text baselines, and body starting positions unless the stagger is clearly intentional. - Do not default to shrinking font size, tightening line spacing, or squishing elements closer together just to make the slide fit. -- If content still does not fit cleanly after a reasonable structural pass, split the content across slides or escalate to [google-slides-template-surgery](../google-slides-template-surgery/SKILL.md) instead of repeatedly compressing the layout. +- If content still does not fit cleanly after a reasonable structural pass, split the content across slides or escalate to [google-slides-template-surgery](./template-surgery.md) instead of repeatedly compressing the layout. - Keep each pass narrow enough that the effect is understandable, but strong enough to visibly improve the slide. - When a fresh revision token is available from the runtime, include `write_control`; otherwise omit it and keep batches small. @@ -86,13 +81,13 @@ If a dedicated visual-iteration tool exists in the runtime, use it. Otherwise, e - After each verification thumbnail, do a fresh read of the current slide before the next write pass if more edits are needed. 7. Iterate a few times, then stop. -- Run at least 2 full visual loops per slide in this skill. +- Run at least 2 full visual loops per slide in this reference workflow. - Do not stop after a single pass just because the first verification looks acceptable. - The second loop must start with a fresh thumbnail review and refreshed slide structure so you can catch residual spacing, alignment, padding, and balance issues that were easy to miss in the first pass. - After the second verified loop, continue to a third or fourth loop only if the slide still has meaningful issues. - Only stop after the second loop if that fresh review finds nothing materially worth changing. - Stop when further edits are becoming subjective or are not improving the slide. -- Escalate to [google-slides-template-surgery](../google-slides-template-surgery/SKILL.md) when a slide still has structural layout problems after 2-4 verified passes, or when the same issue repeats across multiple slides. +- Escalate to [google-slides-template-surgery](./template-surgery.md) when a slide still has structural layout problems after 2-4 verified passes, or when the same issue repeats across multiple slides. ## Slide-Level Heuristics @@ -152,7 +147,7 @@ Core rule: - Do at least 2 verified loops on that slide before advancing to the next one. - Do not say a slide needs no second pass until you have actually completed the second fresh review loop on that slide. - Between loops, re-read the current slide structure so follow-up writes use fresh state rather than stale element geometry. -- If the same formatting defect keeps recurring because of shared structure, escalate to [google-slides-template-surgery](../google-slides-template-surgery/SKILL.md) instead of hand-patching every slide forever. +- If the same formatting defect keeps recurring because of shared structure, escalate to [google-slides-template-surgery](./template-surgery.md) instead of hand-patching every slide forever. 4. Keep a global style memory. - Reuse the same margin logic, title placement, image sizing style, and spacing rhythm across similar slides. @@ -191,8 +186,8 @@ The Slides connector exposes raw `batch_update` requests. That means: ## Example Prompts -- `Use $google-slides-visual-iteration to fix the alignment and overlap issues on slide 4 of this Google Slides deck.` -- `Use $google-slides-visual-iteration to clean up this entire deck and make the slide layouts feel consistent.` -- `Import this PPTX into Google Slides, then use $google-slides-visual-iteration to polish each slide with thumbnail-based verification.` -- `Use $google-slides-visual-iteration to make this existing Google Slides deck look better and fix the formatting issues.` -- `Use $google-slides-visual-iteration to clean up spacing, overflow, and alignment in this shared Google Slides link.` +- `Fix the alignment and overlap issues on slide 4 of this Google Slides deck through Google Drive.` +- `Clean up this entire deck and make the slide layouts feel consistent through Google Drive.` +- `Import this PPTX into Google Slides, then polish each slide with thumbnail-based verification through Google Drive.` +- `Make this existing Google Slides deck look better and fix the formatting issues through Google Drive.` +- `Clean up spacing, overflow, and alignment in this shared Google Slides link through Google Drive.` diff --git a/plugins/google-slides/skills/google-slides/SKILL.md b/plugins/google-drive/skills/google-drive/references/slides/workflows.md similarity index 76% rename from plugins/google-slides/skills/google-slides/SKILL.md rename to plugins/google-drive/skills/google-drive/references/slides/workflows.md index 21c2ecdf..581f462c 100644 --- a/plugins/google-slides/skills/google-slides/SKILL.md +++ b/plugins/google-drive/skills/google-drive/references/slides/workflows.md @@ -1,22 +1,17 @@ ---- -name: google-slides -description: Inspect, create, import, summarize, and update Google Slides presentations through connected Google Slides data. Use when the user wants to find a deck, read slide structure, summarize a presentation or specific slide, understand charts, graphs, or other slide visuals by combining slide text with thumbnail-based image understanding, create a new presentation, import a `.ppt`, `.pptx`, or `.odp`, or make general content edits in Google Slides. For visual polish on an existing deck, such as formatting cleanup, alignment fixes, overflow cleanup, or slide-by-slide deck cleanup, prefer `google-slides-visual-iteration`. ---- - # Google Slides ## Overview -Use this skill as the default entrypoint for Google Slides work. Stay here for deck search, summaries, general content edits, imports, and new presentation creation. If the user primarily wants to make an existing deck look better by fixing formatting, overflow, spacing, alignment, or visual polish, prefer [google-slides-visual-iteration](../google-slides-visual-iteration/SKILL.md). -Use this base skill when the request spans multiple Google Slides workflows or when no more focused Google Slides skill is a better fit. +Use this reference as the default entrypoint for Google Slides work. Stay here for deck search, summaries, general content edits, imports, and new presentation creation. If the user primarily wants to make an existing deck look better by fixing formatting, overflow, spacing, alignment, or visual polish, prefer [google-slides-visual-iteration](./visual-iteration.md). +Use this base reference when the request spans multiple Google Slides workflows or when no more focused Slides reference is a better fit. For slide-reading and summary tasks, combine structural deck reads with slide thumbnails when the slide contains charts, graphs, diagrams, screenshots, or other content that cannot be understood from text alone. ## Specialized Skills -- For importing a local presentation file into native Google Slides first, prefer [google-slides-import-presentation](../google-slides-import-presentation/SKILL.md). -- For visual cleanup of an existing deck, prefer [google-slides-visual-iteration](../google-slides-visual-iteration/SKILL.md). -- For repairing broken repeated layout structure inside a deck, prefer [google-slides-template-surgery](../google-slides-template-surgery/SKILL.md). -- For moving content onto a company or team template deck, prefer [google-slides-template-migration](../google-slides-template-migration/SKILL.md). +- For importing a local presentation file into native Google Slides first, prefer [google-slides-import-presentation](./import-presentation.md). +- For visual cleanup of an existing deck, prefer [google-slides-visual-iteration](./visual-iteration.md). +- For repairing broken repeated layout structure inside a deck, prefer [google-slides-template-surgery](./template-surgery.md). +- For moving content onto a company or team template deck, prefer [google-slides-template-migration](./template-migration.md). ## Required Tooling @@ -33,7 +28,7 @@ Confirm the runtime exposes the relevant Google Slides actions before editing: 1. Identify the target presentation. - If the user names a deck but does not provide a URL, search for it first. -- If the user provides a local presentation file, tell the user you are importing it into native Google Slides first, then use [google-slides-import-presentation](../google-slides-import-presentation/SKILL.md). +- If the user provides a local presentation file, tell the user you are importing it into native Google Slides first, then use [google-slides-import-presentation](./import-presentation.md). 2. Read before writing. - Use `get_presentation` or `get_presentation_text` to capture slide order, titles, and overall structure. @@ -61,11 +56,11 @@ Confirm the runtime exposes the relevant Google Slides actions before editing: - Preserve user control over substantive design choices. Apply a clean default look, but do not invent a heavy brand system or overly specific theme unless the user asks. 4. Route only when the job is narrower than general Slides work. -- Stay in this skill for deck summaries, slide-by-slide reviews, new presentation creation, small content edits, and isolated formatting fixes on specific slides. -- Use [google-slides-import-presentation](../google-slides-import-presentation/SKILL.md) when the source is a local presentation file. -- Use [google-slides-visual-iteration](../google-slides-visual-iteration/SKILL.md) when the user asks to fix a slide visually, clean up formatting, make a deck look better, or correct spacing, overlap, alignment, cropping, density, overflow, or other layout cleanup where the slide image matters. -- Use [google-slides-template-surgery](../google-slides-template-surgery/SKILL.md) when the repeated layout structure is broken. -- Use [google-slides-template-migration](../google-slides-template-migration/SKILL.md) when content should move onto a company or team template deck. +- Stay in this reference for deck summaries, slide-by-slide reviews, new presentation creation, small content edits, and isolated formatting fixes on specific slides. +- Use [google-slides-import-presentation](./import-presentation.md) when the source is a local presentation file. +- Use [google-slides-visual-iteration](./visual-iteration.md) when the user asks to fix a slide visually, clean up formatting, make a deck look better, or correct spacing, overlap, alignment, cropping, density, overflow, or other layout cleanup where the slide image matters. +- Use [google-slides-template-surgery](./template-surgery.md) when the repeated layout structure is broken. +- Use [google-slides-template-migration](./template-migration.md) when content should move onto a company or team template deck. 5. Keep writes grounded. - Restate the target slide numbers, titles, or object IDs before making changes. @@ -74,7 +69,7 @@ Confirm the runtime exposes the relevant Google Slides actions before editing: - If the task depends on how the slide looks, fetch a thumbnail before editing and verify again after the write. - If the task is to summarize, interpret, or sanity-check a visual slide, fetch a thumbnail and use it as evidence for charts, graphs, screenshots, diagrams, and other non-textual content rather than summarizing only the extracted text. - When fixing slide formatting, use a tight loop: take a thumbnail, identify visible spacing/alignment/cropping/regression issues, send a focused `batch_update`, then take another thumbnail to verify the result. -- Run 2-4 verified formatting passes when needed. Stop earlier once the slide is clearly clean, and switch to [google-slides-visual-iteration](../google-slides-visual-iteration/SKILL.md) if the job turns into slide-by-slide formatting across a larger set of slides. +- Run 2-4 verified formatting passes when needed. Stop earlier once the slide is clearly clean, and switch to [google-slides-visual-iteration](./visual-iteration.md) if the job turns into slide-by-slide formatting across a larger set of slides. - After creating a new slide or applying layout-heavy changes, immediately verify that no text, shape, image, or color band extends beyond the slide boundary. If the editor would require horizontal or vertical scrolling to see the whole slide, or if the lowest text sits in the bottom safety margin, treat that as a failure and fix it before moving on. - When supplying `objectId` values in `batch_update`, use valid Google Slides IDs that are 5-50 characters long and start with an alphanumeric character or `_`. Prefer descriptive IDs like `slide02`, `slide02_title`, or `slide02_body`; do not use very short IDs like `s2` or `i0`. - If you need to create a slide and edit its placeholders in the same `batch_update`, create the slide with valid placeholder ID mappings first, then reference those placeholder IDs in later requests in the same batch. diff --git a/plugins/google-sheets/.app.json b/plugins/google-sheets/.app.json deleted file mode 100644 index 68f525ed..00000000 --- a/plugins/google-sheets/.app.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "apps": { - "google-sheets": { - "id": "connector_9d7cfa34e6654a5f98d3387af34b2e1c" - } - } -} diff --git a/plugins/google-sheets/.codex-plugin/plugin.json b/plugins/google-sheets/.codex-plugin/plugin.json deleted file mode 100644 index 06e91f9a..00000000 --- a/plugins/google-sheets/.codex-plugin/plugin.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "google-sheets", - "version": "0.1.0", - "description": "Work with Google Sheets using the configured Google Sheets app connector.", - "author": { - "name": "OpenAI", - "email": "support@openai.com", - "url": "https://openai.com/" - }, - "homepage": "https://workspace.google.com/products/sheets/", - "repository": "https://github.com/openai/plugins", - "license": "MIT", - "keywords": [ - "google-sheets", - "spreadsheets", - "google" - ], - "skills": "./skills/", - "apps": "./.app.json", - "interface": { - "displayName": "Google Sheets", - "shortDescription": "Analyze Google Sheets", - "longDescription": "Use Google Sheets to inspect spreadsheet data, draft formulas, and organize tabular work through the connected Google Sheets app.", - "developerName": "OpenAI", - "category": "Productivity", - "capabilities": [ - "Interactive", - "Write" - ], - "websiteURL": "https://workspace.google.com/products/sheets/", - "privacyPolicyURL": "https://policies.google.com/privacy", - "termsOfServiceURL": "https://policies.google.com/terms", - "defaultPrompt": [ - "Analyze spreadsheet data, suggest formulas, or update" - ], - "brandColor": "#0F9D58", - "composerIcon": "./assets/google-sheets-small.svg", - "logo": "./assets/google-sheets.png", - "screenshots": [] - } -} diff --git a/plugins/google-sheets/skills/google-sheets-chart-builder/agents/openai.yaml b/plugins/google-sheets/skills/google-sheets-chart-builder/agents/openai.yaml deleted file mode 100644 index f0e352ef..00000000 --- a/plugins/google-sheets/skills/google-sheets-chart-builder/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "Google Sheets Chart Builder" - short_description: "Build and revise charts with better spec recall" - default_prompt: "Use $google-sheets-chart-builder to create or repair a Google Sheets chart, choose a sensible chart type, and use the right chart request shapes." diff --git a/plugins/google-sheets/skills/google-sheets-formula-builder/agents/openai.yaml b/plugins/google-sheets/skills/google-sheets-formula-builder/agents/openai.yaml deleted file mode 100644 index 2fd28291..00000000 --- a/plugins/google-sheets/skills/google-sheets-formula-builder/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "Google Sheets Formula Builder" - short_description: "Design and validate formulas before rolling them out" - default_prompt: "Use $google-sheets-formula-builder to design or repair a Google Sheets formula, validate it on a few representative rows, and then roll it out cleanly." diff --git a/plugins/google-sheets/skills/google-sheets/agents/openai.yaml b/plugins/google-sheets/skills/google-sheets/agents/openai.yaml deleted file mode 100644 index 4aefb684..00000000 --- a/plugins/google-sheets/skills/google-sheets/agents/openai.yaml +++ /dev/null @@ -1,7 +0,0 @@ -interface: - display_name: "Google Sheets" - short_description: "Find sheets, inspect ranges, and plan batch updates" - icon_small: "./assets/google-sheets-small.svg" - icon_large: "./assets/google-sheets.png" - brand_color: "#0F9D58" - default_prompt: "Use $google-sheets to find the right spreadsheet, inspect a range, search rows, or plan an exact batch_update." diff --git a/plugins/google-slides/.app.json b/plugins/google-slides/.app.json deleted file mode 100644 index 349847f4..00000000 --- a/plugins/google-slides/.app.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "apps": { - "google-slides": { - "id": "connector_6f1ec045b8fa4ced8738e32c7f74514b" - } - } -} diff --git a/plugins/google-slides/.codex-plugin/plugin.json b/plugins/google-slides/.codex-plugin/plugin.json deleted file mode 100644 index c8e313bb..00000000 --- a/plugins/google-slides/.codex-plugin/plugin.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "google-slides", - "version": "0.1.0", - "description": "Work with Google Slides decks and import presentation files using the configured Google Slides app connector.", - "author": { - "name": "OpenAI", - "email": "support@openai.com", - "url": "https://openai.com/" - }, - "homepage": "https://workspace.google.com/products/slides/", - "repository": "https://github.com/openai/plugins", - "license": "MIT", - "keywords": [ - "google-slides", - "pptx", - "presentation-import", - "presentations", - "template-migration", - "visual-iteration", - "productivity" - ], - "skills": "./skills/", - "apps": "./.app.json", - "interface": { - "displayName": "Google Slides", - "shortDescription": "Inspect and edit Google Slides decks", - "longDescription": "Use Google Slides to import presentation files, inspect deck structure, polish slide layouts, repair repeated template issues, and migrate deck content onto a company template through the connected Google Slides app.", - "developerName": "OpenAI", - "category": "Productivity", - "capabilities": [ - "Interactive", - "Write" - ], - "websiteURL": "https://workspace.google.com/products/slides/", - "privacyPolicyURL": "https://policies.google.com/privacy", - "termsOfServiceURL": "https://policies.google.com/terms", - "defaultPrompt": [ - "Inspect a deck and clean up slide layouts" - ], - "brandColor": "#F9AB00", - "composerIcon": "./assets/app-icon.png", - "logo": "./assets/app-icon.png", - "screenshots": [] - } -} diff --git a/plugins/google-slides/skills/google-slides-import-presentation/agents/openai.yaml b/plugins/google-slides/skills/google-slides-import-presentation/agents/openai.yaml deleted file mode 100644 index 317fd046..00000000 --- a/plugins/google-slides/skills/google-slides-import-presentation/agents/openai.yaml +++ /dev/null @@ -1,5 +0,0 @@ -interface: - display_name: "Google Slides Import" - short_description: "Convert PPTX or ODP into Google Slides" - brand_color: "#F9AB00" - default_prompt: "Use $google-slides-import-presentation to import a local PPTX into native Google Slides and verify the resulting deck." diff --git a/plugins/google-slides/skills/google-slides-template-migration/agents/openai.yaml b/plugins/google-slides/skills/google-slides-template-migration/agents/openai.yaml deleted file mode 100644 index ebf71fa5..00000000 --- a/plugins/google-slides/skills/google-slides-template-migration/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "Google Slides Template Migration" - short_description: "Port a deck onto a company template with slide-type mapping" - default_prompt: "Use $google-slides-template-migration to migrate this source Google Slides deck onto the company template deck. Read both decks, map each source slide to a template archetype, duplicate from the template, port the content over, verify with thumbnails, and split slides when the source content is too dense for the template." diff --git a/plugins/google-slides/skills/google-slides-template-surgery/agents/openai.yaml b/plugins/google-slides/skills/google-slides-template-surgery/agents/openai.yaml deleted file mode 100644 index d1a2256e..00000000 --- a/plugins/google-slides/skills/google-slides-template-surgery/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "Google Slides Template Surgery" - short_description: "Restructure repeated slide layouts with safer batch-update patterns" - default_prompt: "Use $google-slides-template-surgery to repair the template structure of this connected Google Slides deck. Start with one representative slide, use the skill's batch_update recipes instead of inventing raw request shapes, verify with thumbnails, then roll the pattern out to sibling slides if it works." diff --git a/plugins/google-slides/skills/google-slides-visual-iteration/agents/openai.yaml b/plugins/google-slides/skills/google-slides-visual-iteration/agents/openai.yaml deleted file mode 100644 index 6f4633c2..00000000 --- a/plugins/google-slides/skills/google-slides-visual-iteration/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "Google Slides Visual Iteration" - short_description: "Fix Google Slides formatting and visual polish" - default_prompt: "Use $google-slides-visual-iteration to clean up an existing Google Slides deck by starting with slide 1, listing the 2-4 key issues for that slide, fixing it, re-checking it, then doing a second fresh slide-local loop before moving to slide 2 and continuing in order." diff --git a/plugins/google-slides/skills/google-slides/agents/openai.yaml b/plugins/google-slides/skills/google-slides/agents/openai.yaml deleted file mode 100644 index 2c85b155..00000000 --- a/plugins/google-slides/skills/google-slides/agents/openai.yaml +++ /dev/null @@ -1,5 +0,0 @@ -interface: - display_name: "Google Slides" - short_description: "Inspect decks and handle Slides content edits" - brand_color: "#F9AB00" - default_prompt: "Use $google-slides to inspect a deck, summarize a slide with both text and chart/image understanding, import a PPTX, create a presentation, or make a precise content edit in Google Slides." From a3df6d99b0dded9012658364e7bf36421e64384c Mon Sep 17 00:00:00 2001 From: Paris Mitton Date: Mon, 23 Mar 2026 14:04:21 -0400 Subject: [PATCH 2/2] remove unused google drive assets --- plugins/google-drive/assets/google-drive.svg | 32 ------------------ .../google-docs/google-docs-skill-small.svg | 7 ---- .../legacy/google-docs/google-docs-small.svg | 6 ---- .../assets/legacy/google-docs/google-docs.png | Bin 26317 -> 0 bytes .../assets/legacy/google-docs/google-docs.svg | 8 ----- .../google-sheets-skill-small.svg | 9 ----- .../google-sheets/google-sheets-small.svg | 5 --- .../legacy/google-sheets/google-sheets.png | Bin 29569 -> 0 bytes .../legacy/google-sheets/google-sheets.svg | 10 ------ .../assets/legacy/google-slides/app-icon.png | Bin 25617 -> 0 bytes .../google-slides/google-slides-small.svg | 8 ----- .../legacy/google-slides/google-slides.svg | 9 ----- 12 files changed, 94 deletions(-) delete mode 100644 plugins/google-drive/assets/google-drive.svg delete mode 100644 plugins/google-drive/assets/legacy/google-docs/google-docs-skill-small.svg delete mode 100644 plugins/google-drive/assets/legacy/google-docs/google-docs-small.svg delete mode 100644 plugins/google-drive/assets/legacy/google-docs/google-docs.png delete mode 100644 plugins/google-drive/assets/legacy/google-docs/google-docs.svg delete mode 100644 plugins/google-drive/assets/legacy/google-sheets/google-sheets-skill-small.svg delete mode 100644 plugins/google-drive/assets/legacy/google-sheets/google-sheets-small.svg delete mode 100644 plugins/google-drive/assets/legacy/google-sheets/google-sheets.png delete mode 100644 plugins/google-drive/assets/legacy/google-sheets/google-sheets.svg delete mode 100644 plugins/google-drive/assets/legacy/google-slides/app-icon.png delete mode 100644 plugins/google-drive/assets/legacy/google-slides/google-slides-small.svg delete mode 100644 plugins/google-drive/assets/legacy/google-slides/google-slides.svg diff --git a/plugins/google-drive/assets/google-drive.svg b/plugins/google-drive/assets/google-drive.svg deleted file mode 100644 index 929ba2ba..00000000 --- a/plugins/google-drive/assets/google-drive.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - diff --git a/plugins/google-drive/assets/legacy/google-docs/google-docs-skill-small.svg b/plugins/google-drive/assets/legacy/google-docs/google-docs-skill-small.svg deleted file mode 100644 index ca9a8a12..00000000 --- a/plugins/google-drive/assets/legacy/google-docs/google-docs-skill-small.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/plugins/google-drive/assets/legacy/google-docs/google-docs-small.svg b/plugins/google-drive/assets/legacy/google-docs/google-docs-small.svg deleted file mode 100644 index 76e52bb4..00000000 --- a/plugins/google-drive/assets/legacy/google-docs/google-docs-small.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/plugins/google-drive/assets/legacy/google-docs/google-docs.png b/plugins/google-drive/assets/legacy/google-docs/google-docs.png deleted file mode 100644 index 578f383f9a2afb95d56ecb9f259c2db091dff34b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26317 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%0D+Lq4Pu>ES{pTA@S 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
    =~ssL*IBbkRCW&%fWh?bZ02 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 diff --git a/plugins/google-drive/assets/legacy/google-docs/google-docs.svg b/plugins/google-drive/assets/legacy/google-docs/google-docs.svg deleted file mode 100644 index dbfb29b6..00000000 --- a/plugins/google-drive/assets/legacy/google-docs/google-docs.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/plugins/google-drive/assets/legacy/google-sheets/google-sheets-skill-small.svg b/plugins/google-drive/assets/legacy/google-sheets/google-sheets-skill-small.svg deleted file mode 100644 index 50da7315..00000000 --- a/plugins/google-drive/assets/legacy/google-sheets/google-sheets-skill-small.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/plugins/google-drive/assets/legacy/google-sheets/google-sheets-small.svg b/plugins/google-drive/assets/legacy/google-sheets/google-sheets-small.svg deleted file mode 100644 index 0e34eb18..00000000 --- a/plugins/google-drive/assets/legacy/google-sheets/google-sheets-small.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/plugins/google-drive/assets/legacy/google-sheets/google-sheets.png b/plugins/google-drive/assets/legacy/google-sheets/google-sheets.png deleted file mode 100644 index e0f4fd0885cc97bd22fc3370d6850217a22e70be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29569 zcmeFYhg%cd_dPrbT@(}*P)e{MC|#r|C0GyzX`=L|ROv{s2^SOv0Tls7Ay`oi(1DW&AP72i`__%S5X1=n zml0xR20t(YV&UKio5w8^F9>2kO8cxIReDO|*fa$CTSQuHN%UEK&R8&n~8%o1rS7mUX_G z62hXx;F!keD1K;cb41o@+uJ!=`~Am$$KUV1J?B4RXX;q`(!Z8({u(Cyj{V;hNyl@a z_0Ms%DmtC{+VP^bE%kw!lra(cA$)o%sQX8=%9)z^l_Reb-X#RxByX$eo^oz7`2Ng$ z=NV;WXMaegg&hI5xH%vM{>F|NfWIL%mk@pP&{;M54G^0i{qO&~^ncc%`@#SD z#{Y!_-4FhMmmJ!iKYOTHojODiv$ z35WR;iK={6$T4i!-yD(7<_-WMGy->|gh1*qWK+R#2Yh|oj7~XqK{xtD?X&8&3E2qkH_-0K%ez-n)eJEn&791Q1A=+48pU=T z47Ca_qTTi~C<`~^J%gR5P0P#IfB64og$b1=Z-Nz2KVu&VL(q9pbt=|LB7PHFWvh*4 z;ag-L_fYgm>#F*Y`SX~R);_X_is8C=c2;J+^5cXIhUS--`E?vv8mDoS57%#AyssMc z`=U_qaen7}TPFj~=ohT)lJ*DDP0^}dp_Blr+h7&GQ8|JEIx-Sp&p+vGYWvlv>Q zOlWxSTIx9XdDvLsV1@yLxgI~bBR^SBX?&#;U$0P<`dq_J6an3eM?!O7JY{m=?M3tp zOd-iB*nK0$slh$3jOTNT{?=$=bPmBJ0(+6wCC)DcX|1d~zi;xTd|;GX4cpnMSvZWN z$L&X0_ckjVik&C3#ATPAPM zrI6G8tX}x7hTO9xiEaD(+N2+(mMP`R4E(r;*_C<6lIcRz@)g>Ua%;yOT4;OBqJ>SK z3gNtc$fc9tSsv*$*qA zX_gefBEnI3+r`|X%Hxy6`b#giABOxA@Y8sIAE75n!qcSsFD*Gdu;%19KpF!#cnI7e zqm^Z9QOS&yZnj#7TCF(d9=vX78$Z8G1qVMFKYW_Z!=x5qiFqXbJA!8CXq^yzlzn5q z=(=!~L8KOTJzHoR!-A~@crk0Ir*X9r-r3%nunOJ0>oPp}LL61MH{v@q(*LYXos4TE zJ9MkV-*VA0zu(Gv7=|8=GfA(+gxqP>!lI@kjgW6}Mo6gL0obkEGGwQf%u)njq^-x} z>U?FarQ8So%2=sIehNRmC@q@^1dcXdJhiB!)<31JPKK z4nd~#L`!NYMS*WL4(A%e``$0A9X$}mS+vqHDV@$4s^jll}e9sP@s$`f7Y;|Ffrb2T$Y;@7k9ZA zWi7*8JE;W~u`>Sqz-JDQO!P=OA0~LejP!R{VPd7xZ=yD3i|jvZ=@UeFV1Gg~$9!K{ z&GHRI6p%!G;DFRnWF6*9PJ%SQ9p6c-A?gFle2UTJ3b4`YNOYX{!Dm=;X+5nC{1U=H-pP71mnx!dLE^PB_Db! zmK)-y5_%YabH*Ej0&gIoODoewq5SaLh!&}5FGzijV3e|B)ka~5)eM-$Kss_aMb^m% z=p${rC6EaaNScPLzH2 zn{4a3xfS5&2Bl@Z$O*ei%|KzKXj9v96K%_bq>i4zr58I9m^8U&Ge$$3KKCqBQZO@t93p8B6(M53^8gM^pk0w*MxvW2z-N}lN*}bmK1-= z)uEAMKHQSq&C4$Y#l>lSZy2HtMwqNkkra9$IRKx#S?)DkOHNv)NRLp*!pXMoXBwte z3N7wMGqS}E%Sa&PC)C9d(3~g})c#BX98*HvXl&fd@bi==OPQRNP_hCok|w5wZ3WM` z-^tDp`iT)ryFSEx`1>#?W_ywh2XCf(205t6Yn0vhuv}UqTvg0b?$*SXsk6N#aFe|2 z6be&)qSc@))gXd=@geKJ<-x1VVS5P=FhL={(Q3ec5+I&{=IpJ(7(|mI?a5KK{f2MW?rgqw(MXomDXj74%WvsA_VkuT7E}CVxg@S>& z-KBX~lAz8`M32M2G$FWxgt}(3I7gy+Rx1Q|w&gR#>^So#uiOd~ocs2ZvDoMhL^7?D zogPM<7A*73xPTZEfUxp8Na%ZO&z88Vi9q9CMNmc5uC_SrKIOEP$Nu4wG=GDyK9Vvv zY&2OmxwB)0ELMUb*EFy%eU4!CZ+RP)!5EU`z4F~#@hLW*%pbH&kS^Ig!c|J>D0h_T zzu4*oF)X24>7`^D2&a>p+HT4mm7i<9+xJG2mgEeL4Lz+*_{r#>D~hP}`oj3zLhcy$ zsVJ~~Io!cQiU;nXugZP4?E9-u{B?UPO_FSjLrnf$GN+yD+f;YgtCp*V4cycEbc%BUX1B2n7OZN5c z!Iva8Dmr|A#PmNoR-F7GAi8R+l|i@)#2(m~56F52eFG!0%fl(ZnL{ok(oU4blRoA* zvqNr4!c{?bY-`ydIS$ZW%q7m(rYnBXN?1Xsx38+k){f0%)tYS#WQv8!)7YxN3D*bK zPh%%1BH1lH1s@&`F-(Na?AQ+D)s>G*9%NN>JqA_%ov!}_ulOIEd~D4(+%v^!VNj%d zNsKL8p-&1C%0==vK~AZ&t-S=_`1SDtNH1F7QW9R>J`X+iz)bh>w__i%<)|tNj4fYJ zXSfsixcL~g{0V&ftAtZx(b<+rJ+ebbW@Z}5f8E0f%ed7SE2F1#DCJ-^buX}5obrdh z5GMQY9|=F5k(usGz+!x6N8*Ny3#^cD2*|3_;54UON>iu?soz~6CYC;LwaC6RAJp`> z&M3Y33huE*R|nTv5-1m*z;Nuq66BFsogx!lPT|X zL~*7FHM0a^H6LxPU+A&Xcjc%eh2hhOu^G8YNazm*C4B6<(!ofv+yM78mM>81%0aL< z)XNBsUCe}_*M`in{8RXt1AL#O#b(fV(BrEpqDNtpWtApcDH|%~=B^ED{P^hnS;#yB z3EfKc+#vm-<+GmW*YIhp;LPYmG;@s=klSv7txp3xPW|%f!RSD%3J+W_C--IhpdW&G zb9bqWUOf-C&EE^YvEvEJb8;M=I}JB;mwqc%AKSAp=cPLfDJ$!lhWpTf6vF%{gzW^Y z4NT?7U5QLTS1)-}=;_9z^@P`lm_Z(sR0nx1<0*4m#z%B_KPIuo%_4T)HB%ed5|~m3 zoRR~ey9G*;X;yZbPKg+q}v;3Z(xUK_S%h8z6UaPh5uiXz6A>4#*?QfVf@{bm_$@VVQ4-y4Obh0aI?C+R?o|1Ud za+$L0V4+9?G(8I{;U933D`{fs$8pZhj%qF;fHd5X30F;mg*m{cE~UvK?r~&mUzml( zjFRQ(^@Sxr0UGTS*TlXD_k06hBv_3RzsR#wP!g@K2`Vb&s~d2K@~OQsNIioz}#*lB<>Q4StQQ z^^NZryJu$sZV^&B0AWx5lBATOLRR06TBJ%=1pef*{w#_Z36ZPxN@IMB1E9kcY(}f6 z^h9$+K1MUYUOV`!{p8>eal}t{h6@PjHK-HDpX8Z8eZ$31!+L~q58*-u`H6ZzP8^3c z;T!}#0?#XcTdbB47RvSdGCWEOK2=+->5}514GnS$9RfQLcAUOD$F2PJ9PXNCOJ@p9 zy!~`~9(v#Dj0E)@fHNUsa1)cWbGvt_FE#nVy*Ah?RW&%Fwp!X(9uNgTtLW9(H-L}< zJT0#0T#I36-m-^3s^nE~u0T?iJEp-JY|zUW3D8)xsep9MbeN58_*ECYdxI9e${ZOT zit?v4WKp@&D95p(U=4HqL5HNlHOk#3p}VHEQO5kPXwP4aWJ7(V@;63kj$Rne@2c*1 z*k5}+4g2K8l(`ZZ{Z|VBSFlKDfHvPAhajG=gq+UAurjim)#k3TYB87fy0@TIT|S8% z6A2RZ+zBSA>avehqQOG;r2^ugWXX4}WygT~-G2i~&4NN{`3z*lbMdziGIPfwy;G3T z*g*^Pk)gy{@$_!7cN?&PiI%~LfVFdobD%cXA)3qD*%XAQ6&utZ0!($(Th7*a4~+>v zmCI4+1s{w$0WSxERr5YEl6&m+kwf>8&}JA|^qC~fNiE`g2h^s)#h?P^&}gK!G(Uh_ z(ZKvf5UG1LWeQbyc(NBT$?{CPM~Xw|8M~}+$5uvya|zT(mT#B_2T|OD%LCl^c1-}1 z+5y4(Wtt__`<=;bt+*Cm`hD#Be{hXqzPeT0d2nB6i1m0FMI;OnS6KJ zemBoUsk9U@iKG##CuMrYj6~W?nWsll%H&Bh<&h0pH)PxDRDSS?RN`#8nXf6*rCy74 zQy*FP5k$7LP|Jr;h<1BWUe7TD&dt={@N&ZN^1d&F~Er2e_@N4gzXF;(F+vB&GMm zmrAEuSgPA@#HtybD~QEBg)%rNjSETxbs3WA z+P0gvhktb6Pya5})Zru3PpQGm5R}wbR=~y2;NvI8afQtm&+$pzyQu~vKS|bXYgrRs zy7aw+q}0xxNU^%rIoP}o@A+GJ-+Hy09}FBbDfayToH!gxI|2NXd#*WQN`fkKJT^y6 zR16A7o%t`0c_(kxPH#ZvByfNRI0uo(*o~5di351IJ73X@YH*rMsf}OcAiK} zCnuOK=i0Ueqb_J+`{fXp&7;r!&B1+_m>{*`E56wTvX6066rW_Hpk?L)cNm`;>FymZ ztUEU!xhWDDLmOnHuJ6v{xvs<>7Y|u+c=jhpA{0==Tdw_6M((@lXv3$J<{unL@7&^xT+#J7oX_LsN zyllUXvwO72ooxs*wOR?6(8QA*F37qAn22Rdd6QVMn<2YDs(h+^)->3~AyN}d|Gf19 zNXT`!di2|ozz8^BPJk94Gnxn=-2w4Gnf2QN@OfY*aXQLqT#BNa*yf|ZDJ=2O9?3RV zt^3&7Y3-_3BnAYCyEBUrP^V|EV)o`KeWU3&$Y|V~ zBwA90hv`TE{kHYpc?giRHm(1ePErHl2irUpttHGt;FQ+OcX`L#@Q23H{n4=8ujL9= z(@e6Z%pBDj7iFd;}r@TqGD_3`}DF+tW*lA+ErhTsgvJGfu~ zfIR4~p2|g&YFNT}-9;~dlC&6U>oj9@t8W2JSvj@7Xa%HJNqX2^uYv1X(cbEo$atDgw+C0x_Qe88S{09Gf#cY<$odoJ=*A~rTu6PJpGpH?u+ZAZOwK1rY3?~ znE)^gmK`KO?+;|}09Q8k?FUqs4L7mtv|o(=D(fQa{^M@o+d=VBj7CCfwWZt-#i{P7 zeAxT`eWZ(9qgem@ZV*k1Ib3PVg?WD}9H3ah4ZQVuY~sJdjYq>4lLq8hy*e%u&Q*z# z>}^>j4;s^xTva$YYk@NqtCTfRZ@_A!0Kk@?AQ^*)p#tPxOTXOFU2NNr&T#?SSh*;u zZI9UW@_;o}LBzKBTvjcTp}eQ!(4hzN;r#X_50-?#n$h9u3{!C$l!c0CB0%@>cm}py z9|70rEh!66SEk;s#C!5+zWxXa+hFlkScoZ?nYE} z*xoHv-DgMKjUTG#a3I*T7$WN?OTf2-HlbSd=7Xw{9*;-!7^SXUR5R9y8wyfK=&72@ zJ43Grx7qOiC05At`#`07GI7{{9Y7J#M{7rhocP8LFDHR;JF$FDos81G*~tXeSgs2A z-9zgkBmQ?+nyR|YIP78%FP4!<6`Kv9hUw3O<&0_j-s@Kz}DCuoWn2P3Tn)X9} zv(G7g=kW|Vm=jf(6o<$C0r1E#5s<=A>?zYDW~A|9B>)dWsyhHSru9+-6OQ?@{NQf@ zynJ_uCR!VMVxh31EVr`EM45Iri@nl>`uLNRu$l=nc=IXP-)oQn!}j?1W+UJY=N8%9 zo&`5g%*k&TPHy)E-Wg)UGB5)-7*JC`bm$pa#_E{B0|Iq^9Q zoPzZ82S-*KI$#fnU3eE{@GSq!fDhb?_EW%W&Fyo+pV#~2ZhA^l=diH|hW zu>AH|7~w|L!tVDnuF;U2;E=xGE*o`Yq}7(@OcA;os!RIe{>dWi z(SwG}p6>2qBPIj^pm@`)SoMr6e&sRt4THXg8$nJ<0H{*M{%6}2=olmZQL$UK@deH> z_>x7*!}2vu-ZA_h=EGIe=iu1@%%pE{j%WG-uMi6+>o_ZmfZ!z;msU+|(L`-f5ks0g z$W;Rr_A3r?ML6suI5#ma9xL`p|X)8Kfsv}#`|pZh4)BhY6j703KC%1+?H z2G>~RhBI=g%nO#u%7Fr_{H~@Q*?p~A{2^O>SL#Fru5AfMOh18{Yx|Oy>iKq5UkncN zbq5SrnD;FE=pjN(1Lv| zs|-~~bR+QXo?RWj0KM`iZEIoUfL9Pi0dwm9Y68Dr8%0PA^G-j4c5V)mCI?sRQc{9) zFY@ZRAMN9L&h)pma^NRppB@sT0;YCLuQ%~IJM7?Gzl7=Z6I2|J@6Ll0u9kc5P|1%< z4y2J~_&04>&pwsxrE-n6vaE2VF+!z42YdN4yLB%K)FG2S%+t(r;W6*yRV}E>BdF}r z=iQHwW6jDvIXbzll`PL|VJnIz7=)qr2O!Jb@Fq=oF!z2i3T?oM>oSNMA<9E%ss6j+ zy*3WzMkxo{0}|ohPfJmBelk7iUS}nE9?@K;1$jRK(K}nJxM=0%MON6y7>h(DpRUTv z%&zmTa5Px3+@gQG_>#Sk&2aPNG~wxkdwa3doL&ZkZg0r9oHK#B7}|4z`(Gp0s)c z0U{U&)*6WgIY_M$*gEjr;zvF5YNAfcH+{z9@d4@etK9fdvSDzMD56lKELVQ1`Uk}3 z*z(FS0eb(Q)T{wkD4L{}p^WHSo&}KD=AKIu$wW4I)?prAx@^8F#hGthQh4%xds)Jm z{@TEMTre+YeMT$yqWN>8%DVSf>B-|b_l^6AyTJvQcI0rh-*#+z!vaDh&-_nMnE9Pa z4JDJPT-NR5(RYy4FW`B2s|l9&aM1U@h-n|_sdI+Mu$u&E?k1!+GwbIU-pBAqq_?Ve&>saZjPIgMDVcC zNX5RVj{`O#F_lATugKs&atX%)G(NQ;6Hr(XA@8@2)1-9B=r#U_2>W#8l(R|ZarAbf z-{jXF%*n|P#nAoP%9FT&r60V<>Z?Zlk7d0cTf&$n!6>=6!vbT|ORdiu^FX1mGXP=& ztx;E9<@(qT!I#wBc3n+HyvJ;gJ{q%JyP_p{OYVe>45GD*J-IRzUVu&_w=h z%BGjfA$>AtVk>C1amLxqGicH+nA&OetWhxV?9Fg`>vAU6t_4=w_}#y>0^z6J4SAS@ z$1MSvxg>#To)l>r2*$Cc5$Q!#^VE>fG&iOOo)5gdkC{RdBh^LA66>3-uPEKyYi`hP_-@{7NFCgRr0OfcC*^$AqY6CdcCI0n< z#W+FaZogXhG6L*2=Pu_i!ga!Iw+Po$Fa$6=C3mAdP{KCW@*X)W(@08Pye zj*RtSQot4qClXu&uT*U&Lva@n*alz%rpy1OTuhNSwg?Y0j|rrfM|tdk}E1f$T*>^qTW@wY82bk21<+wH~auJ<#ftndAxX)%mTM+X+c6tO>?luFAM z*s0|up)6Mb{ZkWr`#w@xRt(Xc=cp%W25Etepcpy%-^;;#ZJ+bxqydVH1l1i!UDlh< z`?OhR$XGD$Q#%Va=y6Gg^&K5J+<9V*!7)h>L@B`ZoIfK z&(Ola`f#T+`@y`c36CT1Cm3_HH>&ua9W<2Nu$yHGwRp^wtMFW*2mNAc{3>N#d&GaGa+V;W%Wf=igSO`MY9#suE$FkcfL%BCg4DMS zba{}{2s|}ue1c&~s2CaDub9+X=~%Z5-_I z?3(p)SiV^%YrL{z{*&9JhA0^V!QS zHGM+63TUrh8-?SiFl~pYS|McNdOR`hxdAluL?gv&E6rU0?wgy=xjC zX>Stn@0vDyU3^tx>6vKO86#e08qUp^xw2n&jW1y7wtzJ>uEFipo?P9o6YWU)$s!G;hB1T%f$75<22lf_N>bg{6+=iCrwMVD z^O;BarTl3zQ2*(CyKd?9OQ;3hY;A>Fp-NJ$UMzZww|fd#iLTyBbKf?;MN%v$Xxjdr z%HtF|e*jFA!pXlRUCJ1%Pq7CGn15u{tM9^>C`mA?o#8UKWv;qfgHajar2$Cj{t+ME zkG`J>b-N;s@)m+u<@33|SQaX@9}}Yk!GF*|>ZAHNp-8frOK7^HV@QGw{RNuTtvgo# zVQ!NNALLciM_Os9y~s(5uv$3ZY4`2w_>HPzp-V^9Vt_R8^4Y~HR(Q*4TD&YrA8(_} zqF8=3ImBc}BQ$Hj!=P-)51+cZ$2C;cs4eZ@mZ}H z;$#`aQ1$1JD&?P#HKNE70>Qw`Gv%;J|saub)v9))xz58Lw zn%5uCk@*0b47x>gVX7MPHZq(HYUMwV$jdTed#Qd!wtAymvpdtSRnVc+jUNSh zm=4q8x}$pAI{+O`fF}Dl7J`IaC=(cHo=*SOE_?)##tNJG1QY8CYF}5R>vpk+Ir0*a zPTC*-huJTX`}1o#;2jm_!qppk03!8fI7Nqs?=+buyFPrU7uCQ6ag8H_zO4p(_8 z&c`<0+eZ4y(*KuX|HKT53vWHyPH>q{@k2-fR26a*v?CyS-W^5lZ{D+*N$Ga%#^ z*vX~3*LvfaaZ~>hLO;wv99PDS>#<3{%VspzQ~lr;ey-Mjw}7<_(gwG7-55jPAzMk0 z6HtlfNIh98WSSkl9-dx9;WNzC$%MD^D(`jv&`{JCc1gr`T-?*Bh;wno2EpBOyp{t3 zk^^gqzih``8ON}h^3n#s`VmQ>EkvJ--fGR0cjR3Ft&7_y3X6QKGTy#jO)k@n`YT?9j!C6a@|>Y z<)F0ohrpu8325n&|7hJ?57-MsA7s~V-m3@{00M;hSTZEhcTk&o=$l}PxW&3`4Q7iz zOF@^d<)^Jh-J2}ZA}G^GXwKI27!h&rAbwGV<_brH)WOjg5WIxE(szVtI@vrAx-N|4ps`_^;6gz_d`% z+UnPz9cHlIZhb0t5JJ+8>Ty2gr+Wn4Vlb)VI6r7hU=(#{Q+!bk`YLzU&tL#?JGxy9 zt0ODcIJ+DVLmr3#R=B|V5!wCy7sKPNm0e8*;^!2e)<2UR#CU$IEdAMmr(NV+`Ff}e z(739SEeSF^Y-BSJhdYIEHzq=^#akb5u(un6RMckMLpW6fmz-6Z3;~_{$mtS9N7^@C z700z)i(ckA`nA1mQByY zqd)ALYA~~xDlL9y5P48QXZ~;t8rO zO5+%rf$dE364leV5sn;lHa*F8{-tBWRo^RJZQaeU`A!*Og@HD4HhVSP7u*{G#}|yh zTS6&pm@xvmGMHZ`mHPGT(?3s%RQJGbcpaYAOZnHlKdZUseqtORihvc@`PV<=6a$3S ze8*PBH!gRbicaMJVC2tb4@P_F-N^VF^Y}G_;>SUZhEhud@pq3=K<6hfSTqBxH693W?Y*unJuXl%PJT(z_j9mH{{S(hB*U`s6@ zKG1FoVqEYj#SHMC!& zL=h*^I|Ne7_;CjBB#>l<*BJ;0s5?G;n!7ddSCc(B?FmZDNEC6m;8$;cCxlHdW`@+l z*JWuRE>>f9fef)FPZ@8<9BTyyr;|WBIW-u6$2D; zP@(X-HjC}^Q0@GzPKor`Uz|>@7QA7+e$)eu&E2GDBv*E!nh@DQuTwJPm{SpOVzS)` zX#q&OW$`z)z&3$S-nCF%z4fUfo_S@tCqwKRJIsEHg3CPAXk?k1m^v+E@@S<7tBpEc zV1Yf7b`C7**`P}8DKm>?gW1P@F(S@HQo<-&z}gb&0(^6dHk(9UgT#A;AZs?DA&&e` z|9BtJ82P6dlZ~9~`*Uh+FRi4W#?~%@8+Z9XnN)~LApi%i`fp2;oOI>VB9JPi8veqH zduLoDz!|QB9K@8$gK=>Lz8)-{qgDcKa&~tUOo}1oSJBy=f!L4>3b8SC@tPYx6 z9Qpnn31P*KPzFCQ6MF(+ftR>R0!kd=3*?yS&;!qHCl(~JZcMCQb>N81HKmgFfUv?2 zgq3+y^gf0xH4L7^)%S`Te&oQh`)U}V8dN>m+^YeTvvi_25dpJUIHCoLxU4VkPu)+w zexp_vo*wy5VlzI@&~=BNCpT$PeKqi1R#?FEUCiS&#@`Q(6Ce{4r1?ekY(6gA@{IX7 z>GMbo<5iNjFOvJ=S1+2wdp10O9AeK(?$pcuEP@FM=h)UZ%sFTLC6 zHmnws6O=oj5r2jrdUFmjpaeoxOUfa z<^n}3X$_;A6>vy$;}O3EVp~TN%zKP#zXvsk4r#n@;|2#nZ%^PXCI6rn#=<;}(edtN zK5VI^)(RqCW$HgeDz7oU&}_quJ}NP?IxH_kYNyb8O5h80S*f!2ROd4koYngpOcrsv zk1I`JUnI_+i2l7p#Jt5o;y92KY9na1fA)I8(-3TH;jqS#G)7*H&+mGbL|$G1t3B#m9{$;$}-pR}U(N&;P+(u>j3%ID`<&W?&m4Cc`VSxPSwbCkD2g4C?f((Y< zrohNV7wwX1o^EsN*s{R)ci`*n7-?Q}`t<5XeM9*RPx4<8NFy)1{aRmvTJBZE&RF3M z;C}_eRBaATsC)uomJCSvd4k&iN+(X`oVcm*Q~EdU5>eDMJs7068i8EZmu6+R{rxcp&T z95}>!66qq&J%8{MWpDkA#EovhgUB>_usRdhHqZCSYQkASbk{JYk`XYKVDJWtKh44U zsa&bbHq2nFKg^+{Yx}L`visiSEAyAhBZw|~7xd}l!zltMVh-$Soh29jw}$b|y5gop z=4y`CpFay`GncC55ZoP%e|GNhWf%KxUM5>2>7}9TQ&UM&KEHya6a!pMWT(i@J)#>c zT9|_Scn0`8b-y-K6!BE1FGYN<2HQI7zB-lkW)K0gmjoE5MQB;kraeMN zV|e|zaBy~3;`l$Z-ink}7-l{aUjSBkcuH7JVZ@5RUyc6Kg2cIQ;)V~@7&jBKQpZZm z0v)v24H}OW$`*70jU*8RIVx>CrFkHsMuI=D5F8!*bd8ipmyC`~RY?e7dwE<~P5zzh zJbNhLqu}^AVxw*TZTGLP44%~P3%5@@T5-puS5<@SG2HQhq&h5QAO1>k{m z_@6TZLPAjf)Ny%pS3IKM&SpK~(E>hHRfDZPYDbVos{I;3T-+ib+pY4ZFeTztbflp9 z7Hkf$F==8~%*mW-q2PM9WG?+_lC(fX+gkd~N+KBD>62biv2r!RAOg-K)V0iZWk4X3o=LgOfT=Zd!L})kjgyU(0q2G9CpxEbcAAA7QwfYwR`Lb<#W9IV|mDl38_aF7K6jFwT|%2UX#zY56qD}Y?Nf{tJe-5KhOnx3mv+WT`v&~wSA(iiU}VR^%)((bRt;(yLOZfP}NmyFn$G( z`9R0o^M?51?tMQfrw;la2N2TNqm(jG0ZR)7S=#o|O|NF}TJTES3#&oiso?4pt&k5c zJp@bFL$IrzbIMeNgaMe&num5D%a5FeoPaoF{qZgbk3Dst}2i$ownj=I>6xp)LqOaRBZv2%LvKo68t%LE|L)?y#>ke_+stjmpVIdrz+bYnWs))ud|i0;{i# z-|eYiF=?tGD{Zq;8;?@n3;*v1CY7W-M$zk(vpdWOyn&D-(schQNbDvW>b|y zOh`u_TxSP~#fP35+VdJxCxf{@2lH3tp%3+L{|>lpPfI$5vn;P@axS_bhpX3=7gc?_ zKlmpAKBVNpmWG0o!THZUx8oGezpy;jja7A5ri#~eyuAz??BIV7S9o}OSp5o_!O#qT zjs0lrNpT3+Dytt#s3bZKJaBjefp<0h8 z!^Isth+=FmziYA$iaVdCG&xLOX+%e(MuHrC1xl~}x_uE8Y~Tu>a1E9vuzu-xXY&x# z;qR{i3_6p{uNfDGOgl&!4PNph;Xuj7k>)UMc3|a*rF?pwDEK!*akxDxg@ZMhx z-zZ_@=0WE0;+{{)Dmku+wPA$Lz7pUTfU;n@FDvSI{Vd5}ppcc_4)#toEymS-?nT9t z{H0!yK8D(T<3DI*V|+&@3E%YSNN*~S&3+9goakVQoGSTxSxpRN`;#6X{BH$zy~G-y zb;tjC$RGc326OKT{CGFlEB0gPv@*OkVH1?cGkH5eU&r9Lh;y})ll=aCU;4$YkQ8R9 z3k*Kz+}Qn(rek&okCFdjPyV@RW`cwY-XD9Ed!?ZKNqqCj(byy+zL%`#ocv@1%(Q`+ z@yr*h<^gDi+0eYZx6cWVEPDK?c$lpieQ;e1}S)Y|x7A z&m~Tc(Wx&&WAqg^kUlPXulJ=C{_N@{4T#Ib=?f8zmHu`}XCODQ(lK<`Sy=+2UDh7P zr(HlakCIndyBrQfax#sGc2o`A)JDAnCX9WfL4NZuLVzFwQisLnJ6kYzvk7TFPU8j+ z54B~5jH9p{pcp_NlFJ9-;S?%?0<(=h21o_+zSmfb{ujZ}ho%4+8U|GmDCwZ-ckhUr z5qKg<@l`Y}rL6~13f^FXs&dUYSG|F6$F$uY;)naT+TLzQm*O@fR~@ z=Bn*u)ZU{*eX^#=@2WP1a;vmwn*JE+i_o0&PX+&`<%bWu6)d}$( zCe0eSzuXLIK`+KH+d28qf+fn%wX*<6x#2Ch=`j7ArA2e4s(50-N!X#U+)zy)hWzx!~*VXg55D+x=*E4!ETnmYNO%!c%_&7$*{;LuyNOzV6mAa6h}tK^+YT79 zr_;VBj}b5J#K2opBy{lFXR;J#UBuHFy#1QL*JJx@*GKOuHSgeg+_)9IsqoX_Y_ox^ zDPQgr*y{)_OqGr`UU)s`6eFtO?xE`AnB3oIyUly%3N*w&Y&oW`_BB?@HgT(EGCz38 zGiJ7Awv#2cFd3B;-}GgRC1H*8C7o1WXQXbJG(81pXL=mb%bkNv<1`ETdSGnQSi*kV zS?S4xix%&4uZV6pHaq!H!@lC7x!?DSyu`fq0x9_m{NK=ZaDXo7o5EzS1Q{APcuOvXoP=&1^ zyd8D1^9tZu7XF1b@NPgl%O1U1_Dy@&Ds5FHsGv3i{(2b9SnRXBL^1&-$$ZWJ{9omt z>+)8-@WcP_n%_C0;~+?`oS#Mn32xvC&bhnKIGE`Th~qVAwRo^aZ_S19tza}wx9En0 z6a&CBk1~HD$Ifb1hDkx<4bm(>EH-ezlKMo~=*s1#}$0;#Jy@nfTz zI?9u`Ny@V0@M%-hi{{=4CO)+o`pVa$;%zJFv=;MxpwjLMZ14!A2#~hY>;jL|+2h@5 ziIR#1641%n;D5Nj{j@!G@T2TFdf*Nj9Zlw>ccvi;KuiTnH(rR;d!^h6VuKxiNcK7I zqV;3}T)%W{%{{J7dGYk6nXJl--_|haN>GkqvJg7iUiOcUWPgxz+hLM<0&nzTQfyZc z|D;1mj*Bvwt~E{=zT=G3*xxxrf6Ep6epQN2^YBmF{V!)JucFeff?u|^wr@=Y@=?;8 zMqk6ii#pc7Heqp)d6>f?tSoP#r4HVK`UL(8AUshWhGHGSo*J8pWLc5L)l7I(@wWro z@6{T?u?7y<+*Lu$fzXEb59;I3WnB&3$+ncFNF}df1QTftuAt1`(!0#xdTq?=&8GcM z>2X@wFF$~CkJ1orU-&b@7*5VwbjJzWeGai!(gKU8~F9+ zlr3lstQ?^wsgu!C<0wbE`cZq3XHb1@Rj?ZK4nQ3)T9_mqf!DR?R7B8L0N1-sW|`vy z9gF{X-$>q8r9Qgbu*vi^ol-@#FmQ{!ovLB!KrP4^dm6KyLuUqquVP?`1WcKx3F_(3n)WH5hO*G`tT1U|%X&a)8ApvR09LNO z-d|N5`{l8GZGo@Y4$=SO^8y#S%DuS_(mswB=tIfmkUFBcLB(+_@A&dRPm-0CZ!kPU zBkau)>(g$*@t+PG7nb*-rhDLl&$t-OV&`bo``Ye>+{K=T-W9i8*JcU*l{n|{1YYfP zk*VoxqgMZ`N@;@mGIvL&yVSD^MaoEP16v@W?u(Hkal3|Fmm`UHNP!o05g@MaigX|UtP3pMcfE50oifMh;hu;JgobEYu41C*sw-|HIKe4v;^9y&Gf!-6Xmvpvqummt)~_`x@E(GUxC(4ZK; zMlc4MO%@EIV%eLKcgG)MqD3eSmw=!MN&bf3U1Ej*{Ts+cRhOr;pJ`t#J5a%b>n$wB2h-h>mHptwb;MwB5W(W^qJ;P}KFI{ug3$ zM7~9>fN!!dmvQVyxOhfkciyC-VFc~AzT(mg5ti(O9S^2Y$?bDx?S^vm3;8j@M@!ncuJ3M)uwN$2X--hl^t3&uhJ)e{}%9SP3pq=ldvZ)3OuH&iTVE z3*elLb3QYaW+s=l=~7mI-El+xzxKZTAFB8Le?qi~R+Pdkg|dapnxT?*wAdMCE!mQt zIYg-xsiYJ$rJ|6mBioP=vXm|BV6tyB46~o}xsTWDpZIaAzOVbbp4anQ zEIrDqK>2OmLH9@n6sQM;gv?xvE=vCgDMzrjM>;BHOB*V#%w&u9yYS zC{>e5LgZ1@Fmc7&wgP%&pwPoQzgom1pqC20$AAMPhI@hyT9swo4zYBjzPdpKsZ;>%N1DBR41JX9RBA# z=Oir`JPdk;8_4!B5^0t{A;I6n>o!}l0Ur7w07;a;a8F`|5z7J(hZ-@Xrd^WC9GykV z01Z1J9rBZTnY4UfvN*IaVZ*TO#5yp4;idhFZ@C5V;yCuc+GL}pB)m!jxI!3Jc~-#< zpn%pOM%^WAQb`FsEJy9qQ(1&9%$y7X4!Hjt72amU!$zS{QC_l1|aho&hNxh5=} zD42UciV*Y+FxveN?=F#C$!`2IQ}D_BU87`xj51&AO&lI{c(GL*WJ`|$?ePp)$9>n? z{6g+Y+PvTyIQirH`Z(q};xrhKP@K^|4Mq##CIy}#%9pn(e#0xjD;J4D0yn~vP2Bx$ zk|++i`S}L-V3BFQM;b~DAXmX=62P+ewq)a{U()BL3*dl_|LV_7JKeOO@kn{KThP0* zjC>`3yX}LVkn+$CUB*BW-38&uUt`X7Gu5s0;!2N{^_3@k;1{wrx1m?Jyb^$ZZw5m6 zy4!|YJ@ccgi$$M$;H9&#c+y2P-j5#ZXLwJc(90@*@l@Ush1!H3|E$T~7+0l~tqDi= zFE<2VFbLHub6)$oIJU{_0)NMA6L7!hpkSzJZ+*b{j*UCC)cW83$qajHapT)i@|*5~G5C{3tfyKJf{;BTKW(YG%BTl)}^Yx=~e=hTxoYTxzL*jYFX3nmwp?5fn4 zF|pi=A#gjM=IKe*DG`E6xECqa#7<~jV3=vAGjwzSDXI^i42*P} z#L(Nn^$xn&-+^&>z@B`gj?#>sN_|RanG1eJ*b`f<1eMT&^E`uS;Gm3Kg;CpP5uCZShTLr`X9mz6K`rJUHsMSvyk_nnvep#m@)!u%MTZ zEz?5fwET7q%M#JdpvNyh3mq&4E}{qUw=sK;(%fGH1-1+bDx=o5u*${ccmP08f(lto z=xLgJ&wt9zsC5n8VGNE+t|bw@$;8@fLMbrj!`s%cxCy%ySr=cG>z|qIgAFRKM*(Gt zA*KsKQ!ZVQU-`|b59oVm@E#n}cq?_3mcrbMY%>F)iCX%8;S`{IBPF)*u7OC1j$^}$ zvMYI^k{LB*macazkNkutj$&#|%QIPC=gGj2LQqOqk+V5VL^4FMl0<$lxg~26!6$qY)+&{u1i=s@5u&t!u0*s zt8*+2?+?(u&%UiZqh$|BE8hd6G6x4_!&3Ev@E}`D1t4-1yeA|@x6S+@l)VifWba8B zkg9d0{|aC(Ud9KT+W+%4`OWNvp<{7sgHk?kGdI2Uex{yv#+yQaoLjxxvK4?xYJk9O z6Et0P!GD9MpLo_3v4Y)?z@vTYb#Xz1*}{Bfhm?>s9~R$N2l?Ac<-B8Q>_`}yM(z7h zJLMiKUu7>s96wCgbe51v+Ynajd>zw=>^Kvbbp1{p`)|cLlhNcuE%k}6HsMQ&1M!2{pBAL*_XIxh((EO;8qS~PT|P@dZb37a1&A_tb=4`w6vm>5 zA?Nb!*40K|k1Q*U_C754GM&8goTq+=>9yj|Y&c+TK+rsy)CA{lu)3<*kcI2}uwNm5 zjIvj;YT>GX`fv$L!O(z4Tv9rQpr}B7Ow!#Tn`|0{Zye7$>T*CSFrsU4y=Nfp^OkSe zs;j^-Nc?p2-Jaid4o;5WaOsdi>y712Hd@lI9G0nU8O0P1sVqI*3VQf74fAEt7*Un3 z)L)J6TDcriL2r*cu>N40;`0jW!WHyr>Fdsd4ei{Lj$Vm zua$?^8^k4oqUpwe^(!fEOQ<`h6yzCne7e)^7kf+yX&)fh81JxR&F>zDLdx|qC`)#I zFR%T?QN)!o-KoOT21k2^@poAZGpK7OPRHOM)5Oiy!9h8-iSu%rmuRl~O=|8?LthXf*vSnig$LZbUje zTQ;=nzDj?$t2EI6X#ED1J;CJAoJv}quO4q%t?RNflOh;=r0aQt98Ef$@sEIg82Gbh z-vcFb_&H5IURBpszc3EyI~3YHKRtm<>mX&zXB{a8bWOahoCz3}I6ahm4F9*gQ0H4O zux1ltV8UdDnQm3=F!P#kVNt?fKy(7UG<1Xgiz0z7I}V+@;ciDv1^R9ds1Dz^Y*C2q zxwI({sm||dEH=`&SrBh?02A+bS08VE^w!h)Sf9Wwh^a@BELS*eA&0qszKXTNCZdaS zVKR-pbCjDGWJOd1A}`~gSgH0U;dJrQumBBKaw)p*Xj#l!!3MRw+_4+?1GT2f27?7F zYE!R{nAbE@rfc_>57Lk6hGGW+Io+lyd^f@wlIdv8@uP{(%|Um7yeBh*iKoEy!cv&! zRDRfN*gI*`wVzANmw=O-!mwxoch&9fL#pRx9Jc@I=Bm6JRA5IDTA4v%Dul|h#cVDv zi$=Du)c&`v&&3T-;^=0UHT?Kbefw1>qC|UB5^IT4f6T6W7H$D8g|1$hiA}v?NA~Ir zdiX5il6PFiufQ9Rg4_#Q0{V}uWXX6I1pk~JXa=Y|@8&m8l{;3TNZ)!cj_xS>z{^4= z%k|z|uj+shGP)Qcu>?3J-B(7 zDDr-`A#*=QhP-Sp8aMJu#Y0a^8FUIroi{Oh1t5G%lHi*g`viAKXXAU)W@?WqYg4g2 z-u(CZBa2Jd5wQnV4F?M!E&7Fzjcv(0Y=3{?m$yn^AYCe}=Kwq?iPy%@_vBhd1#OJp zlIC#BTY_irhU@r6N;#!FjSHV^*OpC)?e?~;_m%`)&^UK<8_2&Px>Y<}ty1l%krkT$ zf{r{=gfxVeD;1`ytIpYCegLnO1UK>*Wp$`vM z9aOFc%($uIbEg+hZy4ta+CSQ~4U=<8IP<1kfOFw44Y7D7>gYk|zh}ge_c!w(wy$(p zU*b0I@p9c0G6kOCKsN!7-X2)=NXw>-j}PQidiRXNk9|r_X}Pg9@xs)npn5v=EDL>e zD+-`z%#n_zGC*2k;!r{jSbk&)u)AuY>kWq3E{40+_5|Ue036tKP|uhRRRAU|4k!am zYS+?)I>5p}U_n)1JBwgqrAv`r3AshaPu<*kXjfQ+ueN1p8Gm=YMyuQRNAuO-vZ^)hgxy))1w^JyTuU))hvh$Nvp*epCf7 z5i5Rj1aATTOVkj4W26mm*8n)3*6X6r5+Nbr+W}~FNLl2HLupF6F*PDY^nnBEiK~VR zBwDBOC4v|jJyP#$UM^g4g`Sc<&%Xq84XDEgnT6+Nk2<=^c{*9eUT@uo%@MO4xtOKx z{H1tDw`t86{u{gv+wrUBJv-`jt>;ba2=AWlR^U>gLECl>PhzJIjguY)`xrM6s=lzjsObq)g_Edn%Ur^-xp>kxwqG`8x&KksXu^n?&qqI__ zOag8XYhK9|_f;E}3pgZQ*XY~!^^C4#%o~=;xu*z!Hc+R9v8dB`ly3fLdHeRl_~o_V0DMYHliz8`{#9ABxMY0p&NjyVRMqWLHS5^@A=IO8Y25eO)F#H}zY9{t> z<|yBW!d@J1RX2zp`6m75hp z2v-ORoSw?t&l5!JI-Mp(<6gp(6|#9HVaivfrca`2^<(P0FXv*Av5?tS z4ggD6`4-RqTqXebRH9mTr4vYuRAt~rM|NQ<%nx=7fcGVf4*68>Am_*}%r32h&&hnDOVc6XcE6wSHvL8G~3k|z=@oa=e7qOMc%JL(|ZKbz#qp(s!Xd^;Qh{gARfs; zJYIldxG@2?kg|T)LCUZJ+xnY6nYtED?2g3i>NT}~TMP5|vIH5gz<~D_mZv<636db& zARt$zCPTSNUMj306UBtip7$rq8__rv#)A~D_oelL>^F~y8`Jxm_+@XJfQmxBtKQL= zD)q-*HGyfG)07Rju~oI`ub;<57fX!m*%mQ zF=8n|r#TvG z;3HHE_xcIe+YC`;|4Q2{m`-42tI1rwh-`g|?1U81r397VzEQu1?hE4N8~3c`k0*~j z2kWBd#*adS%}bNLPLrEkts<#!cWOz3Wse5SE{alaH><3~TnfZgR&Q*yR;cf;1v}Kn zcBVXmh*S`ph-kF9s6lMLsJjglzY!#R(dNYqU`#X6_DhZLpx?V0ID1gk#X{A{1OP0c zgry1!xeX!K00;t92blCIWJ(BuCu^p^Wn9R z>)?t##zQzmyAlM=<6KFFj~v|0Np6*>Y|Ta^Pez}>6IC=CTS=h5FeCe<~wp( z7^Sm1cHdd06{kqkZtB9SBr!D#;H5_Stm3a)e^;`p-f!8hBYuUvYvzs!*!gsSVI7c2 zWLMV)kfmqdx4#ceya4o*#a!GC&3i>rU?Md2 zv$jZDIWgz#ZfQG#w$+_PhS6pDiJ+$yfqKiQo4P2K*ItE|899?CL+Y0>y7j0~nuQ!;3{hEMbNaX$@rnTZkp&1();9XjE6L(DXqb(3B}pUfbvTiHEZ1I9-? z`l!31v?u$(Lf&PJKU)`itX9C6)Dq|4hQt{jUC2abL;khxm3rI1OA>fz`%Bp$LFqyq zMxZFfduh1jYjSNJ@hmcGiWQj<(6<_0Q(Dp?fEZVVw@yxHBk*{fO-Z#}SKvah+tQnr z`j^b+_L|s{f@o7}dUfF0x^&AR%u#~?|L+d*LliBLfBn9lX(rR-B!#mL*`G#Uw#IbS z?gLd(l`Nh+RU4WEY>j&@F+$U>tG`9oT%?Jsu3qa3`&UE|rha83*SPMLJV>WuB-aor zV%-_X%3=Zl@GJTnLUjvY8uQO9b@&;6$p?E?d~y>f_XKVJ8f~8a1WAW7crqo$Pixf& z!Vi1flV$$Bit}5Z5U=h4DctSx)$8@wFxo7~z@7UfxvZZ_QhvJmGyi%&o-MVSvawFPgs8S}aaHyoS5J$rTxYRHDT4lc;ECZxbm zCVC`nXdZ&4Ynk8GR~w~1ERV9y`JDY-TbA=RSm$%Sljgl}&AfGyjvHB$O%I`jT+=5% z@4)d&W_-fm#8DfA6o)uT8Q4BMyF^ACb?wc|aNK^YkstyRDjH{OemH+!q_<`hIruq8 zaU<`d-2!BEh>P9thSb~e1{W#!C@glah|$2q(x~1e>0Vy!z#-Y4M>liAb@?y$#~L{WNt#4_u?d zoPVx7pWDOCuMV`p%#6_&Yni2FW+&xQtk2-ONWg4Hp5SxF$uiJ*H~vu9=Yf0Gb?=k} zo?%p4{ETs19Sq+f2Y_vN|A(8!GCcf8wK6xy?5fvNDDPJ;;>PP8uasDU&X0D83Daed zutD4L@L@X*d%OELoG*#K`1TQFZ!P1t{OYFf2ON#8{&I*?Fbc2lagSaQAk~ucmqx;R zd*xu-IP{+5sO{TlN4zq4C$jEH*z`vhC1R2ij|*q?{HP0Yd6hnO`;^+cAJ<~|V{3W! zXZ~R&bBd=Wi(4CMI7db<%kl7Q7kXzsApxoBhEs!=-za7zP!9M7B~b)A^gYpY&YQDkl-^b6}?H@=zq!)!n(Si~R$1~T}OUn60CxC9)V zojZeUBUP+MF}p3*hfM1pf%u)+dqsBL&R-5as4h*ye9V7Mj!>av!NWPMAMok?3DKK4 zC8Y(;w6P)<4nNAIQo@Fr0z_3{Fi%FjpQaHCJ*Pm>%T~8ZS&ukm@APwN@UgSnK*E4 zXnD(}^U0^dL7|&lGqNFetE;{Vi?UO)Hb8@mv=y<+a2(PI!jOixic3=3Kh?jEND%Z$ zL3@Tr@2yHF$vi-)x%`0_qQZ1s1VX6yh|s$G)BsduYJ4?(Ay%Rwa9Z-unSp;8gmbj{ z;yd%?9_HJH<)Ua!9%y=BmGQZj!fu?eL)hJjl1$kWjo}9no=JXxP&m;sxRHQspjpT5>WM`Es~fk$_b)QiWNwgHf$UU2VmWfl@0v_B=t|0`)IvV zT#{K%EyP%&sIHqqu9Pl64WX3i3i&riY%ub^f5XjDDcYYHM`^k+j(sSVRkpL~&3dgQswN}!DMuuOJ zJ|qAqT@@9MYnuCnFGo)XoYp3hsAN_SD%fm1j9U>Xicov+HlLq5TB4QG28UgyU+NuV==t8$kT~EDD~@q+;P5@^Vs_j*{-17pkU?t*Ue5+Y}-Kc8sB|v|ALpCW)f?0 z3yYEM&txrDU|9O`bE zF+dh93(HJs6xGv_N#Oqt3?si{WgkKFl8_>-O=g7A*PCG>gs#dJL7QCOYUyeT!wA>*y90uHixJjTbFmxl4TjFRuVP7^PZR2tCX&Fep;njLizIrL3QGdKu3uE)z7hc*@_&W zvD#=Wq~^{on68o9DvJwajF0#n;T+|)RQm6=)$e^XNkX0(uP}D8UIm%UJWb0M}&fl(tJ&LapZ2eygAZg*&(SgijmB zPI_`^&riFQHB(wb^{Lp1h`*8st;$(&sG&nI&hePrO*xt*L0J$w#KpnPqASPg8Y*ru z2pqQ7QdqO#pBxzSr0GkFX$w* z!YzfKMUho7W28jYXym#^ALLbJJB9oh3gwMuK>OgvX7%qr&|DV%5sn26@4fZhRcIn_ z==dWhB|do&u?hF#=ddzz@%s1@*!!W?!k_I)86q<#l@414UH>r`9s86CIUTx|wyRuV zYsWrp$aBhY@NKGD(#d7UJx5`rChH0)y@hCG*#M{L8IpW^dsU+=(({G&eW_?SEw^sU zS1K$0O898v_(%|$*325UBi#2f;I60h+FOOufOq6zuXMsl5}{JU#|PRhJNk-Vp^XP^ zrMePE21b~9DfJ~vf`N+ZQf76vF6Q$YKRr^NpJ(dBYO2_=pnbX^S-{jvJs|(8FgEUr z1@HM4=zw*W+6?njc3m#SiK91rBkmoWxq5cg2$I0M16v!s#0 zhtB$a_r>QUw)#XY7>AeO^}9$UXXhZTt{~Eb3r-hOsn>od>Fwk?{HYEy9M$wzJjn=O zZ*Ry+KGqNV_w?JBNszj{>yBxA*R_*m9*xU{?oLxN{OsOMO{B{iB0mf0f1S;ANU|qE zV)Mz~<(Bg|yuIpL=FZQ|%+}2fDk)I&qU3JHSnaQWnYK)@(qd;REBoartpeShYMZ6C zM>s{(tI%>q@U^FE6lf4oFAh9Pkb4*@fPULdL|-F?P}22(AN@bL8gPB!j1jtdMvuu$ za*`*&Poitk_fi|t*8_6stCJD>S`~@DMy>)vfWZi^Y`?G&`t$!TkVBW@f2;KWk!Y+s XvNT5CFRRyv?(8X(^T$6Qb-Mk3M|Y}e diff --git a/plugins/google-drive/assets/legacy/google-sheets/google-sheets.svg b/plugins/google-drive/assets/legacy/google-sheets/google-sheets.svg deleted file mode 100644 index 73dc0bed..00000000 --- a/plugins/google-drive/assets/legacy/google-sheets/google-sheets.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/plugins/google-drive/assets/legacy/google-slides/app-icon.png b/plugins/google-drive/assets/legacy/google-slides/app-icon.png deleted file mode 100644 index ef4ef4e6466b69a327dc8dd11369d27982c819b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25617 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 - - - - - - - diff --git a/plugins/google-drive/assets/legacy/google-slides/google-slides.svg b/plugins/google-drive/assets/legacy/google-slides/google-slides.svg deleted file mode 100644 index e6b59607..00000000 --- a/plugins/google-drive/assets/legacy/google-slides/google-slides.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - -